From b05466d586b5018e060861dff041a1714c55d428 Mon Sep 17 00:00:00 2001 From: Arsalan Ul Haq Sohni Date: Tue, 2 Dec 2025 11:49:30 +0100 Subject: [PATCH 1/2] docs: remove developer documentation link Signed-off-by: Arsalan Ul Haq Sohni --- apps/settings/lib/Controller/AppSettingsController.php | 1 - apps/settings/src/views/AppStoreNavigation.vue | 4 ---- apps/settings/tests/Controller/AppSettingsControllerTest.php | 4 ++-- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/apps/settings/lib/Controller/AppSettingsController.php b/apps/settings/lib/Controller/AppSettingsController.php index 3a6bd9d9284bc..5818f44c1b11b 100644 --- a/apps/settings/lib/Controller/AppSettingsController.php +++ b/apps/settings/lib/Controller/AppSettingsController.php @@ -92,7 +92,6 @@ public function viewApps(): TemplateResponse { $this->initialState->provideInitialState('appstoreEnabled', $this->config->getSystemValueBool('appstoreenabled', true)); $this->initialState->provideInitialState('appstoreBundles', $this->getBundles()); - $this->initialState->provideInitialState('appstoreDeveloperDocs', $this->urlGenerator->linkToDocs('developer-manual')); $this->initialState->provideInitialState('appstoreUpdateCount', count($this->getAppsWithUpdates())); $groups = array_map(static fn (IGroup $group): array => [ diff --git a/apps/settings/src/views/AppStoreNavigation.vue b/apps/settings/src/views/AppStoreNavigation.vue index a35cd94da95fb..4d8a2b3e48ce1 100644 --- a/apps/settings/src/views/AppStoreNavigation.vue +++ b/apps/settings/src/views/AppStoreNavigation.vue @@ -91,9 +91,6 @@ - @@ -115,7 +112,6 @@ import NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js' import APPSTORE_CATEGORY_ICONS from '../constants/AppstoreCategoryIcons.ts' const appstoreEnabled = loadState('settings', 'appstoreEnabled', true) -const developerDocsUrl = loadState('settings', 'appstoreDeveloperDocs', '') const store = useAppsStore() const categories = computed(() => store.categories) diff --git a/apps/settings/tests/Controller/AppSettingsControllerTest.php b/apps/settings/tests/Controller/AppSettingsControllerTest.php index bf492ce8aba8d..8350c03098898 100644 --- a/apps/settings/tests/Controller/AppSettingsControllerTest.php +++ b/apps/settings/tests/Controller/AppSettingsControllerTest.php @@ -200,7 +200,7 @@ public function testViewApps(): void { ]); $this->initialState - ->expects($this->exactly(5)) + ->expects($this->exactly(4)) ->method('provideInitialState'); $policy = new ContentSecurityPolicy(); @@ -240,7 +240,7 @@ public function testViewAppsAppstoreNotEnabled(): void { ]); $this->initialState - ->expects($this->exactly(5)) + ->expects($this->exactly(4)) ->method('provideInitialState'); $policy = new ContentSecurityPolicy(); From a5d0abcd77b2b10828cb682ecc7ee7d1dbfc9bdc Mon Sep 17 00:00:00 2001 From: nextcloud-command Date: Thu, 5 Feb 2026 20:18:55 +0000 Subject: [PATCH 2/2] chore(assets): Recompile assets Signed-off-by: nextcloud-command --- dist/settings-apps-view-4529.js | 4 ++-- dist/settings-apps-view-4529.js.map | 2 +- dist/settings-vue-settings-apps-users-management.js | 4 ++-- dist/settings-vue-settings-apps-users-management.js.map | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dist/settings-apps-view-4529.js b/dist/settings-apps-view-4529.js index 51f7f2fe6bf8e..4131facdadbd5 100644 --- a/dist/settings-apps-view-4529.js +++ b/dist/settings-apps-view-4529.js @@ -1,2 +1,2 @@ -"use strict";(globalThis.webpackChunknextcloud=globalThis.webpackChunknextcloud||[]).push([[4529],{92973(t,e,n){n.d(e,{l:()=>i});var a=n(53334);const i=Object.freeze({discover:(0,a.Tl)("settings","Discover"),installed:(0,a.Tl)("settings","Your apps"),enabled:(0,a.Tl)("settings","Active apps"),disabled:(0,a.Tl)("settings","Disabled apps"),updates:(0,a.Tl)("settings","Updates"),"app-bundles":(0,a.Tl)("settings","App bundles"),featured:(0,a.Tl)("settings","Featured apps"),supported:(0,a.Tl)("settings","Supported apps")})},23453(e,n,a){a.d(n,{A:()=>l});var i=a(85168),s=a(19051),o=a(63814),p=a(61338);const r=()=>s.Ay.get((0,o.KT)("core/navigation",2)+"/apps?format=json").then((({data:t})=>{200===t.ocs.meta.statuscode&&((0,p.Ic)("nextcloud:app-menu.refresh",{apps:t.ocs.data}),window.dispatchEvent(new Event("resize")))})),l={computed:{appGroups(){return this.app.groups.map((t=>({id:t,name:t})))},installing(){return this.app?.app_api?this.app&&!0===this?.appApiStore.getLoading("install"):this.$store.getters.loading("install")},isLoading(){return this.app?.app_api?this.app&&!0===this?.appApiStore.getLoading(this.app.id):this.app&&this.$store.getters.loading(this.app.id)},isInitializing(){return!!this.app?.app_api&&this.app&&("init"===this.app?.status?.action||"healthcheck"===this.app?.status?.action)},isDeploying(){return!!this.app?.app_api&&this.app&&"deploy"===this.app?.status?.action},isManualInstall(){return!!this.app?.app_api&&"manual-install"===this.app?.daemon?.accepts_deploy_id},updateButtonText(){return this.app?.app_api&&"manual-install"===this.app?.daemon?.accepts_deploy_id?t("settings","Manually installed apps cannot be updated"):t("settings","Update to {version}",{version:this.app?.update})},enableButtonText(){return this.app?.app_api?this.app&&this.app?.status?.action&&"deploy"===this.app?.status?.action?t("settings","{progress}% Deploying …",{progress:this.app?.status?.deploy??0}):this.app&&this.app?.status?.action&&"init"===this.app?.status?.action?t("settings","{progress}% Initializing …",{progress:this.app?.status?.init??0}):this.app&&this.app?.status?.action&&"healthcheck"===this.app?.status?.action?t("settings","Health checking"):this.app.needsDownload?t("settings","Deploy and Enable"):t("settings","Enable"):this.app.needsDownload?t("settings","Download and enable"):t("settings","Enable")},disableButtonText(){if(this.app?.app_api){if(this.app&&this.app?.status?.action&&"deploy"===this.app?.status?.action)return t("settings","{progress}% Deploying …",{progress:this.app?.status?.deploy});if(this.app&&this.app?.status?.action&&"init"===this.app?.status?.action)return t("settings","{progress}% Initializing …",{progress:this.app?.status?.init});if(this.app&&this.app?.status?.action&&"healthcheck"===this.app?.status?.action)return t("settings","Health checking")}return t("settings","Disable")},forceEnableButtonText(){return this.app.needsDownload,t("settings","Allow untested app")},enableButtonTooltip(){return!this.app?.app_api&&this.app.needsDownload?t("settings","The app will be downloaded from the App Store"):null},forceEnableButtonTooltip(){const e=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.");return this.app.needsDownload?e+" "+t("settings","The app will be downloaded from the App Store"):e},defaultDeployDaemonAccessible(){return!this.app?.app_api||!(!this.app?.daemon||"manual-install"!==this.app?.daemon?.accepts_deploy_id)||("docker-install"===this.app?.daemon?.accepts_deploy_id&&this.appApiStore.getDefaultDaemon?.name===this.app?.daemon?.name?!0===this?.appApiStore.getDaemonAccessible:this?.appApiStore.getDaemonAccessible)}},data:()=>({groupCheckedAppsData:!1}),mounted(){this.app&&this.app.groups&&this.app.groups.length>0&&(this.groupCheckedAppsData=!0)},methods:{asyncFindGroup(t){return this.$store.dispatch("getGroups",{search:t,limit:5,offset:0})},isLimitedToGroups(t){return!this.app?.app_api&&(this.app.groups.length||this.groupCheckedAppsData)},setGroupLimit(){this.app?.app_api||this.groupCheckedAppsData||this.$store.dispatch("enableApp",{appId:this.app.id,groups:[]})},canLimitToGroups:t=>!(t.types&&t.types.includes("filesystem")||t.types.includes("prelogin")||t.types.includes("authentication")||t.types.includes("logging")||t.types.includes("prevent_group_restriction")||t?.app_api),addGroupLimitation(t){if(this.app?.app_api)return;const e=t.pop(),n=this.app.groups.concat([]).concat([e.id]);this.store&&this.store.updateAppGroups&&this.store.updateAppGroups(this.app.id,n),this.$store.dispatch("enableApp",{appId:this.app.id,groups:n})},removeGroupLimitation(t){if(this.app?.app_api)return;const e=this.app.groups.concat([]),n=e.indexOf(t.id);n>-1&&e.splice(n,1),this.store&&this.store.updateAppGroups&&this.store.updateAppGroups(this.app.id,e),0===e.length&&(this.groupCheckedAppsData=!1),this.$store.dispatch("enableApp",{appId:this.app.id,groups:e})},forceEnable(t){this.app?.app_api?this.appApiStore.forceEnableApp(t).then((()=>{r()})).catch((t=>{(0,i.Qg)(t)})):this.$store.dispatch("forceEnableApp",{appId:t,groups:[]}).then((t=>{r()})).catch((t=>{(0,i.Qg)(t)}))},enable(t,e=[]){this.app?.app_api?this.appApiStore.enableApp(t,e).then((()=>{r()})).catch((t=>{(0,i.Qg)(t)})):this.$store.dispatch("enableApp",{appId:t,groups:[]}).then((t=>{r()})).catch((t=>{(0,i.Qg)(t)}))},disable(t){this.app?.app_api?this.appApiStore.disableApp(t).then((()=>{r()})).catch((t=>{(0,i.Qg)(t)})):this.$store.dispatch("disableApp",{appId:t}).then((t=>{r()})).catch((t=>{(0,i.Qg)(t)}))},async remove(t,e=!1){try{this.app?.app_api?await this.appApiStore.uninstallApp(t,e):await this.$store.dispatch("uninstallApp",{appId:t,removeData:e}),await r()}catch(t){(0,i.Qg)(t)}},install(t){this.app?.app_api?this.appApiStore.enableApp(t).then((()=>{r()})).catch((t=>{(0,i.Qg)(t)})):this.$store.dispatch("enableApp",{appId:t}).then((t=>{r()})).catch((t=>{(0,i.Qg)(t)}))},update(t){this.app?.app_api?this.appApiStore.updateApp(t).then((()=>{r()})).catch((t=>{(0,i.Qg)(t)})):this.$store.dispatch("updateApp",{appId:t}).catch((t=>{(0,i.Qg)(t)})).then((()=>{r(),this.store.updateCount=Math.max(this.store.updateCount-1,0)}))}}}},86438(t,e,n){n.d(e,{A:()=>i});var a=n(9165);const i=Object.freeze({discover:a.tZc,installed:a.Gbn,enabled:a.Tfj,disabled:a.hyP,bundles:a.nSK,supported:a.Yk,featured:a.ZL5,updates:a.XCd,ai:a.UMN,auth:a.EYN,customization:a.CZ3,dashboard:a.o7l,files:a.fEr,games:a.FeJ,integration:a.bur,monitoring:a.y48,multimedia:a.WI,office:a.Ku3,organization:a.TO3,search:a.U4M,security:a.JiW,social:a.Krx,tools:a.QKT,workflow:a.Dgm})},62938(t,e,n){n.d(e,{a:()=>A});var a=n(19051),i=n(56760),s=n(85168),o=n(32981),p=n(53334),r=n(63814),l=n(65899),c=n(6028),d=n(36620),u=n(85471);const A=(0,l.nY)("app-api-apps",{state:()=>({apps:[],updateCount:(0,o.C)("settings","appstoreExAppUpdateCount",0),loading:{},loadingList:!1,statusUpdater:null,daemonAccessible:(0,o.C)("settings","defaultDaemonConfigAccessible",!1),defaultDaemon:(0,o.C)("settings","defaultDaemonConfig",null)}),getters:{getLoading:t=>e=>t.loading[e]??!1,getAllApps:t=>t.apps,getUpdateCount:t=>t.updateCount,getDaemonAccessible:t=>t.daemonAccessible,getDefaultDaemon:t=>t.defaultDaemon,getAppStatus:t=>e=>t.apps.find((t=>t.id===e))?.status||null,getStatusUpdater:t=>t.statusUpdater,getInitializingOrDeployingApps:t=>t.apps.filter((t=>t?.status?.action&&("deploy"===t?.status?.action||"init"===t.status.action||"healthcheck"===t.status.action)&&""!==t.status.type))},actions:{appsApiFailure(t){(0,s.Qg)((0,p.Tl)("settings","An error occurred during the request. Unable to proceed.")+"
"+t.error.response.data.data.message,{isHTML:!0}),d.A.error(t)},setLoading(t,e){u.Ay.set(this.loading,t,e)},setError(t,e){(Array.isArray(t)?t:[t]).forEach((t=>{const n=this.apps.find((e=>e.id===t));n&&(n.error=e)}))},enableApp(t,e=[]){return this.setLoading(t,!0),this.setLoading("install",!0),(0,i.C5)().then((()=>a.Ay.post((0,r.Jv)(`/apps/app_api/apps/enable/${t}`),{deployOptions:e}).then((e=>{this.setLoading(t,!1),this.setLoading("install",!1);const n=this.apps.find((e=>e.id===t));return n&&(n.installed||(n.installed=!0,n.needsDownload=!1,n.daemon=this.defaultDaemon,n.status={type:"install",action:"deploy",init:0,deploy:0}),n.active=!0,n.canUnInstall=!1,n.removable=!0,n.error=""),this.updateAppsStatus(),a.Ay.get((0,r.Jv)("apps/files")).then((()=>{e.data.update_required&&((0,s.cf)((0,p.Tl)("settings","The app has been enabled but needs to be updated."),{onClick:()=>window.location.reload(),close:!1}),setTimeout((()=>{location.reload()}),5e3))})).catch((()=>{this.setError(t,(0,p.Tl)("settings","Error: This app cannot be enabled because it makes the server unstable"))}))})).catch((e=>{this.setLoading(t,!1),this.setLoading("install",!1),this.setError(t,e.response.data.data.message),this.appsApiFailure({appId:t,error:e})})))).catch((()=>{this.setLoading(t,!1),this.setLoading("install",!1)}))},forceEnableApp(t){return this.setLoading(t,!0),this.setLoading("install",!0),(0,i.C5)().then((()=>c.A.post((0,r.Jv)("/apps/app_api/apps/force"),{appId:t}).then((()=>{location.reload()})).catch((e=>{this.setLoading(t,!1),this.setLoading("install",!1),this.setError(t,e.response.data.data.message),this.appsApiFailure({appId:t,error:e})})))).catch((()=>{this.setLoading(t,!1),this.setLoading("install",!1)}))},disableApp(t){return this.setLoading(t,!0),(0,i.C5)().then((()=>c.A.get((0,r.Jv)(`apps/app_api/apps/disable/${t}`)).then((()=>{this.setLoading(t,!1);const e=this.apps.find((e=>e.id===t));return e&&(e.active=!1,e.removable&&(e.canUnInstall=!0)),!0})).catch((e=>{this.setLoading(t,!1),this.appsApiFailure({appId:t,error:e})})))).catch((()=>{this.setLoading(t,!1)}))},uninstallApp(t,e){return this.setLoading(t,!0),(0,i.C5)().then((()=>c.A.get((0,r.Jv)(`/apps/app_api/apps/uninstall/${t}?removeData=${e}`)).then((()=>{this.setLoading(t,!1);const e=this.apps.find((e=>e.id===t));return e&&(e.active=!1,e.needsDownload=!0,e.installed=!1,e.canUnInstall=!1,e.canInstall=!0,e.daemon=null,e.status={},null!==e.update&&this.updateCount--,e.update=void 0),!0})).catch((e=>{this.setLoading(t,!1),this.appsApiFailure({appId:t,error:e})}))))},updateApp(t){return this.setLoading(t,!0),this.setLoading("install",!0),(0,i.C5)().then((()=>c.A.get((0,r.Jv)(`/apps/app_api/apps/update/${t}`)).then((()=>{this.setLoading(t,!1),this.setLoading("install",!1);const e=this.apps.find((e=>e.id===t));if(e){const t=e.update;e.update=void 0,e.version=t||e.version,e.status={type:"update",action:"deploy",init:0,deploy:0},e.error=""}return this.updateCount--,this.updateAppsStatus(),!0})).catch((e=>{this.setLoading(t,!1),this.setLoading("install",!1),this.appsApiFailure({appId:t,error:e})})))).catch((()=>{this.setLoading(t,!1),this.setLoading("install",!1)}))},async fetchAllApps(){this.loadingList=!0;try{const t=await c.A.get((0,r.Jv)("/apps/app_api/apps/list"));return this.apps=t.data.apps,this.loadingList=!1,!0}catch(t){d.A.error(t),(0,s.Qg)((0,p.Tl)("settings","An error occurred during the request. Unable to proceed.")),this.loadingList=!1}},async fetchAppStatus(t){return c.A.get((0,r.Jv)(`/apps/app_api/apps/status/${t}`)).then((e=>{const n=this.apps.find((e=>e.id===t));n&&(n.status=e.data);const a=this.getInitializingOrDeployingApps;console.debug("initializingOrDeployingApps after setAppStatus",a),0===a.length&&(console.debug("clearing interval"),clearInterval(this.statusUpdater),this.statusUpdater=null),Object.hasOwn(e.data,"error")&&""!==e.data.error&&1===a.length&&(clearInterval(this.statusUpdater),this.statusUpdater=null)})).catch((e=>{this.appsApiFailure({appId:t,error:e}),this.apps=this.apps.filter((e=>e.id!==t)),this.updateAppsStatus()}))},updateAppsStatus(){clearInterval(this.statusUpdater),0!==this.getInitializingOrDeployingApps.length&&(this.statusUpdater=setInterval((()=>{const t=this.getInitializingOrDeployingApps;console.debug("initializingOrDeployingApps",t),t.forEach((t=>{this.fetchAppStatus(t.id)}))}),2e3))}}})},846(t,e,n){n.d(e,{T:()=>u});var a=n(85168),i=n(32981),s=n(53334),o=n(63814),p=n(65899),r=n(19051),l=n(36620),c=n(86438);const d=()=>(0,a.Qg)((0,s.Tl)("settings","An error occurred during the request. Unable to proceed.")),u=(0,p.nY)("settings-apps",{state:()=>({apps:[],categories:[],updateCount:(0,i.C)("settings","appstoreUpdateCount",0),loading:{apps:!1,categories:!1},loadingList:!1,gettingCategoriesPromise:null}),actions:{async loadCategories(t=!1){if(!(this.categories.length>0)||t)try{this.loading.categories=!0;const{data:t}=await r.Ay.get((0,o.Jv)("settings/apps/categories"));for(const e of t)e.icon=c.A[e.id]??"";this.$patch({categories:t})}catch(t){l.A.error(t),d()}finally{this.loading.categories=!1}},async loadApps(t=!1){if(!(this.apps.length>0)||t)try{this.loading.apps=!0;const{data:t}=await r.Ay.get((0,o.Jv)("settings/apps/list"));this.$patch({apps:t.apps})}catch(t){l.A.error(t),d()}finally{this.loading.apps=!1}},getCategoryById(t){return this.categories.find((({id:e})=>e===t))??null},getAppById(t){return this.apps.find((({id:e})=>e===t))??null},updateAppGroups(t,e){const n=this.apps.find((({id:e})=>e===t));n&&(n.groups=[...e])}}})},55414(t,e,n){n.d(e,{A:()=>p});var a=n(71354),i=n.n(a),s=n(76314),o=n.n(s)()(i());o.push([t.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:""}]);const p=o},45520(t,e,n){n.d(e,{A:()=>p});var a=n(71354),i=n.n(a),s=n(76314),o=n.n(s)()(i());o.push([t.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:""}]);const p=o},44005(t,e,n){n.d(e,{A:()=>p});var a=n(71354),i=n.n(a),s=n(76314),o=n.n(s)()(i());o.push([t.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:""}]);const p=o},13331(t,e,n){n.d(e,{A:()=>p});var a=n(71354),i=n.n(a),s=n(76314),o=n.n(s)()(i());o.push([t.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:""}]);const p=o},63021(t,e,n){n.d(e,{A:()=>p});var a=n(71354),i=n.n(a),s=n(76314),o=n.n(s)()(i());o.push([t.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:""}]);const p=o},17971(t,e,n){n.d(e,{A:()=>p});var a=n(71354),i=n.n(a),s=n(76314),o=n.n(s)()(i());o.push([t.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:""}]);const p=o},3007(t,e,n){n.d(e,{A:()=>p});var a=n(71354),i=n.n(a),s=n(76314),o=n.n(s)()(i());o.push([t.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:""}]);const p=o},75331(t,e,n){n.d(e,{A:()=>p});var a=n(71354),i=n.n(a),s=n(76314),o=n.n(s)()(i());o.push([t.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:""}]);const p=o},37925(t,e,n){n.d(e,{A:()=>p});var a=n(71354),i=n.n(a),s=n(76314),o=n.n(s)()(i());o.push([t.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:""}]);const p=o},39698(t,e,n){n.d(e,{A:()=>p});var a=n(71354),i=n.n(a),s=n(76314),o=n.n(s)()(i());o.push([t.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:""}]);const p=o},37205(t,e,n){n.d(e,{A:()=>p});var a=n(71354),i=n.n(a),s=n(76314),o=n.n(s)()(i());o.push([t.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:""}]);const p=o},96285(t,e,n){n.d(e,{A:()=>p});var a=n(71354),i=n.n(a),s=n(76314),o=n.n(s)()(i());o.push([t.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:['\x3c!--\n - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n--\x3e\n\n\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\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\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\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\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\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\\n\\n\\n\\n\\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\n\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\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=77df2b64&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=77df2b64&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppItem.vue?vue&type=template&id=77df2b64&scoped=true\"\nimport script from \"./AppItem.vue?vue&type=script&lang=js\"\nexport * from \"./AppItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppItem.vue?vue&type=style&index=0&id=77df2b64&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"77df2b64\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.isSupported || _setup.isFeatured)?_c('span',{staticClass:\"app-level-badge\",class:{ 'app-level-badge--supported': _setup.isSupported },attrs:{\"title\":_setup.badgeTitle}},[_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.badgeIcon,\"size\":20,\"inline\":\"\"}}),_vm._v(\"\\n\\t\"+_vm._s(_setup.badgeText)+\"\\n\")],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=style&index=0&id=5ee601b2&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=style&index=0&id=5ee601b2&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppLevelBadge.vue?vue&type=template&id=5ee601b2&scoped=true\"\nimport script from \"./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppLevelBadge.vue?vue&type=style&index=0&id=5ee601b2&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ee601b2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"app-score__wrapper\",attrs:{\"role\":\"img\",\"aria-label\":_vm.title,\"title\":_vm.title}},[_vm._l((_vm.fullStars),function(index){return _c('NcIconSvgWrapper',{key:`full-star-${index}`,attrs:{\"path\":_vm.mdiStar,\"inline\":\"\"}})}),_vm._v(\" \"),(_vm.hasHalfStar)?_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiStarHalfFull,\"inline\":\"\"}}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.emptyStars),function(index){return _c('NcIconSvgWrapper',{key:`empty-star-${index}`,attrs:{\"path\":_vm.mdiStarOutline,\"inline\":\"\"}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=style&index=0&id=2193f4e0&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=style&index=0&id=2193f4e0&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppScore.vue?vue&type=template&id=2193f4e0&scoped=true\"\nimport script from \"./AppScore.vue?vue&type=script&lang=ts\"\nexport * from \"./AppScore.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppScore.vue?vue&type=style&index=0&id=2193f4e0&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2193f4e0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppContent,{staticClass:\"app-settings-content\",attrs:{\"page-heading\":_setup.appStoreLabel}},[_c('h2',{staticClass:\"app-settings-content__label\",domProps:{\"textContent\":_vm._s(_setup.viewLabel)}}),_vm._v(\" \"),(_setup.currentCategory === 'discover')?_c(_setup.AppStoreDiscoverSection):(_setup.isLoading)?_c(_setup.NcEmptyContent,{staticClass:\"empty-content__loading\",attrs:{\"name\":_setup.t('settings', 'Loading app list')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcLoadingIcon,{attrs:{\"size\":64}})]},proxy:true}])}):_c(_setup.AppList,{attrs:{\"category\":_setup.currentCategory}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\nHow it works:\n`this.#head` is an instance of `Node` which keeps track of its current value and nests another instance of `Node` that keeps the value that comes after it. When a value is provided to `.enqueue()`, the code needs to iterate through `this.#head`, going deeper and deeper to find the last value. However, iterating through every single item is slow. This problem is solved by saving a reference to the last value as `this.#tail` so that it can reference it to add a new value.\n*/\n\nclass Node {\n\tvalue;\n\tnext;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\t}\n}\n\nexport default class Queue {\n\t#head;\n\t#tail;\n\t#size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this.#head) {\n\t\t\tthis.#tail.next = node;\n\t\t\tthis.#tail = node;\n\t\t} else {\n\t\t\tthis.#head = node;\n\t\t\tthis.#tail = node;\n\t\t}\n\n\t\tthis.#size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this.#head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#head = this.#head.next;\n\t\tthis.#size--;\n\t\treturn current.value;\n\t}\n\n\tpeek() {\n\t\tif (!this.#head) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.#head.value;\n\n\t\t// TODO: Node.js 18.\n\t\t// return this.#head?.value;\n\t}\n\n\tclear() {\n\t\tthis.#head = undefined;\n\t\tthis.#tail = undefined;\n\t\tthis.#size = 0;\n\t}\n\n\tget size() {\n\t\treturn this.#size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this.#head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n}\n","import Queue from 'yocto-queue';\n\nexport default function pLimit(concurrency) {\n\tvalidateConcurrency(concurrency);\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst resumeNext = () => {\n\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\tqueue.dequeue()();\n\t\t\t// Since `pendingCount` has been decreased by one, increase `activeCount` by one.\n\t\t\tactiveCount++;\n\t\t}\n\t};\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tresumeNext();\n\t};\n\n\tconst run = async (function_, resolve, arguments_) => {\n\t\tconst result = (async () => function_(...arguments_))();\n\n\t\tresolve(result);\n\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\tnext();\n\t};\n\n\tconst enqueue = (function_, resolve, arguments_) => {\n\t\t// Queue `internalResolve` instead of the `run` function\n\t\t// to preserve asynchronous context.\n\t\tnew Promise(internalResolve => {\n\t\t\tqueue.enqueue(internalResolve);\n\t\t}).then(\n\t\t\trun.bind(undefined, function_, resolve, arguments_),\n\t\t);\n\n\t\t(async () => {\n\t\t\t// This function needs to wait until the next microtask before comparing\n\t\t\t// `activeCount` to `concurrency`, because `activeCount` is updated asynchronously\n\t\t\t// after the `internalResolve` function is dequeued and called. The comparison in the if-statement\n\t\t\t// needs to happen asynchronously as well to get an up-to-date value for `activeCount`.\n\t\t\tawait Promise.resolve();\n\n\t\t\tif (activeCount < concurrency) {\n\t\t\t\tresumeNext();\n\t\t\t}\n\t\t})();\n\t};\n\n\tconst generator = (function_, ...arguments_) => new Promise(resolve => {\n\t\tenqueue(function_, resolve, arguments_);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount,\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size,\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue() {\n\t\t\t\tqueue.clear();\n\t\t\t},\n\t\t},\n\t\tconcurrency: {\n\t\t\tget: () => concurrency,\n\n\t\t\tset(newConcurrency) {\n\t\t\t\tvalidateConcurrency(newConcurrency);\n\t\t\t\tconcurrency = newConcurrency;\n\n\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\t// eslint-disable-next-line no-unmodified-loop-condition\n\t\t\t\t\twhile (activeCount < concurrency && queue.size > 0) {\n\t\t\t\t\t\tresumeNext();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n\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\n\n\n\n\n\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","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\n\n\n\n\n\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\n\n\n\n\n\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\n\n\n\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!./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 ? `` : null;\n });\n watchEffect(async () => {\n // Note: Only variables until the first `await` will be watched!\n if (!app.value?.preview) {\n appIcon.value = categoryIcon.value;\n }\n else {\n appIcon.value = null;\n // Now try to load the real app icon\n try {\n const response = await window.fetch(app.value.preview);\n const blob = await response.blob();\n const rawSvg = await blob.text();\n appIcon.value = rawSvg.replaceAll(/fill=\"#(fff|ffffff)([a-z0-9]{1,2})?\"/ig, 'fill=\"currentColor\"');\n }\n catch (error) {\n appIcon.value = categoryIcon.value;\n logger.error('Could not load app icon', { error });\n }\n }\n });\n return {\n appIcon,\n };\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=style&index=0&id=70317c96&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=style&index=0&id=70317c96&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppStoreSidebar.vue?vue&type=template&id=70317c96&scoped=true\"\nimport script from \"./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppStoreSidebar.vue?vue&type=style&index=0&id=70317c96&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"70317c96\",\n null\n \n)\n\nexport default component.exports"],"names":["APPS_SECTION_ENUM","Object","freeze","discover","t","installed","enabled","disabled","updates","featured","supported","axios","get","generateOcsUrl","then","data","ocs","meta","statuscode","emit","apps","window","dispatchEvent","Event","computed","appGroups","this","app","groups","map","group","id","name","installing","app_api","appApiStore","getLoading","$store","getters","loading","isLoading","isInitializing","status","action","isDeploying","isManualInstall","daemon","accepts_deploy_id","updateButtonText","version","update","enableButtonText","progress","deploy","init","needsDownload","disableButtonText","forceEnableButtonText","enableButtonTooltip","forceEnableButtonTooltip","base","defaultDeployDaemonAccessible","getDefaultDaemon","getDaemonAccessible","groupCheckedAppsData","mounted","length","methods","asyncFindGroup","query","dispatch","search","limit","offset","isLimitedToGroups","setGroupLimit","appId","canLimitToGroups","types","includes","addGroupLimitation","groupArray","pop","concat","store","updateAppGroups","removeGroupLimitation","currentGroups","index","indexOf","splice","forceEnable","forceEnableApp","rebuildNavigation","catch","error","showError","response","enable","deployOptions","enableApp","disable","disableApp","remove","removeData","uninstallApp","install","updateApp","updateCount","Math","max","mdiStarCircleOutline","mdiAccount","mdiCheck","mdiClose","bundles","mdiArchive","mdiStarShooting","mdiStar","mdiDownload","ai","mdiCreation","auth","mdiKey","customization","mdiCog","dashboard","mdiViewColumn","files","mdiFolder","games","mdiControllerClassic","integration","mdiOpenInApp","monitoring","mdiMonitorEye","multimedia","mdiMultimedia","office","mdiFileDocumentEdit","organization","mdiOfficeBuilding","mdiMagnify","security","mdiSecurity","social","mdiAccountMultiple","tools","mdiTools","workflow","mdiClipboardFlow","useAppApiStore","defineStore","state","loadState","loadingList","statusUpdater","daemonAccessible","defaultDaemon","getAllApps","getUpdateCount","getAppStatus","find","getStatusUpdater","getInitializingOrDeployingApps","filter","type","actions","appsApiFailure","message","isHTML","logger","setLoading","value","Vue","setError","Array","isArray","forEach","_id","confirmPassword","post","generateUrl","active","canUnInstall","removable","updateAppsStatus","update_required","showInfo","onClick","location","reload","close","setTimeout","api","canInstall","undefined","fetchAllApps","fetchAppStatus","initializingOrDeployingApps","console","debug","clearInterval","hasOwn","setInterval","showApiError","useAppsStore","categories","gettingCategoriesPromise","loadCategories","force","category","icon","APPSTORE_CATEGORY_ICONS","$patch","loadApps","getCategoryById","categoryId","getAppById","___CSS_LOADER_EXPORT___","push","module","filterId","filterUrl","random","toString","substring","components","AppLevelBadge","AppScore","NcButton","NcIconSvgWrapper","mixins","AppManagement","SvgFilterMixin","props","required","String","listView","Boolean","default","useBundleView","headers","inline","setup","mdiCogOutline","isSelected","scrolled","screenshotLoaded","hasRating","appstoreData","ratingNumOverall","dataItemTag","withSidebar","$route","params","shouldDisplayDefaultIcon","preview","watch","releases","screenshot","image","Image","onload","src","watchers","prefix","content","getDataItemHeaders","columnName","join","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","tag","staticClass","class","attrs","staticStyle","_e","_v","appName","_s","summary","level","score","on","$event","stopPropagation","isCompatible","_defineComponent","__name","__props","isSupported","isFeatured","badgeIcon","badgeText","badgeTitle","__sfc","_setup","_setupProxy","defineComponent","Number","mdiStarHalfFull","mdiStarOutline","title","appScore","toFixed","fullStars","floor","emptyStars","min","hasHalfStar","_l","key","Node","constructor","_defineProperty","_head","WeakMap","_tail","_size","Queue","_classPrivateFieldInitSpec","clear","enqueue","_this$size","node","_classPrivateFieldGet","next","_classPrivateFieldSet","dequeue","_this$size3","current","peek","size","Symbol","iterator","pLimit","concurrency","validateConcurrency","queue","activeCount","resumeNext","run","async","function_","resolve","arguments_","result","generator","Promise","internalResolve","bind","defineProperties","pendingCount","clearQueue","set","newConcurrency","queueMicrotask","isInteger","POSITIVE_INFINITY","TypeError","AppItem","counter","hasPendingUpdate","showUpdateAll","useListView","exApps","isAppApiEnabled","toLowerCase","sort","a","b","natSortDiff","OC","Util","naturalSortCompare","sortStringA","sortStringB","appstore","getAppBundles","bundle","bundleApps","bundleIds","searchApps","_app","useAppStoreView","allBundlesEnabled","bundleToggleText","beforeDestroy","unsubscribe","setSearch","resetSearch","subscribe","toggleBundle","disableBundle","enableBundle","Notification","show","updateAll","n","parseApiResponse","element","appElement","date","Date","parse","expiryDate","Error","filterElements","now","PostType","defineAsyncComponent","CarouselType","ShowcaseType","hasError","ref","elements","shuffleArray","array","i","j","onBeforeMount","info","parsedElements","shuffledElements","order","Infinity","getComponent","render","h","mdiEyeOff","NcEmptyContent","NcLoadingIcon","scopedSlots","_u","fn","proxy","entry","_b","route","useRoute","currentCategory","appStoreLabel","viewLabel","displayName","watchEffect","document","instance","getCurrentInstance","shouldRefetchCategories","onBeforeUnmount","NcAppContent","AppList","AppStoreDiscoverSection","domProps","appstoreEnabled","developerDocsUrl","categoriesLoading","isSubscribed","NcAppNavigation","NcAppNavigationItem","NcAppNavigationSpacer","NcCounterBubble","text","minHeading","renderMarkdown","renderer","marked","Renderer","link","href","prot","decodeURIComponent","unescape","replace","e","out","heading","depth","blockquote","dompurify","sanitize","trim","gfm","highlight","tables","breaks","pedantic","smartLists","smartypants","SAFE_FOR_JQUERY","ALLOWED_TAGS","mdiTextShort","NcAppSidebarTab","Markdown","description","NcDialog","NcTextField","NcNoteCard","NcCheckboxRadioSwitch","environmentVariables","environment_variables","reduce","acc","envVar","envName","mounts","mdiPlus","mdiDelete","addingMount","newMountPoint","hostPath","containerPath","readonly","addingPortBinding","configuredDeployOptions","deployOptionsDocsUrl","newShow","fetchExAppDeployOptions","startAddingMount","$nextTick","$refs","newMountHostPath","focus","addMountPoint","cancelAddMountPoint","removeMount","mountToRemove","mount","submitDeployOptions","$emit","apply","arguments","$set","keys","NcDateTime","NcSelect","AppDeployOptionsModal","mdiBug","mdiFeatureSearch","mdiTextBox","mdiTooltipQuestion","mdiToyBrickPlus","showDeployOptionsModal","lastModified","at","appAuthors","warn","authorName","xmlNode","author","split","localeCompare","appstoreUrl","externalResources","resources","internal","label","website","documentation","user","admin","developer","appCategories","flat","rateAppUrl","getGroups","toggleRemoveData","directives","rawName","expression","_i","$$a","$$el","target","$$c","checked","$$v","$$i","slice","slot","click","missingMinOwnCloudVersion","missingMaxOwnCloudVersion","missingDependencies","dep","shipped","resource","bugs","discussion","hasChangelog","values","translations","some","changelog","createChangelogFromRelease","release","getLanguage","en","mdiClockFast","gpuSupport","deploy_config","computeDevice","mdiFileChart","display_name","router","useRouter","legacyStore","useStore","exApp","rating","ratingNumRecent","ratingRecent","ratingOverall","showSidebar","appIcon","categoryIcon","path","AppstoreCategoryIcons","fetch","blob","rawSvg","replaceAll","useAppIcon","licenseText","license","licence","toUpperCase","activeTab","hasScreenshot","loadScreenshot","onMounted","hideAppDetails","NcAppSidebar","AppDescriptionTab","AppDetailsTab","AppReleasesTab","AppDeployDaemonTab","AppDaemonBadge"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"settings-apps-view-4529.js?v=df92482327799c83fdc2","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/constants/AppsConstants.js","webpack:///nextcloud/apps/settings/src/service/rebuild-navigation.js","webpack:///nextcloud/apps/settings/src/mixins/AppManagement.js","webpack:///nextcloud/apps/settings/src/constants/AppstoreCategoryIcons.ts","webpack:///nextcloud/apps/settings/src/store/app-api-store.ts","webpack:///nextcloud/apps/settings/src/store/apps-store.ts","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=style&index=0&id=914914ce&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/AppList/AppDaemonBadge.vue?vue&type=style&index=0&id=4e5b1dd0&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=style&index=0&id=77df2b64&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppList/AppLevelBadge.vue?vue&type=style&index=0&id=5ee601b2&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue?vue&type=style&index=0&id=bb597eea&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue?vue&type=style&index=0&id=10be429c&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?vue&type=style&index=0&id=cf0a1ae6&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?vue&type=style&index=0&id=660767cf&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?vue&type=style&index=0&id=9c32407e&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=style&index=0&id=35d8331c&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/views/AppStoreSidebar.vue?vue&type=style&index=0&id=70317c96&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue?vue&type=style&index=0&id=2193f4e0&prod&scoped=true&lang=css","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue?vue&type=style&index=0&id=430fa3a2&prod&scoped=true&lang=css","webpack:///nextcloud/apps/settings/src/views/AppStore.vue?vue&type=style&index=0&id=6235de08&prod&scoped=true&lang=css","webpack:///nextcloud/apps/settings/src/views/AppStoreNavigation.vue?vue&type=style&index=0&id=b651b260&prod&scoped=true&lang=css","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?af1e","webpack:///nextcloud/apps/settings/src/components/SvgFilterMixin.vue","webpack:///nextcloud/apps/settings/src/components/SvgFilterMixin.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/SvgFilterMixin.vue?5bcd","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?57b6","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?a9a1","webpack:///nextcloud/apps/settings/src/components/AppList/AppLevelBadge.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppLevelBadge.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/components/AppList/AppLevelBadge.vue?8473","webpack://nextcloud/./apps/settings/src/components/AppList/AppLevelBadge.vue?74e8","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/settings/src/components/AppList/AppScore.vue?fc42","webpack://nextcloud/./apps/settings/src/components/AppList/AppScore.vue?26fd","webpack:///nextcloud/apps/settings/src/views/AppStore.vue","webpack:///nextcloud/node_modules/yocto-queue/index.js","webpack:///nextcloud/node_modules/p-limit/index.js","webpack:///nextcloud/apps/settings/src/components/AppList.vue","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/AppList.vue?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/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?4449","webpack://nextcloud/./apps/settings/src/views/AppStoreNavigation.vue?6e6f","webpack:///nextcloud/apps/settings/src/views/AppStoreSidebar.vue","webpack:///nextcloud/apps/settings/src/components/Markdown.vue","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?6f57","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?26cf","webpack://nextcloud/./apps/settings/src/components/Markdown.vue?d299","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?cd04","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?311d","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?9ed4","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue?83c1","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue?0709","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue?4e6f","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?578a","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?d4df","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?88c0","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?d492","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue?0e7e","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue?4b28","webpack:///nextcloud/apps/settings/src/components/AppList/AppDaemonBadge.vue","webpack:///nextcloud/apps/settings/src/components/AppList/AppDaemonBadge.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/components/AppList/AppDaemonBadge.vue?fb49","webpack://nextcloud/./apps/settings/src/components/AppList/AppDaemonBadge.vue?e75c","webpack:///nextcloud/apps/settings/src/views/AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/settings/src/composables/useAppIcon.ts","webpack://nextcloud/./apps/settings/src/views/AppStoreSidebar.vue?782c","webpack://nextcloud/./apps/settings/src/views/AppStoreSidebar.vue?5373"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of verification constants, according to Apps */\nexport const APPS_SECTION_ENUM = Object.freeze({\n\tdiscover: t('settings', 'Discover'),\n\tinstalled: t('settings', 'Your apps'),\n\tenabled: t('settings', 'Active apps'),\n\tdisabled: t('settings', 'Disabled apps'),\n\tupdates: t('settings', 'Updates'),\n\t'app-bundles': t('settings', 'App bundles'),\n\tfeatured: t('settings', 'Featured apps'),\n\tsupported: t('settings', 'Supported apps'), // From subscription\n})\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { emit } from '@nextcloud/event-bus'\n\nexport default () => {\n\treturn axios.get(generateOcsUrl('core/navigation', 2) + '/apps?format=json')\n\t\t.then(({ data }) => {\n\t\t\tif (data.ocs.meta.statuscode !== 200) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\temit('nextcloud:app-menu.refresh', { apps: data.ocs.data })\n\t\t\twindow.dispatchEvent(new Event('resize'))\n\t\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport rebuildNavigation from '../service/rebuild-navigation.js'\n\nexport default {\n\tcomputed: {\n\t\tappGroups() {\n\t\t\treturn this.app.groups.map(group => { return { id: group, name: group } })\n\t\t},\n\t\tinstalling() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn this.app && this?.appApiStore.getLoading('install') === true\n\t\t\t}\n\t\t\treturn this.$store.getters.loading('install')\n\t\t},\n\t\tisLoading() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn this.app && this?.appApiStore.getLoading(this.app.id) === true\n\t\t\t}\n\t\t\treturn this.app && this.$store.getters.loading(this.app.id)\n\t\t},\n\t\tisInitializing() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn this.app && (this.app?.status?.action === 'init' || this.app?.status?.action === 'healthcheck')\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tisDeploying() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn this.app && this.app?.status?.action === 'deploy'\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tisManualInstall() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn this.app?.daemon?.accepts_deploy_id === 'manual-install'\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tupdateButtonText() {\n\t\t\tif (this.app?.app_api && this.app?.daemon?.accepts_deploy_id === 'manual-install') {\n\t\t\t\treturn t('settings', 'Manually installed apps cannot be updated')\n\t\t\t}\n\t\t\treturn t('settings', 'Update to {version}', { version: this.app?.update })\n\t\t},\n\t\tenableButtonText() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'deploy') {\n\t\t\t\t\treturn t('settings', '{progress}% Deploying …', { progress: this.app?.status?.deploy ?? 0 })\n\t\t\t\t}\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'init') {\n\t\t\t\t\treturn t('settings', '{progress}% Initializing …', { progress: this.app?.status?.init ?? 0 })\n\t\t\t\t}\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'healthcheck') {\n\t\t\t\t\treturn t('settings', 'Health checking')\n\t\t\t\t}\n\t\t\t\tif (this.app.needsDownload) {\n\t\t\t\t\treturn t('settings', 'Deploy and Enable')\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable')\n\t\t\t} else {\n\t\t\t\tif (this.app.needsDownload) {\n\t\t\t\t\treturn t('settings', 'Download and enable')\n\t\t\t\t}\n\t\t\t\treturn t('settings', 'Enable')\n\t\t\t}\n\t\t},\n\t\tdisableButtonText() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'deploy') {\n\t\t\t\t\treturn t('settings', '{progress}% Deploying …', { progress: this.app?.status?.deploy })\n\t\t\t\t}\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'init') {\n\t\t\t\t\treturn t('settings', '{progress}% Initializing …', { progress: this.app?.status?.init })\n\t\t\t\t}\n\t\t\t\tif (this.app && this.app?.status?.action && this.app?.status?.action === 'healthcheck') {\n\t\t\t\t\treturn t('settings', 'Health checking')\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn t('settings', 'Disable')\n\t\t},\n\t\tforceEnableButtonText() {\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'Allow untested app')\n\t\t\t}\n\t\t\treturn t('settings', 'Allow untested app')\n\t\t},\n\t\tenableButtonTooltip() {\n\t\t\tif (!this.app?.app_api && this.app.needsDownload) {\n\t\t\t\treturn t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t\tforceEnableButtonTooltip() {\n\t\t\tconst base = t('settings', 'This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.')\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn base + ' ' + t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn base\n\t\t},\n\t\tdefaultDeployDaemonAccessible() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tif (this.app?.daemon && this.app?.daemon?.accepts_deploy_id === 'manual-install') {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tif (this.app?.daemon?.accepts_deploy_id === 'docker-install'\n\t\t\t\t\t&& this.appApiStore.getDefaultDaemon?.name === this.app?.daemon?.name) {\n\t\t\t\t\treturn this?.appApiStore.getDaemonAccessible === true\n\t\t\t\t}\n\t\t\t\treturn this?.appApiStore.getDaemonAccessible\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tif (this.app && this.app.groups && this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasyncFindGroup(query) {\n\t\t\treturn this.$store.dispatch('getGroups', { search: query, limit: 5, offset: 0 })\n\t\t},\n\t\tisLimitedToGroups(app) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn this.app.groups.length || this.groupCheckedAppsData\n\t\t},\n\t\tsetGroupLimit() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn // not supported for app_api apps\n\t\t\t}\n\t\t\tif (!this.groupCheckedAppsData) {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: [] })\n\t\t\t}\n\t\t},\n\t\tcanLimitToGroups(app) {\n\t\t\tif ((app.types && app.types.includes('filesystem'))\n\t\t\t\t\t|| app.types.includes('prelogin')\n\t\t\t\t\t|| app.types.includes('authentication')\n\t\t\t\t\t|| app.types.includes('logging')\n\t\t\t\t\t|| app.types.includes('prevent_group_restriction')\n\t\t\t\t\t|| app?.app_api) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\taddGroupLimitation(groupArray) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst group = groupArray.pop()\n\t\t\tconst groups = this.app.groups.concat([]).concat([group.id])\n\n\t\t\tif (this.store && this.store.updateAppGroups) {\n\t\t\t\tthis.store.updateAppGroups(this.app.id, groups)\n\t\t\t}\n\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\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\n\t\t\tif (this.store && this.store.updateAppGroups) {\n\t\t\t\tthis.store.updateAppGroups(this.app.id, currentGroups)\n\t\t\t}\n\n\t\t\tif (currentGroups.length === 0) {\n\t\t\t\tthis.groupCheckedAppsData = false\n\t\t\t}\n\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: currentGroups })\n\t\t},\n\t\tforceEnable(appId) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.forceEnableApp(appId)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('forceEnableApp', { appId, groups: [] })\n\t\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t}\n\t\t},\n\t\tenable(appId, deployOptions = []) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.enableApp(appId, deployOptions)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId, groups: [] })\n\t\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t}\n\t\t},\n\t\tdisable(appId) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.disableApp(appId)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('disableApp', { appId })\n\t\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t}\n\t\t},\n\t\tasync remove(appId, removeData = false) {\n\t\t\ttry {\n\t\t\t\tif (this.app?.app_api) {\n\t\t\t\t\tawait this.appApiStore.uninstallApp(appId, removeData)\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('uninstallApp', { appId, removeData })\n\t\t\t\t}\n\t\t\t\tawait rebuildNavigation()\n\t\t\t} catch (error) {\n\t\t\t\tshowError(error)\n\t\t\t}\n\t\t},\n\t\tinstall(appId) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.enableApp(appId)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId })\n\t\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t}\n\t\t},\n\t\tupdate(appId) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.updateApp(appId)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('updateApp', { appId })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\trebuildNavigation()\n\t\t\t\t\t\tthis.store.updateCount = Math.max(this.store.updateCount - 1, 0)\n\t\t\t\t\t})\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { mdiAccount, mdiAccountMultiple, mdiArchive, mdiCheck, mdiClipboardFlow, mdiClose, mdiCog, mdiControllerClassic, mdiCreation, 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 ai: mdiCreation,\n auth: mdiKey,\n customization: mdiCog,\n dashboard: mdiViewColumn,\n files: mdiFolder,\n games: mdiControllerClassic,\n integration: mdiOpenInApp,\n monitoring: mdiMonitorEye,\n multimedia: mdiMultimedia,\n office: mdiFileDocumentEdit,\n organization: mdiOfficeBuilding,\n search: mdiMagnify,\n security: mdiSecurity,\n social: mdiAccountMultiple,\n tools: mdiTools,\n workflow: mdiClipboardFlow,\n});\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios';\nimport { confirmPassword } from '@nextcloud/password-confirmation';\nimport { showError, showInfo } from '@nextcloud/dialogs';\nimport { loadState } from '@nextcloud/initial-state';\nimport { translate as t } from '@nextcloud/l10n';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport api from './api';\nimport logger from '../logger';\nimport Vue from 'vue';\nexport const useAppApiStore = defineStore('app-api-apps', {\n state: () => ({\n apps: [],\n updateCount: loadState('settings', 'appstoreExAppUpdateCount', 0),\n loading: {},\n loadingList: false,\n statusUpdater: null,\n daemonAccessible: loadState('settings', 'defaultDaemonConfigAccessible', false),\n defaultDaemon: loadState('settings', 'defaultDaemonConfig', null),\n }),\n getters: {\n getLoading: (state) => (id) => state.loading[id] ?? false,\n getAllApps: (state) => state.apps,\n getUpdateCount: (state) => state.updateCount,\n getDaemonAccessible: (state) => state.daemonAccessible,\n getDefaultDaemon: (state) => state.defaultDaemon,\n getAppStatus: (state) => (appId) => state.apps.find((app) => app.id === appId)?.status || null,\n getStatusUpdater: (state) => state.statusUpdater,\n getInitializingOrDeployingApps: (state) => state.apps.filter((app) => app?.status?.action\n && (app?.status?.action === 'deploy' || app.status.action === 'init' || app.status.action === 'healthcheck')\n && app.status.type !== ''),\n },\n actions: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n appsApiFailure(error) {\n showError(t('settings', 'An error occurred during the request. Unable to proceed.') + '
' + error.error.response.data.data.message, { isHTML: true });\n logger.error(error);\n },\n setLoading(id, value) {\n Vue.set(this.loading, id, value);\n },\n setError(appId, error) {\n const appIds = Array.isArray(appId) ? appId : [appId];\n appIds.forEach((_id) => {\n const app = this.apps.find((app) => app.id === _id);\n if (app) {\n app.error = error;\n }\n });\n },\n enableApp(appId, deployOptions = []) {\n this.setLoading(appId, true);\n this.setLoading('install', true);\n return confirmPassword().then(() => {\n return axios.post(generateUrl(`/apps/app_api/apps/enable/${appId}`), { deployOptions })\n .then((response) => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n if (!app.installed) {\n app.installed = true;\n app.needsDownload = false;\n app.daemon = this.defaultDaemon;\n app.status = {\n type: 'install',\n action: 'deploy',\n init: 0,\n deploy: 0,\n };\n }\n app.active = true;\n app.canUnInstall = false;\n app.removable = true;\n app.error = '';\n }\n this.updateAppsStatus();\n return axios.get(generateUrl('apps/files'))\n .then(() => {\n if (response.data.update_required) {\n showInfo(t('settings', 'The app has been enabled but needs to be updated.'), {\n onClick: () => window.location.reload(),\n close: false,\n });\n setTimeout(() => {\n location.reload();\n }, 5000);\n }\n })\n .catch(() => {\n this.setError(appId, t('settings', 'Error: This app cannot be enabled because it makes the server unstable'));\n });\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n this.setError(appId, error.response.data.data.message);\n this.appsApiFailure({ appId, error });\n });\n }).catch(() => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n });\n },\n forceEnableApp(appId) {\n this.setLoading(appId, true);\n this.setLoading('install', true);\n return confirmPassword().then(() => {\n return api.post(generateUrl('/apps/app_api/apps/force'), { appId })\n .then(() => {\n location.reload();\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n this.setError(appId, error.response.data.data.message);\n this.appsApiFailure({ appId, error });\n });\n }).catch(() => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n });\n },\n disableApp(appId) {\n this.setLoading(appId, true);\n return confirmPassword().then(() => {\n return api.get(generateUrl(`apps/app_api/apps/disable/${appId}`))\n .then(() => {\n this.setLoading(appId, false);\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n app.active = false;\n if (app.removable) {\n app.canUnInstall = true;\n }\n }\n return true;\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.appsApiFailure({ appId, error });\n });\n }).catch(() => {\n this.setLoading(appId, false);\n });\n },\n uninstallApp(appId, removeData) {\n this.setLoading(appId, true);\n return confirmPassword().then(() => {\n return api.get(generateUrl(`/apps/app_api/apps/uninstall/${appId}?removeData=${removeData}`))\n .then(() => {\n this.setLoading(appId, false);\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n app.active = false;\n app.needsDownload = true;\n app.installed = false;\n app.canUnInstall = false;\n app.canInstall = true;\n app.daemon = null;\n app.status = {};\n if (app.update !== null) {\n this.updateCount--;\n }\n app.update = undefined;\n }\n return true;\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.appsApiFailure({ appId, error });\n });\n });\n },\n updateApp(appId) {\n this.setLoading(appId, true);\n this.setLoading('install', true);\n return confirmPassword().then(() => {\n return api.get(generateUrl(`/apps/app_api/apps/update/${appId}`))\n .then(() => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n const version = app.update;\n app.update = undefined;\n app.version = version || app.version;\n app.status = {\n type: 'update',\n action: 'deploy',\n init: 0,\n deploy: 0,\n };\n app.error = '';\n }\n this.updateCount--;\n this.updateAppsStatus();\n return true;\n })\n .catch((error) => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n this.appsApiFailure({ appId, error });\n });\n }).catch(() => {\n this.setLoading(appId, false);\n this.setLoading('install', false);\n });\n },\n async fetchAllApps() {\n this.loadingList = true;\n try {\n const response = await api.get(generateUrl('/apps/app_api/apps/list'));\n this.apps = response.data.apps;\n this.loadingList = false;\n return true;\n }\n catch (error) {\n logger.error(error);\n showError(t('settings', 'An error occurred during the request. Unable to proceed.'));\n this.loadingList = false;\n }\n },\n async fetchAppStatus(appId) {\n return api.get(generateUrl(`/apps/app_api/apps/status/${appId}`))\n .then((response) => {\n const app = this.apps.find((app) => app.id === appId);\n if (app) {\n app.status = response.data;\n }\n const initializingOrDeployingApps = this.getInitializingOrDeployingApps;\n console.debug('initializingOrDeployingApps after setAppStatus', initializingOrDeployingApps);\n if (initializingOrDeployingApps.length === 0) {\n console.debug('clearing interval');\n clearInterval(this.statusUpdater);\n this.statusUpdater = null;\n }\n if (Object.hasOwn(response.data, 'error')\n && response.data.error !== ''\n && initializingOrDeployingApps.length === 1) {\n clearInterval(this.statusUpdater);\n this.statusUpdater = null;\n }\n })\n .catch((error) => {\n this.appsApiFailure({ appId, error });\n this.apps = this.apps.filter((app) => app.id !== appId);\n this.updateAppsStatus();\n });\n },\n updateAppsStatus() {\n clearInterval(this.statusUpdater);\n const initializingOrDeployingApps = this.getInitializingOrDeployingApps;\n if (initializingOrDeployingApps.length === 0) {\n return;\n }\n this.statusUpdater = setInterval(() => {\n const initializingOrDeployingApps = this.getInitializingOrDeployingApps;\n console.debug('initializingOrDeployingApps', initializingOrDeployingApps);\n initializingOrDeployingApps.forEach(app => {\n this.fetchAppStatus(app.id);\n });\n }, 2000);\n },\n },\n});\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { showError } from '@nextcloud/dialogs';\nimport { loadState } from '@nextcloud/initial-state';\nimport { translate as t } from '@nextcloud/l10n';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport axios from '@nextcloud/axios';\nimport logger from '../logger';\nimport APPSTORE_CATEGORY_ICONS from '../constants/AppstoreCategoryIcons.ts';\nconst showApiError = () => showError(t('settings', 'An error occurred during the request. Unable to proceed.'));\nexport const useAppsStore = defineStore('settings-apps', {\n state: () => ({\n apps: [],\n categories: [],\n updateCount: loadState('settings', 'appstoreUpdateCount', 0),\n loading: {\n apps: false,\n categories: false,\n },\n loadingList: false,\n gettingCategoriesPromise: null,\n }),\n actions: {\n async loadCategories(force = false) {\n if (this.categories.length > 0 && !force) {\n return;\n }\n try {\n this.loading.categories = true;\n const { data: categories } = await axios.get(generateUrl('settings/apps/categories'));\n for (const category of categories) {\n category.icon = APPSTORE_CATEGORY_ICONS[category.id] ?? '';\n }\n this.$patch({\n categories,\n });\n }\n catch (error) {\n logger.error(error);\n showApiError();\n }\n finally {\n this.loading.categories = false;\n }\n },\n async loadApps(force = false) {\n if (this.apps.length > 0 && !force) {\n return;\n }\n try {\n this.loading.apps = true;\n const { data } = await axios.get(generateUrl('settings/apps/list'));\n this.$patch({\n apps: data.apps,\n });\n }\n catch (error) {\n logger.error(error);\n showApiError();\n }\n finally {\n this.loading.apps = false;\n }\n },\n getCategoryById(categoryId) {\n return this.categories.find(({ id }) => id === categoryId) ?? null;\n },\n getAppById(appId) {\n return this.apps.find(({ id }) => id === appId) ?? null;\n },\n updateAppGroups(appId, groups) {\n const app = this.apps.find(({ id }) => id === appId);\n if (app) {\n app.groups = [...groups];\n }\n },\n },\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.apps-list[data-v-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","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-daemon-badge[data-v-4e5b1dd0]{color:var(--color-text-maxcontrast);background-color:rgba(0,0,0,0);border:1px solid var(--color-text-maxcontrast);border-radius:var(--border-radius);display:flex;flex-direction:row;gap:6px;padding:3px 6px;width:fit-content}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList/AppDaemonBadge.vue\"],\"names\":[],\"mappings\":\"AACA,mCACC,mCAAA,CACA,8BAAA,CACA,8CAAA,CACA,kCAAA,CAEA,YAAA,CACA,kBAAA,CACA,OAAA,CACA,eAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n.app-daemon-badge {\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tbackground-color: transparent;\\n\\tborder: 1px solid var(--color-text-maxcontrast);\\n\\tborder-radius: var(--border-radius);\\n\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tgap: 6px;\\n\\tpadding: 3px 6px;\\n\\twidth: fit-content;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*!\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */.app-item[data-v-77df2b64]{position:relative}.app-item[data-v-77df2b64]:hover{background-color:var(--color-background-dark)}.app-item--list-view[data-v-77df2b64]{--app-item-padding: calc(var(--default-grid-baseline) * 2);--app-item-height: calc(var(--default-clickable-area) + var(--app-item-padding) * 2)}.app-item--list-view.app-item--selected[data-v-77df2b64]{background-color:var(--color-background-dark)}.app-item--list-view>*[data-v-77df2b64]{vertical-align:middle;border-bottom:1px solid var(--color-border);padding:var(--app-item-padding);height:var(--app-item-height)}.app-item--list-view .app-image[data-v-77df2b64]{width:var(--default-clickable-area);height:auto;text-align:end}.app-item--list-view .app-image-icon svg[data-v-77df2b64],.app-item--list-view .app-image-icon .icon-settings-dark[data-v-77df2b64]{margin-top:5px;width:20px;height:20px;opacity:.5;background-size:cover;display:inline-block}.app-item--list-view .app-name[data-v-77df2b64]{padding:0 var(--app-item-padding)}.app-item--list-view .app-name--link[data-v-77df2b64]{height:var(--app-item-height);display:flex;align-items:center}.app-item--list-view .app-name--link[data-v-77df2b64]::after{content:\"\";position:absolute;inset-inline:0;height:var(--app-item-height)}.app-item--list-view .app-actions[data-v-77df2b64]{display:flex;gap:var(--app-item-padding);flex-wrap:wrap;justify-content:end}.app-item--list-view .app-actions .icon-loading-small[data-v-77df2b64]{display:inline-block;top:4px;margin-inline-end:10px}@media only screen and (max-width: 900px){.app-item--list-view .app-version[data-v-77df2b64],.app-item--list-view .app-level[data-v-77df2b64]{display:none}}@media only screen and (max-width: 512px){.app-item--list-view .app-actions[data-v-77df2b64]{display:none}}.app-item--store-view[data-v-77df2b64]{padding:30px}.app-item--store-view .app-image-icon .icon-settings-dark[data-v-77df2b64]{width:100%;height:150px;background-size:45px;opacity:.5}.app-item--store-view .app-image-icon svg[data-v-77df2b64]{position:absolute;bottom:43px;width:64px;height:64px;opacity:.1}.app-item--store-view .app-name[data-v-77df2b64]{margin:5px 0}.app-item--store-view .app-name--link[data-v-77df2b64]::after{content:\"\";position:absolute;inset-block:0;inset-inline:0}.app-item--store-view .app-actions[data-v-77df2b64]{margin:10px 0}@media only screen and (min-width: 1601px){.app-item--store-view[data-v-77df2b64]{width:25%}.app-item--store-view.app-item--with-sidebar[data-v-77df2b64]{width:33%}}@media only screen and (max-width: 1600px){.app-item--store-view[data-v-77df2b64]{width:25%}.app-item--store-view.app-item--with-sidebar[data-v-77df2b64]{width:33%}}@media only screen and (max-width: 1400px){.app-item--store-view[data-v-77df2b64]{width:33%}.app-item--store-view.app-item--with-sidebar[data-v-77df2b64]{width:50%}}@media only screen and (max-width: 900px){.app-item--store-view[data-v-77df2b64]{width:50%}.app-item--store-view.app-item--with-sidebar[data-v-77df2b64]{width:100%}}@media only screen and (max-width: 1024px){.app-item--store-view[data-v-77df2b64]{width:50%}}@media only screen and (max-width: 480px){.app-item--store-view[data-v-77df2b64]{width:100%}}.app-icon[data-v-77df2b64]{filter:var(--background-invert-if-bright)}.app-image[data-v-77df2b64]{position:relative;height:150px;opacity:1;overflow:hidden}.app-image img[data-v-77df2b64]{width:100%}.app-version[data-v-77df2b64]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/css/variables.scss\",\"webpack://./apps/settings/src/components/AppList/AppItem.vue\"],\"names\":[],\"mappings\":\"AAEA;;;EAAA,CCEA,2BACC,iBAAA,CAEA,iCACC,6CAAA,CAGD,sCACC,0DAAA,CACA,oFAAA,CAEA,yDACC,6CAAA,CAGD,wCACC,qBAAA,CACA,2CAAA,CACA,+BAAA,CACA,6BAAA,CAGD,iDACC,mCAAA,CACA,WAAA,CACA,cAAA,CAGD,oIAEC,cAAA,CACA,UAAA,CACA,WAAA,CACA,UAAA,CACA,qBAAA,CACA,oBAAA,CAGD,gDACC,iCAAA,CAGD,sDACC,6BAAA,CACA,YAAA,CACA,kBAAA,CAMD,6DACC,UAAA,CACA,iBAAA,CACA,cAAA,CACA,6BAAA,CAGD,mDACC,YAAA,CACA,2BAAA,CACA,cAAA,CACA,mBAAA,CAEA,uEACC,oBAAA,CACA,OAAA,CACA,sBAAA,CAKF,0CACC,oGAEC,YAAA,CAAA,CAKF,0CACC,mDACC,YAAA,CAAA,CAKH,uCACC,YAAA,CAEA,2EACC,UAAA,CACA,YAAA,CACA,oBAAA,CACA,UAAA,CAGD,2DACC,iBAAA,CACA,WAAA,CAEA,UAAA,CACA,WAAA,CACA,UAAA,CAGD,iDACC,YAAA,CAGD,8DACC,UAAA,CACA,iBAAA,CACA,aAAA,CACA,cAAA,CAGD,oDACC,aAAA,CAGD,2CAlCD,uCAmCE,SAAA,CAEA,8DACC,SAAA,CAAA,CAIF,2CA1CD,uCA2CE,SAAA,CAEA,8DACC,SAAA,CAAA,CAIF,2CAlDD,uCAmDE,SAAA,CAEA,8DACC,SAAA,CAAA,CAIF,0CA1DD,uCA2DE,SAAA,CAEA,8DACC,UAAA,CAAA,CAIF,2CAlED,uCAmEE,SAAA,CAAA,CAGD,0CAtED,uCAuEE,UAAA,CAAA,CAKH,2BACC,yCAAA,CAGD,4BACC,iBAAA,CACA,YAAA,CACA,SAAA,CACA,eAAA,CAEA,gCACC,UAAA,CAIF,8BACC,mCAAA\",\"sourcesContent\":[\"@use 'sass:color';\\n\\n/*!\\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n// SCSS darken/lighten function override\\n@function nc-darken($color, $value) {\\n\\t@return color.adjust($color, $lightness: - $value, $space: hsl);\\n}\\n\\n@function nc-lighten($color, $value) {\\n\\t@return color.adjust($color, $lightness: $value, $space: hsl);\\n}\\n\\n// SCSS variables\\n// DEPRECATED, please use CSS4 vars\\n$color-main-text: #222 !default; // Not #000 for better readability\\n$color-main-background: #fff !default;\\n$color-main-background-translucent: rgba($color-main-background, .97) !default;\\n\\n// used for different active/hover/focus/disabled states\\n$color-background-hover: nc-darken($color-main-background, 4%) !default;\\n$color-background-dark: nc-darken($color-main-background, 7%) !default;\\n$color-background-darker: nc-darken($color-main-background, 14%) !default;\\n\\n$color-placeholder-light: nc-darken($color-main-background, 10%) !default;\\n$color-placeholder-dark: nc-darken($color-main-background, 20%) !default;\\n\\n$color-primary: #0082c9 !default;\\n$color-primary-hover: color.mix($color-primary, $color-main-background, 80%) !default;\\n\\n$color-primary-light: color.mix($color-primary, $color-main-background, 10%) !default;\\n$color-primary-light-text: $color-primary !default;\\n$color-primary-light-hover: color.mix($color-primary-light, $color-main-text, 95%) !default;\\n\\n$color-primary-text: #ffffff !default;\\n// do not use nc-darken/lighten in case of overriding because\\n// primary-text is independent of color-main-text\\n$color-primary-element-text-dark: color.adjust($color-primary-text, $lightness: -7%, $space: hsl) !default;\\n$color-primary-element: $color-primary !default;\\n$color-primary-element-hover: color.mix($color-primary-element, $color-main-background, 80%) !default;\\n$color-primary-element-light: color.adjust($color-primary-element, $lightness: 15%, $space: hsl) !default;\\n\\n$color-error: #e9322d;\\n$color-error-hover: color.mix($color-error, $color-main-background, 80%) !default;\\n$color-warning: #eca700;\\n$color-warning-hover: color.mix($color-warning, $color-main-background, 80%) !default;\\n$color-success: #46ba61;\\n$color-success-hover: color.mix($color-success, $color-main-background, 80%) !default;\\n// used for svg\\n$color-white: #fff;\\n$color-black: #000;\\n$color-yellow: #FC0;\\n\\n// rgb(118, 118, 118) / #767676\\n// min. color contrast for normal text on white background according to WCAG AA\\n// (Works as well: color: #000; opacity: 0.57;)\\n$color-text-maxcontrast: nc-lighten($color-main-text, 33%) !default;\\n$color-text-light: $color-main-text !default;\\n$color-text-lighter: $color-text-maxcontrast !default;\\n\\n$image-logo: url('../img/logo/logo.svg?v=1') !default;\\n$image-login-background: url('../img/background.png?v=2') !default;\\n$image-logoheader: url('../img/logo/logo.svg?v=1') !default;\\n$image-favicon: url('../img/logo/logo.svg?v=1') !default;\\n\\n$color-loading-light: #ccc !default;\\n$color-loading-dark: #444 !default;\\n\\n$color-box-shadow: color.adjust(nc-darken($color-main-background, 70%), $alpha: -0.5, $space: hsl) !default;\\n\\n// light border like file table or app-content list\\n$color-border: nc-darken($color-main-background, 7%) !default;\\n// darker border like inputs or very visible elements\\n$color-border-dark: nc-darken($color-main-background, 14%) !default;\\n\\n$border-radius: 3px !default;\\n$border-radius-large: 10px !default;\\n// Pill-style button, value is large so big buttons also have correct roundness\\n$border-radius-pill: 100px !default;\\n\\n$font-face: system-ui, -apple-system, \\\"Segoe UI\\\", Roboto, Oxygen-Sans, Cantarell, Ubuntu, \\\"Helvetica Neue\\\", \\\"Noto Sans\\\", \\\"Liberation Sans\\\", Arial, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\", \\\"Noto Color Emoji\\\" !default;\\n$default-font-size: 15px;\\n\\n$default-line-height: 24px;\\n\\n$animation-quick: 100ms;\\n$animation-slow: 300ms;\\n\\n// various structure data\\n$header-height: 50px;\\n$navigation-width: 300px;\\n$sidebar-min-width: 300px;\\n$sidebar-max-width: 500px;\\n$list-min-width: 200px;\\n$list-max-width: 300px;\\n$header-menu-item-height: 44px;\\n$header-menu-profile-item-height: 66px;\\n\\n// mobile. Keep in sync with core/js/js.js\\n$breakpoint-mobile: 1024px;\\n\",\"\\n@use '../../../../../core/css/variables.scss' as variables;\\n@use 'sass:math';\\n\\n.app-item {\\n\\tposition: relative;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n\\n\\t&--list-view {\\n\\t\\t--app-item-padding: calc(var(--default-grid-baseline) * 2);\\n\\t\\t--app-item-height: calc(var(--default-clickable-area) + var(--app-item-padding) * 2);\\n\\n\\t\\t&.app-item--selected {\\n\\t\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\t}\\n\\n\\t\\t> * {\\n\\t\\t\\tvertical-align: middle;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t\\t\\tpadding: var(--app-item-padding);\\n\\t\\t\\theight: var(--app-item-height);\\n\\t\\t}\\n\\n\\t\\t.app-image {\\n\\t\\t\\twidth: var(--default-clickable-area);\\n\\t\\t\\theight: auto;\\n\\t\\t\\ttext-align: end;\\n\\t\\t}\\n\\n\\t\\t.app-image-icon svg,\\n\\t\\t.app-image-icon .icon-settings-dark {\\n\\t\\t\\tmargin-top: 5px;\\n\\t\\t\\twidth: 20px;\\n\\t\\t\\theight: 20px;\\n\\t\\t\\topacity: .5;\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t}\\n\\n\\t\\t.app-name {\\n\\t\\t\\tpadding: 0 var(--app-item-padding);\\n\\t\\t}\\n\\n\\t\\t.app-name--link {\\n\\t\\t\\theight: var(--app-item-height);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t}\\n\\n\\t\\t// Note: because of Safari bug, we cannot position link overlay relative to the table row\\n\\t\\t// So we need to manually position it relative to the table container and cell\\n\\t\\t// See: https://bugs.webkit.org/show_bug.cgi?id=240961\\n\\t\\t.app-name--link::after {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tinset-inline: 0;\\n\\t\\t\\theight: var(--app-item-height);\\n\\t\\t}\\n\\n\\t\\t.app-actions {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tgap: var(--app-item-padding);\\n\\t\\t\\tflex-wrap: wrap;\\n\\t\\t\\tjustify-content: end;\\n\\n\\t\\t\\t.icon-loading-small {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\ttop: 4px;\\n\\t\\t\\t\\tmargin-inline-end: 10px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t/* hide app version and level on narrower screens */\\n\\t\\t@media only screen and (max-width: 900px) {\\n\\t\\t\\t.app-version,\\n\\t\\t\\t.app-level {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t/* Hide actions on a small screen. Click on app opens fill-screen sidebar with the buttons */\\n\\t\\t@media only screen and (max-width: math.div(variables.$breakpoint-mobile, 2)) {\\n\\t\\t\\t.app-actions {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&--store-view {\\n\\t\\tpadding: 30px;\\n\\n\\t\\t.app-image-icon .icon-settings-dark {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 150px;\\n\\t\\t\\tbackground-size: 45px;\\n\\t\\t\\topacity: 0.5;\\n\\t\\t}\\n\\n\\t\\t.app-image-icon svg {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tbottom: 43px;\\n\\t\\t\\t/* position halfway vertically */\\n\\t\\t\\twidth: 64px;\\n\\t\\t\\theight: 64px;\\n\\t\\t\\topacity: .1;\\n\\t\\t}\\n\\n\\t\\t.app-name {\\n\\t\\t\\tmargin: 5px 0;\\n\\t\\t}\\n\\n\\t\\t.app-name--link::after {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tinset-block: 0;\\n\\t\\t\\tinset-inline: 0;\\n\\t\\t}\\n\\n\\t\\t.app-actions {\\n\\t\\t\\tmargin: 10px 0;\\n\\t\\t}\\n\\n\\t\\t@media only screen and (min-width: 1601px) {\\n\\t\\t\\twidth: 25%;\\n\\n\\t\\t\\t&.app-item--with-sidebar {\\n\\t\\t\\t\\twidth: 33%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: 1600px) {\\n\\t\\t\\twidth: 25%;\\n\\n\\t\\t\\t&.app-item--with-sidebar {\\n\\t\\t\\t\\twidth: 33%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: 1400px) {\\n\\t\\t\\twidth: 33%;\\n\\n\\t\\t\\t&.app-item--with-sidebar {\\n\\t\\t\\t\\twidth: 50%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: 900px) {\\n\\t\\t\\twidth: 50%;\\n\\n\\t\\t\\t&.app-item--with-sidebar {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: variables.$breakpoint-mobile) {\\n\\t\\t\\twidth: 50%;\\n\\t\\t}\\n\\n\\t\\t@media only screen and (max-width: 480px) {\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t}\\n}\\n\\n.app-icon {\\n\\tfilter: var(--background-invert-if-bright);\\n}\\n\\n.app-image {\\n\\tposition: relative;\\n\\theight: 150px;\\n\\topacity: 1;\\n\\toverflow: hidden;\\n\\n\\timg {\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\\n.app-version {\\n\\tcolor: var(--color-text-maxcontrast);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-level-badge[data-v-5ee601b2]{color:var(--color-text-maxcontrast);background-color:rgba(0,0,0,0);border:1px solid var(--color-text-maxcontrast);border-radius:var(--border-radius);display:flex;flex-direction:row;gap:6px;padding:3px 6px;width:fit-content}.app-level-badge--supported[data-v-5ee601b2]{border-color:var(--color-success);color:var(--color-success)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList/AppLevelBadge.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,mCAAA,CACA,8BAAA,CACA,8CAAA,CACA,kCAAA,CAEA,YAAA,CACA,kBAAA,CACA,OAAA,CACA,eAAA,CACA,iBAAA,CAEA,6CACC,iCAAA,CACA,0BAAA\",\"sourcesContent\":[\"\\n.app-level-badge {\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tbackground-color: transparent;\\n\\tborder: 1px solid var(--color-text-maxcontrast);\\n\\tborder-radius: var(--border-radius);\\n\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tgap: 6px;\\n\\tpadding: 3px 6px;\\n\\twidth: fit-content;\\n\\n\\t&--supported {\\n\\t\\tborder-color: var(--color-success);\\n\\t\\tcolor: var(--color-success);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-discover[data-v-bb597eea]{max-width:1008px;margin-inline:auto;padding-inline:54px;padding-block-end:var(--default-clickable-area, 44px);display:flex;flex-direction:column;gap:var(--default-clickable-area, 44px)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,gBAAA,CACA,kBAAA,CACA,mBAAA,CAEA,qDAAA,CAEA,YAAA,CACA,qBAAA,CACA,uCAAA\",\"sourcesContent\":[\"\\n.app-discover {\\n\\tmax-width: 1008px; /* 900px + 2x 54px padding for the carousel controls */\\n\\tmargin-inline: auto;\\n\\tpadding-inline: 54px;\\n\\t/* Padding required to make last element not bound to the bottom */\\n\\tpadding-block-end: var(--default-clickable-area, 44px);\\n\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: var(--default-clickable-area, 44px);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.daemon[data-v-10be429c]{padding:20px}.daemon h4[data-v-10be429c]{font-weight:bold;margin:10px auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue\"],\"names\":[],\"mappings\":\"AACA,yBACE,YAAA,CAEA,4BACE,gBAAA,CACA,gBAAA\",\"sourcesContent\":[\"\\n.daemon {\\n padding: 20px;\\n\\n h4 {\\n font-weight: bold;\\n margin: 10px auto;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-description[data-v-cf0a1ae6]{padding:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,YAAA\",\"sourcesContent\":[\"\\n.app-description {\\n\\tpadding: 12px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-details[data-v-660767cf]{padding:20px}.app-details__actions-manage[data-v-660767cf]{display:flex;align-items:center}.app-details__actions-manage input[data-v-660767cf]{flex:0 1 auto;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-details__authors[data-v-660767cf]{color:var(--color-text-maxcontrast)}.app-details__section[data-v-660767cf]{margin-top:15px}.app-details__section h4[data-v-660767cf]{font-size:16px;font-weight:bold;margin-block-end:5px}.app-details__interact[data-v-660767cf]{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px}.app-details__documentation a[data-v-660767cf]{text-decoration:underline}.app-details__documentation li[data-v-660767cf]{padding-inline-start:20px}.app-details__documentation li[data-v-660767cf]::before{width:5px;height:5px;border-radius:100%;background-color:var(--color-main-text);content:\"\";float:inline-start;margin-inline-start:-13px;position:relative;top:10px}.force[data-v-660767cf]{color:var(--color-error);border-color:var(--color-error);background:var(--color-main-background)}.force[data-v-660767cf]:hover,.force[data-v-660767cf]:active{color:var(--color-main-background);border-color:var(--color-error) !important;background:var(--color-error)}.missing-dependencies[data-v-660767cf]{list-style:initial;list-style-type:initial;list-style-position:inside}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue\"],\"names\":[],\"mappings\":\"AACA,8BACC,YAAA,CAIC,8CAEC,YAAA,CACA,kBAAA,CACA,oDACC,aAAA,CACA,WAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CAIH,uCACC,mCAAA,CAGD,uCACC,eAAA,CAEA,0CACC,cAAA,CACA,gBAAA,CACA,oBAAA,CAIF,wCACC,YAAA,CACA,kBAAA,CACA,cAAA,CACA,QAAA,CAIA,+CACC,yBAAA,CAED,gDACC,yBAAA,CAEA,wDACC,SAAA,CACA,UAAA,CACA,kBAAA,CACA,uCAAA,CACA,UAAA,CACA,kBAAA,CACA,yBAAA,CACA,iBAAA,CACA,QAAA,CAMJ,wBACC,wBAAA,CACA,+BAAA,CACA,uCAAA,CAGD,6DAEC,kCAAA,CACA,0CAAA,CACA,6BAAA,CAGD,uCACC,kBAAA,CACA,uBAAA,CACA,0BAAA\",\"sourcesContent\":[\"\\n.app-details {\\n\\tpadding: 20px;\\n\\n\\t&__actions {\\n\\t\\t// app management\\n\\t\\t&-manage {\\n\\t\\t\\t// if too many, shrink them and ellipsis\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tinput {\\n\\t\\t\\t\\tflex: 0 1 auto;\\n\\t\\t\\t\\tmin-width: 0;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t&__authors {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&__section {\\n\\t\\tmargin-top: 15px;\\n\\n\\t\\th4 {\\n\\t\\t\\tfont-size: 16px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin-block-end: 5px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__interact {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tflex-wrap: wrap;\\n\\t\\tgap: 12px;\\n\\t}\\n\\n\\t&__documentation {\\n\\t\\ta {\\n\\t\\t\\ttext-decoration: underline;\\n\\t\\t}\\n\\t\\tli {\\n\\t\\t\\tpadding-inline-start: 20px;\\n\\n\\t\\t\\t&::before {\\n\\t\\t\\t\\twidth: 5px;\\n\\t\\t\\t\\theight: 5px;\\n\\t\\t\\t\\tborder-radius: 100%;\\n\\t\\t\\t\\tbackground-color: var(--color-main-text);\\n\\t\\t\\t\\tcontent: \\\"\\\";\\n\\t\\t\\t\\tfloat: inline-start;\\n\\t\\t\\t\\tmargin-inline-start: -13px;\\n\\t\\t\\t\\tposition: relative;\\n\\t\\t\\t\\ttop: 10px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n.force {\\n\\tcolor: var(--color-error);\\n\\tborder-color: var(--color-error);\\n\\tbackground: var(--color-main-background);\\n}\\n\\n.force:hover,\\n.force:active {\\n\\tcolor: var(--color-main-background);\\n\\tborder-color: var(--color-error) !important;\\n\\tbackground: var(--color-error);\\n}\\n\\n.missing-dependencies {\\n\\tlist-style: initial;\\n\\tlist-style-type: initial;\\n\\tlist-style-position: inside;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-sidebar-tabs__release h2[data-v-9c32407e]{border-bottom:1px solid var(--color-border);font-size:24px}.app-sidebar-tabs__release-text[data-v-9c32407e] h3{font-size:20px}.app-sidebar-tabs__release-text[data-v-9c32407e] h4{font-size:17px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue\"],\"names\":[],\"mappings\":\"AAEC,+CACC,2CAAA,CACA,cAAA,CAKA,oDACC,cAAA,CAED,oDACC,cAAA\",\"sourcesContent\":[\"\\n.app-sidebar-tabs__release {\\n\\th2 {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t\\tfont-size: 24px;\\n\\t}\\n\\n\\t&-text {\\n\\t\\t// Overwrite changelog heading styles\\n\\t\\t:deep(h3) {\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t}\\n\\t\\t:deep(h4) {\\n\\t\\t\\tfont-size: 17px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.settings-markdown[data-v-35d8331c] a{text-decoration:underline}.settings-markdown[data-v-35d8331c] a::after{content:\"↗\";padding-inline:calc(var(--default-grid-baseline)/2)}.settings-markdown[data-v-35d8331c] pre{white-space:pre;overflow-x:auto;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}.settings-markdown[data-v-35d8331c] p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown[data-v-35d8331c] li{position:relative}.settings-markdown[data-v-35d8331c] ul,.settings-markdown[data-v-35d8331c] ol{padding-inline-start:10px;margin-inline-start:10px}.settings-markdown[data-v-35d8331c] ul li{list-style-type:disc}.settings-markdown[data-v-35d8331c] ul>li>ul>li{list-style-type:circle}.settings-markdown[data-v-35d8331c] ul>li>ul>li ul li{list-style-type:square}.settings-markdown[data-v-35d8331c] blockquote{padding-inline-start:1em;border-inline-start:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-inline:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./Markdown.vue\",\"webpack://./apps/settings/src/components/Markdown.vue\"],\"names\":[],\"mappings\":\"AAAA,sCCEC,yBACC,CAAA,6CACA,WACC,CAAA,mDACA,CAAA,wCAIF,eACC,CAAA,eACA,CAAA,6CACA,CAAA,kCACA,CAAA,iBACA,CAAA,iBACA,CAAA,2CAGD,6CACC,CAAA,kCACA,CAAA,iBACA,CAAA,uCAGD,iBACC,CAAA,8EAGD,yBACC,CAAA,wBACA,CAAA,0CAGD,oBACC,CAAA,gDAGD,sBACC,CAAA,sDAGD,sBACC,CAAA,+CAGD,wBACC,CAAA,0DACA,CAAA,mCACA,CAAA,eACA\",\"sourcesContent\":[\".settings-markdown :deep a{text-decoration:underline}.settings-markdown :deep a::after{content:\\\"↗\\\";padding-inline:calc(var(--default-grid-baseline)/2)}.settings-markdown :deep pre{white-space:pre;overflow-x:auto;background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:1em 1.3em;margin-bottom:1em}.settings-markdown :deep p code{background-color:var(--color-background-dark);border-radius:var(--border-radius);padding:.1em .3em}.settings-markdown :deep li{position:relative}.settings-markdown :deep ul,.settings-markdown :deep ol{padding-inline-start:10px;margin-inline-start:10px}.settings-markdown :deep ul li{list-style-type:disc}.settings-markdown :deep ul>li>ul>li{list-style-type:circle}.settings-markdown :deep ul>li>ul>li ul li{list-style-type:square}.settings-markdown :deep blockquote{padding-inline-start:1em;border-inline-start:4px solid var(--color-primary-element);color:var(--color-text-maxcontrast);margin-inline:0}\",\"\\n.settings-markdown :deep {\\n\\ta {\\n\\t\\ttext-decoration: underline;\\n\\t\\t&::after {\\n\\t\\t\\tcontent: '↗';\\n\\t\\t\\tpadding-inline: calc(var(--default-grid-baseline) / 2);\\n\\t\\t}\\n\\t}\\n\\n\\tpre {\\n\\t\\twhite-space: pre;\\n\\t\\toverflow-x: auto;\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: 1em 1.3em;\\n\\t\\tmargin-bottom: 1em;\\n\\t}\\n\\n\\tp code {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tpadding: .1em .3em;\\n\\t}\\n\\n\\tli {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\tul, ol {\\n\\t\\tpadding-inline-start: 10px;\\n\\t\\tmargin-inline-start: 10px;\\n\\t}\\n\\n\\tul li {\\n\\t\\tlist-style-type: disc;\\n\\t}\\n\\n\\tul > li > ul > li {\\n\\t\\tlist-style-type: circle;\\n\\t}\\n\\n\\tul > li > ul > li ul li {\\n\\t\\tlist-style-type: square;\\n\\t}\\n\\n\\tblockquote {\\n\\t\\tpadding-inline-start: 1em;\\n\\t\\tborder-inline-start: 4px solid var(--color-primary-element);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-inline: 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-sidebar--with-screenshot[data-v-70317c96] .app-sidebar-header__figure{background-size:cover}.app-sidebar__fallback-icon[data-v-70317c96]{width:100%;height:100%}.app-sidebar__badges[data-v-70317c96]{display:flex;flex-direction:row;gap:12px}.app-sidebar__version[data-v-70317c96]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/AppStoreSidebar.vue\"],\"names\":[],\"mappings\":\"AAIE,2EACC,qBAAA,CAIF,6CAEC,UAAA,CACA,WAAA,CAGD,sCACC,YAAA,CACA,kBAAA,CACA,QAAA,CAGD,uCACC,mCAAA\",\"sourcesContent\":[\"\\n.app-sidebar {\\n\\t// If a screenshot is available it should cover the whole figure\\n\\t&--with-screenshot {\\n\\t\\t:deep(.app-sidebar-header__figure) {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t}\\n\\n\\t&__fallback-icon {\\n\\t\\t// both 100% to center the icon\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t}\\n\\n\\t&__badges {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tgap: 12px;\\n\\t}\\n\\n\\t&__version {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n.app-score__wrapper[data-v-2193f4e0] {\n\tdisplay: inline-flex;\n\tcolor: var(--color-favorite, #a08b00);\n> *[data-v-2193f4e0] {\n\t\tvertical-align: text-bottom;\n}\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppList/AppScore.vue\"],\"names\":[],\"mappings\":\";AA+DA;CACA,oBAAA;CACA,qCAAA;AAEA;EACA,2BAAA;AACA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\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\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\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\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n/* The categories-loading indicator */\n.categories--loading[data-v-b651b260] {\n\tflex: 1;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/AppStoreNavigation.vue\"],\"names\":[],\"mappings\":\";AAsIA,qCAAA;AACA;CACA,OAAA;CACA,aAAA;CACA,mBAAA;CACA,uBAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\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\n\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\n\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=77df2b64&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=77df2b64&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppItem.vue?vue&type=template&id=77df2b64&scoped=true\"\nimport script from \"./AppItem.vue?vue&type=script&lang=js\"\nexport * from \"./AppItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./AppItem.vue?vue&type=style&index=0&id=77df2b64&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"77df2b64\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.isSupported || _setup.isFeatured)?_c('span',{staticClass:\"app-level-badge\",class:{ 'app-level-badge--supported': _setup.isSupported },attrs:{\"title\":_setup.badgeTitle}},[_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.badgeIcon,\"size\":20,\"inline\":\"\"}}),_vm._v(\"\\n\\t\"+_vm._s(_setup.badgeText)+\"\\n\")],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=style&index=0&id=5ee601b2&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppLevelBadge.vue?vue&type=style&index=0&id=5ee601b2&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppLevelBadge.vue?vue&type=template&id=5ee601b2&scoped=true\"\nimport script from \"./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppLevelBadge.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppLevelBadge.vue?vue&type=style&index=0&id=5ee601b2&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ee601b2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"app-score__wrapper\",attrs:{\"role\":\"img\",\"aria-label\":_vm.title,\"title\":_vm.title}},[_vm._l((_vm.fullStars),function(index){return _c('NcIconSvgWrapper',{key:`full-star-${index}`,attrs:{\"path\":_vm.mdiStar,\"inline\":\"\"}})}),_vm._v(\" \"),(_vm.hasHalfStar)?_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiStarHalfFull,\"inline\":\"\"}}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.emptyStars),function(index){return _c('NcIconSvgWrapper',{key:`empty-star-${index}`,attrs:{\"path\":_vm.mdiStarOutline,\"inline\":\"\"}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=style&index=0&id=2193f4e0&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=style&index=0&id=2193f4e0&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppScore.vue?vue&type=template&id=2193f4e0&scoped=true\"\nimport script from \"./AppScore.vue?vue&type=script&lang=ts\"\nexport * from \"./AppScore.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppScore.vue?vue&type=style&index=0&id=2193f4e0&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2193f4e0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppContent,{staticClass:\"app-settings-content\",attrs:{\"page-heading\":_setup.appStoreLabel}},[_c('h2',{staticClass:\"app-settings-content__label\",domProps:{\"textContent\":_vm._s(_setup.viewLabel)}}),_vm._v(\" \"),(_setup.currentCategory === 'discover')?_c(_setup.AppStoreDiscoverSection):(_setup.isLoading)?_c(_setup.NcEmptyContent,{staticClass:\"empty-content__loading\",attrs:{\"name\":_setup.t('settings', 'Loading app list')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcLoadingIcon,{attrs:{\"size\":64}})]},proxy:true}])}):_c(_setup.AppList,{attrs:{\"category\":_setup.currentCategory}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*\nHow it works:\n`this.#head` is an instance of `Node` which keeps track of its current value and nests another instance of `Node` that keeps the value that comes after it. When a value is provided to `.enqueue()`, the code needs to iterate through `this.#head`, going deeper and deeper to find the last value. However, iterating through every single item is slow. This problem is solved by saving a reference to the last value as `this.#tail` so that it can reference it to add a new value.\n*/\n\nclass Node {\n\tvalue;\n\tnext;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\t}\n}\n\nexport default class Queue {\n\t#head;\n\t#tail;\n\t#size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this.#head) {\n\t\t\tthis.#tail.next = node;\n\t\t\tthis.#tail = node;\n\t\t} else {\n\t\t\tthis.#head = node;\n\t\t\tthis.#tail = node;\n\t\t}\n\n\t\tthis.#size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this.#head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#head = this.#head.next;\n\t\tthis.#size--;\n\t\treturn current.value;\n\t}\n\n\tpeek() {\n\t\tif (!this.#head) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.#head.value;\n\n\t\t// TODO: Node.js 18.\n\t\t// return this.#head?.value;\n\t}\n\n\tclear() {\n\t\tthis.#head = undefined;\n\t\tthis.#tail = undefined;\n\t\tthis.#size = 0;\n\t}\n\n\tget size() {\n\t\treturn this.#size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this.#head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n}\n","import Queue from 'yocto-queue';\n\nexport default function pLimit(concurrency) {\n\tvalidateConcurrency(concurrency);\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst resumeNext = () => {\n\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\tqueue.dequeue()();\n\t\t\t// Since `pendingCount` has been decreased by one, increase `activeCount` by one.\n\t\t\tactiveCount++;\n\t\t}\n\t};\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tresumeNext();\n\t};\n\n\tconst run = async (function_, resolve, arguments_) => {\n\t\tconst result = (async () => function_(...arguments_))();\n\n\t\tresolve(result);\n\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\tnext();\n\t};\n\n\tconst enqueue = (function_, resolve, arguments_) => {\n\t\t// Queue `internalResolve` instead of the `run` function\n\t\t// to preserve asynchronous context.\n\t\tnew Promise(internalResolve => {\n\t\t\tqueue.enqueue(internalResolve);\n\t\t}).then(\n\t\t\trun.bind(undefined, function_, resolve, arguments_),\n\t\t);\n\n\t\t(async () => {\n\t\t\t// This function needs to wait until the next microtask before comparing\n\t\t\t// `activeCount` to `concurrency`, because `activeCount` is updated asynchronously\n\t\t\t// after the `internalResolve` function is dequeued and called. The comparison in the if-statement\n\t\t\t// needs to happen asynchronously as well to get an up-to-date value for `activeCount`.\n\t\t\tawait Promise.resolve();\n\n\t\t\tif (activeCount < concurrency) {\n\t\t\t\tresumeNext();\n\t\t\t}\n\t\t})();\n\t};\n\n\tconst generator = (function_, ...arguments_) => new Promise(resolve => {\n\t\tenqueue(function_, resolve, arguments_);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount,\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size,\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue() {\n\t\t\t\tqueue.clear();\n\t\t\t},\n\t\t},\n\t\tconcurrency: {\n\t\t\tget: () => concurrency,\n\n\t\t\tset(newConcurrency) {\n\t\t\t\tvalidateConcurrency(newConcurrency);\n\t\t\t\tconcurrency = newConcurrency;\n\n\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\t// eslint-disable-next-line no-unmodified-loop-condition\n\t\t\t\t\twhile (activeCount < concurrency && queue.size > 0) {\n\t\t\t\t\t\tresumeNext();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n\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\n\n\n\n\n\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","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()]},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=b651b260&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=b651b260&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=b651b260&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=b651b260&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 \"b651b260\",\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\n\n\n\n\n\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\n\n\n\n\n\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\n\n\n\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!./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 ? `` : null;\n });\n watchEffect(async () => {\n // Note: Only variables until the first `await` will be watched!\n if (!app.value?.preview) {\n appIcon.value = categoryIcon.value;\n }\n else {\n appIcon.value = null;\n // Now try to load the real app icon\n try {\n const response = await window.fetch(app.value.preview);\n const blob = await response.blob();\n const rawSvg = await blob.text();\n appIcon.value = rawSvg.replaceAll(/fill=\"#(fff|ffffff)([a-z0-9]{1,2})?\"/ig, 'fill=\"currentColor\"');\n }\n catch (error) {\n appIcon.value = categoryIcon.value;\n logger.error('Could not load app icon', { error });\n }\n }\n });\n return {\n appIcon,\n };\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=style&index=0&id=70317c96&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppStoreSidebar.vue?vue&type=style&index=0&id=70317c96&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppStoreSidebar.vue?vue&type=template&id=70317c96&scoped=true\"\nimport script from \"./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppStoreSidebar.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AppStoreSidebar.vue?vue&type=style&index=0&id=70317c96&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"70317c96\",\n null\n \n)\n\nexport default component.exports"],"names":["APPS_SECTION_ENUM","Object","freeze","discover","t","installed","enabled","disabled","updates","featured","supported","axios","get","generateOcsUrl","then","data","ocs","meta","statuscode","emit","apps","window","dispatchEvent","Event","computed","appGroups","this","app","groups","map","group","id","name","installing","app_api","appApiStore","getLoading","$store","getters","loading","isLoading","isInitializing","status","action","isDeploying","isManualInstall","daemon","accepts_deploy_id","updateButtonText","version","update","enableButtonText","progress","deploy","init","needsDownload","disableButtonText","forceEnableButtonText","enableButtonTooltip","forceEnableButtonTooltip","base","defaultDeployDaemonAccessible","getDefaultDaemon","getDaemonAccessible","groupCheckedAppsData","mounted","length","methods","asyncFindGroup","query","dispatch","search","limit","offset","isLimitedToGroups","setGroupLimit","appId","canLimitToGroups","types","includes","addGroupLimitation","groupArray","pop","concat","store","updateAppGroups","removeGroupLimitation","currentGroups","index","indexOf","splice","forceEnable","forceEnableApp","rebuildNavigation","catch","error","showError","response","enable","deployOptions","enableApp","disable","disableApp","remove","removeData","uninstallApp","install","updateApp","updateCount","Math","max","mdiStarCircleOutline","mdiAccount","mdiCheck","mdiClose","bundles","mdiArchive","mdiStarShooting","mdiStar","mdiDownload","ai","mdiCreation","auth","mdiKey","customization","mdiCog","dashboard","mdiViewColumn","files","mdiFolder","games","mdiControllerClassic","integration","mdiOpenInApp","monitoring","mdiMonitorEye","multimedia","mdiMultimedia","office","mdiFileDocumentEdit","organization","mdiOfficeBuilding","mdiMagnify","security","mdiSecurity","social","mdiAccountMultiple","tools","mdiTools","workflow","mdiClipboardFlow","useAppApiStore","defineStore","state","loadState","loadingList","statusUpdater","daemonAccessible","defaultDaemon","getAllApps","getUpdateCount","getAppStatus","find","getStatusUpdater","getInitializingOrDeployingApps","filter","type","actions","appsApiFailure","message","isHTML","logger","setLoading","value","Vue","setError","Array","isArray","forEach","_id","confirmPassword","post","generateUrl","active","canUnInstall","removable","updateAppsStatus","update_required","showInfo","onClick","location","reload","close","setTimeout","api","canInstall","undefined","fetchAllApps","fetchAppStatus","initializingOrDeployingApps","console","debug","clearInterval","hasOwn","setInterval","showApiError","useAppsStore","categories","gettingCategoriesPromise","loadCategories","force","category","icon","APPSTORE_CATEGORY_ICONS","$patch","loadApps","getCategoryById","categoryId","getAppById","___CSS_LOADER_EXPORT___","push","module","filterId","filterUrl","random","toString","substring","components","AppLevelBadge","AppScore","NcButton","NcIconSvgWrapper","mixins","AppManagement","SvgFilterMixin","props","required","String","listView","Boolean","default","useBundleView","headers","inline","setup","mdiCogOutline","isSelected","scrolled","screenshotLoaded","hasRating","appstoreData","ratingNumOverall","dataItemTag","withSidebar","$route","params","shouldDisplayDefaultIcon","preview","watch","releases","screenshot","image","Image","onload","src","watchers","prefix","content","getDataItemHeaders","columnName","join","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","tag","staticClass","class","attrs","staticStyle","_e","_v","appName","_s","summary","level","score","on","$event","stopPropagation","isCompatible","_defineComponent","__name","__props","isSupported","isFeatured","badgeIcon","badgeText","badgeTitle","__sfc","_setup","_setupProxy","defineComponent","Number","mdiStarHalfFull","mdiStarOutline","title","appScore","toFixed","fullStars","floor","emptyStars","min","hasHalfStar","_l","key","Node","constructor","_defineProperty","_head","WeakMap","_tail","_size","Queue","_classPrivateFieldInitSpec","clear","enqueue","_this$size","node","_classPrivateFieldGet","next","_classPrivateFieldSet","dequeue","_this$size3","current","peek","size","Symbol","iterator","pLimit","concurrency","validateConcurrency","queue","activeCount","resumeNext","run","async","function_","resolve","arguments_","result","generator","Promise","internalResolve","bind","defineProperties","pendingCount","clearQueue","set","newConcurrency","queueMicrotask","isInteger","POSITIVE_INFINITY","TypeError","AppItem","counter","hasPendingUpdate","showUpdateAll","useListView","exApps","isAppApiEnabled","toLowerCase","sort","a","b","natSortDiff","OC","Util","naturalSortCompare","sortStringA","sortStringB","appstore","getAppBundles","bundle","bundleApps","bundleIds","searchApps","_app","useAppStoreView","allBundlesEnabled","bundleToggleText","beforeDestroy","unsubscribe","setSearch","resetSearch","subscribe","toggleBundle","disableBundle","enableBundle","Notification","show","updateAll","n","parseApiResponse","element","appElement","date","Date","parse","expiryDate","Error","filterElements","now","PostType","defineAsyncComponent","CarouselType","ShowcaseType","hasError","ref","elements","shuffleArray","array","i","j","onBeforeMount","info","parsedElements","shuffledElements","order","Infinity","getComponent","render","h","mdiEyeOff","NcEmptyContent","NcLoadingIcon","scopedSlots","_u","fn","proxy","entry","_b","route","useRoute","currentCategory","appStoreLabel","viewLabel","displayName","watchEffect","document","instance","getCurrentInstance","shouldRefetchCategories","onBeforeUnmount","NcAppContent","AppList","AppStoreDiscoverSection","domProps","appstoreEnabled","categoriesLoading","isSubscribed","NcAppNavigation","NcAppNavigationItem","NcAppNavigationSpacer","NcCounterBubble","text","minHeading","renderMarkdown","renderer","marked","Renderer","link","href","prot","decodeURIComponent","unescape","replace","e","out","heading","depth","blockquote","dompurify","sanitize","trim","gfm","highlight","tables","breaks","pedantic","smartLists","smartypants","SAFE_FOR_JQUERY","ALLOWED_TAGS","mdiTextShort","NcAppSidebarTab","Markdown","description","NcDialog","NcTextField","NcNoteCard","NcCheckboxRadioSwitch","environmentVariables","environment_variables","reduce","acc","envVar","envName","mounts","mdiPlus","mdiDelete","addingMount","newMountPoint","hostPath","containerPath","readonly","addingPortBinding","configuredDeployOptions","deployOptionsDocsUrl","newShow","fetchExAppDeployOptions","startAddingMount","$nextTick","$refs","newMountHostPath","focus","addMountPoint","cancelAddMountPoint","removeMount","mountToRemove","mount","submitDeployOptions","$emit","apply","arguments","$set","keys","NcDateTime","NcSelect","AppDeployOptionsModal","mdiBug","mdiFeatureSearch","mdiTextBox","mdiTooltipQuestion","mdiToyBrickPlus","showDeployOptionsModal","lastModified","at","appAuthors","warn","authorName","xmlNode","author","split","localeCompare","appstoreUrl","externalResources","resources","internal","label","website","documentation","user","admin","developer","appCategories","flat","rateAppUrl","getGroups","toggleRemoveData","directives","rawName","expression","_i","$$a","$$el","target","$$c","checked","$$v","$$i","slice","slot","click","missingMinOwnCloudVersion","missingMaxOwnCloudVersion","missingDependencies","dep","shipped","resource","bugs","discussion","hasChangelog","values","translations","some","changelog","createChangelogFromRelease","release","getLanguage","en","mdiClockFast","gpuSupport","deploy_config","computeDevice","mdiFileChart","display_name","router","useRouter","legacyStore","useStore","exApp","rating","ratingNumRecent","ratingRecent","ratingOverall","showSidebar","appIcon","categoryIcon","path","AppstoreCategoryIcons","fetch","blob","rawSvg","replaceAll","useAppIcon","licenseText","license","licence","toUpperCase","activeTab","hasScreenshot","loadScreenshot","onMounted","hideAppDetails","NcAppSidebar","AppDescriptionTab","AppDetailsTab","AppReleasesTab","AppDeployDaemonTab","AppDaemonBadge"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/settings-vue-settings-apps-users-management.js b/dist/settings-vue-settings-apps-users-management.js index 1884e7fa16deb..934a637b3127b 100644 --- a/dist/settings-vue-settings-apps-users-management.js +++ b/dist/settings-vue-settings-apps-users-management.js @@ -1,2 +1,2 @@ -(()=>{var e,s,r,a={6028(e,t,s){"use strict";s.d(t,{A:()=>i});var r=s(19051),a=s(56760);s(51257);const o=function(e){return e.replace(/\/$/,"")},i={requireAdmin:()=>(0,a.C5)(),get:(e,t)=>r.Ay.get(o(e),t),post:(e,t)=>r.Ay.post(o(e),t),patch:(e,t)=>r.Ay.patch(o(e),t),put:(e,t)=>r.Ay.put(o(e),t),delete:(e,t)=>r.Ay.delete(o(e),{params:t})}},14744(e,s,r){"use strict";r.d(s,{P:()=>K});var a=r(95353),o=r(80474),i=r(87485),n=r(35810),d=r(85168),c=r(63814),u=r(32981),p=r(19051),l=r(15916),m=r(53334);const g=Intl.Collator([(0,m.Z0)(),(0,m.lO)()],{numeric:!0,usage:"sort"});var h=r(6028),A=r(36620);const f=(0,u.C)("settings","usersSettings",{}),b=(0,o.c0)("settings").persist(!0).build(),y={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},I={users:[],groups:[...f.getSubAdminGroups??[],...f.systemGroups??[]],orderBy:f.sortGroups??l.q.UserCount,minPasswordLength:0,usersOffset:0,usersLimit:25,disabledUsersOffset:0,disabledUsersLimit:25,userCount:f.userCount??0,showConfig:{showStoragePath:"true"===b.getItem("account_settings__showStoragePath"),showUserBackend:"true"===b.getItem("account_settings__showUserBackend"),showFirstLogin:"true"===b.getItem("account_settings__showFirstLogin"),showLastLogin:"true"===b.getItem("account_settings__showLastLogin"),showNewUserForm:"true"===b.getItem("account_settings__showNewUserForm"),showLanguages:"true"===b.getItem("account_settings__showLanguages")}},U={appendUsers(e,t){const s=e.users.map((({id:e})=>e)),r=Object.values(t).filter((({id:e})=>!s.includes(e))),a=e.users.concat(r);e.usersOffset+=e.usersLimit,e.users=a},updateDisabledUsers(e,t){e.disabledUsersOffset+=e.disabledUsersLimit},setPasswordPolicyMinLength(e,t){e.minPasswordLength=""!==t?t:0},addGroup(e,t){try{if(void 0!==e.groups.find((e=>e.id===t.id)))return;const s=Object.assign({},y,t);e.groups.unshift(s)}catch(e){console.error("Can't create group",e)}},renameGroup(e,{gid:t,displayName:s}){const r=e.groups.findIndex((e=>e.id===t));if(r>=0){const t=e.groups[r];t.name=s,e.groups.splice(r,1,t)}},removeGroup(e,t){const s=e.groups.findIndex((e=>e.id===t));s>=0&&e.groups.splice(s,1)},addUserGroup(e,{userid:t,gid:s}){const r=e.groups.find((e=>e.id===s)),a=e.users.find((e=>e.id===t));r&&a.enabled&&e.userCount>0&&r.usercount++,a.groups.push(s)},removeUserGroup(e,{userid:t,gid:s}){const r=e.groups.find((e=>e.id===s)),a=e.users.find((e=>e.id===t));r&&a.enabled&&e.userCount>0&&r.usercount--;const o=a.groups;o.splice(o.indexOf(s),1)},addUserSubAdmin(e,{userid:t,gid:s}){e.users.find((e=>e.id===t)).subadmin.push(s)},removeUserSubAdmin(e,{userid:t,gid:s}){const r=e.users.find((e=>e.id===t)).subadmin;r.splice(r.indexOf(s),1)},deleteUser(e,t){const s=e.users.findIndex((e=>e.id===t));this.commit("updateUserCounts",{user:e.users[s],actionType:"remove"}),e.users.splice(s,1)},addUserData(e,t){const s=t.data.ocs.data;e.users.unshift(s),this.commit("updateUserCounts",{user:s,actionType:"create"})},enableDisableUser(e,{userid:t,enabled:s}){const r=e.users.find((e=>e.id===t));r.enabled=s,this.commit("updateUserCounts",{user:r,actionType:s?"enable":"disable"})},updateUserCounts(e,{user:t,actionType:s}){if(0===e.userCount)return;const r=e.groups.find((e=>"__nc_internal_recent"===e.id)),a=e.groups.find((e=>"disabled"===e.id));switch(s){case"enable":case"disable":a.usercount+=t.enabled?-1:1,r.usercount+=t.enabled?1:-1,e.userCount+=t.enabled?1:-1,t.groups.forEach((s=>{const r=e.groups.find((e=>e.id===s));r&&(r.disabled+=t.enabled?-1:1)}));break;case"create":r.usercount++,e.userCount++,t.groups.forEach((t=>{const s=e.groups.find((e=>e.id===t));s&&s.usercount++}));break;case"remove":t.enabled?(r.usercount--,e.userCount--,t.groups.forEach((t=>{const s=e.groups.find((e=>e.id===t));s?s.usercount--:console.warn("User group "+t+" does not exist during user removal")}))):(a.usercount--,t.groups.forEach((t=>{const s=e.groups.find((e=>e.id===t));s&&s.disabled--})));break;default:A.A.error(`Unknown action type in updateUserCounts: '${s}'`)}},setUserData(e,{userid:t,key:s,value:r}){if("quota"===s){const a=(0,n.lT)(r,!0);e.users.find((e=>e.id===t))[s][s]=null!==a?a:r}else e.users.find((e=>e.id===t))[s]=r},resetUsers(e){e.users=[],e.usersOffset=0,e.disabledUsersOffset=0},resetGroups(e){e.groups=[...f.getSubAdminGroups??[],...f.systemGroups??[]]},setShowConfig(e,{key:t,value:s}){b.setItem(`account_settings__${t}`,JSON.stringify(s)),e.showConfig[t]=s},setGroupSorting(e,s){const r=e.orderBy;e.orderBy=s,p.Ay.post((0,c.Jv)("/settings/users/preferences/group.sortBy"),{value:String(s)}).catch((s=>{e.orderBy=r,(0,d.Qg)(t("settings","Could not set group sorting")),A.A.error(s)}))}},v={getUsers:e=>e.users,getGroups:e=>e.groups,getSubAdminGroups:()=>f.subAdminGroups??[],getSortedGroups(e){const t=[...e.groups];return e.orderBy===l.q.UserCount?t.sort(((e,t)=>{const s=e.usercount-e.disabled,r=t.usercount-t.disabled;return sg.compare(e.name,t.name)))},getGroupSorting:e=>e.orderBy,getPasswordPolicyMinLength:e=>e.minPasswordLength,getUsersOffset:e=>e.usersOffset,getUsersLimit:e=>e.usersLimit,getDisabledUsersOffset:e=>e.disabledUsersOffset,getDisabledUsersLimit:e=>e.disabledUsersLimit,getUserCount:e=>e.userCount,getShowConfig:e=>e.showConfig},L=p.Ay.CancelToken;let _=null;const w={state:I,mutations:U,getters:v,actions:{searchUsers:(e,{offset:t,limit:s,search:r})=>(r="string"==typeof r?r:"",h.A.get((0,c.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:t,limit:s,search:r})).catch((t=>{p.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))),getUser:(e,t)=>h.A.get((0,c.KT)(`cloud/users/${t}`)).catch((t=>{p.Ay.isCancel(t)||e.commit("API_FAILURE",t)})),getUsers:(e,{offset:t,limit:s,search:r,group:a})=>(_&&_.cancel("Operation canceled by another search request."),_=L.source(),r=(r="string"==typeof r?r:"").replace(/in:[^\s]+/g,"").trim(),""!==(a="string"==typeof a?a:"")?h.A.get((0,c.KT)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(a),offset:t,limit:s,search:r}),{cancelToken:_.token}).then((t=>{const s=Object.keys(t.data.ocs.data.users).length;return s>0&&e.commit("appendUsers",t.data.ocs.data.users),s})).catch((t=>{p.Ay.isCancel(t)||e.commit("API_FAILURE",t)})):h.A.get((0,c.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:t,limit:s,search:r}),{cancelToken:_.token}).then((t=>{const s=Object.keys(t.data.ocs.data.users).length;return s>0&&e.commit("appendUsers",t.data.ocs.data.users),s})).catch((t=>{p.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))),async getRecentUsers(e,{offset:t,limit:s,search:r}){const a=(0,c.KT)("cloud/users/recent?offset={offset}&limit={limit}&search={search}",{offset:t,limit:s,search:r});try{const t=await h.A.get(a),s=Object.keys(t.data.ocs.data.users).length;return s>0&&e.commit("appendUsers",t.data.ocs.data.users),s}catch(t){e.commit("API_FAILURE",t)}},async getDisabledUsers(e,{offset:t,limit:s,search:r}){const a=(0,c.KT)("cloud/users/disabled?offset={offset}&limit={limit}&search={search}",{offset:t,limit:s,search:r});try{const t=await h.A.get(a),s=Object.keys(t.data.ocs.data.users).length;return s>0&&(e.commit("appendUsers",t.data.ocs.data.users),e.commit("updateDisabledUsers",t.data.ocs.data.users)),s}catch(t){e.commit("API_FAILURE",t)}},getGroups(e,{offset:t,limit:s,search:r}){r="string"==typeof r?r:"";const a=-1===s?"":`&limit=${s}`;return h.A.get((0,c.KT)("cloud/groups?offset={offset}&search={search}",{offset:t,search:r})+a).then((t=>Object.keys(t.data.ocs.data.groups).length>0&&(t.data.ocs.data.groups.forEach((function(t){e.commit("addGroup",{id:t,name:t})})),!0))).catch((t=>e.commit("API_FAILURE",t)))},getUsersFromList:(e,{offset:t,limit:s,search:r})=>(r="string"==typeof r?r:"",h.A.get((0,c.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:t,limit:s,search:r})).then((t=>Object.keys(t.data.ocs.data.users).length>0&&(e.commit("appendUsers",t.data.ocs.data.users),!0))).catch((t=>e.commit("API_FAILURE",t)))),getUsersFromGroup:(e,{groupid:t,offset:s,limit:r})=>h.A.get((0,c.KT)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(t),offset:s,limit:r})).then((t=>e.commit("getUsersFromList",t.data.ocs.data.users))).catch((t=>e.commit("API_FAILURE",t))),getPasswordPolicyMinLength:e=>!(!(0,i.F)().password_policy||!(0,i.F)().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",(0,i.F)().password_policy.minLength),(0,i.F)().password_policy.minLength),addGroup:(e,t)=>h.A.requireAdmin().then((s=>h.A.post((0,c.KT)("cloud/groups"),{groupid:t}).then((s=>(e.commit("addGroup",{id:t,name:t}),{gid:t,displayName:t}))).catch((e=>{throw e})))).catch((s=>{throw e.commit("API_FAILURE",{gid:t,error:s}),s})),renameGroup:(e,{groupid:t,displayName:s})=>h.A.requireAdmin().then((r=>h.A.put((0,c.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)}),{key:"displayname",value:s}).then((r=>(e.commit("renameGroup",{gid:t,displayName:s}),{groupid:t,displayName:s}))).catch((e=>{throw e})))).catch((s=>{throw e.commit("API_FAILURE",{groupid:t,error:s}),s})),removeGroup:(e,t)=>h.A.requireAdmin().then((s=>h.A.delete((0,c.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)})).then((s=>e.commit("removeGroup",t))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{gid:t,error:s}))),addUserGroup:(e,{userid:t,gid:s})=>h.A.requireAdmin().then((r=>h.A.post((0,c.KT)("cloud/users/{userid}/groups",{userid:t}),{groupid:s}).then((r=>e.commit("addUserGroup",{userid:t,gid:s}))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s}))),removeUserGroup:(e,{userid:t,gid:s})=>h.A.requireAdmin().then((r=>h.A.delete((0,c.KT)("cloud/users/{userid}/groups",{userid:t}),{groupid:s}).then((r=>e.commit("removeUserGroup",{userid:t,gid:s}))).catch((e=>{throw e})))).catch((s=>{throw e.commit("API_FAILURE",{userid:t,error:s}),s})),addUserSubAdmin:(e,{userid:t,gid:s})=>h.A.requireAdmin().then((r=>h.A.post((0,c.KT)("cloud/users/{userid}/subadmins",{userid:t}),{groupid:s}).then((r=>e.commit("addUserSubAdmin",{userid:t,gid:s}))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s}))),removeUserSubAdmin:(e,{userid:t,gid:s})=>h.A.requireAdmin().then((r=>h.A.delete((0,c.KT)("cloud/users/{userid}/subadmins",{userid:t}),{groupid:s}).then((r=>e.commit("removeUserSubAdmin",{userid:t,gid:s}))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s}))),async wipeUserDevices(e,t){try{return await h.A.requireAdmin(),await h.A.post((0,c.KT)("cloud/users/{userid}/wipe",{userid:t}))}catch(s){return e.commit("API_FAILURE",{userid:t,error:s}),Promise.reject(new Error("Failed to wipe user devices"))}},deleteUser:(e,t)=>h.A.requireAdmin().then((s=>h.A.delete((0,c.KT)("cloud/users/{userid}",{userid:t})).then((s=>e.commit("deleteUser",t))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s}))),addUser:({commit:e,dispatch:t},{userid:s,password:r,displayName:a,email:o,groups:i,subadmin:n,quota:d,language:u,manager:p})=>h.A.requireAdmin().then((e=>h.A.post((0,c.KT)("cloud/users"),{userid:s,password:r,displayName:a,email:o,groups:i,subadmin:n,quota:d,language:u,manager:p}).then((e=>t("addUserData",s||e.data.ocs.data.id))).catch((e=>{throw e})))).catch((t=>{throw e("API_FAILURE",{userid:s,error:t}),t})),addUserData:(e,t)=>h.A.requireAdmin().then((s=>h.A.get((0,c.KT)("cloud/users/{userid}",{userid:t})).then((t=>e.commit("addUserData",t))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s}))),enableDisableUser(e,{userid:t,enabled:s=!0}){const r=s?"enable":"disable";return h.A.requireAdmin().then((a=>h.A.put((0,c.KT)("cloud/users/{userid}/{userStatus}",{userid:t,userStatus:r})).then((r=>e.commit("enableDisableUser",{userid:t,enabled:s}))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s})))},async setUserData(e,{userid:t,key:s,value:r}){if(!["email","language","quota","displayname","password","manager"].includes(s))throw new Error("Invalid request data");if(""===r&&!["email","displayname","manager"].includes(s))throw new Error("Value cannot be empty for this field");try{return await h.A.requireAdmin(),await h.A.put((0,c.KT)("cloud/users/{userid}",{userid:t}),{key:s,value:r}),e.commit("setUserData",{userid:t,key:s,value:r})}catch(s){throw e.commit("API_FAILURE",{userid:t,error:s}),s}},sendWelcomeMail:(e,t)=>h.A.requireAdmin().then((e=>h.A.post((0,c.KT)("cloud/users/{userid}/welcome",{userid:t})).then((e=>!0)).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s})))}};var P=r(85471);const E={apps:[],bundles:(0,u.C)("settings","appstoreBundles",[]),categories:[],updateCount:(0,u.C)("settings","appstoreUpdateCount",0),loading:{},gettingCategoriesPromise:null,appApiEnabled:(0,u.C)("settings","appApiEnabled",!1)},C={APPS_API_FAILURE(e,s){(0,d.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+s.error.response.data.data.message,{isHTML:!0}),console.error(e,s)},initCategories(e,{categories:t,updateCount:s}){e.categories=t,e.updateCount=s},updateCategories(e,t){e.gettingCategoriesPromise=t},setUpdateCount(e,t){e.updateCount=t},addCategory(e,t){e.categories.push(t)},appendCategories(e,t){e.categories=t},setAllApps(e,t){e.apps=t},setError(e,{appId:t,error:s}){Array.isArray(t)||(t=[t]),t.forEach((t=>{e.apps.find((e=>e.id===t)).error=s}))},clearError(e,{appId:t,error:s}){e.apps.find((e=>e.id===t)).error=null},enableApp(e,{appId:t,groups:s}){const r=e.apps.find((e=>e.id===t));r.active=!0,P.Ay.set(r,"groups",[...s]),"app_api"===r.id&&(e.appApiEnabled=!0)},setInstallState(e,{appId:t,canInstall:s}){const r=e.apps.find((e=>e.id===t));r&&(r.canInstall=!0===s)},disableApp(e,t){const s=e.apps.find((e=>e.id===t));s.active=!1,s.groups=[],s.removable&&(s.canUnInstall=!0),"app_api"===s.id&&(e.appApiEnabled=!1)},uninstallApp(e,t){e.apps.find((e=>e.id===t)).active=!1,e.apps.find((e=>e.id===t)).groups=[],e.apps.find((e=>e.id===t)).needsDownload=!0,e.apps.find((e=>e.id===t)).installed=!1,e.apps.find((e=>e.id===t)).canUnInstall=!1,e.apps.find((e=>e.id===t)).canInstall=!0,"app_api"===t&&(e.appApiEnabled=!1)},updateApp(e,t){const s=e.apps.find((e=>e.id===t)),r=s.update;s.update=null,s.version=r,e.updateCount--},resetApps(e){e.apps=[]},reset(e){e.apps=[],e.categories=[],e.updateCount=0},startLoading(e,t){Array.isArray(t)?t.forEach((t=>{P.Ay.set(e.loading,t,!0)})):P.Ay.set(e.loading,t,!0)},stopLoading(e,t){Array.isArray(t)?t.forEach((t=>{P.Ay.set(e.loading,t,!1)})):P.Ay.set(e.loading,t,!1)}},T={enableApp(e,{appId:s,groups:r}){let a;return a=Array.isArray(s)?s:[s],h.A.requireAdmin().then((o=>{e.commit("startLoading",a),e.commit("startLoading","install");const i={};return a.forEach((t=>{const s=e.state.apps.find((e=>e.id===t));s&&(i[t]={active:s.active,groups:[...s.groups||[]]},e.commit("enableApp",{appId:t,groups:r}))})),h.A.post((0,c.Jv)("settings/apps/enable"),{appIds:a,groups:r}).then((o=>(e.commit("stopLoading",a),e.commit("stopLoading","install"),a.forEach((t=>{e.commit("enableApp",{appId:t,groups:r})})),p.Ay.get((0,c.Jv)("apps/files/")).then((()=>{o.data.update_required&&((0,d.cf)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:()=>window.location.reload(),close:!1}),setTimeout((function(){location.reload()}),5e3))})).catch((()=>{Array.isArray(s)||((0,d.Qg)(t("settings","Error: This app cannot be enabled because it makes the server unstable")),e.commit("setError",{appId:a,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")}),e.dispatch("disableApp",{appId:s}))}))))).catch((t=>{e.commit("stopLoading",a),e.commit("stopLoading","install"),a.forEach((t=>{i[t]&&(e.commit("enableApp",{appId:t,groups:i[t].groups}),i[t].active||e.commit("disableApp",t))})),e.commit("setError",{appId:a,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:s,error:t})}))})).catch((t=>e.commit("API_FAILURE",{appId:s,error:t})))},forceEnableApp(e,{appId:t,groups:s}){let r;return r=Array.isArray(t)?t:[t],h.A.requireAdmin().then((()=>(e.commit("startLoading",r),e.commit("startLoading","install"),h.A.post((0,c.Jv)("settings/apps/force"),{appId:t}).then((s=>{e.commit("setInstallState",{appId:t,canInstall:!0})})).catch((s=>{e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("setError",{appId:r,error:s.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:t,error:s})})).finally((()=>{e.commit("stopLoading",r),e.commit("stopLoading","install")}))))).catch((s=>e.commit("API_FAILURE",{appId:t,error:s})))},disableApp(e,{appId:t}){let s;return s=Array.isArray(t)?t:[t],h.A.requireAdmin().then((r=>(e.commit("startLoading",s),h.A.post((0,c.Jv)("settings/apps/disable"),{appIds:s}).then((t=>(e.commit("stopLoading",s),s.forEach((t=>{e.commit("disableApp",t)})),!0))).catch((r=>{e.commit("stopLoading",s),e.commit("APPS_API_FAILURE",{appId:t,error:r})}))))).catch((s=>e.commit("API_FAILURE",{appId:t,error:s})))},uninstallApp:(e,{appId:t})=>h.A.requireAdmin().then((s=>(e.commit("startLoading",t),h.A.get((0,c.Jv)(`settings/apps/uninstall/${t}`)).then((s=>(e.commit("stopLoading",t),e.commit("uninstallApp",t),!0))).catch((s=>{e.commit("stopLoading",t),e.commit("APPS_API_FAILURE",{appId:t,error:s})}))))).catch((s=>e.commit("API_FAILURE",{appId:t,error:s}))),updateApp:(e,{appId:t})=>h.A.requireAdmin().then((s=>(e.commit("startLoading",t),e.commit("startLoading","install"),h.A.get((0,c.Jv)(`settings/apps/update/${t}`)).then((s=>(e.commit("stopLoading","install"),e.commit("stopLoading",t),e.commit("updateApp",t),!0))).catch((s=>{e.commit("stopLoading",t),e.commit("stopLoading","install"),e.commit("APPS_API_FAILURE",{appId:t,error:s})}))))).catch((s=>e.commit("API_FAILURE",{appId:t,error:s}))),getAllApps:e=>(e.commit("startLoading","list"),h.A.get((0,c.Jv)("settings/apps/list")).then((t=>(e.commit("setAllApps",t.data.apps),e.commit("stopLoading","list"),!0))).catch((t=>e.commit("API_FAILURE",t)))),async getCategories(e,{shouldRefetchCategories:t=!1}={}){if(t||!e.state.gettingCategoriesPromise){e.commit("startLoading","categories");try{const t=h.A.get((0,c.Jv)("settings/apps/categories"));e.commit("updateCategories",t);const s=await t;return s.data.length>0?(e.commit("appendCategories",s.data),e.commit("stopLoading","categories"),!0):(e.commit("stopLoading","categories"),!1)}catch(t){e.commit("API_FAILURE",t)}}return e.state.gettingCategoriesPromise}},R={state:E,mutations:C,getters:{isAppApiEnabled:e=>e.appApiEnabled,loading:e=>function(t){return e.loading[t]},getCategories:e=>e.categories,getAllApps:e=>e.apps,getAppBundles:e=>e.bundles,getUpdateCount:e=>e.updateCount,getCategoryById:e=>t=>e.categories.find((e=>e.id===t))},actions:T},F={serverData:(0,u.C)("settings","usersSettings",{})},k={setServerData(e,t){e.serverData=t}},S={state:F,mutations:k,getters:{getServerData:e=>e.serverData},actions:{}},O={state:{},mutations:{},getters:{},actions:{setAppConfig:(e,{app:t,key:s,value:r})=>h.A.requireAdmin().then((e=>h.A.post((0,c.KT)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:t,key:s}),{value:r}).catch((e=>{throw e})))).catch((a=>e.commit("API_FAILURE",{app:t,key:s,value:r,error:a})))}},q={API_FAILURE(e,s){try{const e=s.error.response.data.ocs.meta.message;(0,d.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+e,{isHTML:!0})}catch(e){(0,d.Qg)(t("settings","An error occurred during the request. Unable to proceed."))}console.error(e,s)}};let G=null;const K=()=>(null===G&&(G=new a.il({modules:{users:w,apps:R,settings:S,oc:O},strict:!1,mutations:q})),G)},15916(e,t,s){"use strict";var r;s.d(t,{q:()=>r}),function(e){e[e.UserCount=1]="UserCount",e[e.GroupName=2]="GroupName"}(r||(r={}))},36620(e,t,s){"use strict";s.d(t,{A:()=>r});const r=(0,s(35947).YK)().setApp("settings").detectUser().build()},18539(e,t,s){"use strict";var r=s(85471),a=s(95353),o=s(80284),i=s(58723),n=s(53334),d=s(22378);const c=(0,r.pM)({__name:"SettingsApp",setup:e=>({__sfc:!0,NcContent:d.A})}),u=(0,s(14486).A)(c,(function(){var e=this,t=e._self._c;return t(e._self._setupProxy.NcContent,{attrs:{"app-name":"settings"}},[t("router-view",{attrs:{name:"navigation"}}),e._v(" "),t("router-view"),e._v(" "),t("router-view",{attrs:{name:"sidebar"}})],1)}),[],!1,null,null,null).exports;var p=s(40173),l=s(63814);const m=[{name:"users",path:"/:index(index.php/)?settings/users",components:{default:()=>Promise.all([s.e(4208),s.e(7265),s.e(3239)]).then(s.bind(s,15272)),navigation:()=>Promise.all([s.e(4208),s.e(7265),s.e(3239)]).then(s.bind(s,65821))},props:!0,children:[{path:":selectedGroup",name:"group"}]},{path:"/:index(index.php/)?settings/apps",name:"apps",redirect:{name:"apps-category",params:{category:(0,s(32981).C)("settings","appstoreEnabled",!0)?"discover":"installed"}},components:{default:()=>Promise.all([s.e(4208),s.e(7265),s.e(4529)]).then(s.bind(s,79852)),navigation:()=>Promise.all([s.e(4208),s.e(7265),s.e(4529)]).then(s.bind(s,28372)),sidebar:()=>Promise.all([s.e(4208),s.e(7265),s.e(4529)]).then(s.bind(s,37058))},children:[{path:":category",name:"apps-category",children:[{path:":id",name:"apps-details"}]}]}];r.Ay.use(p.Ay);const g=new p.Ay({mode:"history",base:(0,l.Jv)(""),linkActiveClass:"active",routes:m});var h=s(14744),A=s(21777),f=s(65899);s.nc=(0,A.aV)(),r.Ay.prototype.t=n.t,r.Ay.prototype.n=n.n,r.Ay.use(f.R2),r.Ay.use(o.Ay,{defaultHtml:!1}),r.Ay.use(a.Ay);const b=(0,h.P)();(0,i.O)(b,g);const y=(0,f.Ey)();new r.Ay({router:g,store:b,pinia:y,render:e=>e(u),el:"#content"})},58723(e,t){function s(e,t){var r={name:e.name,path:e.path,hash:e.hash,query:e.query,params:e.params,fullPath:e.fullPath,meta:e.meta};return t&&(r.from=s(t)),Object.freeze(r)}t.O=function(e,t,r){var a=(r||{}).moduleName||"route";e.registerModule(a,{namespaced:!0,state:s(t.currentRoute),mutations:{ROUTE_CHANGED:function(t,r){e.state[a]=s(r.to,r.from)}}});var o,i=!1,n=e.watch((function(e){return e[a]}),(function(e){var s=e.fullPath;s!==o&&(null!=o&&(i=!0,t.push(e)),o=s)}),{sync:!0}),d=t.afterEach((function(t,s){i?i=!1:(o=t.fullPath,e.commit(a+"/ROUTE_CHANGED",{to:t,from:s}))}));return function(){null!=d&&d(),null!=n&&n(),e.unregisterModule(a)}}}},o={};function i(e){var t=o[e];if(void 0!==t)return t.exports;var s=o[e]={id:e,loaded:!1,exports:{}};return a[e].call(s.exports,s,s.exports,i),s.loaded=!0,s.exports}i.m=a,e=[],i.O=(t,s,r,a)=>{if(!s){var o=1/0;for(u=0;u=a)&&Object.keys(i.O).every((e=>i.O[e](s[d])))?s.splice(d--,1):(n=!1,a0&&e[u-1][2]>a;u--)e[u]=e[u-1];e[u]=[s,r,a]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,s)=>(i.f[s](e,t),t)),[])),i.u=e=>(({3239:"settings-users",4529:"settings-apps-view"}[e]||e)+"-"+e+".js?v="+{256:"8da30012aeb0f023e7bd",3239:"2d28c9b1f1d679236b2d",3303:"84070d41d3d1997241ee",3731:"03a157235c000f83910a",4529:"9f89f42c86253dcfdf32",5862:"10fe36062cea7941d5a0",6329:"da6ad198a7ca85dde977",7265:"3f68ab0e901bd8e71d4b",7471:"c2afd3e83467ce503d3e",8737:"5bd6b99bc82b98042f57",9972:"fefc81beb04a7254b43a"}[e]),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s={},r="nextcloud:",i.l=(e,t,a,o)=>{if(s[e])s[e].push(t);else{var n,d;if(void 0!==a)for(var c=document.getElementsByTagName("script"),u=0;u{n.onerror=n.onload=null,clearTimeout(m);var a=s[e];if(delete s[e],n.parentNode&&n.parentNode.removeChild(n),a&&a.forEach((e=>e(r))),t)return t(r)},m=setTimeout(l.bind(null,void 0,{type:"timeout",target:n}),12e4);n.onerror=l.bind(null,n.onerror),n.onload=l.bind(null,n.onload),d&&document.head.appendChild(n)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),i.j=2689,(()=>{var e;globalThis.importScripts&&(e=globalThis.location+"");var t=globalThis.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var s=t.getElementsByTagName("script");if(s.length)for(var r=s.length-1;r>-1&&(!e||!/^http(s?):/.test(e));)e=s[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=e})(),(()=>{i.b="undefined"!=typeof document&&document.baseURI||self.location.href;var e={2689:0};i.f.j=(t,s)=>{var r=i.o(e,t)?e[t]:void 0;if(0!==r)if(r)s.push(r[2]);else{var a=new Promise(((s,a)=>r=e[t]=[s,a]));s.push(r[2]=a);var o=i.p+i.u(t),n=new Error;i.l(o,(s=>{if(i.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var a=s&&("load"===s.type?"missing":s.type),o=s&&s.target&&s.target.src;n.message="Loading chunk "+t+" failed.\n("+a+": "+o+")",n.name="ChunkLoadError",n.type=a,n.request=o,r[1](n)}}),"chunk-"+t,t)}},i.O.j=t=>0===e[t];var t=(t,s)=>{var r,a,[o,n,d]=s,c=0;if(o.some((t=>0!==e[t]))){for(r in n)i.o(n,r)&&(i.m[r]=n[r]);if(d)var u=d(i)}for(t&&t(s);ci(18539)));n=i.O(n)})(); -//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=ea64bc0f394f26020734 \ No newline at end of file +(()=>{var e,s,r,a={6028(e,t,s){"use strict";s.d(t,{A:()=>i});var r=s(19051),a=s(56760);s(51257);const o=function(e){return e.replace(/\/$/,"")},i={requireAdmin:()=>(0,a.C5)(),get:(e,t)=>r.Ay.get(o(e),t),post:(e,t)=>r.Ay.post(o(e),t),patch:(e,t)=>r.Ay.patch(o(e),t),put:(e,t)=>r.Ay.put(o(e),t),delete:(e,t)=>r.Ay.delete(o(e),{params:t})}},14744(e,s,r){"use strict";r.d(s,{P:()=>K});var a=r(95353),o=r(80474),i=r(87485),n=r(35810),d=r(85168),c=r(63814),u=r(32981),p=r(19051),l=r(15916),m=r(53334);const g=Intl.Collator([(0,m.Z0)(),(0,m.lO)()],{numeric:!0,usage:"sort"});var h=r(6028),A=r(36620);const f=(0,u.C)("settings","usersSettings",{}),b=(0,o.c0)("settings").persist(!0).build(),y={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},I={users:[],groups:[...f.getSubAdminGroups??[],...f.systemGroups??[]],orderBy:f.sortGroups??l.q.UserCount,minPasswordLength:0,usersOffset:0,usersLimit:25,disabledUsersOffset:0,disabledUsersLimit:25,userCount:f.userCount??0,showConfig:{showStoragePath:"true"===b.getItem("account_settings__showStoragePath"),showUserBackend:"true"===b.getItem("account_settings__showUserBackend"),showFirstLogin:"true"===b.getItem("account_settings__showFirstLogin"),showLastLogin:"true"===b.getItem("account_settings__showLastLogin"),showNewUserForm:"true"===b.getItem("account_settings__showNewUserForm"),showLanguages:"true"===b.getItem("account_settings__showLanguages")}},U={appendUsers(e,t){const s=e.users.map((({id:e})=>e)),r=Object.values(t).filter((({id:e})=>!s.includes(e))),a=e.users.concat(r);e.usersOffset+=e.usersLimit,e.users=a},updateDisabledUsers(e,t){e.disabledUsersOffset+=e.disabledUsersLimit},setPasswordPolicyMinLength(e,t){e.minPasswordLength=""!==t?t:0},addGroup(e,t){try{if(void 0!==e.groups.find((e=>e.id===t.id)))return;const s=Object.assign({},y,t);e.groups.unshift(s)}catch(e){console.error("Can't create group",e)}},renameGroup(e,{gid:t,displayName:s}){const r=e.groups.findIndex((e=>e.id===t));if(r>=0){const t=e.groups[r];t.name=s,e.groups.splice(r,1,t)}},removeGroup(e,t){const s=e.groups.findIndex((e=>e.id===t));s>=0&&e.groups.splice(s,1)},addUserGroup(e,{userid:t,gid:s}){const r=e.groups.find((e=>e.id===s)),a=e.users.find((e=>e.id===t));r&&a.enabled&&e.userCount>0&&r.usercount++,a.groups.push(s)},removeUserGroup(e,{userid:t,gid:s}){const r=e.groups.find((e=>e.id===s)),a=e.users.find((e=>e.id===t));r&&a.enabled&&e.userCount>0&&r.usercount--;const o=a.groups;o.splice(o.indexOf(s),1)},addUserSubAdmin(e,{userid:t,gid:s}){e.users.find((e=>e.id===t)).subadmin.push(s)},removeUserSubAdmin(e,{userid:t,gid:s}){const r=e.users.find((e=>e.id===t)).subadmin;r.splice(r.indexOf(s),1)},deleteUser(e,t){const s=e.users.findIndex((e=>e.id===t));this.commit("updateUserCounts",{user:e.users[s],actionType:"remove"}),e.users.splice(s,1)},addUserData(e,t){const s=t.data.ocs.data;e.users.unshift(s),this.commit("updateUserCounts",{user:s,actionType:"create"})},enableDisableUser(e,{userid:t,enabled:s}){const r=e.users.find((e=>e.id===t));r.enabled=s,this.commit("updateUserCounts",{user:r,actionType:s?"enable":"disable"})},updateUserCounts(e,{user:t,actionType:s}){if(0===e.userCount)return;const r=e.groups.find((e=>"__nc_internal_recent"===e.id)),a=e.groups.find((e=>"disabled"===e.id));switch(s){case"enable":case"disable":a.usercount+=t.enabled?-1:1,r.usercount+=t.enabled?1:-1,e.userCount+=t.enabled?1:-1,t.groups.forEach((s=>{const r=e.groups.find((e=>e.id===s));r&&(r.disabled+=t.enabled?-1:1)}));break;case"create":r.usercount++,e.userCount++,t.groups.forEach((t=>{const s=e.groups.find((e=>e.id===t));s&&s.usercount++}));break;case"remove":t.enabled?(r.usercount--,e.userCount--,t.groups.forEach((t=>{const s=e.groups.find((e=>e.id===t));s?s.usercount--:console.warn("User group "+t+" does not exist during user removal")}))):(a.usercount--,t.groups.forEach((t=>{const s=e.groups.find((e=>e.id===t));s&&s.disabled--})));break;default:A.A.error(`Unknown action type in updateUserCounts: '${s}'`)}},setUserData(e,{userid:t,key:s,value:r}){if("quota"===s){const a=(0,n.lT)(r,!0);e.users.find((e=>e.id===t))[s][s]=null!==a?a:r}else e.users.find((e=>e.id===t))[s]=r},resetUsers(e){e.users=[],e.usersOffset=0,e.disabledUsersOffset=0},resetGroups(e){e.groups=[...f.getSubAdminGroups??[],...f.systemGroups??[]]},setShowConfig(e,{key:t,value:s}){b.setItem(`account_settings__${t}`,JSON.stringify(s)),e.showConfig[t]=s},setGroupSorting(e,s){const r=e.orderBy;e.orderBy=s,p.Ay.post((0,c.Jv)("/settings/users/preferences/group.sortBy"),{value:String(s)}).catch((s=>{e.orderBy=r,(0,d.Qg)(t("settings","Could not set group sorting")),A.A.error(s)}))}},v={getUsers:e=>e.users,getGroups:e=>e.groups,getSubAdminGroups:()=>f.subAdminGroups??[],getSortedGroups(e){const t=[...e.groups];return e.orderBy===l.q.UserCount?t.sort(((e,t)=>{const s=e.usercount-e.disabled,r=t.usercount-t.disabled;return sg.compare(e.name,t.name)))},getGroupSorting:e=>e.orderBy,getPasswordPolicyMinLength:e=>e.minPasswordLength,getUsersOffset:e=>e.usersOffset,getUsersLimit:e=>e.usersLimit,getDisabledUsersOffset:e=>e.disabledUsersOffset,getDisabledUsersLimit:e=>e.disabledUsersLimit,getUserCount:e=>e.userCount,getShowConfig:e=>e.showConfig},L=p.Ay.CancelToken;let _=null;const w={state:I,mutations:U,getters:v,actions:{searchUsers:(e,{offset:t,limit:s,search:r})=>(r="string"==typeof r?r:"",h.A.get((0,c.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:t,limit:s,search:r})).catch((t=>{p.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))),getUser:(e,t)=>h.A.get((0,c.KT)(`cloud/users/${t}`)).catch((t=>{p.Ay.isCancel(t)||e.commit("API_FAILURE",t)})),getUsers:(e,{offset:t,limit:s,search:r,group:a})=>(_&&_.cancel("Operation canceled by another search request."),_=L.source(),r=(r="string"==typeof r?r:"").replace(/in:[^\s]+/g,"").trim(),""!==(a="string"==typeof a?a:"")?h.A.get((0,c.KT)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(a),offset:t,limit:s,search:r}),{cancelToken:_.token}).then((t=>{const s=Object.keys(t.data.ocs.data.users).length;return s>0&&e.commit("appendUsers",t.data.ocs.data.users),s})).catch((t=>{p.Ay.isCancel(t)||e.commit("API_FAILURE",t)})):h.A.get((0,c.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:t,limit:s,search:r}),{cancelToken:_.token}).then((t=>{const s=Object.keys(t.data.ocs.data.users).length;return s>0&&e.commit("appendUsers",t.data.ocs.data.users),s})).catch((t=>{p.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))),async getRecentUsers(e,{offset:t,limit:s,search:r}){const a=(0,c.KT)("cloud/users/recent?offset={offset}&limit={limit}&search={search}",{offset:t,limit:s,search:r});try{const t=await h.A.get(a),s=Object.keys(t.data.ocs.data.users).length;return s>0&&e.commit("appendUsers",t.data.ocs.data.users),s}catch(t){e.commit("API_FAILURE",t)}},async getDisabledUsers(e,{offset:t,limit:s,search:r}){const a=(0,c.KT)("cloud/users/disabled?offset={offset}&limit={limit}&search={search}",{offset:t,limit:s,search:r});try{const t=await h.A.get(a),s=Object.keys(t.data.ocs.data.users).length;return s>0&&(e.commit("appendUsers",t.data.ocs.data.users),e.commit("updateDisabledUsers",t.data.ocs.data.users)),s}catch(t){e.commit("API_FAILURE",t)}},getGroups(e,{offset:t,limit:s,search:r}){r="string"==typeof r?r:"";const a=-1===s?"":`&limit=${s}`;return h.A.get((0,c.KT)("cloud/groups?offset={offset}&search={search}",{offset:t,search:r})+a).then((t=>Object.keys(t.data.ocs.data.groups).length>0&&(t.data.ocs.data.groups.forEach((function(t){e.commit("addGroup",{id:t,name:t})})),!0))).catch((t=>e.commit("API_FAILURE",t)))},getUsersFromList:(e,{offset:t,limit:s,search:r})=>(r="string"==typeof r?r:"",h.A.get((0,c.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:t,limit:s,search:r})).then((t=>Object.keys(t.data.ocs.data.users).length>0&&(e.commit("appendUsers",t.data.ocs.data.users),!0))).catch((t=>e.commit("API_FAILURE",t)))),getUsersFromGroup:(e,{groupid:t,offset:s,limit:r})=>h.A.get((0,c.KT)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(t),offset:s,limit:r})).then((t=>e.commit("getUsersFromList",t.data.ocs.data.users))).catch((t=>e.commit("API_FAILURE",t))),getPasswordPolicyMinLength:e=>!(!(0,i.F)().password_policy||!(0,i.F)().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",(0,i.F)().password_policy.minLength),(0,i.F)().password_policy.minLength),addGroup:(e,t)=>h.A.requireAdmin().then((s=>h.A.post((0,c.KT)("cloud/groups"),{groupid:t}).then((s=>(e.commit("addGroup",{id:t,name:t}),{gid:t,displayName:t}))).catch((e=>{throw e})))).catch((s=>{throw e.commit("API_FAILURE",{gid:t,error:s}),s})),renameGroup:(e,{groupid:t,displayName:s})=>h.A.requireAdmin().then((r=>h.A.put((0,c.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)}),{key:"displayname",value:s}).then((r=>(e.commit("renameGroup",{gid:t,displayName:s}),{groupid:t,displayName:s}))).catch((e=>{throw e})))).catch((s=>{throw e.commit("API_FAILURE",{groupid:t,error:s}),s})),removeGroup:(e,t)=>h.A.requireAdmin().then((s=>h.A.delete((0,c.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)})).then((s=>e.commit("removeGroup",t))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{gid:t,error:s}))),addUserGroup:(e,{userid:t,gid:s})=>h.A.requireAdmin().then((r=>h.A.post((0,c.KT)("cloud/users/{userid}/groups",{userid:t}),{groupid:s}).then((r=>e.commit("addUserGroup",{userid:t,gid:s}))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s}))),removeUserGroup:(e,{userid:t,gid:s})=>h.A.requireAdmin().then((r=>h.A.delete((0,c.KT)("cloud/users/{userid}/groups",{userid:t}),{groupid:s}).then((r=>e.commit("removeUserGroup",{userid:t,gid:s}))).catch((e=>{throw e})))).catch((s=>{throw e.commit("API_FAILURE",{userid:t,error:s}),s})),addUserSubAdmin:(e,{userid:t,gid:s})=>h.A.requireAdmin().then((r=>h.A.post((0,c.KT)("cloud/users/{userid}/subadmins",{userid:t}),{groupid:s}).then((r=>e.commit("addUserSubAdmin",{userid:t,gid:s}))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s}))),removeUserSubAdmin:(e,{userid:t,gid:s})=>h.A.requireAdmin().then((r=>h.A.delete((0,c.KT)("cloud/users/{userid}/subadmins",{userid:t}),{groupid:s}).then((r=>e.commit("removeUserSubAdmin",{userid:t,gid:s}))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s}))),async wipeUserDevices(e,t){try{return await h.A.requireAdmin(),await h.A.post((0,c.KT)("cloud/users/{userid}/wipe",{userid:t}))}catch(s){return e.commit("API_FAILURE",{userid:t,error:s}),Promise.reject(new Error("Failed to wipe user devices"))}},deleteUser:(e,t)=>h.A.requireAdmin().then((s=>h.A.delete((0,c.KT)("cloud/users/{userid}",{userid:t})).then((s=>e.commit("deleteUser",t))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s}))),addUser:({commit:e,dispatch:t},{userid:s,password:r,displayName:a,email:o,groups:i,subadmin:n,quota:d,language:u,manager:p})=>h.A.requireAdmin().then((e=>h.A.post((0,c.KT)("cloud/users"),{userid:s,password:r,displayName:a,email:o,groups:i,subadmin:n,quota:d,language:u,manager:p}).then((e=>t("addUserData",s||e.data.ocs.data.id))).catch((e=>{throw e})))).catch((t=>{throw e("API_FAILURE",{userid:s,error:t}),t})),addUserData:(e,t)=>h.A.requireAdmin().then((s=>h.A.get((0,c.KT)("cloud/users/{userid}",{userid:t})).then((t=>e.commit("addUserData",t))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s}))),enableDisableUser(e,{userid:t,enabled:s=!0}){const r=s?"enable":"disable";return h.A.requireAdmin().then((a=>h.A.put((0,c.KT)("cloud/users/{userid}/{userStatus}",{userid:t,userStatus:r})).then((r=>e.commit("enableDisableUser",{userid:t,enabled:s}))).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s})))},async setUserData(e,{userid:t,key:s,value:r}){if(!["email","language","quota","displayname","password","manager"].includes(s))throw new Error("Invalid request data");if(""===r&&!["email","displayname","manager"].includes(s))throw new Error("Value cannot be empty for this field");try{return await h.A.requireAdmin(),await h.A.put((0,c.KT)("cloud/users/{userid}",{userid:t}),{key:s,value:r}),e.commit("setUserData",{userid:t,key:s,value:r})}catch(s){throw e.commit("API_FAILURE",{userid:t,error:s}),s}},sendWelcomeMail:(e,t)=>h.A.requireAdmin().then((e=>h.A.post((0,c.KT)("cloud/users/{userid}/welcome",{userid:t})).then((e=>!0)).catch((e=>{throw e})))).catch((s=>e.commit("API_FAILURE",{userid:t,error:s})))}};var P=r(85471);const E={apps:[],bundles:(0,u.C)("settings","appstoreBundles",[]),categories:[],updateCount:(0,u.C)("settings","appstoreUpdateCount",0),loading:{},gettingCategoriesPromise:null,appApiEnabled:(0,u.C)("settings","appApiEnabled",!1)},C={APPS_API_FAILURE(e,s){(0,d.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+s.error.response.data.data.message,{isHTML:!0}),console.error(e,s)},initCategories(e,{categories:t,updateCount:s}){e.categories=t,e.updateCount=s},updateCategories(e,t){e.gettingCategoriesPromise=t},setUpdateCount(e,t){e.updateCount=t},addCategory(e,t){e.categories.push(t)},appendCategories(e,t){e.categories=t},setAllApps(e,t){e.apps=t},setError(e,{appId:t,error:s}){Array.isArray(t)||(t=[t]),t.forEach((t=>{e.apps.find((e=>e.id===t)).error=s}))},clearError(e,{appId:t,error:s}){e.apps.find((e=>e.id===t)).error=null},enableApp(e,{appId:t,groups:s}){const r=e.apps.find((e=>e.id===t));r.active=!0,P.Ay.set(r,"groups",[...s]),"app_api"===r.id&&(e.appApiEnabled=!0)},setInstallState(e,{appId:t,canInstall:s}){const r=e.apps.find((e=>e.id===t));r&&(r.canInstall=!0===s)},disableApp(e,t){const s=e.apps.find((e=>e.id===t));s.active=!1,s.groups=[],s.removable&&(s.canUnInstall=!0),"app_api"===s.id&&(e.appApiEnabled=!1)},uninstallApp(e,t){e.apps.find((e=>e.id===t)).active=!1,e.apps.find((e=>e.id===t)).groups=[],e.apps.find((e=>e.id===t)).needsDownload=!0,e.apps.find((e=>e.id===t)).installed=!1,e.apps.find((e=>e.id===t)).canUnInstall=!1,e.apps.find((e=>e.id===t)).canInstall=!0,"app_api"===t&&(e.appApiEnabled=!1)},updateApp(e,t){const s=e.apps.find((e=>e.id===t)),r=s.update;s.update=null,s.version=r,e.updateCount--},resetApps(e){e.apps=[]},reset(e){e.apps=[],e.categories=[],e.updateCount=0},startLoading(e,t){Array.isArray(t)?t.forEach((t=>{P.Ay.set(e.loading,t,!0)})):P.Ay.set(e.loading,t,!0)},stopLoading(e,t){Array.isArray(t)?t.forEach((t=>{P.Ay.set(e.loading,t,!1)})):P.Ay.set(e.loading,t,!1)}},T={enableApp(e,{appId:s,groups:r}){let a;return a=Array.isArray(s)?s:[s],h.A.requireAdmin().then((o=>{e.commit("startLoading",a),e.commit("startLoading","install");const i={};return a.forEach((t=>{const s=e.state.apps.find((e=>e.id===t));s&&(i[t]={active:s.active,groups:[...s.groups||[]]},e.commit("enableApp",{appId:t,groups:r}))})),h.A.post((0,c.Jv)("settings/apps/enable"),{appIds:a,groups:r}).then((o=>(e.commit("stopLoading",a),e.commit("stopLoading","install"),a.forEach((t=>{e.commit("enableApp",{appId:t,groups:r})})),p.Ay.get((0,c.Jv)("apps/files/")).then((()=>{o.data.update_required&&((0,d.cf)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:()=>window.location.reload(),close:!1}),setTimeout((function(){location.reload()}),5e3))})).catch((()=>{Array.isArray(s)||((0,d.Qg)(t("settings","Error: This app cannot be enabled because it makes the server unstable")),e.commit("setError",{appId:a,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")}),e.dispatch("disableApp",{appId:s}))}))))).catch((t=>{e.commit("stopLoading",a),e.commit("stopLoading","install"),a.forEach((t=>{i[t]&&(e.commit("enableApp",{appId:t,groups:i[t].groups}),i[t].active||e.commit("disableApp",t))})),e.commit("setError",{appId:a,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:s,error:t})}))})).catch((t=>e.commit("API_FAILURE",{appId:s,error:t})))},forceEnableApp(e,{appId:t,groups:s}){let r;return r=Array.isArray(t)?t:[t],h.A.requireAdmin().then((()=>(e.commit("startLoading",r),e.commit("startLoading","install"),h.A.post((0,c.Jv)("settings/apps/force"),{appId:t}).then((s=>{e.commit("setInstallState",{appId:t,canInstall:!0})})).catch((s=>{e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("setError",{appId:r,error:s.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:t,error:s})})).finally((()=>{e.commit("stopLoading",r),e.commit("stopLoading","install")}))))).catch((s=>e.commit("API_FAILURE",{appId:t,error:s})))},disableApp(e,{appId:t}){let s;return s=Array.isArray(t)?t:[t],h.A.requireAdmin().then((r=>(e.commit("startLoading",s),h.A.post((0,c.Jv)("settings/apps/disable"),{appIds:s}).then((t=>(e.commit("stopLoading",s),s.forEach((t=>{e.commit("disableApp",t)})),!0))).catch((r=>{e.commit("stopLoading",s),e.commit("APPS_API_FAILURE",{appId:t,error:r})}))))).catch((s=>e.commit("API_FAILURE",{appId:t,error:s})))},uninstallApp:(e,{appId:t})=>h.A.requireAdmin().then((s=>(e.commit("startLoading",t),h.A.get((0,c.Jv)(`settings/apps/uninstall/${t}`)).then((s=>(e.commit("stopLoading",t),e.commit("uninstallApp",t),!0))).catch((s=>{e.commit("stopLoading",t),e.commit("APPS_API_FAILURE",{appId:t,error:s})}))))).catch((s=>e.commit("API_FAILURE",{appId:t,error:s}))),updateApp:(e,{appId:t})=>h.A.requireAdmin().then((s=>(e.commit("startLoading",t),e.commit("startLoading","install"),h.A.get((0,c.Jv)(`settings/apps/update/${t}`)).then((s=>(e.commit("stopLoading","install"),e.commit("stopLoading",t),e.commit("updateApp",t),!0))).catch((s=>{e.commit("stopLoading",t),e.commit("stopLoading","install"),e.commit("APPS_API_FAILURE",{appId:t,error:s})}))))).catch((s=>e.commit("API_FAILURE",{appId:t,error:s}))),getAllApps:e=>(e.commit("startLoading","list"),h.A.get((0,c.Jv)("settings/apps/list")).then((t=>(e.commit("setAllApps",t.data.apps),e.commit("stopLoading","list"),!0))).catch((t=>e.commit("API_FAILURE",t)))),async getCategories(e,{shouldRefetchCategories:t=!1}={}){if(t||!e.state.gettingCategoriesPromise){e.commit("startLoading","categories");try{const t=h.A.get((0,c.Jv)("settings/apps/categories"));e.commit("updateCategories",t);const s=await t;return s.data.length>0?(e.commit("appendCategories",s.data),e.commit("stopLoading","categories"),!0):(e.commit("stopLoading","categories"),!1)}catch(t){e.commit("API_FAILURE",t)}}return e.state.gettingCategoriesPromise}},R={state:E,mutations:C,getters:{isAppApiEnabled:e=>e.appApiEnabled,loading:e=>function(t){return e.loading[t]},getCategories:e=>e.categories,getAllApps:e=>e.apps,getAppBundles:e=>e.bundles,getUpdateCount:e=>e.updateCount,getCategoryById:e=>t=>e.categories.find((e=>e.id===t))},actions:T},F={serverData:(0,u.C)("settings","usersSettings",{})},k={setServerData(e,t){e.serverData=t}},S={state:F,mutations:k,getters:{getServerData:e=>e.serverData},actions:{}},O={state:{},mutations:{},getters:{},actions:{setAppConfig:(e,{app:t,key:s,value:r})=>h.A.requireAdmin().then((e=>h.A.post((0,c.KT)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:t,key:s}),{value:r}).catch((e=>{throw e})))).catch((a=>e.commit("API_FAILURE",{app:t,key:s,value:r,error:a})))}},q={API_FAILURE(e,s){try{const e=s.error.response.data.ocs.meta.message;(0,d.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"
"+e,{isHTML:!0})}catch(e){(0,d.Qg)(t("settings","An error occurred during the request. Unable to proceed."))}console.error(e,s)}};let G=null;const K=()=>(null===G&&(G=new a.il({modules:{users:w,apps:R,settings:S,oc:O},strict:!1,mutations:q})),G)},15916(e,t,s){"use strict";var r;s.d(t,{q:()=>r}),function(e){e[e.UserCount=1]="UserCount",e[e.GroupName=2]="GroupName"}(r||(r={}))},36620(e,t,s){"use strict";s.d(t,{A:()=>r});const r=(0,s(35947).YK)().setApp("settings").detectUser().build()},18539(e,t,s){"use strict";var r=s(85471),a=s(95353),o=s(80284),i=s(58723),n=s(53334),d=s(22378);const c=(0,r.pM)({__name:"SettingsApp",setup:e=>({__sfc:!0,NcContent:d.A})}),u=(0,s(14486).A)(c,(function(){var e=this,t=e._self._c;return t(e._self._setupProxy.NcContent,{attrs:{"app-name":"settings"}},[t("router-view",{attrs:{name:"navigation"}}),e._v(" "),t("router-view"),e._v(" "),t("router-view",{attrs:{name:"sidebar"}})],1)}),[],!1,null,null,null).exports;var p=s(40173),l=s(63814);const m=[{name:"users",path:"/:index(index.php/)?settings/users",components:{default:()=>Promise.all([s.e(4208),s.e(7265),s.e(3239)]).then(s.bind(s,15272)),navigation:()=>Promise.all([s.e(4208),s.e(7265),s.e(3239)]).then(s.bind(s,65821))},props:!0,children:[{path:":selectedGroup",name:"group"}]},{path:"/:index(index.php/)?settings/apps",name:"apps",redirect:{name:"apps-category",params:{category:(0,s(32981).C)("settings","appstoreEnabled",!0)?"discover":"installed"}},components:{default:()=>Promise.all([s.e(4208),s.e(7265),s.e(4529)]).then(s.bind(s,79852)),navigation:()=>Promise.all([s.e(4208),s.e(7265),s.e(4529)]).then(s.bind(s,97484)),sidebar:()=>Promise.all([s.e(4208),s.e(7265),s.e(4529)]).then(s.bind(s,37058))},children:[{path:":category",name:"apps-category",children:[{path:":id",name:"apps-details"}]}]}];r.Ay.use(p.Ay);const g=new p.Ay({mode:"history",base:(0,l.Jv)(""),linkActiveClass:"active",routes:m});var h=s(14744),A=s(21777),f=s(65899);s.nc=(0,A.aV)(),r.Ay.prototype.t=n.t,r.Ay.prototype.n=n.n,r.Ay.use(f.R2),r.Ay.use(o.Ay,{defaultHtml:!1}),r.Ay.use(a.Ay);const b=(0,h.P)();(0,i.O)(b,g);const y=(0,f.Ey)();new r.Ay({router:g,store:b,pinia:y,render:e=>e(u),el:"#content"})},58723(e,t){function s(e,t){var r={name:e.name,path:e.path,hash:e.hash,query:e.query,params:e.params,fullPath:e.fullPath,meta:e.meta};return t&&(r.from=s(t)),Object.freeze(r)}t.O=function(e,t,r){var a=(r||{}).moduleName||"route";e.registerModule(a,{namespaced:!0,state:s(t.currentRoute),mutations:{ROUTE_CHANGED:function(t,r){e.state[a]=s(r.to,r.from)}}});var o,i=!1,n=e.watch((function(e){return e[a]}),(function(e){var s=e.fullPath;s!==o&&(null!=o&&(i=!0,t.push(e)),o=s)}),{sync:!0}),d=t.afterEach((function(t,s){i?i=!1:(o=t.fullPath,e.commit(a+"/ROUTE_CHANGED",{to:t,from:s}))}));return function(){null!=d&&d(),null!=n&&n(),e.unregisterModule(a)}}}},o={};function i(e){var t=o[e];if(void 0!==t)return t.exports;var s=o[e]={id:e,loaded:!1,exports:{}};return a[e].call(s.exports,s,s.exports,i),s.loaded=!0,s.exports}i.m=a,e=[],i.O=(t,s,r,a)=>{if(!s){var o=1/0;for(u=0;u=a)&&Object.keys(i.O).every((e=>i.O[e](s[d])))?s.splice(d--,1):(n=!1,a0&&e[u-1][2]>a;u--)e[u]=e[u-1];e[u]=[s,r,a]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,s)=>(i.f[s](e,t),t)),[])),i.u=e=>(({3239:"settings-users",4529:"settings-apps-view"}[e]||e)+"-"+e+".js?v="+{256:"8da30012aeb0f023e7bd",3239:"2d28c9b1f1d679236b2d",3303:"84070d41d3d1997241ee",3731:"03a157235c000f83910a",4529:"df92482327799c83fdc2",5862:"10fe36062cea7941d5a0",6329:"da6ad198a7ca85dde977",7265:"3f68ab0e901bd8e71d4b",7471:"c2afd3e83467ce503d3e",8737:"5bd6b99bc82b98042f57",9972:"fefc81beb04a7254b43a"}[e]),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s={},r="nextcloud:",i.l=(e,t,a,o)=>{if(s[e])s[e].push(t);else{var n,d;if(void 0!==a)for(var c=document.getElementsByTagName("script"),u=0;u{n.onerror=n.onload=null,clearTimeout(m);var a=s[e];if(delete s[e],n.parentNode&&n.parentNode.removeChild(n),a&&a.forEach((e=>e(r))),t)return t(r)},m=setTimeout(l.bind(null,void 0,{type:"timeout",target:n}),12e4);n.onerror=l.bind(null,n.onerror),n.onload=l.bind(null,n.onload),d&&document.head.appendChild(n)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),i.j=2689,(()=>{var e;globalThis.importScripts&&(e=globalThis.location+"");var t=globalThis.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var s=t.getElementsByTagName("script");if(s.length)for(var r=s.length-1;r>-1&&(!e||!/^http(s?):/.test(e));)e=s[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=e})(),(()=>{i.b="undefined"!=typeof document&&document.baseURI||self.location.href;var e={2689:0};i.f.j=(t,s)=>{var r=i.o(e,t)?e[t]:void 0;if(0!==r)if(r)s.push(r[2]);else{var a=new Promise(((s,a)=>r=e[t]=[s,a]));s.push(r[2]=a);var o=i.p+i.u(t),n=new Error;i.l(o,(s=>{if(i.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var a=s&&("load"===s.type?"missing":s.type),o=s&&s.target&&s.target.src;n.message="Loading chunk "+t+" failed.\n("+a+": "+o+")",n.name="ChunkLoadError",n.type=a,n.request=o,r[1](n)}}),"chunk-"+t,t)}},i.O.j=t=>0===e[t];var t=(t,s)=>{var r,a,[o,n,d]=s,c=0;if(o.some((t=>0!==e[t]))){for(r in n)i.o(n,r)&&(i.m[r]=n[r]);if(d)var u=d(i)}for(t&&t(s);ci(18539)));n=i.O(n)})(); +//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=fdd10c138e6a7fec600e \ No newline at end of file diff --git a/dist/settings-vue-settings-apps-users-management.js.map b/dist/settings-vue-settings-apps-users-management.js.map index 660b44a906a55..34b8db2eb2da6 100644 --- a/dist/settings-vue-settings-apps-users-management.js.map +++ b/dist/settings-vue-settings-apps-users-management.js.map @@ -1 +1 @@ -{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=ea64bc0f394f26020734","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/utils/sorting.ts","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/users-settings.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/apps/settings/src/constants/GroupManagement.ts","webpack:///nextcloud/apps/settings/src/logger.ts","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/SettingsApp.vue?3a67","webpack:///nextcloud/apps/settings/src/router/routes.ts","webpack:///nextcloud/apps/settings/src/router/index.ts","webpack:///nextcloud/apps/settings/src/main-apps-users-management.ts","webpack:///nextcloud/node_modules/vuex-router-sync/index.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nconst sanitize = function(url) {\n\treturn url.replace(/\\/$/, '') // Remove last url slash\n}\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * action(context) {\n\t * return api.requireAdmin().then((response) => {\n\t * return api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {API failure});\n\t * }).catch((error) => {requireAdmin failure});\n\t * }\n\t * // vue\n\t * this.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t *\n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t *\n\t * e.g\n\t * api.requireAdmin().then((response) => {\n\t * api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {throw error;});\n\t * }).catch((error) => {requireAdmin OR API failure});\n\t *\n\t * @return {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword()\n\t},\n\tget(url, options) {\n\t\treturn axios.get(sanitize(url), options)\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data)\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data)\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data)\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { params: data })\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCanonicalLocale, getLanguage } from '@nextcloud/l10n';\nexport const naturalCollator = Intl.Collator([getLanguage(), getCanonicalLocale()], {\n numeric: true,\n usage: 'sort',\n});\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getBuilder } from '@nextcloud/browser-storage'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { parseFileSize } from '@nextcloud/files'\nimport { showError } from '@nextcloud/dialogs'\nimport { generateOcsUrl, generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\n\nimport { GroupSorting } from '../constants/GroupManagement.ts'\nimport { naturalCollator } from '../utils/sorting.ts'\nimport api from './api.js'\nimport logger from '../logger.ts'\n\nconst usersSettings = loadState('settings', 'usersSettings', {})\n\nconst localStorage = getBuilder('settings').persist(true).build()\n\nconst defaults = {\n\t/**\n\t * @type {import('../views/user-types').IGroup}\n\t */\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true,\n\t},\n}\n\nconst state = {\n\tusers: [],\n\tgroups: [\n\t\t...(usersSettings.getSubAdminGroups ?? []),\n\t\t...(usersSettings.systemGroups ?? []),\n\t],\n\torderBy: usersSettings.sortGroups ?? GroupSorting.UserCount,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tdisabledUsersOffset: 0,\n\tdisabledUsersLimit: 25,\n\tuserCount: usersSettings.userCount ?? 0,\n\tshowConfig: {\n\t\tshowStoragePath: localStorage.getItem('account_settings__showStoragePath') === 'true',\n\t\tshowUserBackend: localStorage.getItem('account_settings__showUserBackend') === 'true',\n\t\tshowFirstLogin: localStorage.getItem('account_settings__showFirstLogin') === 'true',\n\t\tshowLastLogin: localStorage.getItem('account_settings__showLastLogin') === 'true',\n\t\tshowNewUserForm: localStorage.getItem('account_settings__showNewUserForm') === 'true',\n\t\tshowLanguages: localStorage.getItem('account_settings__showLanguages') === 'true',\n\t},\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\tconst existingUsers = state.users.map(({ id }) => id)\n\t\tconst newUsers = Object.values(usersObj)\n\t\t\t.filter(({ id }) => !existingUsers.includes(id))\n\n\t\tconst users = state.users.concat(newUsers)\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tupdateDisabledUsers(state, _usersObj) {\n\t\tstate.disabledUsersOffset += state.disabledUsersLimit\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0\n\t},\n\t/**\n\t * @param {object} state store state\n\t * @param {import('../views/user-types.js').IGroup} newGroup new group\n\t */\n\taddGroup(state, newGroup) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === newGroup.id) !== 'undefined') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tconst group = Object.assign({}, defaults.group, newGroup)\n\t\t\tstate.groups.unshift(group)\n\t\t} catch (e) {\n\t\t\tconsole.error('Can\\'t create group', e)\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex(user => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.unshift(user)\n\t\tthis.commit('updateUserCounts', { user, actionType: 'create' })\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\tuser.enabled = enabled\n\t\tthis.commit('updateUserCounts', { user, actionType: enabled ? 'enable' : 'disable' })\n\t},\n\t// update active/disabled counts, groups counts\n\tupdateUserCounts(state, { user, actionType }) {\n\t\t// 0 is a special value\n\t\tif (state.userCount === 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst recentGroup = state.groups.find(group => group.id === '__nc_internal_recent')\n\t\tconst disabledGroup = state.groups.find(group => group.id === 'disabled')\n\t\tswitch (actionType) {\n\t\tcase 'enable':\n\t\tcase 'disable':\n\t\t\tdisabledGroup.usercount += user.enabled ? -1 : 1 // update Disabled Users count\n\t\t\trecentGroup.usercount += user.enabled ? 1 : -1\n\t\t\tstate.userCount += user.enabled ? 1 : -1 // update Active Users count\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tif (!group) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tgroup.disabled += user.enabled ? -1 : 1 // update group disabled count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'create':\n\t\t\trecentGroup.usercount++\n\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tif (!group) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tgroup.usercount++ // increment group total count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'remove':\n\t\t\tif (user.enabled) {\n\t\t\t\trecentGroup.usercount--\n\t\t\t\tstate.userCount-- // decrement Active Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tif (!group) {\n\t\t\t\t\t\tconsole.warn('User group ' + userGroup + ' does not exist during user removal')\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tgroup.usercount-- // decrement group total count\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tdisabledGroup.usercount-- // decrement Disabled Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tif (!group) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tgroup.disabled-- // decrement group disabled count\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tlogger.error(`Unknown action type in updateUserCounts: '${actionType}'`)\n\t\t\t// not throwing error to interrupt execution as this is not fatal\n\t\t}\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tconst humanValue = parseFileSize(value, true)\n\t\t\tstate.users.find(user => user.id === userid)[key][key] = humanValue !== null ? humanValue : value\n\t\t} else {\n\t\t\tstate.users.find(user => user.id === userid)[key] = value\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetUsers(state) {\n\t\tstate.users = []\n\t\tstate.usersOffset = 0\n\t\tstate.disabledUsersOffset = 0\n\t},\n\n\t/**\n\t * Reset group list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetGroups(state) {\n\t\tstate.groups = [\n\t\t\t...(usersSettings.getSubAdminGroups ?? []),\n\t\t\t...(usersSettings.systemGroups ?? []),\n\t\t]\n\t},\n\n\tsetShowConfig(state, { key, value }) {\n\t\tlocalStorage.setItem(`account_settings__${key}`, JSON.stringify(value))\n\t\tstate.showConfig[key] = value\n\t},\n\n\tsetGroupSorting(state, sorting) {\n\t\tconst oldValue = state.orderBy\n\t\tstate.orderBy = sorting\n\n\t\t// Persist the value on the server\n\t\taxios.post(\n\t\t\tgenerateUrl('/settings/users/preferences/group.sortBy'),\n\t\t\t{\n\t\t\t\tvalue: String(sorting),\n\t\t\t},\n\t\t).catch((error) => {\n\t\t\tstate.orderBy = oldValue\n\t\t\tshowError(t('settings', 'Could not set group sorting'))\n\t\t\tlogger.error(error)\n\t\t})\n\t},\n}\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups\n\t},\n\tgetSubAdminGroups() {\n\t\treturn usersSettings.subAdminGroups ?? []\n\t},\n\n\tgetSortedGroups(state) {\n\t\tconst groups = [...state.groups]\n\t\tif (state.orderBy === GroupSorting.UserCount) {\n\t\t\treturn groups.sort((a, b) => {\n\t\t\t\tconst numA = a.usercount - a.disabled\n\t\t\t\tconst numB = b.usercount - b.disabled\n\t\t\t\treturn (numA < numB) ? 1 : (numB < numA ? -1 : naturalCollator.compare(a.name, b.name))\n\t\t\t})\n\t\t} else {\n\t\t\treturn groups.sort((a, b) => naturalCollator.compare(a.name, b.name))\n\t\t}\n\t},\n\tgetGroupSorting(state) {\n\t\treturn state.orderBy\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit\n\t},\n\tgetDisabledUsersOffset(state) {\n\t\treturn state.disabledUsersOffset\n\t},\n\tgetDisabledUsersLimit(state) {\n\t\treturn state.disabledUsersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n\tgetShowConfig(state) {\n\t\treturn state.showConfig\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * search users\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @return {Promise}\n\t */\n\tsearchUsers(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search })).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get user details\n\t *\n\t * @param {object} context store context\n\t * @param {string} userId user id\n\t * @return {Promise}\n\t */\n\tgetUser(context, userId) {\n\t\treturn api.get(generateOcsUrl(`cloud/users/${userId}`)).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @return {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tif (searchRequestCancelSource) {\n\t\t\tsearchRequestCancelSource.cancel('Operation canceled by another search request.')\n\t\t}\n\t\tsearchRequestCancelSource = CancelToken.source()\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\t/**\n\t\t * Adding filters in the search bar such as in:files, in:users, etc.\n\t\t * collides with this particular search, so we need to remove them\n\t\t * here and leave only the original search query\n\t\t */\n\t\tsearch = search.replace(/in:[^\\s]+/g, '').trim()\n\n\t\tgroup = typeof group === 'string' ? group : ''\n\t\tif (group !== '') {\n\t\t\treturn api.get(generateOcsUrl('cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}', { group: encodeURIComponent(group), offset, limit, search }), {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\t}\n\t\t\t\t\treturn usersCount\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }), {\n\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t}\n\t\t\t\treturn usersCount\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t}\n\t\t\t})\n\t},\n\n\t/**\n\t * Get recent users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search query\n\t * @return {Promise}\n\t */\n\tasync getRecentUsers(context, { offset, limit, search }) {\n\t\tconst url = generateOcsUrl('cloud/users/recent?offset={offset}&limit={limit}&search={search}', { offset, limit, search })\n\t\ttry {\n\t\t\tconst response = await api.get(url)\n\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\tif (usersCount > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t}\n\t\t\treturn usersCount\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', error)\n\t\t}\n\t},\n\n\t/**\n\t * Get disabled users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param options.search\n\t * @return {Promise}\n\t */\n\tasync getDisabledUsers(context, { offset, limit, search }) {\n\t\tconst url = generateOcsUrl('cloud/users/disabled?offset={offset}&limit={limit}&search={search}', { offset, limit, search })\n\t\ttry {\n\t\t\tconst response = await api.get(url)\n\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\tif (usersCount > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\tcontext.commit('updateDisabledUsers', response.data.ocs.data.users)\n\t\t\t}\n\t\t\treturn usersCount\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', error)\n\t\t}\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tconst limitParam = limit === -1 ? '' : `&limit=${limit}`\n\t\treturn api.get(generateOcsUrl('cloud/groups?offset={offset}&search={search}', { offset, search }) + limitParam)\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', { id: group, name: group })\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search -\n\t * @return {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.groupid -\n\t * @return {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(generateOcsUrl('cloud/users/{groupId}/details?offset={offset}&limit={limit}', { groupId: encodeURIComponent(groupid), offset, limit }))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif (getCapabilities().password_policy && getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', getCapabilities().password_policy.minLength)\n\t\t\treturn getCapabilities().password_policy.minLength\n\t\t}\n\t\treturn false\n\t},\n\n\t/**\n\t * Add group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/groups'), { groupid: gid })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('addGroup', { id: gid, name: gid })\n\t\t\t\t\treturn { gid, displayName: gid }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Rename group\n\t *\n\t * @param {object} context store context\n\t * @param {string} groupid Group id\n\t * @param {string} displayName Group display name\n\t * @return {Promise}\n\t */\n\trenameGroup(context, { groupid, displayName }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(groupid) }), { key: 'displayname', value: displayName })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('renameGroup', { gid: groupid, displayName })\n\t\t\t\t\treturn { groupid, displayName }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { groupid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from renaming the group\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Remove group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(gid) }))\n\t\t\t\t.then((response) => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }))\n\t},\n\n\t/**\n\t * Add user to group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Add user to group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tasync wipeUserDevices(context, userid) {\n\t\ttry {\n\t\t\tawait api.requireAdmin()\n\t\t\treturn await api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\treturn Promise.reject(new Error('Failed to wipe user devices'))\n\t\t}\n\t},\n\n\t/**\n\t * Delete a user\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Add a user\n\t *\n\t * @param {object} context store context\n\t * @param {Function} context.commit -\n\t * @param {Function} context.dispatch -\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @param {string} options.language User language\n\t * @param {string} options.manager User manager\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language, manager }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language, manager })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.get(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Enable or disable user\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @return {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tconst userStatus = enabled ? 'enable' : 'disable'\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}/{userStatus}', { userid, userStatus }))\n\t\t\t\t.then((response) => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Edit user data\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @return {Promise}\n\t */\n\tasync setUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname', 'manager']\n\t\tconst validKeys = ['email', 'language', 'quota', 'displayname', 'password', 'manager']\n\n\t\tif (!validKeys.includes(key)) {\n\t\t\tthrow new Error('Invalid request data')\n\t\t}\n\n\t\t// If value is empty and the key doesn't allow empty values, throw error\n\t\tif (value === '' && !allowedEmpty.includes(key)) {\n\t\t\tthrow new Error('Value cannot be empty for this field')\n\t\t}\n\n\t\ttry {\n\t\t\tawait api.requireAdmin()\n\t\t\tawait api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\treturn context.commit('setUserData', { userid, key, value })\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t}\n\t},\n\n\t/**\n\t * Send welcome mail\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/welcome', { userid }))\n\t\t\t\t.then(response => true)\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport api from './api.js'\nimport Vue from 'vue'\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tapps: [],\n\tbundles: loadState('settings', 'appstoreBundles', []),\n\tcategories: [],\n\tupdateCount: loadState('settings', 'appstoreUpdateCount', 0),\n\tloading: {},\n\tgettingCategoriesPromise: null,\n\tappApiEnabled: loadState('settings', 'appApiEnabled', false),\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '
' + error.error.response.data.data.message, { isHTML: true })\n\t\tconsole.error(state, error)\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\tupdateCategories(state, categoriesPromise) {\n\t\tstate.gettingCategoriesPromise = categoriesPromise\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category)\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps\n\t},\n\n\tsetError(state, { appId, error }) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId]\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tconst app = state.apps.find(app => app.id === _id)\n\t\t\tapp.error = error\n\t\t})\n\t},\n\n\tclearError(state, { appId, error }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.error = null\n\t},\n\n\tenableApp(state, { appId, groups }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = true\n\t\tVue.set(app, 'groups', [...groups])\n\t\tif (app.id === 'app_api') {\n\t\t\tstate.appApiEnabled = true\n\t\t}\n\t},\n\n\tsetInstallState(state, { appId, canInstall }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tif (app) {\n\t\t\tapp.canInstall = canInstall === true\n\t\t}\n\t},\n\n\tdisableApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = false\n\t\tapp.groups = []\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true\n\t\t}\n\t\tif (app.id === 'app_api') {\n\t\t\tstate.appApiEnabled = false\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find(app => app.id === appId).active = false\n\t\tstate.apps.find(app => app.id === appId).groups = []\n\t\tstate.apps.find(app => app.id === appId).needsDownload = true\n\t\tstate.apps.find(app => app.id === appId).installed = false\n\t\tstate.apps.find(app => app.id === appId).canUnInstall = false\n\t\tstate.apps.find(app => app.id === appId).canInstall = true\n\t\tif (appId === 'app_api') {\n\t\t\tstate.appApiEnabled = false\n\t\t}\n\t},\n\n\tupdateApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tconst version = app.update\n\t\tapp.update = null\n\t\tapp.version = version\n\t\tstate.updateCount--\n\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = []\n\t},\n\treset(state) {\n\t\tstate.apps = []\n\t\tstate.categories = []\n\t\tstate.updateCount = 0\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true)\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tisAppApiEnabled(state) {\n\t\treturn state.appApiEnabled\n\t},\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id]\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps\n\t},\n\tgetAppBundles(state) {\n\t\treturn state.bundles\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n\tgetCategoryById: (state) => (selectedCategoryId) => {\n\t\treturn state.categories.find((category) => category.id === selectedCategoryId)\n\t},\n}\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\n\t\t\tconst previousState = {}\n\t\t\tapps.forEach((_appId) => {\n\t\t\t\tconst app = context.state.apps.find((app) => app.id === _appId)\n\t\t\t\tif (app) {\n\t\t\t\t\tpreviousState[_appId] = {\n\t\t\t\t\t\tactive: app.active,\n\t\t\t\t\t\tgroups: [...(app.groups || [])],\n\t\t\t\t\t}\n\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t}\n\t\t\t})\n\n\t\t\treturn api.post(generateUrl('settings/apps/enable'), { appIds: apps, groups })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t\t})\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn axios.get(generateUrl('apps/files/'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tshowInfo(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.',\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tonClick: () => window.location.reload(),\n\t\t\t\t\t\t\t\t\t\tclose: false,\n\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t}, 5000)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tshowError(t('settings', 'Error: This app cannot be enabled because it makes the server unstable'))\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app cannot be enabled because it makes the server unstable'),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tcontext.dispatch('disableApp', { appId })\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\n\t\t\t\t\tapps.forEach((_appId) => {\n\t\t\t\t\t\tif (previousState[_appId]) {\n\t\t\t\t\t\t\tcontext.commit('enableApp', {\n\t\t\t\t\t\t\t\tappId: _appId,\n\t\t\t\t\t\t\t\tgroups: previousState[_appId].groups,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tif (!previousState[_appId].active) {\n\t\t\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tforceEnableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/force'), { appId })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('setInstallState', { appId, canInstall: true })\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\treturn api.post(generateUrl('settings/apps/disable'), { appIds: apps })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\treturn api.get(generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('uninstallApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.get(generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('updateApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list')\n\t\treturn api.get(generateUrl('settings/apps/list'))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps)\n\t\t\t\tcontext.commit('stopLoading', 'list')\n\t\t\t\treturn true\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tasync getCategories(context, { shouldRefetchCategories = false } = {}) {\n\t\tif (shouldRefetchCategories || !context.state.gettingCategoriesPromise) {\n\t\t\tcontext.commit('startLoading', 'categories')\n\t\t\ttry {\n\t\t\t\tconst categoriesPromise = api.get(generateUrl('settings/apps/categories'))\n\t\t\t\tcontext.commit('updateCategories', categoriesPromise)\n\t\t\t\tconst categoriesPromiseResponse = await categoriesPromise\n\t\t\t\tif (categoriesPromiseResponse.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', categoriesPromiseResponse.data)\n\t\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\treturn false\n\t\t\t} catch (error) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t}\n\t\treturn context.state.gettingCategoriesPromise\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tserverData: loadState('settings', 'usersSettings', {}),\n}\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data\n\t},\n}\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData\n\t},\n}\nconst actions = {}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport api from './api.js'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst state = {}\nconst mutations = {}\nconst getters = {}\nconst actions = {\n\t/**\n\t * Set application config in database\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @return {Promise}\n\t */\n\tsetAppConfig(context, { app, key, value }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('apps/provisioning_api/api/v1/config/apps/{app}/{key}', { app, key }), { value })\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { Store } from 'vuex'\nimport users from './users.js'\nimport apps from './apps.js'\nimport settings from './users-settings.js'\nimport oc from './oc.js'\nimport { showError } from '@nextcloud/dialogs'\n\nconst debug = process.env.NODE_ENV !== 'production'\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tconst message = error.error.response.data.ocs.meta.message\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '
' + message, { isHTML: true })\n\t\t} catch (e) {\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nlet store = null\n\nexport const useStore = () => {\n\tif (store === null) {\n\t\tstore = new Store({\n\t\t\tmodules: {\n\t\t\t\tusers,\n\t\t\t\tapps,\n\t\t\t\tsettings,\n\t\t\t\toc,\n\t\t\t},\n\t\t\tstrict: debug,\n\t\t\tmutations,\n\t\t})\n\t}\n\treturn store\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n */\nexport var GroupSorting;\n(function (GroupSorting) {\n GroupSorting[GroupSorting[\"UserCount\"] = 1] = \"UserCount\";\n GroupSorting[GroupSorting[\"GroupName\"] = 2] = \"GroupName\";\n})(GroupSorting || (GroupSorting = {}));\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('settings')\n .detectUser()\n .build();\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcContent,{attrs:{\"app-name\":\"settings\"}},[_c('router-view',{attrs:{\"name\":\"navigation\"}}),_vm._v(\" \"),_c('router-view'),_vm._v(\" \"),_c('router-view',{attrs:{\"name\":\"sidebar\"}})],1)\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!./SettingsApp.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!./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./SettingsApp.vue?vue&type=template&id=02c6e0e9\"\nimport script from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\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 { loadState } from '@nextcloud/initial-state';\nconst appstoreEnabled = loadState('settings', 'appstoreEnabled', true);\n// Dynamic loading\nconst AppStore = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStore.vue');\nconst AppStoreNavigation = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreNavigation.vue');\nconst AppStoreSidebar = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreSidebar.vue');\nconst UserManagement = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagement.vue');\nconst UserManagementNavigation = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagementNavigation.vue');\nconst routes = [\n {\n name: 'users',\n path: '/:index(index.php/)?settings/users',\n components: {\n default: UserManagement,\n navigation: UserManagementNavigation,\n },\n props: true,\n children: [\n {\n path: ':selectedGroup',\n name: 'group',\n },\n ],\n },\n {\n path: '/:index(index.php/)?settings/apps',\n name: 'apps',\n redirect: {\n name: 'apps-category',\n params: {\n category: appstoreEnabled ? 'discover' : 'installed',\n },\n },\n components: {\n default: AppStore,\n navigation: AppStoreNavigation,\n sidebar: AppStoreSidebar,\n },\n children: [\n {\n path: ':category',\n name: 'apps-category',\n children: [\n {\n path: ':id',\n name: 'apps-details',\n },\n ],\n },\n ],\n },\n];\nexport default routes;\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue';\nimport Router from 'vue-router';\nimport { generateUrl } from '@nextcloud/router';\nimport routes from './routes.ts';\nVue.use(Router);\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl(''),\n linkActiveClass: 'active',\n routes,\n});\nexport default router;\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue';\nimport Vuex from 'vuex';\nimport VTooltipPlugin from 'v-tooltip';\nimport { sync } from 'vuex-router-sync';\nimport { t, n } from '@nextcloud/l10n';\nimport SettingsApp from './views/SettingsApp.vue';\nimport router from './router/index.ts';\nimport { useStore } from './store/index.js';\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { PiniaVuePlugin, createPinia } from 'pinia';\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = getCSPNonce();\n// bind to window\nVue.prototype.t = t;\nVue.prototype.n = n;\nVue.use(PiniaVuePlugin);\nVue.use(VTooltipPlugin, { defaultHtml: false });\nVue.use(Vuex);\nconst store = useStore();\nsync(store, router);\nconst pinia = createPinia();\nexport default new Vue({\n router,\n store,\n pinia,\n render: h => h(SettingsApp),\n el: '#content',\n});\n","exports.sync = function (store, router, options) {\n var moduleName = (options || {}).moduleName || 'route'\n\n store.registerModule(moduleName, {\n namespaced: true,\n state: cloneRoute(router.currentRoute),\n mutations: {\n 'ROUTE_CHANGED': function ROUTE_CHANGED (state, transition) {\n store.state[moduleName] = cloneRoute(transition.to, transition.from)\n }\n }\n })\n\n var isTimeTraveling = false\n var currentPath\n\n // sync router on store change\n var storeUnwatch = store.watch(\n function (state) { return state[moduleName]; },\n function (route) {\n var fullPath = route.fullPath;\n if (fullPath === currentPath) {\n return\n }\n if (currentPath != null) {\n isTimeTraveling = true\n router.push(route)\n }\n currentPath = fullPath\n },\n { sync: true }\n )\n\n // sync store on router navigation\n var afterEachUnHook = router.afterEach(function (to, from) {\n if (isTimeTraveling) {\n isTimeTraveling = false\n return\n }\n currentPath = to.fullPath\n store.commit(moduleName + '/ROUTE_CHANGED', { to: to, from: from })\n })\n\n return function unsync () {\n // On unsync, remove router hook\n if (afterEachUnHook != null) {\n afterEachUnHook()\n }\n\n // On unsync, remove store watch\n if (storeUnwatch != null) {\n storeUnwatch()\n }\n\n // On unsync, unregister Module with store\n store.unregisterModule(moduleName)\n }\n}\n\nfunction cloneRoute (to, from) {\n var clone = {\n name: to.name,\n path: to.path,\n hash: to.hash,\n query: to.query,\n params: to.params,\n fullPath: to.fullPath,\n meta: to.meta\n }\n if (from) {\n clone.from = cloneRoute(from)\n }\n return Object.freeze(clone)\n}\n\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"3239\":\"settings-users\",\"4529\":\"settings-apps-view\"}[chunkId] || chunkId) + \"-\" + chunkId + \".js?v=\" + {\"256\":\"8da30012aeb0f023e7bd\",\"3239\":\"2d28c9b1f1d679236b2d\",\"3303\":\"84070d41d3d1997241ee\",\"3731\":\"03a157235c000f83910a\",\"4529\":\"9f89f42c86253dcfdf32\",\"5862\":\"10fe36062cea7941d5a0\",\"6329\":\"da6ad198a7ca85dde977\",\"7265\":\"3f68ab0e901bd8e71d4b\",\"7471\":\"c2afd3e83467ce503d3e\",\"8737\":\"5bd6b99bc82b98042f57\",\"9972\":\"fefc81beb04a7254b43a\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2689;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2689: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud\"] = globalThis[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(18539)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","sanitize","url","replace","requireAdmin","confirmPassword","get","options","axios","post","data","patch","put","delete","params","naturalCollator","Intl","Collator","getLanguage","getCanonicalLocale","numeric","usage","usersSettings","loadState","localStorage","getBuilder","persist","build","defaults","id","name","usercount","disabled","canAdd","canRemove","state","users","groups","getSubAdminGroups","systemGroups","orderBy","sortGroups","GroupSorting","UserCount","minPasswordLength","usersOffset","usersLimit","disabledUsersOffset","disabledUsersLimit","userCount","showConfig","showStoragePath","getItem","showUserBackend","showFirstLogin","showLastLogin","showNewUserForm","showLanguages","mutations","appendUsers","usersObj","existingUsers","map","newUsers","Object","values","filter","includes","concat","updateDisabledUsers","_usersObj","setPasswordPolicyMinLength","length","addGroup","newGroup","find","group","assign","unshift","e","console","error","renameGroup","gid","displayName","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","userid","user","enabled","push","removeUserGroup","indexOf","addUserSubAdmin","subadmin","removeUserSubAdmin","deleteUser","userIndex","this","commit","actionType","addUserData","response","ocs","enableDisableUser","updateUserCounts","recentGroup","disabledGroup","forEach","userGroup","warn","logger","setUserData","key","value","humanValue","parseFileSize","resetUsers","resetGroups","setShowConfig","setItem","JSON","stringify","setGroupSorting","sorting","oldValue","generateUrl","String","catch","showError","t","getters","getUsers","getGroups","subAdminGroups","getSortedGroups","sort","a","b","numA","numB","compare","getGroupSorting","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getDisabledUsersOffset","getDisabledUsersLimit","getUserCount","getShowConfig","CancelToken","searchRequestCancelSource","actions","searchUsers","context","offset","limit","search","api","generateOcsUrl","getUser","userId","cancel","source","trim","encodeURIComponent","cancelToken","token","then","usersCount","keys","getRecentUsers","getDisabledUsers","limitParam","getUsersFromList","getUsersFromGroup","groupid","groupId","getCapabilities","password_policy","minLength","wipeUserDevices","Promise","reject","Error","addUser","dispatch","password","email","quota","language","manager","userStatus","sendWelcomeMail","apps","bundles","categories","updateCount","loading","gettingCategoriesPromise","appApiEnabled","APPS_API_FAILURE","message","isHTML","initCategories","updateCategories","categoriesPromise","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","Vue","setInstallState","canInstall","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","updateApp","version","update","resetApps","reset","startLoading","stopLoading","previousState","_appId","appIds","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","finally","getAllApps","getCategories","shouldRefetchCategories","categoriesPromiseResponse","isAppApiEnabled","getAppBundles","getUpdateCount","getCategoryById","selectedCategoryId","serverData","setServerData","getServerData","setAppConfig","API_FAILURE","meta","store","useStore","Store","modules","settings","oc","strict","process","getLoggerBuilder","setApp","detectUser","_defineComponent","__name","setup","__props","__sfc","NcContent","_vm","_c","_self","_setupProxy","attrs","_v","path","components","default","UserManagement","navigation","UserManagementNavigation","props","children","redirect","AppStore","AppStoreNavigation","sidebar","AppStoreSidebar","use","Router","mode","base","linkActiveClass","routes","__webpack_nonce__","getCSPNonce","prototype","n","PiniaVuePlugin","VTooltipPlugin","defaultHtml","Vuex","sync","router","pinia","createPinia","render","h","SettingsApp","el","cloneRoute","to","from","clone","hash","query","fullPath","freeze","exports","moduleName","registerModule","namespaced","currentRoute","transition","currentPath","isTimeTraveling","storeUnwatch","watch","route","afterEachUnHook","afterEach","unregisterModule","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","module","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","o","defineProperty","enumerable","f","chunkId","all","reduce","promises","u","obj","prop","hasOwnProperty","l","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","scriptUrl","globalThis","importScripts","currentScript","tagName","toUpperCase","test","p","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=fdd10c138e6a7fec600e","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/utils/sorting.ts","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/users-settings.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/apps/settings/src/constants/GroupManagement.ts","webpack:///nextcloud/apps/settings/src/logger.ts","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/SettingsApp.vue?3a67","webpack:///nextcloud/apps/settings/src/router/routes.ts","webpack:///nextcloud/apps/settings/src/router/index.ts","webpack:///nextcloud/apps/settings/src/main-apps-users-management.ts","webpack:///nextcloud/node_modules/vuex-router-sync/index.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nconst sanitize = function(url) {\n\treturn url.replace(/\\/$/, '') // Remove last url slash\n}\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * action(context) {\n\t * return api.requireAdmin().then((response) => {\n\t * return api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {API failure});\n\t * }).catch((error) => {requireAdmin failure});\n\t * }\n\t * // vue\n\t * this.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t *\n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t *\n\t * e.g\n\t * api.requireAdmin().then((response) => {\n\t * api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {throw error;});\n\t * }).catch((error) => {requireAdmin OR API failure});\n\t *\n\t * @return {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword()\n\t},\n\tget(url, options) {\n\t\treturn axios.get(sanitize(url), options)\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data)\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data)\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data)\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { params: data })\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCanonicalLocale, getLanguage } from '@nextcloud/l10n';\nexport const naturalCollator = Intl.Collator([getLanguage(), getCanonicalLocale()], {\n numeric: true,\n usage: 'sort',\n});\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getBuilder } from '@nextcloud/browser-storage'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { parseFileSize } from '@nextcloud/files'\nimport { showError } from '@nextcloud/dialogs'\nimport { generateOcsUrl, generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\n\nimport { GroupSorting } from '../constants/GroupManagement.ts'\nimport { naturalCollator } from '../utils/sorting.ts'\nimport api from './api.js'\nimport logger from '../logger.ts'\n\nconst usersSettings = loadState('settings', 'usersSettings', {})\n\nconst localStorage = getBuilder('settings').persist(true).build()\n\nconst defaults = {\n\t/**\n\t * @type {import('../views/user-types').IGroup}\n\t */\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true,\n\t},\n}\n\nconst state = {\n\tusers: [],\n\tgroups: [\n\t\t...(usersSettings.getSubAdminGroups ?? []),\n\t\t...(usersSettings.systemGroups ?? []),\n\t],\n\torderBy: usersSettings.sortGroups ?? GroupSorting.UserCount,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tdisabledUsersOffset: 0,\n\tdisabledUsersLimit: 25,\n\tuserCount: usersSettings.userCount ?? 0,\n\tshowConfig: {\n\t\tshowStoragePath: localStorage.getItem('account_settings__showStoragePath') === 'true',\n\t\tshowUserBackend: localStorage.getItem('account_settings__showUserBackend') === 'true',\n\t\tshowFirstLogin: localStorage.getItem('account_settings__showFirstLogin') === 'true',\n\t\tshowLastLogin: localStorage.getItem('account_settings__showLastLogin') === 'true',\n\t\tshowNewUserForm: localStorage.getItem('account_settings__showNewUserForm') === 'true',\n\t\tshowLanguages: localStorage.getItem('account_settings__showLanguages') === 'true',\n\t},\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\tconst existingUsers = state.users.map(({ id }) => id)\n\t\tconst newUsers = Object.values(usersObj)\n\t\t\t.filter(({ id }) => !existingUsers.includes(id))\n\n\t\tconst users = state.users.concat(newUsers)\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tupdateDisabledUsers(state, _usersObj) {\n\t\tstate.disabledUsersOffset += state.disabledUsersLimit\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0\n\t},\n\t/**\n\t * @param {object} state store state\n\t * @param {import('../views/user-types.js').IGroup} newGroup new group\n\t */\n\taddGroup(state, newGroup) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === newGroup.id) !== 'undefined') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tconst group = Object.assign({}, defaults.group, newGroup)\n\t\t\tstate.groups.unshift(group)\n\t\t} catch (e) {\n\t\t\tconsole.error('Can\\'t create group', e)\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex(user => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.unshift(user)\n\t\tthis.commit('updateUserCounts', { user, actionType: 'create' })\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\tuser.enabled = enabled\n\t\tthis.commit('updateUserCounts', { user, actionType: enabled ? 'enable' : 'disable' })\n\t},\n\t// update active/disabled counts, groups counts\n\tupdateUserCounts(state, { user, actionType }) {\n\t\t// 0 is a special value\n\t\tif (state.userCount === 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst recentGroup = state.groups.find(group => group.id === '__nc_internal_recent')\n\t\tconst disabledGroup = state.groups.find(group => group.id === 'disabled')\n\t\tswitch (actionType) {\n\t\tcase 'enable':\n\t\tcase 'disable':\n\t\t\tdisabledGroup.usercount += user.enabled ? -1 : 1 // update Disabled Users count\n\t\t\trecentGroup.usercount += user.enabled ? 1 : -1\n\t\t\tstate.userCount += user.enabled ? 1 : -1 // update Active Users count\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tif (!group) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tgroup.disabled += user.enabled ? -1 : 1 // update group disabled count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'create':\n\t\t\trecentGroup.usercount++\n\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tif (!group) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tgroup.usercount++ // increment group total count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'remove':\n\t\t\tif (user.enabled) {\n\t\t\t\trecentGroup.usercount--\n\t\t\t\tstate.userCount-- // decrement Active Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tif (!group) {\n\t\t\t\t\t\tconsole.warn('User group ' + userGroup + ' does not exist during user removal')\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tgroup.usercount-- // decrement group total count\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tdisabledGroup.usercount-- // decrement Disabled Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tif (!group) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tgroup.disabled-- // decrement group disabled count\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tlogger.error(`Unknown action type in updateUserCounts: '${actionType}'`)\n\t\t\t// not throwing error to interrupt execution as this is not fatal\n\t\t}\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tconst humanValue = parseFileSize(value, true)\n\t\t\tstate.users.find(user => user.id === userid)[key][key] = humanValue !== null ? humanValue : value\n\t\t} else {\n\t\t\tstate.users.find(user => user.id === userid)[key] = value\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetUsers(state) {\n\t\tstate.users = []\n\t\tstate.usersOffset = 0\n\t\tstate.disabledUsersOffset = 0\n\t},\n\n\t/**\n\t * Reset group list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetGroups(state) {\n\t\tstate.groups = [\n\t\t\t...(usersSettings.getSubAdminGroups ?? []),\n\t\t\t...(usersSettings.systemGroups ?? []),\n\t\t]\n\t},\n\n\tsetShowConfig(state, { key, value }) {\n\t\tlocalStorage.setItem(`account_settings__${key}`, JSON.stringify(value))\n\t\tstate.showConfig[key] = value\n\t},\n\n\tsetGroupSorting(state, sorting) {\n\t\tconst oldValue = state.orderBy\n\t\tstate.orderBy = sorting\n\n\t\t// Persist the value on the server\n\t\taxios.post(\n\t\t\tgenerateUrl('/settings/users/preferences/group.sortBy'),\n\t\t\t{\n\t\t\t\tvalue: String(sorting),\n\t\t\t},\n\t\t).catch((error) => {\n\t\t\tstate.orderBy = oldValue\n\t\t\tshowError(t('settings', 'Could not set group sorting'))\n\t\t\tlogger.error(error)\n\t\t})\n\t},\n}\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups\n\t},\n\tgetSubAdminGroups() {\n\t\treturn usersSettings.subAdminGroups ?? []\n\t},\n\n\tgetSortedGroups(state) {\n\t\tconst groups = [...state.groups]\n\t\tif (state.orderBy === GroupSorting.UserCount) {\n\t\t\treturn groups.sort((a, b) => {\n\t\t\t\tconst numA = a.usercount - a.disabled\n\t\t\t\tconst numB = b.usercount - b.disabled\n\t\t\t\treturn (numA < numB) ? 1 : (numB < numA ? -1 : naturalCollator.compare(a.name, b.name))\n\t\t\t})\n\t\t} else {\n\t\t\treturn groups.sort((a, b) => naturalCollator.compare(a.name, b.name))\n\t\t}\n\t},\n\tgetGroupSorting(state) {\n\t\treturn state.orderBy\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit\n\t},\n\tgetDisabledUsersOffset(state) {\n\t\treturn state.disabledUsersOffset\n\t},\n\tgetDisabledUsersLimit(state) {\n\t\treturn state.disabledUsersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n\tgetShowConfig(state) {\n\t\treturn state.showConfig\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * search users\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @return {Promise}\n\t */\n\tsearchUsers(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search })).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get user details\n\t *\n\t * @param {object} context store context\n\t * @param {string} userId user id\n\t * @return {Promise}\n\t */\n\tgetUser(context, userId) {\n\t\treturn api.get(generateOcsUrl(`cloud/users/${userId}`)).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @return {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tif (searchRequestCancelSource) {\n\t\t\tsearchRequestCancelSource.cancel('Operation canceled by another search request.')\n\t\t}\n\t\tsearchRequestCancelSource = CancelToken.source()\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\t/**\n\t\t * Adding filters in the search bar such as in:files, in:users, etc.\n\t\t * collides with this particular search, so we need to remove them\n\t\t * here and leave only the original search query\n\t\t */\n\t\tsearch = search.replace(/in:[^\\s]+/g, '').trim()\n\n\t\tgroup = typeof group === 'string' ? group : ''\n\t\tif (group !== '') {\n\t\t\treturn api.get(generateOcsUrl('cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}', { group: encodeURIComponent(group), offset, limit, search }), {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\t}\n\t\t\t\t\treturn usersCount\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }), {\n\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t}\n\t\t\t\treturn usersCount\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t}\n\t\t\t})\n\t},\n\n\t/**\n\t * Get recent users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search query\n\t * @return {Promise}\n\t */\n\tasync getRecentUsers(context, { offset, limit, search }) {\n\t\tconst url = generateOcsUrl('cloud/users/recent?offset={offset}&limit={limit}&search={search}', { offset, limit, search })\n\t\ttry {\n\t\t\tconst response = await api.get(url)\n\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\tif (usersCount > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t}\n\t\t\treturn usersCount\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', error)\n\t\t}\n\t},\n\n\t/**\n\t * Get disabled users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param options.search\n\t * @return {Promise}\n\t */\n\tasync getDisabledUsers(context, { offset, limit, search }) {\n\t\tconst url = generateOcsUrl('cloud/users/disabled?offset={offset}&limit={limit}&search={search}', { offset, limit, search })\n\t\ttry {\n\t\t\tconst response = await api.get(url)\n\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\tif (usersCount > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\tcontext.commit('updateDisabledUsers', response.data.ocs.data.users)\n\t\t\t}\n\t\t\treturn usersCount\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', error)\n\t\t}\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tconst limitParam = limit === -1 ? '' : `&limit=${limit}`\n\t\treturn api.get(generateOcsUrl('cloud/groups?offset={offset}&search={search}', { offset, search }) + limitParam)\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', { id: group, name: group })\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search -\n\t * @return {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.groupid -\n\t * @return {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(generateOcsUrl('cloud/users/{groupId}/details?offset={offset}&limit={limit}', { groupId: encodeURIComponent(groupid), offset, limit }))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif (getCapabilities().password_policy && getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', getCapabilities().password_policy.minLength)\n\t\t\treturn getCapabilities().password_policy.minLength\n\t\t}\n\t\treturn false\n\t},\n\n\t/**\n\t * Add group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/groups'), { groupid: gid })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('addGroup', { id: gid, name: gid })\n\t\t\t\t\treturn { gid, displayName: gid }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Rename group\n\t *\n\t * @param {object} context store context\n\t * @param {string} groupid Group id\n\t * @param {string} displayName Group display name\n\t * @return {Promise}\n\t */\n\trenameGroup(context, { groupid, displayName }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(groupid) }), { key: 'displayname', value: displayName })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('renameGroup', { gid: groupid, displayName })\n\t\t\t\t\treturn { groupid, displayName }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { groupid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from renaming the group\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Remove group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(gid) }))\n\t\t\t\t.then((response) => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }))\n\t},\n\n\t/**\n\t * Add user to group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Add user to group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tasync wipeUserDevices(context, userid) {\n\t\ttry {\n\t\t\tawait api.requireAdmin()\n\t\t\treturn await api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\treturn Promise.reject(new Error('Failed to wipe user devices'))\n\t\t}\n\t},\n\n\t/**\n\t * Delete a user\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Add a user\n\t *\n\t * @param {object} context store context\n\t * @param {Function} context.commit -\n\t * @param {Function} context.dispatch -\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @param {string} options.language User language\n\t * @param {string} options.manager User manager\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language, manager }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language, manager })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.get(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Enable or disable user\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @return {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tconst userStatus = enabled ? 'enable' : 'disable'\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}/{userStatus}', { userid, userStatus }))\n\t\t\t\t.then((response) => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Edit user data\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @return {Promise}\n\t */\n\tasync setUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname', 'manager']\n\t\tconst validKeys = ['email', 'language', 'quota', 'displayname', 'password', 'manager']\n\n\t\tif (!validKeys.includes(key)) {\n\t\t\tthrow new Error('Invalid request data')\n\t\t}\n\n\t\t// If value is empty and the key doesn't allow empty values, throw error\n\t\tif (value === '' && !allowedEmpty.includes(key)) {\n\t\t\tthrow new Error('Value cannot be empty for this field')\n\t\t}\n\n\t\ttry {\n\t\t\tawait api.requireAdmin()\n\t\t\tawait api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\treturn context.commit('setUserData', { userid, key, value })\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t}\n\t},\n\n\t/**\n\t * Send welcome mail\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/welcome', { userid }))\n\t\t\t\t.then(response => true)\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport api from './api.js'\nimport Vue from 'vue'\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tapps: [],\n\tbundles: loadState('settings', 'appstoreBundles', []),\n\tcategories: [],\n\tupdateCount: loadState('settings', 'appstoreUpdateCount', 0),\n\tloading: {},\n\tgettingCategoriesPromise: null,\n\tappApiEnabled: loadState('settings', 'appApiEnabled', false),\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '
' + error.error.response.data.data.message, { isHTML: true })\n\t\tconsole.error(state, error)\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\tupdateCategories(state, categoriesPromise) {\n\t\tstate.gettingCategoriesPromise = categoriesPromise\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category)\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps\n\t},\n\n\tsetError(state, { appId, error }) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId]\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tconst app = state.apps.find(app => app.id === _id)\n\t\t\tapp.error = error\n\t\t})\n\t},\n\n\tclearError(state, { appId, error }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.error = null\n\t},\n\n\tenableApp(state, { appId, groups }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = true\n\t\tVue.set(app, 'groups', [...groups])\n\t\tif (app.id === 'app_api') {\n\t\t\tstate.appApiEnabled = true\n\t\t}\n\t},\n\n\tsetInstallState(state, { appId, canInstall }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tif (app) {\n\t\t\tapp.canInstall = canInstall === true\n\t\t}\n\t},\n\n\tdisableApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = false\n\t\tapp.groups = []\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true\n\t\t}\n\t\tif (app.id === 'app_api') {\n\t\t\tstate.appApiEnabled = false\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find(app => app.id === appId).active = false\n\t\tstate.apps.find(app => app.id === appId).groups = []\n\t\tstate.apps.find(app => app.id === appId).needsDownload = true\n\t\tstate.apps.find(app => app.id === appId).installed = false\n\t\tstate.apps.find(app => app.id === appId).canUnInstall = false\n\t\tstate.apps.find(app => app.id === appId).canInstall = true\n\t\tif (appId === 'app_api') {\n\t\t\tstate.appApiEnabled = false\n\t\t}\n\t},\n\n\tupdateApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tconst version = app.update\n\t\tapp.update = null\n\t\tapp.version = version\n\t\tstate.updateCount--\n\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = []\n\t},\n\treset(state) {\n\t\tstate.apps = []\n\t\tstate.categories = []\n\t\tstate.updateCount = 0\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true)\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tisAppApiEnabled(state) {\n\t\treturn state.appApiEnabled\n\t},\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id]\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps\n\t},\n\tgetAppBundles(state) {\n\t\treturn state.bundles\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n\tgetCategoryById: (state) => (selectedCategoryId) => {\n\t\treturn state.categories.find((category) => category.id === selectedCategoryId)\n\t},\n}\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\n\t\t\tconst previousState = {}\n\t\t\tapps.forEach((_appId) => {\n\t\t\t\tconst app = context.state.apps.find((app) => app.id === _appId)\n\t\t\t\tif (app) {\n\t\t\t\t\tpreviousState[_appId] = {\n\t\t\t\t\t\tactive: app.active,\n\t\t\t\t\t\tgroups: [...(app.groups || [])],\n\t\t\t\t\t}\n\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t}\n\t\t\t})\n\n\t\t\treturn api.post(generateUrl('settings/apps/enable'), { appIds: apps, groups })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t\t})\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn axios.get(generateUrl('apps/files/'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tshowInfo(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.',\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tonClick: () => window.location.reload(),\n\t\t\t\t\t\t\t\t\t\tclose: false,\n\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t}, 5000)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tshowError(t('settings', 'Error: This app cannot be enabled because it makes the server unstable'))\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app cannot be enabled because it makes the server unstable'),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tcontext.dispatch('disableApp', { appId })\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\n\t\t\t\t\tapps.forEach((_appId) => {\n\t\t\t\t\t\tif (previousState[_appId]) {\n\t\t\t\t\t\t\tcontext.commit('enableApp', {\n\t\t\t\t\t\t\t\tappId: _appId,\n\t\t\t\t\t\t\t\tgroups: previousState[_appId].groups,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tif (!previousState[_appId].active) {\n\t\t\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tforceEnableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/force'), { appId })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('setInstallState', { appId, canInstall: true })\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\treturn api.post(generateUrl('settings/apps/disable'), { appIds: apps })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\treturn api.get(generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('uninstallApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.get(generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('updateApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list')\n\t\treturn api.get(generateUrl('settings/apps/list'))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps)\n\t\t\t\tcontext.commit('stopLoading', 'list')\n\t\t\t\treturn true\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tasync getCategories(context, { shouldRefetchCategories = false } = {}) {\n\t\tif (shouldRefetchCategories || !context.state.gettingCategoriesPromise) {\n\t\t\tcontext.commit('startLoading', 'categories')\n\t\t\ttry {\n\t\t\t\tconst categoriesPromise = api.get(generateUrl('settings/apps/categories'))\n\t\t\t\tcontext.commit('updateCategories', categoriesPromise)\n\t\t\t\tconst categoriesPromiseResponse = await categoriesPromise\n\t\t\t\tif (categoriesPromiseResponse.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', categoriesPromiseResponse.data)\n\t\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\treturn false\n\t\t\t} catch (error) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t}\n\t\treturn context.state.gettingCategoriesPromise\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tserverData: loadState('settings', 'usersSettings', {}),\n}\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data\n\t},\n}\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData\n\t},\n}\nconst actions = {}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport api from './api.js'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst state = {}\nconst mutations = {}\nconst getters = {}\nconst actions = {\n\t/**\n\t * Set application config in database\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @return {Promise}\n\t */\n\tsetAppConfig(context, { app, key, value }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('apps/provisioning_api/api/v1/config/apps/{app}/{key}', { app, key }), { value })\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { Store } from 'vuex'\nimport users from './users.js'\nimport apps from './apps.js'\nimport settings from './users-settings.js'\nimport oc from './oc.js'\nimport { showError } from '@nextcloud/dialogs'\n\nconst debug = process.env.NODE_ENV !== 'production'\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tconst message = error.error.response.data.ocs.meta.message\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '
' + message, { isHTML: true })\n\t\t} catch (e) {\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nlet store = null\n\nexport const useStore = () => {\n\tif (store === null) {\n\t\tstore = new Store({\n\t\t\tmodules: {\n\t\t\t\tusers,\n\t\t\t\tapps,\n\t\t\t\tsettings,\n\t\t\t\toc,\n\t\t\t},\n\t\t\tstrict: debug,\n\t\t\tmutations,\n\t\t})\n\t}\n\treturn store\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n */\nexport var GroupSorting;\n(function (GroupSorting) {\n GroupSorting[GroupSorting[\"UserCount\"] = 1] = \"UserCount\";\n GroupSorting[GroupSorting[\"GroupName\"] = 2] = \"GroupName\";\n})(GroupSorting || (GroupSorting = {}));\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('settings')\n .detectUser()\n .build();\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcContent,{attrs:{\"app-name\":\"settings\"}},[_c('router-view',{attrs:{\"name\":\"navigation\"}}),_vm._v(\" \"),_c('router-view'),_vm._v(\" \"),_c('router-view',{attrs:{\"name\":\"sidebar\"}})],1)\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!./SettingsApp.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!./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./SettingsApp.vue?vue&type=template&id=02c6e0e9\"\nimport script from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\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 { loadState } from '@nextcloud/initial-state';\nconst appstoreEnabled = loadState('settings', 'appstoreEnabled', true);\n// Dynamic loading\nconst AppStore = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStore.vue');\nconst AppStoreNavigation = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreNavigation.vue');\nconst AppStoreSidebar = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreSidebar.vue');\nconst UserManagement = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagement.vue');\nconst UserManagementNavigation = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagementNavigation.vue');\nconst routes = [\n {\n name: 'users',\n path: '/:index(index.php/)?settings/users',\n components: {\n default: UserManagement,\n navigation: UserManagementNavigation,\n },\n props: true,\n children: [\n {\n path: ':selectedGroup',\n name: 'group',\n },\n ],\n },\n {\n path: '/:index(index.php/)?settings/apps',\n name: 'apps',\n redirect: {\n name: 'apps-category',\n params: {\n category: appstoreEnabled ? 'discover' : 'installed',\n },\n },\n components: {\n default: AppStore,\n navigation: AppStoreNavigation,\n sidebar: AppStoreSidebar,\n },\n children: [\n {\n path: ':category',\n name: 'apps-category',\n children: [\n {\n path: ':id',\n name: 'apps-details',\n },\n ],\n },\n ],\n },\n];\nexport default routes;\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue';\nimport Router from 'vue-router';\nimport { generateUrl } from '@nextcloud/router';\nimport routes from './routes.ts';\nVue.use(Router);\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl(''),\n linkActiveClass: 'active',\n routes,\n});\nexport default router;\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue';\nimport Vuex from 'vuex';\nimport VTooltipPlugin from 'v-tooltip';\nimport { sync } from 'vuex-router-sync';\nimport { t, n } from '@nextcloud/l10n';\nimport SettingsApp from './views/SettingsApp.vue';\nimport router from './router/index.ts';\nimport { useStore } from './store/index.js';\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { PiniaVuePlugin, createPinia } from 'pinia';\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = getCSPNonce();\n// bind to window\nVue.prototype.t = t;\nVue.prototype.n = n;\nVue.use(PiniaVuePlugin);\nVue.use(VTooltipPlugin, { defaultHtml: false });\nVue.use(Vuex);\nconst store = useStore();\nsync(store, router);\nconst pinia = createPinia();\nexport default new Vue({\n router,\n store,\n pinia,\n render: h => h(SettingsApp),\n el: '#content',\n});\n","exports.sync = function (store, router, options) {\n var moduleName = (options || {}).moduleName || 'route'\n\n store.registerModule(moduleName, {\n namespaced: true,\n state: cloneRoute(router.currentRoute),\n mutations: {\n 'ROUTE_CHANGED': function ROUTE_CHANGED (state, transition) {\n store.state[moduleName] = cloneRoute(transition.to, transition.from)\n }\n }\n })\n\n var isTimeTraveling = false\n var currentPath\n\n // sync router on store change\n var storeUnwatch = store.watch(\n function (state) { return state[moduleName]; },\n function (route) {\n var fullPath = route.fullPath;\n if (fullPath === currentPath) {\n return\n }\n if (currentPath != null) {\n isTimeTraveling = true\n router.push(route)\n }\n currentPath = fullPath\n },\n { sync: true }\n )\n\n // sync store on router navigation\n var afterEachUnHook = router.afterEach(function (to, from) {\n if (isTimeTraveling) {\n isTimeTraveling = false\n return\n }\n currentPath = to.fullPath\n store.commit(moduleName + '/ROUTE_CHANGED', { to: to, from: from })\n })\n\n return function unsync () {\n // On unsync, remove router hook\n if (afterEachUnHook != null) {\n afterEachUnHook()\n }\n\n // On unsync, remove store watch\n if (storeUnwatch != null) {\n storeUnwatch()\n }\n\n // On unsync, unregister Module with store\n store.unregisterModule(moduleName)\n }\n}\n\nfunction cloneRoute (to, from) {\n var clone = {\n name: to.name,\n path: to.path,\n hash: to.hash,\n query: to.query,\n params: to.params,\n fullPath: to.fullPath,\n meta: to.meta\n }\n if (from) {\n clone.from = cloneRoute(from)\n }\n return Object.freeze(clone)\n}\n\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"3239\":\"settings-users\",\"4529\":\"settings-apps-view\"}[chunkId] || chunkId) + \"-\" + chunkId + \".js?v=\" + {\"256\":\"8da30012aeb0f023e7bd\",\"3239\":\"2d28c9b1f1d679236b2d\",\"3303\":\"84070d41d3d1997241ee\",\"3731\":\"03a157235c000f83910a\",\"4529\":\"df92482327799c83fdc2\",\"5862\":\"10fe36062cea7941d5a0\",\"6329\":\"da6ad198a7ca85dde977\",\"7265\":\"3f68ab0e901bd8e71d4b\",\"7471\":\"c2afd3e83467ce503d3e\",\"8737\":\"5bd6b99bc82b98042f57\",\"9972\":\"fefc81beb04a7254b43a\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2689;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2689: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud\"] = globalThis[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(18539)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","sanitize","url","replace","requireAdmin","confirmPassword","get","options","axios","post","data","patch","put","delete","params","naturalCollator","Intl","Collator","getLanguage","getCanonicalLocale","numeric","usage","usersSettings","loadState","localStorage","getBuilder","persist","build","defaults","id","name","usercount","disabled","canAdd","canRemove","state","users","groups","getSubAdminGroups","systemGroups","orderBy","sortGroups","GroupSorting","UserCount","minPasswordLength","usersOffset","usersLimit","disabledUsersOffset","disabledUsersLimit","userCount","showConfig","showStoragePath","getItem","showUserBackend","showFirstLogin","showLastLogin","showNewUserForm","showLanguages","mutations","appendUsers","usersObj","existingUsers","map","newUsers","Object","values","filter","includes","concat","updateDisabledUsers","_usersObj","setPasswordPolicyMinLength","length","addGroup","newGroup","find","group","assign","unshift","e","console","error","renameGroup","gid","displayName","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","userid","user","enabled","push","removeUserGroup","indexOf","addUserSubAdmin","subadmin","removeUserSubAdmin","deleteUser","userIndex","this","commit","actionType","addUserData","response","ocs","enableDisableUser","updateUserCounts","recentGroup","disabledGroup","forEach","userGroup","warn","logger","setUserData","key","value","humanValue","parseFileSize","resetUsers","resetGroups","setShowConfig","setItem","JSON","stringify","setGroupSorting","sorting","oldValue","generateUrl","String","catch","showError","t","getters","getUsers","getGroups","subAdminGroups","getSortedGroups","sort","a","b","numA","numB","compare","getGroupSorting","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getDisabledUsersOffset","getDisabledUsersLimit","getUserCount","getShowConfig","CancelToken","searchRequestCancelSource","actions","searchUsers","context","offset","limit","search","api","generateOcsUrl","getUser","userId","cancel","source","trim","encodeURIComponent","cancelToken","token","then","usersCount","keys","getRecentUsers","getDisabledUsers","limitParam","getUsersFromList","getUsersFromGroup","groupid","groupId","getCapabilities","password_policy","minLength","wipeUserDevices","Promise","reject","Error","addUser","dispatch","password","email","quota","language","manager","userStatus","sendWelcomeMail","apps","bundles","categories","updateCount","loading","gettingCategoriesPromise","appApiEnabled","APPS_API_FAILURE","message","isHTML","initCategories","updateCategories","categoriesPromise","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","Vue","setInstallState","canInstall","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","updateApp","version","update","resetApps","reset","startLoading","stopLoading","previousState","_appId","appIds","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","finally","getAllApps","getCategories","shouldRefetchCategories","categoriesPromiseResponse","isAppApiEnabled","getAppBundles","getUpdateCount","getCategoryById","selectedCategoryId","serverData","setServerData","getServerData","setAppConfig","API_FAILURE","meta","store","useStore","Store","modules","settings","oc","strict","process","getLoggerBuilder","setApp","detectUser","_defineComponent","__name","setup","__props","__sfc","NcContent","_vm","_c","_self","_setupProxy","attrs","_v","path","components","default","UserManagement","navigation","UserManagementNavigation","props","children","redirect","AppStore","AppStoreNavigation","sidebar","AppStoreSidebar","use","Router","mode","base","linkActiveClass","routes","__webpack_nonce__","getCSPNonce","prototype","n","PiniaVuePlugin","VTooltipPlugin","defaultHtml","Vuex","sync","router","pinia","createPinia","render","h","SettingsApp","el","cloneRoute","to","from","clone","hash","query","fullPath","freeze","exports","moduleName","registerModule","namespaced","currentRoute","transition","currentPath","isTimeTraveling","storeUnwatch","watch","route","afterEachUnHook","afterEach","unregisterModule","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","module","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","o","defineProperty","enumerable","f","chunkId","all","reduce","promises","u","obj","prop","hasOwnProperty","l","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","scriptUrl","globalThis","importScripts","currentScript","tagName","toUpperCase","test","p","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file