From 2c9fdb899cdf66e255b3ce87cc0a6280d2355b6e Mon Sep 17 00:00:00 2001 From: nextcloud-command Date: Tue, 28 Oct 2025 17:03:43 +0000 Subject: [PATCH] chore(assets): Recompile assets Signed-off-by: nextcloud-command --- dist/core-recommendedapps.js | 4 ++-- dist/core-recommendedapps.js.map | 2 +- 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 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/dist/core-recommendedapps.js b/dist/core-recommendedapps.js index 04a79a0b203..4d70ef0d172 100644 --- a/dist/core-recommendedapps.js +++ b/dist/core-recommendedapps.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e,t={2430:(e,t,n)=>{var i=n(21777),o=n(53334),a=n(85471),r=n(35947);const s=null===(c=(0,i.HW)())?(0,r.YK)().setApp("core").build():(0,r.YK)().setApp("core").setUid(c.uid).build();var c;(0,r.YK)().setApp("unified-search").detectUser().build();var p=n(81222),d=n(63814),l=n(19051);function u(e,t,n){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,n)}function h(e,t,n){return e.set(A(e,t),n),n}function m(e,t){return e.get(A(e,t))}function A(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function g(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class v{constructor(e){g(this,"value",void 0),g(this,"next",void 0),this.value=e}}var f=new WeakMap,C=new WeakMap,b=new WeakMap;class y{constructor(){u(this,f,void 0),u(this,C,void 0),u(this,b,void 0),this.clear()}enqueue(e){var t;const n=new v(e);m(f,this)?(m(C,this).next=n,h(C,this,n)):(h(f,this,n),h(C,this,n)),h(b,this,(t=m(b,this),++t))}dequeue(){var e;const t=m(f,this);if(t)return h(f,this,m(f,this).next),h(b,this,(e=m(b,this),--e)),t.value}peek(){if(m(f,this))return m(f,this).value}clear(){h(f,this,void 0),h(C,this,void 0),h(b,this,0)}get size(){return m(b,this)}*[Symbol.iterator](){let e=m(f,this);for(;e;)yield e.value,e=e.next}*drain(){for(;m(f,this);)yield this.dequeue()}}function w(e){x(e);const t=new y;let n=0;const i=()=>{n0&&(n++,t.dequeue()())},o=async(e,t,o)=>{const a=(async()=>e(...o))();t(a);try{await a}catch{}n--,i()},a=(a,...r)=>new Promise(s=>{((a,r,s)=>{new Promise(e=>{t.enqueue(e)}).then(o.bind(void 0,a,r,s)),nn},pendingCount:{get:()=>t.size},clearQueue:{value(){t.clear()}},concurrency:{get:()=>e,set(o){x(o),e=o,queueMicrotask(()=>{for(;n0;)i()})}},map:{async value(e,t){const n=e.map((e,n)=>this(t,e,n));return Promise.all(n)}}}),a}function x(e){if(!Number.isInteger(e)&&e!==Number.POSITIVE_INFINITY||!(e>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up")}var _=n(21376),k=n(32073);const S={calendar:{description:(0,o.t)("core","Schedule work & meetings, synced with all your devices."),icon:(0,d.d0)("core","places/calendar.svg")},contacts:{description:(0,o.t)("core","Keep your colleagues and friends in one place without leaking their private info."),icon:(0,d.d0)("core","places/contacts.svg")},mail:{description:(0,o.t)("core","Simple email app nicely integrated with Files, Contacts and Calendar."),icon:(0,d.d0)("core","actions/mail.svg")},spreed:{description:(0,o.t)("core","Chatting, video calls, screen sharing, online meetings and web conferencing – in your browser and with mobile apps."),icon:(0,d.d0)("core","apps/spreed.svg")},richdocuments:{name:"Nextcloud Office",description:(0,o.t)("core","Collaborative documents, spreadsheets and presentations, built on Collabora Online."),icon:(0,d.d0)("core","apps/richdocuments.svg")},notes:{description:(0,o.t)("core","Distraction free note taking app."),icon:(0,d.d0)("core","apps/notes.svg")},richdocumentscode:{hidden:!0}},I=Object.keys(S),P={name:"RecommendedApps",components:{NcCheckboxRadioSwitch:k.A,NcButton:_.A},data:()=>({showInstallButton:!1,installingApps:!1,loadingApps:!0,loadingAppsError:!1,apps:[],defaultPageUrl:(0,p.C)("core","defaultPageUrl")}),computed:{recommendedApps(){return this.apps.filter(e=>I.includes(e.id))},isAnyAppSelected(){return this.recommendedApps.some(e=>e.isSelected)}},async mounted(){try{const{data:e}=await l.Ay.get((0,d.Jv)("settings/apps/list"));s.info(`${e.apps.length} apps fetched`),this.apps=e.apps.map(e=>Object.assign(e,{loading:!1,installationError:!1,isSelected:e.isCompatible})),s.debug(`${this.recommendedApps.length} recommended apps found`,{apps:this.recommendedApps}),this.showInstallButton=!0}catch(e){s.error("could not fetch app list",{error:e}),this.loadingAppsError=!0}finally{this.loadingApps=!1}},methods:{installApps(){this.installingApps=!0;const e=w(1),t=this.recommendedApps.filter(e=>!e.active&&e.isCompatible&&e.canInstall&&e.isSelected).map(t=>e(async()=>(s.info(`installing ${t.id}`),t.loading=!0,l.Ay.post((0,d.Jv)("settings/apps/enable"),{appIds:[t.id],groups:[]}).catch(e=>{s.error(`could not install ${t.id}`,{error:e}),t.isSelected=!1,t.installationError=!0}).then(()=>{s.info(`installed ${t.id}`),t.loading=!1,t.active=!0}))));s.debug(`installing ${t.length} recommended apps`),Promise.all(t).then(()=>{s.info("all recommended apps installed, redirecting …"),window.location=this.defaultPageUrl}).catch(e=>s.error("could not install recommended apps",{error:e}))},customIcon:e=>e in S&&S[e].icon?S[e].icon:(s.warn(`no app icon for recommended app ${e}`),(0,d.d0)("core","places/default-app-icon.svg")),customName:e=>e.id in S&&S[e.id].name||e.name,customDescription:e=>e in S?S[e].description:(s.warn(`no app description for recommended app ${e}`),""),isHidden:e=>e in S&&!!S[e].hidden,toggleSelect(e){if(!(e in S)||!this.showInstallButton)return;const t=this.apps.findIndex(t=>t.id===e);this.$set(this.apps[t],"isSelected",!this.apps[t].isSelected)}}};var O=n(85072),j=n.n(O),B=n(97825),E=n.n(B),T=n(77659),N=n.n(T),D=n(55056),$=n.n(D),Y=n(10540),U=n.n(Y),M=n(41113),R=n.n(M),q=n(26659),z={};z.styleTagTransform=R(),z.setAttributes=$(),z.insert=N().bind(null,"head"),z.domAPI=E(),z.insertStyleElement=U(),j()(q.A,z),q.A&&q.A.locals&&q.A.locals;const F=(0,n(14486).A)(P,function(){var e=this,t=e._self._c;return t("div",{staticClass:"guest-box",attrs:{"data-cy-setup-recommended-apps":""}},[t("h2",[e._v(e._s(e.t("core","Recommended apps")))]),e._v(" "),e.loadingApps?t("p",{staticClass:"loading text-center"},[e._v("\n\t\t"+e._s(e.t("core","Loading apps …"))+"\n\t")]):e.loadingAppsError?t("p",{staticClass:"loading-error text-center"},[e._v("\n\t\t"+e._s(e.t("core","Could not fetch list of apps from the App Store."))+"\n\t")]):e._e(),e._v(" "),e._l(e.recommendedApps,function(n){return t("div",{key:n.id,staticClass:"app"},[e.isHidden(n.id)?e._e():[t("img",{attrs:{src:e.customIcon(n.id),alt:""}}),e._v(" "),t("div",{staticClass:"info"},[t("h3",[e._v(e._s(e.customName(n)))]),e._v(" "),t("p",{domProps:{textContent:e._s(e.customDescription(n.id))}}),e._v(" "),n.installationError?t("p",[t("strong",[e._v(e._s(e.t("core","App download or installation failed")))])]):n.isCompatible?n.canInstall?e._e():t("p",[t("strong",[e._v(e._s(e.t("core","Cannot install this app")))])]):t("p",[t("strong",[e._v(e._s(e.t("core","Cannot install this app because it is not compatible")))])])]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{checked:n.isSelected||n.active,disabled:!n.isCompatible||n.active,loading:n.loading},on:{"update:checked":function(t){return e.toggleSelect(n.id)}}})]],2)}),e._v(" "),t("div",{staticClass:"dialog-row"},[e.showInstallButton&&!e.installingApps?t("NcButton",{attrs:{"data-cy-setup-recommended-apps-skip":"",href:e.defaultPageUrl,variant:"tertiary"}},[e._v("\n\t\t\t"+e._s(e.t("core","Skip"))+"\n\t\t")]):e._e(),e._v(" "),e.showInstallButton?t("NcButton",{attrs:{"data-cy-setup-recommended-apps-install":"",disabled:e.installingApps||!e.isAnyAppSelected,variant:"primary"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),e.installApps.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.installingApps?e.t("core","Installing apps …"):e.t("core","Install recommended apps"))+"\n\t\t")]):e._e()],1)],2)},[],!1,null,"362e6916",null).exports;n.nc=(0,i.aV)(),a.Ay.mixin({methods:{t:o.Tl}}),(new(a.Ay.extend(F))).$mount("#recommended-apps"),s.debug("recommended apps view rendered")},26659:(e,t,n)=>{n.d(t,{A:()=>s});var i=n(71354),o=n.n(i),a=n(76314),r=n.n(a)()(o());r.push([e.id,".dialog-row[data-v-362e6916]{display:flex;justify-content:end;margin-top:8px}p.loading[data-v-362e6916],p.loading-error[data-v-362e6916]{height:100px}p[data-v-362e6916]:last-child{margin-top:10px}.text-center[data-v-362e6916]{text-align:center}.app[data-v-362e6916]{display:flex;flex-direction:row}.app img[data-v-362e6916]{height:50px;width:50px;filter:var(--background-invert-if-dark)}.app img[data-v-362e6916],.app .info[data-v-362e6916]{padding:12px}.app .info h3[data-v-362e6916],.app .info p[data-v-362e6916]{text-align:start}.app .info h3[data-v-362e6916]{margin-top:0}.app .checkbox-radio-switch[data-v-362e6916]{margin-inline-start:auto;padding:0 2px}","",{version:3,sources:["webpack://./core/src/components/setup/RecommendedApps.vue"],names:[],mappings:"AACA,6BACC,YAAA,CACA,mBAAA,CACA,cAAA,CAIA,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,uCAAA,CAGD,sDACC,YAAA,CAIA,6DACC,gBAAA,CAGD,+BACC,YAAA,CAIF,6CACC,wBAAA,CACA,aAAA",sourcesContent:["\n.dialog-row {\n\tdisplay: flex;\n\tjustify-content: end;\n\tmargin-top: 8px;\n}\n\np {\n\t&.loading,\n\t&.loading-error {\n\t\theight: 100px;\n\t}\n\n\t&:last-child {\n\t\tmargin-top: 10px;\n\t}\n}\n\n.text-center {\n\ttext-align: center;\n}\n\n.app {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\timg {\n\t\theight: 50px;\n\t\twidth: 50px;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\timg, .info {\n\t\tpadding: 12px;\n\t}\n\n\t.info {\n\t\th3, p {\n\t\t\ttext-align: start;\n\t\t}\n\n\t\th3 {\n\t\t\tmargin-top: 0;\n\t\t}\n\t}\n\n\t.checkbox-radio-switch {\n\t\tmargin-inline-start: auto;\n\t\tpadding: 0 2px;\n\t}\n}\n"],sourceRoot:""}]);const s=r}},n={};function i(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=t,e=[],i.O=(t,n,o,a)=>{if(!n){var r=1/0;for(d=0;d=a)&&Object.keys(i.O).every(e=>i.O[e](n[c]))?n.splice(c--,1):(s=!1,a0&&e[d-1][2]>a;d--)e[d]=e[d-1];e[d]=[n,o,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 n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.e=()=>Promise.resolve(),i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),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=2696,(()=>{i.b="undefined"!=typeof document&&document.baseURI||self.location.href;var e={2696:0};i.O.j=t=>0===e[t];var t=(t,n)=>{var o,a,[r,s,c]=n,p=0;if(r.some(t=>0!==e[t])){for(o in s)i.o(s,o)&&(i.m[o]=s[o]);if(c)var d=c(i)}for(t&&t(n);pi(2430));o=i.O(o)})(); -//# sourceMappingURL=core-recommendedapps.js.map?v=5edf12550538ad1e3889 \ No newline at end of file +(()=>{"use strict";var e,t={2430:(e,t,n)=>{var i=n(21777),o=n(53334),a=n(85471),r=n(35947);const s=null===(c=(0,i.HW)())?(0,r.YK)().setApp("core").build():(0,r.YK)().setApp("core").setUid(c.uid).build();var c;(0,r.YK)().setApp("unified-search").detectUser().build();var p=n(81222),d=n(63814),l=n(19051);function u(e,t,n){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,n)}function h(e,t,n){return e.set(A(e,t),n),n}function m(e,t){return e.get(A(e,t))}function A(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function g(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class v{constructor(e){g(this,"value",void 0),g(this,"next",void 0),this.value=e}}var f=new WeakMap,C=new WeakMap,b=new WeakMap;class y{constructor(){u(this,f,void 0),u(this,C,void 0),u(this,b,void 0),this.clear()}enqueue(e){var t;const n=new v(e);m(f,this)?(m(C,this).next=n,h(C,this,n)):(h(f,this,n),h(C,this,n)),h(b,this,(t=m(b,this),++t))}dequeue(){var e;const t=m(f,this);if(t)return h(f,this,m(f,this).next),h(b,this,(e=m(b,this),--e)),t.value}peek(){if(m(f,this))return m(f,this).value}clear(){h(f,this,void 0),h(C,this,void 0),h(b,this,0)}get size(){return m(b,this)}*[Symbol.iterator](){let e=m(f,this);for(;e;)yield e.value,e=e.next}*drain(){for(;m(f,this);)yield this.dequeue()}}function w(e){x(e);const t=new y;let n=0;const i=()=>{n0&&(n++,t.dequeue()())},o=async(e,t,o)=>{const a=(async()=>e(...o))();t(a);try{await a}catch{}n--,i()},a=(a,...r)=>new Promise(s=>{((a,r,s)=>{new Promise(e=>{t.enqueue(e)}).then(o.bind(void 0,a,r,s)),nn},pendingCount:{get:()=>t.size},clearQueue:{value(){t.clear()}},concurrency:{get:()=>e,set(o){x(o),e=o,queueMicrotask(()=>{for(;n0;)i()})}},map:{async value(e,t){const n=Array.from(e,(e,n)=>this(t,e,n));return Promise.all(n)}}}),a}function x(e){if(!Number.isInteger(e)&&e!==Number.POSITIVE_INFINITY||!(e>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up")}var _=n(21376),k=n(32073);const S={calendar:{description:(0,o.t)("core","Schedule work & meetings, synced with all your devices."),icon:(0,d.d0)("core","places/calendar.svg")},contacts:{description:(0,o.t)("core","Keep your colleagues and friends in one place without leaking their private info."),icon:(0,d.d0)("core","places/contacts.svg")},mail:{description:(0,o.t)("core","Simple email app nicely integrated with Files, Contacts and Calendar."),icon:(0,d.d0)("core","actions/mail.svg")},spreed:{description:(0,o.t)("core","Chatting, video calls, screen sharing, online meetings and web conferencing – in your browser and with mobile apps."),icon:(0,d.d0)("core","apps/spreed.svg")},richdocuments:{name:"Nextcloud Office",description:(0,o.t)("core","Collaborative documents, spreadsheets and presentations, built on Collabora Online."),icon:(0,d.d0)("core","apps/richdocuments.svg")},notes:{description:(0,o.t)("core","Distraction free note taking app."),icon:(0,d.d0)("core","apps/notes.svg")},richdocumentscode:{hidden:!0}},I=Object.keys(S),P={name:"RecommendedApps",components:{NcCheckboxRadioSwitch:k.A,NcButton:_.A},data:()=>({showInstallButton:!1,installingApps:!1,loadingApps:!0,loadingAppsError:!1,apps:[],defaultPageUrl:(0,p.C)("core","defaultPageUrl")}),computed:{recommendedApps(){return this.apps.filter(e=>I.includes(e.id))},isAnyAppSelected(){return this.recommendedApps.some(e=>e.isSelected)}},async mounted(){try{const{data:e}=await l.Ay.get((0,d.Jv)("settings/apps/list"));s.info(`${e.apps.length} apps fetched`),this.apps=e.apps.map(e=>Object.assign(e,{loading:!1,installationError:!1,isSelected:e.isCompatible})),s.debug(`${this.recommendedApps.length} recommended apps found`,{apps:this.recommendedApps}),this.showInstallButton=!0}catch(e){s.error("could not fetch app list",{error:e}),this.loadingAppsError=!0}finally{this.loadingApps=!1}},methods:{installApps(){this.installingApps=!0;const e=w(1),t=this.recommendedApps.filter(e=>!e.active&&e.isCompatible&&e.canInstall&&e.isSelected).map(t=>e(async()=>(s.info(`installing ${t.id}`),t.loading=!0,l.Ay.post((0,d.Jv)("settings/apps/enable"),{appIds:[t.id],groups:[]}).catch(e=>{s.error(`could not install ${t.id}`,{error:e}),t.isSelected=!1,t.installationError=!0}).then(()=>{s.info(`installed ${t.id}`),t.loading=!1,t.active=!0}))));s.debug(`installing ${t.length} recommended apps`),Promise.all(t).then(()=>{s.info("all recommended apps installed, redirecting …"),window.location=this.defaultPageUrl}).catch(e=>s.error("could not install recommended apps",{error:e}))},customIcon:e=>e in S&&S[e].icon?S[e].icon:(s.warn(`no app icon for recommended app ${e}`),(0,d.d0)("core","places/default-app-icon.svg")),customName:e=>e.id in S&&S[e.id].name||e.name,customDescription:e=>e in S?S[e].description:(s.warn(`no app description for recommended app ${e}`),""),isHidden:e=>e in S&&!!S[e].hidden,toggleSelect(e){if(!(e in S)||!this.showInstallButton)return;const t=this.apps.findIndex(t=>t.id===e);this.$set(this.apps[t],"isSelected",!this.apps[t].isSelected)}}};var O=n(85072),j=n.n(O),B=n(97825),E=n.n(B),T=n(77659),N=n.n(T),D=n(55056),$=n.n(D),Y=n(10540),U=n.n(Y),M=n(41113),R=n.n(M),q=n(26659),z={};z.styleTagTransform=R(),z.setAttributes=$(),z.insert=N().bind(null,"head"),z.domAPI=E(),z.insertStyleElement=U(),j()(q.A,z),q.A&&q.A.locals&&q.A.locals;const F=(0,n(14486).A)(P,function(){var e=this,t=e._self._c;return t("div",{staticClass:"guest-box",attrs:{"data-cy-setup-recommended-apps":""}},[t("h2",[e._v(e._s(e.t("core","Recommended apps")))]),e._v(" "),e.loadingApps?t("p",{staticClass:"loading text-center"},[e._v("\n\t\t"+e._s(e.t("core","Loading apps …"))+"\n\t")]):e.loadingAppsError?t("p",{staticClass:"loading-error text-center"},[e._v("\n\t\t"+e._s(e.t("core","Could not fetch list of apps from the App Store."))+"\n\t")]):e._e(),e._v(" "),e._l(e.recommendedApps,function(n){return t("div",{key:n.id,staticClass:"app"},[e.isHidden(n.id)?e._e():[t("img",{attrs:{src:e.customIcon(n.id),alt:""}}),e._v(" "),t("div",{staticClass:"info"},[t("h3",[e._v(e._s(e.customName(n)))]),e._v(" "),t("p",{domProps:{textContent:e._s(e.customDescription(n.id))}}),e._v(" "),n.installationError?t("p",[t("strong",[e._v(e._s(e.t("core","App download or installation failed")))])]):n.isCompatible?n.canInstall?e._e():t("p",[t("strong",[e._v(e._s(e.t("core","Cannot install this app")))])]):t("p",[t("strong",[e._v(e._s(e.t("core","Cannot install this app because it is not compatible")))])])]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{checked:n.isSelected||n.active,disabled:!n.isCompatible||n.active,loading:n.loading},on:{"update:checked":function(t){return e.toggleSelect(n.id)}}})]],2)}),e._v(" "),t("div",{staticClass:"dialog-row"},[e.showInstallButton&&!e.installingApps?t("NcButton",{attrs:{"data-cy-setup-recommended-apps-skip":"",href:e.defaultPageUrl,variant:"tertiary"}},[e._v("\n\t\t\t"+e._s(e.t("core","Skip"))+"\n\t\t")]):e._e(),e._v(" "),e.showInstallButton?t("NcButton",{attrs:{"data-cy-setup-recommended-apps-install":"",disabled:e.installingApps||!e.isAnyAppSelected,variant:"primary"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),e.installApps.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.installingApps?e.t("core","Installing apps …"):e.t("core","Install recommended apps"))+"\n\t\t")]):e._e()],1)],2)},[],!1,null,"362e6916",null).exports;n.nc=(0,i.aV)(),a.Ay.mixin({methods:{t:o.Tl}}),(new(a.Ay.extend(F))).$mount("#recommended-apps"),s.debug("recommended apps view rendered")},26659:(e,t,n)=>{n.d(t,{A:()=>s});var i=n(71354),o=n.n(i),a=n(76314),r=n.n(a)()(o());r.push([e.id,".dialog-row[data-v-362e6916]{display:flex;justify-content:end;margin-top:8px}p.loading[data-v-362e6916],p.loading-error[data-v-362e6916]{height:100px}p[data-v-362e6916]:last-child{margin-top:10px}.text-center[data-v-362e6916]{text-align:center}.app[data-v-362e6916]{display:flex;flex-direction:row}.app img[data-v-362e6916]{height:50px;width:50px;filter:var(--background-invert-if-dark)}.app img[data-v-362e6916],.app .info[data-v-362e6916]{padding:12px}.app .info h3[data-v-362e6916],.app .info p[data-v-362e6916]{text-align:start}.app .info h3[data-v-362e6916]{margin-top:0}.app .checkbox-radio-switch[data-v-362e6916]{margin-inline-start:auto;padding:0 2px}","",{version:3,sources:["webpack://./core/src/components/setup/RecommendedApps.vue"],names:[],mappings:"AACA,6BACC,YAAA,CACA,mBAAA,CACA,cAAA,CAIA,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,uCAAA,CAGD,sDACC,YAAA,CAIA,6DACC,gBAAA,CAGD,+BACC,YAAA,CAIF,6CACC,wBAAA,CACA,aAAA",sourcesContent:["\n.dialog-row {\n\tdisplay: flex;\n\tjustify-content: end;\n\tmargin-top: 8px;\n}\n\np {\n\t&.loading,\n\t&.loading-error {\n\t\theight: 100px;\n\t}\n\n\t&:last-child {\n\t\tmargin-top: 10px;\n\t}\n}\n\n.text-center {\n\ttext-align: center;\n}\n\n.app {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\timg {\n\t\theight: 50px;\n\t\twidth: 50px;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\timg, .info {\n\t\tpadding: 12px;\n\t}\n\n\t.info {\n\t\th3, p {\n\t\t\ttext-align: start;\n\t\t}\n\n\t\th3 {\n\t\t\tmargin-top: 0;\n\t\t}\n\t}\n\n\t.checkbox-radio-switch {\n\t\tmargin-inline-start: auto;\n\t\tpadding: 0 2px;\n\t}\n}\n"],sourceRoot:""}]);const s=r}},n={};function i(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=t,e=[],i.O=(t,n,o,a)=>{if(!n){var r=1/0;for(d=0;d=a)&&Object.keys(i.O).every(e=>i.O[e](n[c]))?n.splice(c--,1):(s=!1,a0&&e[d-1][2]>a;d--)e[d]=e[d-1];e[d]=[n,o,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 n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.e=()=>Promise.resolve(),i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),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=2696,(()=>{i.b="undefined"!=typeof document&&document.baseURI||self.location.href;var e={2696:0};i.O.j=t=>0===e[t];var t=(t,n)=>{var o,a,[r,s,c]=n,p=0;if(r.some(t=>0!==e[t])){for(o in s)i.o(s,o)&&(i.m[o]=s[o]);if(c)var d=c(i)}for(t&&t(n);pi(2430));o=i.O(o)})(); +//# sourceMappingURL=core-recommendedapps.js.map?v=913e34d6ab87dab6dbca \ No newline at end of file diff --git a/dist/core-recommendedapps.js.map b/dist/core-recommendedapps.js.map index 02a3e2af5cd..28cfbd595b1 100644 --- a/dist/core-recommendedapps.js.map +++ b/dist/core-recommendedapps.js.map @@ -1 +1 @@ -{"version":3,"file":"core-recommendedapps.js?v=5edf12550538ad1e3889","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/logger.js","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?5f06","webpack:///nextcloud/node_modules/yocto-queue/index.js","webpack:///nextcloud/node_modules/p-limit/index.js","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?71b8","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?84e8","webpack:///nextcloud/core/src/recommendedapps.js","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=style&index=0&id=362e6916&prod&lang=scss&scoped=true","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/global","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/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};","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n\nexport const unifiedSearchLogger = getLoggerBuilder()\n\t.setApp('unified-search')\n\t.detectUser()\n\t.build()\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"guest-box\",attrs:{\"data-cy-setup-recommended-apps\":\"\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Recommended apps')))]),_vm._v(\" \"),(_vm.loadingApps)?_c('p',{staticClass:\"loading text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Loading apps …'))+\"\\n\\t\")]):(_vm.loadingAppsError)?_c('p',{staticClass:\"loading-error text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Could not fetch list of apps from the App Store.'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.recommendedApps),function(app){return _c('div',{key:app.id,staticClass:\"app\"},[(!_vm.isHidden(app.id))?[_c('img',{attrs:{\"src\":_vm.customIcon(app.id),\"alt\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"info\"},[_c('h3',[_vm._v(_vm._s(_vm.customName(app)))]),_vm._v(\" \"),_c('p',{domProps:{\"textContent\":_vm._s(_vm.customDescription(app.id))}}),_vm._v(\" \"),(app.installationError)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'App download or installation failed')))])]):(!app.isCompatible)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app because it is not compatible')))])]):(!app.canInstall)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app')))])]):_vm._e()]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":app.isSelected || app.active,\"disabled\":!app.isCompatible || app.active,\"loading\":app.loading},on:{\"update:checked\":function($event){return _vm.toggleSelect(app.id)}}})]:_vm._e()],2)}),_vm._v(\" \"),_c('div',{staticClass:\"dialog-row\"},[(_vm.showInstallButton && !_vm.installingApps)?_c('NcButton',{attrs:{\"data-cy-setup-recommended-apps-skip\":\"\",\"href\":_vm.defaultPageUrl,\"variant\":\"tertiary\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Skip'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showInstallButton)?_c('NcButton',{attrs:{\"data-cy-setup-recommended-apps-install\":\"\",\"disabled\":_vm.installingApps || !_vm.isAnyAppSelected,\"variant\":\"primary\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.installApps.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.installingApps ? _vm.t('core', 'Installing apps …') : _vm.t('core', 'Install recommended apps'))+\"\\n\\t\\t\")]):_vm._e()],1)],2)\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\t* drain() {\n\t\twhile (this.#head) {\n\t\t\tyield this.dequeue();\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\t// Process the next queued function if we're under the concurrency limit\n\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\tactiveCount++;\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst next = () => {\n\t\tactiveCount--;\n\t\tresumeNext();\n\t};\n\n\tconst run = async (function_, resolve, arguments_) => {\n\t\t// Execute the function and capture the result promise\n\t\tconst result = (async () => function_(...arguments_))();\n\n\t\t// Resolve immediately with the promise (don't wait for completion)\n\t\tresolve(result);\n\n\t\t// Wait for the function to complete (success or failure)\n\t\t// We catch errors here to prevent unhandled rejections,\n\t\t// but the original promise rejection is preserved for the caller\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\t// Decrement active count and process next queued function\n\t\tnext();\n\t};\n\n\tconst enqueue = (function_, resolve, arguments_) => {\n\t\t// Queue the internal resolve function instead of the run function\n\t\t// to preserve the asynchronous execution context.\n\t\tnew Promise(internalResolve => { // eslint-disable-line promise/param-names\n\t\t\tqueue.enqueue(internalResolve);\n\t\t}).then(run.bind(undefined, function_, resolve, arguments_)); // eslint-disable-line promise/prefer-await-to-then\n\n\t\t// Start processing immediately if we haven't reached the concurrency limit\n\t\tif (activeCount < concurrency) {\n\t\t\tresumeNext();\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\tmap: {\n\t\t\tasync value(array, function_) {\n\t\t\t\tconst promises = array.map((value, index) => this(function_, value, index));\n\t\t\t\treturn Promise.all(promises);\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n\nexport function limitFunction(function_, options) {\n\tconst {concurrency} = options;\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!./RecommendedApps.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!./RecommendedApps.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!./RecommendedApps.vue?vue&type=style&index=0&id=362e6916&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!./RecommendedApps.vue?vue&type=style&index=0&id=362e6916&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RecommendedApps.vue?vue&type=template&id=362e6916&scoped=true\"\nimport script from \"./RecommendedApps.vue?vue&type=script&lang=js\"\nexport * from \"./RecommendedApps.vue?vue&type=script&lang=js\"\nimport style0 from \"./RecommendedApps.vue?vue&type=style&index=0&id=362e6916&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 \"362e6916\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCSPNonce } from '@nextcloud/auth'\nimport { translate as t } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport logger from './logger.js'\nimport RecommendedApps from './components/setup/RecommendedApps.vue'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = getCSPNonce()\n\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst View = Vue.extend(RecommendedApps)\nnew View().$mount('#recommended-apps')\n\nlogger.debug('recommended apps view rendered')\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, `.dialog-row[data-v-362e6916]{display:flex;justify-content:end;margin-top:8px}p.loading[data-v-362e6916],p.loading-error[data-v-362e6916]{height:100px}p[data-v-362e6916]:last-child{margin-top:10px}.text-center[data-v-362e6916]{text-align:center}.app[data-v-362e6916]{display:flex;flex-direction:row}.app img[data-v-362e6916]{height:50px;width:50px;filter:var(--background-invert-if-dark)}.app img[data-v-362e6916],.app .info[data-v-362e6916]{padding:12px}.app .info h3[data-v-362e6916],.app .info p[data-v-362e6916]{text-align:start}.app .info h3[data-v-362e6916]{margin-top:0}.app .checkbox-radio-switch[data-v-362e6916]{margin-inline-start:auto;padding:0 2px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/setup/RecommendedApps.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,YAAA,CACA,mBAAA,CACA,cAAA,CAIA,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,uCAAA,CAGD,sDACC,YAAA,CAIA,6DACC,gBAAA,CAGD,+BACC,YAAA,CAIF,6CACC,wBAAA,CACA,aAAA\",\"sourcesContent\":[\"\\n.dialog-row {\\n\\tdisplay: flex;\\n\\tjustify-content: end;\\n\\tmargin-top: 8px;\\n}\\n\\np {\\n\\t&.loading,\\n\\t&.loading-error {\\n\\t\\theight: 100px;\\n\\t}\\n\\n\\t&:last-child {\\n\\t\\tmargin-top: 10px;\\n\\t}\\n}\\n\\n.text-center {\\n\\ttext-align: center;\\n}\\n\\n.app {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\n\\timg {\\n\\t\\theight: 50px;\\n\\t\\twidth: 50px;\\n\\t\\tfilter: var(--background-invert-if-dark);\\n\\t}\\n\\n\\timg, .info {\\n\\t\\tpadding: 12px;\\n\\t}\\n\\n\\t.info {\\n\\t\\th3, p {\\n\\t\\t\\ttext-align: start;\\n\\t\\t}\\n\\n\\t\\th3 {\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t.checkbox-radio-switch {\\n\\t\\tmargin-inline-start: auto;\\n\\t\\tpadding: 0 2px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\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 = 2696;","__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\t2696: 0\n};\n\n// no chunk on demand loading\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 = self[\"webpackChunknextcloud\"] = self[\"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__(2430)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","detectUser","Node","constructor","value","_defineProperty","this","_head","WeakMap","_tail","_size","Queue","_classPrivateFieldInitSpec","clear","enqueue","_this$size","node","_classPrivateFieldGet","next","_classPrivateFieldSet","dequeue","_this$size3","current","peek","undefined","size","Symbol","iterator","drain","pLimit","concurrency","validateConcurrency","queue","activeCount","resumeNext","run","async","function_","resolve","arguments_","result","generator","Promise","internalResolve","then","bind","Object","defineProperties","get","pendingCount","clearQueue","set","newConcurrency","queueMicrotask","map","array","promises","index","all","Number","isInteger","POSITIVE_INFINITY","TypeError","recommended","calendar","description","t","icon","imagePath","contacts","mail","spreed","richdocuments","name","notes","richdocumentscode","hidden","recommendedIds","keys","components","NcCheckboxRadioSwitch","NcButton","data","showInstallButton","installingApps","loadingApps","loadingAppsError","apps","defaultPageUrl","loadState","computed","recommendedApps","filter","app","includes","id","isAnyAppSelected","some","isSelected","mounted","axios","generateUrl","logger","info","length","assign","loading","installationError","isCompatible","debug","error","methods","installApps","limit","installing","active","canInstall","post","appIds","groups","catch","window","location","customIcon","appId","warn","customName","customDescription","isHidden","toggleSelect","findIndex","$set","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","staticClass","attrs","_v","_s","_e","_l","key","domProps","on","$event","stopPropagation","preventDefault","apply","arguments","__webpack_nonce__","getCSPNonce","Vue","mixin","extend","RecommendedApps","$mount","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","e","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","toStringTag","nmd","paths","children","b","document","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","forEach","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"core-recommendedapps.js?v=913e34d6ab87dab6dbca","mappings":"uBAAIA,E,kECQJ,MAYA,EAXc,QADIC,GAYOC,EAAAA,EAAAA,QAVhBC,EAAAA,EAAAA,MACLC,OAAO,QACPC,SAEIF,EAAAA,EAAAA,MACLC,OAAO,QACPE,OAAOL,EAAKM,KACZF,QATeJ,OAciBE,EAAAA,EAAAA,MACjCC,OAAO,kBACPI,aACAH,QCzBF,I,2zBCKA,MAAMI,EAILC,WAAAA,CAAYC,GAAOC,EAAA,qBAAAA,EAAA,oBAClBC,KAAKF,MAAQA,CACd,EACA,IAAAG,EAAA,IAAAC,QAAAC,EAAA,IAAAD,QAAAE,EAAA,IAAAF,QAEc,MAAMG,EAKpBR,WAAAA,GAJAS,EAAA,KAAAL,OAAK,GACLK,EAAA,KAAAH,OAAK,GACLG,EAAA,KAAAF,OAAK,GAGJJ,KAAKO,OACN,CAEAC,OAAAA,CAAQV,GAAO,IAAAW,EACd,MAAMC,EAAO,IAAId,EAAKE,GAElBa,EAAKV,EAALD,OACHW,EAAKR,EAALH,MAAWY,KAAOF,EAClBG,EAAKV,EAALH,KAAaU,KAEbG,EAAKZ,EAALD,KAAaU,GACbG,EAAKV,EAALH,KAAaU,IAGdG,EAAKT,EAALJ,MAAIS,EAAJE,EAAKP,EAALJ,QAAUS,GACX,CAEAK,OAAAA,GAAU,IAAAC,EACT,MAAMC,EAAUL,EAAKV,EAALD,MAChB,GAAKgB,EAML,OAFAH,EAAKZ,EAALD,KAAaW,EAAKV,EAALD,MAAWY,MACxBC,EAAKT,EAALJ,MAAIe,EAAJJ,EAAKP,EAALJ,QAAUe,IACHC,EAAQlB,KAChB,CAEAmB,IAAAA,GACC,GAAKN,EAAKV,EAALD,MAIL,OAAOW,EAAKV,EAALD,MAAWF,KAInB,CAEAS,KAAAA,GACCM,EAAKZ,EAALD,UAAakB,GACbL,EAAKV,EAALH,UAAakB,GACbL,EAAKT,EAALJ,KAAa,EACd,CAEA,QAAImB,GACH,OAAOR,EAAKP,EAALJ,KACR,CAEA,EAAGoB,OAAOC,YACT,IAAIL,EAAUL,EAAKV,EAALD,MAEd,KAAOgB,SACAA,EAAQlB,MACdkB,EAAUA,EAAQJ,IAEpB,CAEA,MAAEU,GACD,KAAOX,EAAKV,EAALD,aACAA,KAAKc,SAEb,EChFc,SAASS,EAAOC,GAC9BC,EAAoBD,GAEpB,MAAME,EAAQ,IAAIrB,EAClB,IAAIsB,EAAc,EAElB,MAAMC,EAAaA,KAEdD,EAAcH,GAAeE,EAAMP,KAAO,IAC7CQ,IACAD,EAAMZ,SAANY,KASIG,EAAMC,MAAOC,EAAWC,EAASC,KAEtC,MAAMC,EAAS,UAAaH,KAAaE,GAA1B,GAGfD,EAAQE,GAKR,UACOA,CACP,CAAE,MAAO,CAhBTP,IACAC,KAkCKO,EAAYA,CAACJ,KAAcE,IAAe,IAAIG,QAAQJ,IAb5CxB,EAACuB,EAAWC,EAASC,KAGpC,IAAIG,QAAQC,IACXX,EAAMlB,QAAQ6B,KACZC,KAAKT,EAAIU,UAAKrB,EAAWa,EAAWC,EAASC,IAG5CN,EAAcH,GACjBI,KAKDpB,CAAQuB,EAAWC,EAASC,KAsC7B,OAnCAO,OAAOC,iBAAiBN,EAAW,CAClCR,YAAa,CACZe,IAAKA,IAAMf,GAEZgB,aAAc,CACbD,IAAKA,IAAMhB,EAAMP,MAElByB,WAAY,CACX9C,KAAAA,GACC4B,EAAMnB,OACP,GAEDiB,YAAa,CACZkB,IAAKA,IAAMlB,EAEXqB,GAAAA,CAAIC,GACHrB,EAAoBqB,GACpBtB,EAAcsB,EAEdC,eAAe,KAEd,KAAOpB,EAAcH,GAAeE,EAAMP,KAAO,GAChDS,KAGH,GAEDoB,IAAK,CACJ,WAAMlD,CAAMmD,EAAUlB,GACrB,MAAMmB,EAAWC,MAAMC,KAAKH,EAAU,CAACnD,EAAOuD,IAAUrD,KAAK+B,EAAWjC,EAAOuD,IAC/E,OAAOjB,QAAQkB,IAAIJ,EACpB,KAIKf,CACR,CASA,SAASV,EAAoBD,GAC5B,IAAO+B,OAAOC,UAAUhC,IAAgBA,IAAgB+B,OAAOE,qBAAsBjC,EAAc,GAClG,MAAM,IAAIkC,UAAU,sDAEtB,C,0BCrCA,MAAAC,EAAA,CACAC,SAAA,CACAC,aAAAC,EAAAA,EAAAA,GAAA,kEACAC,MAAAC,EAAAA,EAAAA,IAAA,+BAEAC,SAAA,CACAJ,aAAAC,EAAAA,EAAAA,GAAA,4FACAC,MAAAC,EAAAA,EAAAA,IAAA,+BAEAE,KAAA,CACAL,aAAAC,EAAAA,EAAAA,GAAA,gFACAC,MAAAC,EAAAA,EAAAA,IAAA,4BAEAG,OAAA,CACAN,aAAAC,EAAAA,EAAAA,GAAA,8HACAC,MAAAC,EAAAA,EAAAA,IAAA,2BAEAI,cAAA,CACAC,KAAA,mBACAR,aAAAC,EAAAA,EAAAA,GAAA,8FACAC,MAAAC,EAAAA,EAAAA,IAAA,kCAEAM,MAAA,CACAT,aAAAC,EAAAA,EAAAA,GAAA,4CACAC,MAAAC,EAAAA,EAAAA,IAAA,0BAEAO,kBAAA,CACAC,QAAA,IAGAC,EAAAjC,OAAAkC,KAAAf,GClG2L,EDoG3L,CACAU,KAAA,kBACAM,WAAA,CACAC,sBAAA,IACAC,SAAAA,EAAAA,GAEAC,KAAAA,KACA,CACAC,mBAAA,EACAC,gBAAA,EACAC,aAAA,EACAC,kBAAA,EACAC,KAAA,GACAC,gBAAAC,EAAAA,EAAAA,GAAA,2BAGAC,SAAA,CACAC,eAAAA,GACA,YAAAJ,KAAAK,OAAAC,GAAAhB,EAAAiB,SAAAD,EAAAE,IACA,EACAC,gBAAAA,GACA,YAAAL,gBAAAM,KAAAJ,GAAAA,EAAAK,WACA,GAEA,aAAAC,GACA,IACA,WAAAjB,SAAAkB,EAAAA,GAAAtD,KAAAuD,EAAAA,EAAAA,IAAA,uBACAC,EAAAC,KAAA,GAAArB,EAAAK,KAAAiB,uBAEA,KAAAjB,KAAAL,EAAAK,KAAAnC,IAAAyC,GAAAjD,OAAA6D,OAAAZ,EAAA,CAAAa,SAAA,EAAAC,mBAAA,EAAAT,WAAAL,EAAAe,gBACAN,EAAAO,MAAA,QAAAlB,gBAAAa,gCAAA,CAAAjB,KAAA,KAAAI,kBAEA,KAAAR,mBAAA,CACA,OAAA2B,GACAR,EAAAQ,MAAA,4BAAAA,UAEA,KAAAxB,kBAAA,CACA,SACA,KAAAD,aAAA,CACA,CACA,EACA0B,QAAA,CACAC,WAAAA,GACA,KAAA5B,gBAAA,EAEA,MAAA6B,EAAAtF,EAAA,GACAuF,EAAA,KAAAvB,gBACAC,OAAAC,IAAAA,EAAAsB,QAAAtB,EAAAe,cAAAf,EAAAuB,YAAAvB,EAAAK,YACA9C,IAAAyC,GAAAoB,EAAA,UACAX,EAAAC,KAAA,cAAAV,EAAAE,MACAF,EAAAa,SAAA,EACAN,EAAAA,GAAAiB,MAAAhB,EAAAA,EAAAA,IAAA,yBAAAiB,OAAA,CAAAzB,EAAAE,IAAAwB,OAAA,KACAC,MAAAV,IACAR,EAAAQ,MAAA,qBAAAjB,EAAAE,KAAA,CAAAe,UACAjB,EAAAK,YAAA,EACAL,EAAAc,mBAAA,IAEAjE,KAAA,KACA4D,EAAAC,KAAA,aAAAV,EAAAE,MACAF,EAAAa,SAAA,EACAb,EAAAsB,QAAA,OAGAb,EAAAO,MAAA,cAAAK,EAAAV,2BACAhE,QAAAkB,IAAAwD,GACAxE,KAAA,KACA4D,EAAAC,KAAA,iDAEAkB,OAAAC,SAAA,KAAAlC,iBAEAgC,MAAAV,GAAAR,EAAAQ,MAAA,sCAAAA,UACA,EACAa,WAAAC,GACAA,KAAA7D,GAAAA,EAAA6D,GAAAzD,KAIAJ,EAAA6D,GAAAzD,MAHAmC,EAAAuB,KAAA,mCAAAD,MACAxD,EAAAA,EAAAA,IAAA,uCAIA0D,WAAAjC,GACAA,EAAAE,MAAAhC,GAGAA,EAAA8B,EAAAE,IAAAtB,MAFAoB,EAAApB,KAIAsD,kBAAAH,GACAA,KAAA7D,EAIAA,EAAA6D,GAAA3D,aAHAqC,EAAAuB,KAAA,0CAAAD,KACA,IAIAI,SAAAJ,GACAA,KAAA7D,KAGAA,EAAA6D,GAAAhD,OAEAqD,YAAAA,CAAAL,GAEA,KAAAA,KAAA7D,KAAA,KAAAoB,kBACA,OAEA,MAAA1B,EAAA,KAAA8B,KAAA2C,UAAArC,GAAAA,EAAAE,KAAA6B,GACA,KAAAO,KAAA,KAAA5C,KAAA9B,GAAA,mBAAA8B,KAAA9B,GAAAyC,WACA,I,uIElMIkC,EAAU,CAAC,EAEfA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IACxBF,EAAQG,OAAS,SAAc,KAAM,QACrCH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,IAAQM,QAAS,IAAQA,OCL1D,SAXgB,E,SAAA,GACd,ENTW,WAAkB,IAAIC,EAAIvI,KAAKwI,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,YAAYC,MAAM,CAAC,iCAAiC,KAAK,CAACH,EAAG,KAAK,CAACD,EAAIK,GAAGL,EAAIM,GAAGN,EAAIzE,EAAE,OAAQ,wBAAwByE,EAAIK,GAAG,KAAML,EAAItD,YAAauD,EAAG,IAAI,CAACE,YAAY,uBAAuB,CAACH,EAAIK,GAAG,SAASL,EAAIM,GAAGN,EAAIzE,EAAE,OAAQ,mBAAmB,UAAWyE,EAAIrD,iBAAkBsD,EAAG,IAAI,CAACE,YAAY,6BAA6B,CAACH,EAAIK,GAAG,SAASL,EAAIM,GAAGN,EAAIzE,EAAE,OAAQ,qDAAqD,UAAUyE,EAAIO,KAAKP,EAAIK,GAAG,KAAKL,EAAIQ,GAAIR,EAAIhD,gBAAiB,SAASE,GAAK,OAAO+C,EAAG,MAAM,CAACQ,IAAIvD,EAAIE,GAAG+C,YAAY,OAAO,CAAGH,EAAIX,SAASnC,EAAIE,IAAs0B4C,EAAIO,KAAr0B,CAACN,EAAG,MAAM,CAACG,MAAM,CAAC,IAAMJ,EAAIhB,WAAW9B,EAAIE,IAAI,IAAM,MAAM4C,EAAIK,GAAG,KAAKJ,EAAG,MAAM,CAACE,YAAY,QAAQ,CAACF,EAAG,KAAK,CAACD,EAAIK,GAAGL,EAAIM,GAAGN,EAAIb,WAAWjC,OAAS8C,EAAIK,GAAG,KAAKJ,EAAG,IAAI,CAACS,SAAS,CAAC,YAAcV,EAAIM,GAAGN,EAAIZ,kBAAkBlC,EAAIE,QAAQ4C,EAAIK,GAAG,KAAMnD,EAAIc,kBAAmBiC,EAAG,IAAI,CAACA,EAAG,SAAS,CAACD,EAAIK,GAAGL,EAAIM,GAAGN,EAAIzE,EAAE,OAAQ,6CAA+C2B,EAAIe,aAA+Hf,EAAIuB,WAA8FuB,EAAIO,KAAtFN,EAAG,IAAI,CAACA,EAAG,SAAS,CAACD,EAAIK,GAAGL,EAAIM,GAAGN,EAAIzE,EAAE,OAAQ,iCAAlL0E,EAAG,IAAI,CAACA,EAAG,SAAS,CAACD,EAAIK,GAAGL,EAAIM,GAAGN,EAAIzE,EAAE,OAAQ,gEAA6KyE,EAAIK,GAAG,KAAKJ,EAAG,wBAAwB,CAACG,MAAM,CAAC,QAAUlD,EAAIK,YAAcL,EAAIsB,OAAO,UAAYtB,EAAIe,cAAgBf,EAAIsB,OAAO,QAAUtB,EAAIa,SAAS4C,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOZ,EAAIV,aAAapC,EAAIE,GAAG,OAAgB,EAAE,GAAG4C,EAAIK,GAAG,KAAKJ,EAAG,MAAM,CAACE,YAAY,cAAc,CAAEH,EAAIxD,oBAAsBwD,EAAIvD,eAAgBwD,EAAG,WAAW,CAACG,MAAM,CAAC,sCAAsC,GAAG,KAAOJ,EAAInD,eAAe,QAAU,aAAa,CAACmD,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIzE,EAAE,OAAQ,SAAS,YAAYyE,EAAIO,KAAKP,EAAIK,GAAG,KAAML,EAAIxD,kBAAmByD,EAAG,WAAW,CAACG,MAAM,CAAC,yCAAyC,GAAG,SAAWJ,EAAIvD,iBAAmBuD,EAAI3C,iBAAiB,QAAU,WAAWsD,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOC,kBAAkBD,EAAOE,iBAAwBd,EAAI3B,YAAY0C,MAAM,KAAMC,UAAU,IAAI,CAAChB,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIvD,eAAiBuD,EAAIzE,EAAE,OAAQ,qBAAuByE,EAAIzE,EAAE,OAAQ,6BAA6B,YAAYyE,EAAIO,MAAM,IAAI,EACjsE,EACsB,IMUpB,EACA,KACA,WACA,M,QCFFU,EAAAA,IAAoBC,EAAAA,EAAAA,MAEpBC,EAAAA,GAAIC,MAAM,CACThD,QAAS,CACR7C,EAACA,EAAAA,OAKH,IADa4F,EAAAA,GAAIE,OAAOC,KACbC,OAAO,qBAElB5D,EAAOO,MAAM,iC,sECrBTsD,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOtE,GAAI,upBAAwpB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6DAA6D,MAAQ,GAAG,SAAW,oOAAoO,eAAiB,CAAC,goBAAgoB,WAAa,MAElrD,S,GCNIuE,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBlJ,IAAjBmJ,EACH,OAAOA,EAAaC,QAGrB,IAAIL,EAASC,EAAyBE,GAAY,CACjDzE,GAAIyE,EACJG,QAAQ,EACRD,QAAS,CAAC,GAUX,OANAE,EAAoBJ,GAAUK,KAAKR,EAAOK,QAASL,EAAQA,EAAOK,QAASH,GAG3EF,EAAOM,QAAS,EAGTN,EAAOK,OACf,CAGAH,EAAoBO,EAAIF,EX5BpBrL,EAAW,GACfgL,EAAoBQ,EAAI,CAACzI,EAAQ0I,EAAUC,EAAIC,KAC9C,IAAGF,EAAH,CAMA,IAAIG,EAAeC,IACnB,IAASC,EAAI,EAAGA,EAAI9L,EAASiH,OAAQ6E,IAAK,CAGzC,IAFA,IAAKL,EAAUC,EAAIC,GAAY3L,EAAS8L,GACpCC,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAASxE,OAAQ+E,MACpB,EAAXL,GAAsBC,GAAgBD,IAAatI,OAAOkC,KAAKyF,EAAoBQ,GAAGS,MAAOpC,GAASmB,EAAoBQ,EAAE3B,GAAK4B,EAASO,KAC9IP,EAASS,OAAOF,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACb/L,EAASkM,OAAOJ,IAAK,GACrB,IAAIK,EAAIT,SACE3J,IAANoK,IAAiBpJ,EAASoJ,EAC/B,CACD,CACA,OAAOpJ,CAnBP,CAJC4I,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAI9L,EAASiH,OAAQ6E,EAAI,GAAK9L,EAAS8L,EAAI,GAAG,GAAKH,EAAUG,IAAK9L,EAAS8L,GAAK9L,EAAS8L,EAAI,GACrG9L,EAAS8L,GAAK,CAACL,EAAUC,EAAIC,IYJ/BX,EAAoBoB,EAAKtB,IACxB,IAAIuB,EAASvB,GAAUA,EAAOwB,WAC7B,IAAOxB,EAAiB,QACxB,IAAM,EAEP,OADAE,EAAoBuB,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLRrB,EAAoBuB,EAAI,CAACpB,EAASsB,KACjC,IAAI,IAAI5C,KAAO4C,EACXzB,EAAoB0B,EAAED,EAAY5C,KAASmB,EAAoB0B,EAAEvB,EAAStB,IAC5ExG,OAAOsJ,eAAexB,EAAStB,EAAK,CAAE+C,YAAY,EAAMrJ,IAAKkJ,EAAW5C,MCD3EmB,EAAoB6B,EAAI,IAAO5J,QAAQJ,UCHvCmI,EAAoB8B,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOlM,MAAQ,IAAImM,SAAS,cAAb,EAChB,CAAE,MAAOH,GACR,GAAsB,iBAAX3E,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxB8C,EAAoB0B,EAAI,CAACO,EAAKC,IAAU7J,OAAO8J,UAAUC,eAAe9B,KAAK2B,EAAKC,GCClFlC,EAAoBmB,EAAKhB,IACH,oBAAXlJ,QAA0BA,OAAOoL,aAC1ChK,OAAOsJ,eAAexB,EAASlJ,OAAOoL,YAAa,CAAE1M,MAAO,WAE7D0C,OAAOsJ,eAAexB,EAAS,aAAc,CAAExK,OAAO,KCLvDqK,EAAoBsC,IAAOxC,IAC1BA,EAAOyC,MAAQ,GACVzC,EAAO0C,WAAU1C,EAAO0C,SAAW,IACjC1C,GCHRE,EAAoBgB,EAAI,K,MCAxBhB,EAAoByC,EAAyB,oBAAbC,UAA4BA,SAASC,SAAYC,KAAKzF,SAAS0F,KAK/F,IAAIC,EAAkB,CACrB,KAAM,GAaP9C,EAAoBQ,EAAEQ,EAAK+B,GAA0C,IAA7BD,EAAgBC,GAGxD,IAAIC,EAAuB,CAACC,EAA4BtI,KACvD,IAGIsF,EAAU8C,GAHTtC,EAAUyC,EAAaC,GAAWxI,EAGhBmG,EAAI,EAC3B,GAAGL,EAAS/E,KAAMF,GAAgC,IAAxBsH,EAAgBtH,IAAa,CACtD,IAAIyE,KAAYiD,EACZlD,EAAoB0B,EAAEwB,EAAajD,KACrCD,EAAoBO,EAAEN,GAAYiD,EAAYjD,IAGhD,GAAGkD,EAAS,IAAIpL,EAASoL,EAAQnD,EAClC,CAEA,IADGiD,GAA4BA,EAA2BtI,GACrDmG,EAAIL,EAASxE,OAAQ6E,IACzBiC,EAAUtC,EAASK,GAChBd,EAAoB0B,EAAEoB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAO/C,EAAoBQ,EAAEzI,IAG1BqL,EAAqBR,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FQ,EAAmBC,QAAQL,EAAqB5K,KAAK,KAAM,IAC3DgL,EAAmBvD,KAAOmD,EAAqB5K,KAAK,KAAMgL,EAAmBvD,KAAKzH,KAAKgL,G,KChDvFpD,EAAoBsD,QAAKvM,ECGzB,IAAIwM,EAAsBvD,EAAoBQ,OAAEzJ,EAAW,CAAC,MAAO,IAAOiJ,EAAoB,OAC9FuD,EAAsBvD,EAAoBQ,EAAE+C,E","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/logger.js","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?5f06","webpack:///nextcloud/node_modules/yocto-queue/index.js","webpack:///nextcloud/node_modules/p-limit/index.js","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?71b8","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?84e8","webpack:///nextcloud/core/src/recommendedapps.js","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=style&index=0&id=362e6916&prod&lang=scss&scoped=true","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/global","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/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};","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n\nexport const unifiedSearchLogger = getLoggerBuilder()\n\t.setApp('unified-search')\n\t.detectUser()\n\t.build()\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"guest-box\",attrs:{\"data-cy-setup-recommended-apps\":\"\"}},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Recommended apps')))]),_vm._v(\" \"),(_vm.loadingApps)?_c('p',{staticClass:\"loading text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Loading apps …'))+\"\\n\\t\")]):(_vm.loadingAppsError)?_c('p',{staticClass:\"loading-error text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Could not fetch list of apps from the App Store.'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.recommendedApps),function(app){return _c('div',{key:app.id,staticClass:\"app\"},[(!_vm.isHidden(app.id))?[_c('img',{attrs:{\"src\":_vm.customIcon(app.id),\"alt\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"info\"},[_c('h3',[_vm._v(_vm._s(_vm.customName(app)))]),_vm._v(\" \"),_c('p',{domProps:{\"textContent\":_vm._s(_vm.customDescription(app.id))}}),_vm._v(\" \"),(app.installationError)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'App download or installation failed')))])]):(!app.isCompatible)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app because it is not compatible')))])]):(!app.canInstall)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app')))])]):_vm._e()]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":app.isSelected || app.active,\"disabled\":!app.isCompatible || app.active,\"loading\":app.loading},on:{\"update:checked\":function($event){return _vm.toggleSelect(app.id)}}})]:_vm._e()],2)}),_vm._v(\" \"),_c('div',{staticClass:\"dialog-row\"},[(_vm.showInstallButton && !_vm.installingApps)?_c('NcButton',{attrs:{\"data-cy-setup-recommended-apps-skip\":\"\",\"href\":_vm.defaultPageUrl,\"variant\":\"tertiary\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Skip'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showInstallButton)?_c('NcButton',{attrs:{\"data-cy-setup-recommended-apps-install\":\"\",\"disabled\":_vm.installingApps || !_vm.isAnyAppSelected,\"variant\":\"primary\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.installApps.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.installingApps ? _vm.t('core', 'Installing apps …') : _vm.t('core', 'Install recommended apps'))+\"\\n\\t\\t\")]):_vm._e()],1)],2)\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\t* drain() {\n\t\twhile (this.#head) {\n\t\t\tyield this.dequeue();\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\t// Process the next queued function if we're under the concurrency limit\n\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\tactiveCount++;\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst next = () => {\n\t\tactiveCount--;\n\t\tresumeNext();\n\t};\n\n\tconst run = async (function_, resolve, arguments_) => {\n\t\t// Execute the function and capture the result promise\n\t\tconst result = (async () => function_(...arguments_))();\n\n\t\t// Resolve immediately with the promise (don't wait for completion)\n\t\tresolve(result);\n\n\t\t// Wait for the function to complete (success or failure)\n\t\t// We catch errors here to prevent unhandled rejections,\n\t\t// but the original promise rejection is preserved for the caller\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\t// Decrement active count and process next queued function\n\t\tnext();\n\t};\n\n\tconst enqueue = (function_, resolve, arguments_) => {\n\t\t// Queue the internal resolve function instead of the run function\n\t\t// to preserve the asynchronous execution context.\n\t\tnew Promise(internalResolve => { // eslint-disable-line promise/param-names\n\t\t\tqueue.enqueue(internalResolve);\n\t\t}).then(run.bind(undefined, function_, resolve, arguments_)); // eslint-disable-line promise/prefer-await-to-then\n\n\t\t// Start processing immediately if we haven't reached the concurrency limit\n\t\tif (activeCount < concurrency) {\n\t\t\tresumeNext();\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\tmap: {\n\t\t\tasync value(iterable, function_) {\n\t\t\t\tconst promises = Array.from(iterable, (value, index) => this(function_, value, index));\n\t\t\t\treturn Promise.all(promises);\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n\nexport function limitFunction(function_, options) {\n\tconst {concurrency} = options;\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!./RecommendedApps.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!./RecommendedApps.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!./RecommendedApps.vue?vue&type=style&index=0&id=362e6916&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!./RecommendedApps.vue?vue&type=style&index=0&id=362e6916&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RecommendedApps.vue?vue&type=template&id=362e6916&scoped=true\"\nimport script from \"./RecommendedApps.vue?vue&type=script&lang=js\"\nexport * from \"./RecommendedApps.vue?vue&type=script&lang=js\"\nimport style0 from \"./RecommendedApps.vue?vue&type=style&index=0&id=362e6916&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 \"362e6916\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCSPNonce } from '@nextcloud/auth'\nimport { translate as t } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport logger from './logger.js'\nimport RecommendedApps from './components/setup/RecommendedApps.vue'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = getCSPNonce()\n\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst View = Vue.extend(RecommendedApps)\nnew View().$mount('#recommended-apps')\n\nlogger.debug('recommended apps view rendered')\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, `.dialog-row[data-v-362e6916]{display:flex;justify-content:end;margin-top:8px}p.loading[data-v-362e6916],p.loading-error[data-v-362e6916]{height:100px}p[data-v-362e6916]:last-child{margin-top:10px}.text-center[data-v-362e6916]{text-align:center}.app[data-v-362e6916]{display:flex;flex-direction:row}.app img[data-v-362e6916]{height:50px;width:50px;filter:var(--background-invert-if-dark)}.app img[data-v-362e6916],.app .info[data-v-362e6916]{padding:12px}.app .info h3[data-v-362e6916],.app .info p[data-v-362e6916]{text-align:start}.app .info h3[data-v-362e6916]{margin-top:0}.app .checkbox-radio-switch[data-v-362e6916]{margin-inline-start:auto;padding:0 2px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/setup/RecommendedApps.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,YAAA,CACA,mBAAA,CACA,cAAA,CAIA,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,uCAAA,CAGD,sDACC,YAAA,CAIA,6DACC,gBAAA,CAGD,+BACC,YAAA,CAIF,6CACC,wBAAA,CACA,aAAA\",\"sourcesContent\":[\"\\n.dialog-row {\\n\\tdisplay: flex;\\n\\tjustify-content: end;\\n\\tmargin-top: 8px;\\n}\\n\\np {\\n\\t&.loading,\\n\\t&.loading-error {\\n\\t\\theight: 100px;\\n\\t}\\n\\n\\t&:last-child {\\n\\t\\tmargin-top: 10px;\\n\\t}\\n}\\n\\n.text-center {\\n\\ttext-align: center;\\n}\\n\\n.app {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\n\\timg {\\n\\t\\theight: 50px;\\n\\t\\twidth: 50px;\\n\\t\\tfilter: var(--background-invert-if-dark);\\n\\t}\\n\\n\\timg, .info {\\n\\t\\tpadding: 12px;\\n\\t}\\n\\n\\t.info {\\n\\t\\th3, p {\\n\\t\\t\\ttext-align: start;\\n\\t\\t}\\n\\n\\t\\th3 {\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t.checkbox-radio-switch {\\n\\t\\tmargin-inline-start: auto;\\n\\t\\tpadding: 0 2px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\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 = 2696;","__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\t2696: 0\n};\n\n// no chunk on demand loading\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 = self[\"webpackChunknextcloud\"] = self[\"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__(2430)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","detectUser","Node","constructor","value","_defineProperty","this","_head","WeakMap","_tail","_size","Queue","_classPrivateFieldInitSpec","clear","enqueue","_this$size","node","_classPrivateFieldGet","next","_classPrivateFieldSet","dequeue","_this$size3","current","peek","undefined","size","Symbol","iterator","drain","pLimit","concurrency","validateConcurrency","queue","activeCount","resumeNext","run","async","function_","resolve","arguments_","result","generator","Promise","internalResolve","then","bind","Object","defineProperties","get","pendingCount","clearQueue","set","newConcurrency","queueMicrotask","map","iterable","promises","Array","from","index","all","Number","isInteger","POSITIVE_INFINITY","TypeError","recommended","calendar","description","t","icon","imagePath","contacts","mail","spreed","richdocuments","name","notes","richdocumentscode","hidden","recommendedIds","keys","components","NcCheckboxRadioSwitch","NcButton","data","showInstallButton","installingApps","loadingApps","loadingAppsError","apps","defaultPageUrl","loadState","computed","recommendedApps","filter","app","includes","id","isAnyAppSelected","some","isSelected","mounted","axios","generateUrl","logger","info","length","assign","loading","installationError","isCompatible","debug","error","methods","installApps","limit","installing","active","canInstall","post","appIds","groups","catch","window","location","customIcon","appId","warn","customName","customDescription","isHidden","toggleSelect","findIndex","$set","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","staticClass","attrs","_v","_s","_e","_l","key","domProps","on","$event","stopPropagation","preventDefault","apply","arguments","__webpack_nonce__","getCSPNonce","Vue","mixin","extend","RecommendedApps","$mount","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","e","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","toStringTag","nmd","paths","children","b","document","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","forEach","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/settings-apps-view-4529.js b/dist/settings-apps-view-4529.js index de8bc4a14bd..21704c71b51 100644 --- a/dist/settings-apps-view-4529.js +++ b/dist/settings-apps-view-4529.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[4529],{846:(t,e,n)=>{n.d(e,{T:()=>u});var a=n(85168),i=n(81222),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}}})},5472:(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-114ea95a]{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},18460:(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/* The categories-loading indicator */\n.categories--loading[data-v-419cd0cf] {\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:['\x3c!--\n - SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n--\x3e\n\n\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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\nconst productName = window.OC.theme.productName\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 {productName} version.', { productName })\n\t\t\t\t+ ' '\n\t\t\t\t+ t('settings', 'If you continue you will still be able to install the app. Note that the app might not work as expected.')\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn base + ' ' + t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn base\n\t\t},\n\t\tdefaultDeployDaemonAccessible() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tif (this.app?.daemon && this.app?.daemon?.accepts_deploy_id === 'manual-install') {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tif (this.app?.daemon?.accepts_deploy_id === 'docker-install'\n\t\t\t\t\t&& this.appApiStore.getDefaultDaemon?.name === this.app?.daemon?.name) {\n\t\t\t\t\treturn this?.appApiStore.getDaemonAccessible === true\n\t\t\t\t}\n\t\t\t\treturn this?.appApiStore.getDaemonAccessible\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tif (this.app && this.app.groups && this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasyncFindGroup(query) {\n\t\t\treturn this.$store.dispatch('getGroups', { search: query, limit: 5, offset: 0 })\n\t\t},\n\t\tisLimitedToGroups(app) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn this.app.groups.length || this.groupCheckedAppsData\n\t\t},\n\t\tsetGroupLimit() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn // not supported for app_api apps\n\t\t\t}\n\t\t\tif (!this.groupCheckedAppsData) {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: [] })\n\t\t\t}\n\t\t},\n\t\tcanLimitToGroups(app) {\n\t\t\tif ((app.types && app.types.includes('filesystem'))\n\t\t\t\t\t|| app.types.includes('prelogin')\n\t\t\t\t\t|| app.types.includes('authentication')\n\t\t\t\t\t|| app.types.includes('logging')\n\t\t\t\t\t|| app.types.includes('prevent_group_restriction')\n\t\t\t\t\t|| app?.app_api) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\taddGroupLimitation(groupArray) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn // not supported for app_api apps\n\t\t\t}\n\t\t\tconst group = groupArray.pop()\n\t\t\tconst groups = this.app.groups.concat([]).concat([group.id])\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups })\n\t\t},\n\t\tremoveGroupLimitation(group) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn // not supported for app_api apps\n\t\t\t}\n\t\t\tconst currentGroups = this.app.groups.concat([])\n\t\t\tconst index = currentGroups.indexOf(group.id)\n\t\t\tif (index > -1) {\n\t\t\t\tcurrentGroups.splice(index, 1)\n\t\t\t}\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: currentGroups })\n\t\t},\n\t\tforceEnable(appId) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.forceEnableApp(appId)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('forceEnableApp', { appId, groups: [] })\n\t\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t}\n\t\t},\n\t\tenable(appId, daemon = null, deployOptions = {}) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.enableApp(appId, daemon, 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","// 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-60bee524]{padding:20px}.app-details__actions-manage[data-v-60bee524]{display:flex;align-items:center}.app-details__actions-manage input[data-v-60bee524]{flex:0 1 auto;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-details__authors[data-v-60bee524]{color:var(--color-text-maxcontrast)}.app-details__section[data-v-60bee524]{margin-top:15px}.app-details__section h4[data-v-60bee524]{font-size:16px;font-weight:bold;margin-block-end:5px}.app-details__interact[data-v-60bee524]{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px}.app-details__documentation a[data-v-60bee524]{text-decoration:underline}.app-details__documentation li[data-v-60bee524]{padding-inline-start:20px}.app-details__documentation li[data-v-60bee524]::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-60bee524]{color:var(--color-text-error);border-color:var(--color-border-error);background:var(--color-main-background)}.force[data-v-60bee524]:hover,.force[data-v-60bee524]:active{color:var(--color-main-background);border-color:var(--color-border-error) !important;background:var(--color-error)}.missing-dependencies[data-v-60bee524]{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,6BAAA,CACA,sCAAA,CACA,uCAAA,CAGD,6DAEC,kCAAA,CACA,iDAAA,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-text-error);\\n\\tborder-color: var(--color-border-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-border-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, `.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, `.daemon-selection-list[data-v-07c487de]{max-height:350px;overflow-y:scroll;padding:2rem}.daemon-selection-list__empty-content[data-v-07c487de]{margin-top:0;text-align:center}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppAPI/DaemonSelectionList.vue\"],\"names\":[],\"mappings\":\"AACA,wCACC,gBAAA,CACA,iBAAA,CACA,YAAA,CAEA,uDACC,YAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n.daemon-selection-list {\\n\\tmax-height: 350px;\\n\\toverflow-y: scroll;\\n\\tpadding: 2rem;\\n\\n\\t&__empty-content {\\n\\t\\tmargin-top: 0;\\n\\t\\ttext-align: center;\\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-level-badge[data-v-4f1ef3a1]{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-4f1ef3a1]{background-color:var(--color-success);border-color:var(--color-border-success);color:var(--color-success-text)}`, \"\",{\"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,qCAAA,CACA,wCAAA,CACA,+BAAA\",\"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\\tbackground-color: var(--color-success);\\n\\t\\tborder-color: var(--color-border-success);\\n\\t\\tcolor: var(--color-success-text);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.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=10fcea52&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=10fcea52&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=10fcea52&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=10fcea52&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 \"10fcea52\",\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.mdiTextBoxOutline}})]},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\":_vm.enableButtonAction}}):(!_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.mdiToyBrickPlusOutline}})]},proxy:true}],null,false,973660380)},[_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 {productName} version assigned. This will be an error in the future.', { productName: _vm.productName }))+\"\\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 {productName} version assigned. This will be an error in the future.', { productName: _vm.productName }))+\"\\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.mdiBugOutline}})]},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.mdiFeatureSearchOutline}})]},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.mdiTooltipQuestionOutline}})]},proxy:true}],null,false,88743630)}):_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(),_vm._v(\" \"),(_vm.app?.app_api)?_c('DaemonSelectionDialog',{attrs:{\"show\":_vm.showSelectDaemonModal,\"app\":_vm.app,\"deploy-options\":_vm.deployOptions},on:{\"update:show\":function($event){_vm.showSelectDaemonModal=$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=d7fb3b54&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=d7fb3b54&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=d7fb3b54&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=d7fb3b54&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 \"d7fb3b54\",\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.mdiDeleteOutline}})]},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 }","\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!./AppDetailsTab.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetailsTab.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetailsTab.vue?vue&type=style&index=0&id=60bee524&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=60bee524&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=60bee524&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=60bee524&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 \"60bee524\",\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=1114c30b&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=1114c30b&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=1114c30b&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=1114c30b&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 \"1114c30b\",\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=e726cadc&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=e726cadc&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=e726cadc&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=e726cadc&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 \"e726cadc\",\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=0698b3b8&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=0698b3b8&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=0698b3b8&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=0698b3b8&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 \"0698b3b8\",\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=ffae2952&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=ffae2952&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=ffae2952&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=ffae2952&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 \"ffae2952\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-sidebar-tabs__release h2[data-v-1114c30b]{border-bottom:1px solid var(--color-border);font-size:24px}.app-sidebar-tabs__release-text[data-v-1114c30b] h3{font-size:20px}.app-sidebar-tabs__release-text[data-v-1114c30b] 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, `\n.empty-content__loading[data-v-cd4ac3b0] {\n\theight: 100%;\n}\n.app-settings-content__label[data-v-cd4ac3b0] {\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\":\";AA2EA;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, `.app-daemon-badge[data-v-0698b3b8]{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","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.enableButtonAction.apply(null, arguments)}}},[_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(),_vm._v(\" \"),(_vm.app?.app_api && _vm.showSelectDaemonModal)?_c('DaemonSelectionDialog',{attrs:{\"show\":_vm.showSelectDaemonModal,\"app\":_vm.app},on:{\"update:show\":function($event){_vm.showSelectDaemonModal=$event}}}):_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=2e0b174b&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=2e0b174b&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=2e0b174b&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=2e0b174b&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 \"2e0b174b\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport 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 dockerDaemons: [],\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, daemon, 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}/${daemon.name}`), { 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 = daemon;\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 async fetchDockerDaemons() {\n try {\n const { data } = await axios.get(generateUrl('/apps/app_api/daemons'));\n this.defaultDaemon = data.daemons.find((daemon) => daemon.name === data.default_daemon_config);\n this.dockerDaemons = data.daemons.filter((daemon) => daemon.accepts_deploy_id === 'docker-install');\n }\n catch (error) {\n logger.error('[app-api-store] Failed to fetch Docker daemons', { error });\n return false;\n }\n return true;\n },\n updateAppsStatus() {\n clearInterval(this.statusUpdater);\n const initializingOrDeployingApps = this.getInitializingOrDeployingApps;\n if (initializingOrDeployingApps.length === 0) {\n return;\n }\n this.statusUpdater = setInterval(() => {\n const initializingOrDeployingApps = this.getInitializingOrDeployingApps;\n console.debug('initializingOrDeployingApps', initializingOrDeployingApps);\n initializingOrDeployingApps.forEach(app => {\n this.fetchAppStatus(app.id);\n });\n }, 2000);\n },\n },\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*!\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */.app-item[data-v-2e0b174b]{position:relative}.app-item[data-v-2e0b174b]:hover{background-color:var(--color-background-dark)}.app-item--list-view[data-v-2e0b174b]{--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-2e0b174b]{background-color:var(--color-background-dark)}.app-item--list-view>*[data-v-2e0b174b]{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-2e0b174b]{width:var(--default-clickable-area);height:auto;text-align:end}.app-item--list-view .app-image-icon svg[data-v-2e0b174b],.app-item--list-view .app-image-icon .icon-settings-dark[data-v-2e0b174b]{margin-top:5px;width:20px;height:20px;opacity:.5;background-size:cover;display:inline-block}.app-item--list-view .app-name[data-v-2e0b174b]{padding:0 var(--app-item-padding)}.app-item--list-view .app-name--link[data-v-2e0b174b]{height:var(--app-item-height);display:flex;align-items:center}.app-item--list-view .app-name--link[data-v-2e0b174b]::after{content:\"\";position:absolute;inset-inline:0;height:var(--app-item-height)}.app-item--list-view .app-actions[data-v-2e0b174b]{display:flex;gap:var(--app-item-padding);flex-wrap:wrap;justify-content:end}.app-item--list-view .app-actions .icon-loading-small[data-v-2e0b174b]{display:inline-block;top:4px;margin-inline-end:10px}@media only screen and (max-width: 900px){.app-item--list-view .app-version[data-v-2e0b174b],.app-item--list-view .app-level[data-v-2e0b174b]{display:none}}@media only screen and (max-width: 512px){.app-item--list-view .app-actions[data-v-2e0b174b]{display:none}}.app-item--store-view[data-v-2e0b174b]{padding:30px}.app-item--store-view .app-image-icon .icon-settings-dark[data-v-2e0b174b]{width:100%;height:150px;background-size:45px;opacity:.5}.app-item--store-view .app-image-icon svg[data-v-2e0b174b]{position:absolute;bottom:43px;width:64px;height:64px;opacity:.1}.app-item--store-view .app-name[data-v-2e0b174b]{margin:5px 0}.app-item--store-view .app-name--link[data-v-2e0b174b]::after{content:\"\";position:absolute;inset-block:0;inset-inline:0}.app-item--store-view .app-actions[data-v-2e0b174b]{margin:10px 0}@media only screen and (min-width: 1601px){.app-item--store-view[data-v-2e0b174b]{width:25%}.app-item--store-view.app-item--with-sidebar[data-v-2e0b174b]{width:33%}}@media only screen and (max-width: 1600px){.app-item--store-view[data-v-2e0b174b]{width:25%}.app-item--store-view.app-item--with-sidebar[data-v-2e0b174b]{width:33%}}@media only screen and (max-width: 1400px){.app-item--store-view[data-v-2e0b174b]{width:33%}.app-item--store-view.app-item--with-sidebar[data-v-2e0b174b]{width:50%}}@media only screen and (max-width: 900px){.app-item--store-view[data-v-2e0b174b]{width:50%}.app-item--store-view.app-item--with-sidebar[data-v-2e0b174b]{width:100%}}@media only screen and (max-width: 1024px){.app-item--store-view[data-v-2e0b174b]{width:50%}}@media only screen and (max-width: 480px){.app-item--store-view[data-v-2e0b174b]{width:100%}}.app-icon[data-v-2e0b174b]{filter:var(--background-invert-if-bright)}.app-image[data-v-2e0b174b]{position:relative;height:150px;opacity:1;overflow:hidden}.app-image img[data-v-2e0b174b]{width:100%}.app-version[data-v-2e0b174b]{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\\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-sidebar--with-screenshot[data-v-ffae2952] .app-sidebar-header__figure{background-size:cover}.app-sidebar__fallback-icon[data-v-ffae2952]{width:100%;height:100%}.app-sidebar__badges[data-v-ffae2952]{display:flex;flex-direction:row;gap:12px}.app-sidebar__version[data-v-ffae2952]{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.deploy-option[data-v-d7fb3b54] {\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-d7fb3b54] {\n\t\tmargin-top: 4px;\n\t\tfont-size: 0.8em;\n\t\tcolor: var(--color-text-maxcontrast);\n}\n}\n.envs[data-v-d7fb3b54] {\n\twidth: 100%;\n\toverflow: auto;\n\theight: 100%;\n\tmax-height: 300px;\nli[data-v-d7fb3b54] {\n\t\tmargin: 10px 0;\n}\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue\"],\"names\":[],\"mappings\":\";AAwSA;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, `.app-description[data-v-10fcea52]{padding:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,YAAA\",\"sourcesContent\":[\"\\n.app-description {\\n\\tpadding: 12px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _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=419cd0cf&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=419cd0cf&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=419cd0cf&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=419cd0cf&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 \"419cd0cf\",\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=4f1ef3a1&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=4f1ef3a1&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=4f1ef3a1&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=4f1ef3a1&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 \"4f1ef3a1\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { mdiAccountMultipleOutline, mdiAccountOutline, mdiArchiveOutline, mdiCheck, mdiClipboardFlowOutline, mdiClose, mdiCogOutline, mdiControllerClassicOutline, mdiCreationOutline, mdiDownload, mdiFileDocumentEdit, mdiFolder, mdiKeyOutline, mdiMagnify, mdiMonitorEye, mdiMultimedia, mdiOfficeBuildingOutline, mdiOpenInApp, mdiSecurity, mdiStar, mdiStarCircleOutline, mdiStarShootingOutline, mdiTools, mdiViewColumnOutline, } 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: mdiAccountOutline,\n enabled: mdiCheck,\n disabled: mdiClose,\n bundles: mdiArchiveOutline,\n supported: mdiStarShootingOutline,\n featured: mdiStar,\n updates: mdiDownload,\n // generic category\n ai: mdiCreationOutline,\n auth: mdiKeyOutline,\n customization: mdiCogOutline,\n dashboard: mdiViewColumnOutline,\n files: mdiFolder,\n games: mdiControllerClassicOutline,\n integration: mdiOpenInApp,\n monitoring: mdiMonitorEye,\n multimedia: mdiMultimedia,\n office: mdiFileDocumentEdit,\n organization: mdiOfficeBuildingOutline,\n search: mdiMagnify,\n security: mdiSecurity,\n social: mdiAccountMultipleOutline,\n tools: mdiTools,\n workflow: mdiClipboardFlowOutline,\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n.app-score__wrapper[data-v-d9bfc6c8] {\n\tdisplay: inline-flex;\n\tcolor: var(--color-favorite, #a08b00);\n> *[data-v-d9bfc6c8] {\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","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of verification constants, according to Apps */\nexport const APPS_SECTION_ENUM = Object.freeze({\n\tdiscover: t('settings', 'Discover'),\n\tinstalled: t('settings', 'Your apps'),\n\tenabled: t('settings', 'Active apps'),\n\tdisabled: t('settings', 'Disabled apps'),\n\tupdates: t('settings', 'Updates'),\n\t'app-bundles': t('settings', 'App bundles'),\n\tfeatured: t('settings', 'Featured apps'),\n\tsupported: t('settings', 'Supported apps'), // From subscription\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.apps-list[data-v-5548e438]{display:flex;flex-wrap:wrap;align-content:flex-start}.apps-list--move[data-v-5548e438]{transition:transform 1s}.apps-list #app-list-update-all[data-v-5548e438]{margin-inline-start:10px}.apps-list__toolbar[data-v-5548e438]{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-5548e438]{margin-bottom:100px;position:relative}.apps-list__list-container[data-v-5548e438]{width:100%}.apps-list__store-container[data-v-5548e438]{display:flex;flex-wrap:wrap}.apps-list__bundle-heading[data-v-5548e438]{display:flex;align-items:center;margin-block:20px;margin-inline:0 10px}.apps-list__bundle-header[data-v-5548e438]{color:var(--color-main-text);margin-block:0;margin-inline:50px 10px;font-weight:bold;font-size:20px;line-height:30px}#apps-list-search .app-item h2[data-v-5548e438]{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,4BAAA,CACA,cAAA,CACA,uBAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,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\\tcolor: var(--color-main-text);\\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}\\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","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.pageHeading,\"page-title\":_setup.pageTitle}},[_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\t* drain() {\n\t\twhile (this.#head) {\n\t\t\tyield this.dequeue();\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\t// Process the next queued function if we're under the concurrency limit\n\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\tactiveCount++;\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst next = () => {\n\t\tactiveCount--;\n\t\tresumeNext();\n\t};\n\n\tconst run = async (function_, resolve, arguments_) => {\n\t\t// Execute the function and capture the result promise\n\t\tconst result = (async () => function_(...arguments_))();\n\n\t\t// Resolve immediately with the promise (don't wait for completion)\n\t\tresolve(result);\n\n\t\t// Wait for the function to complete (success or failure)\n\t\t// We catch errors here to prevent unhandled rejections,\n\t\t// but the original promise rejection is preserved for the caller\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\t// Decrement active count and process next queued function\n\t\tnext();\n\t};\n\n\tconst enqueue = (function_, resolve, arguments_) => {\n\t\t// Queue the internal resolve function instead of the run function\n\t\t// to preserve the asynchronous execution context.\n\t\tnew Promise(internalResolve => { // eslint-disable-line promise/param-names\n\t\t\tqueue.enqueue(internalResolve);\n\t\t}).then(run.bind(undefined, function_, resolve, arguments_)); // eslint-disable-line promise/prefer-await-to-then\n\n\t\t// Start processing immediately if we haven't reached the concurrency limit\n\t\tif (activeCount < concurrency) {\n\t\t\tresumeNext();\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\tmap: {\n\t\t\tasync value(array, function_) {\n\t\t\t\tconst promises = array.map((value, index) => this(function_, value, index));\n\t\t\t\treturn Promise.all(promises);\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n\nexport function limitFunction(function_, options) {\n\tconst {concurrency} = options;\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=5548e438&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=5548e438&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=5548e438&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=5548e438&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 \"5548e438\",\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.mdiEyeOffOutline,\"size\":64}})]},proxy:true}],null,false,3626885458)}):(_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=114ea95a&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=114ea95a&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=114ea95a&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=114ea95a&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 \"114ea95a\",\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=cd4ac3b0&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=cd4ac3b0&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=cd4ac3b0&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=cd4ac3b0&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 \"cd4ac3b0\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.daemon[data-v-e726cadc]{padding:20px}.daemon h4[data-v-e726cadc]{font-weight:bold;margin:10px auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue\"],\"names\":[],\"mappings\":\"AACA,yBACE,YAAA,CAEA,4BACE,gBAAA,CACA,gBAAA\",\"sourcesContent\":[\"\\n.daemon {\\n padding: 20px;\\n\\n h4 {\\n font-weight: bold;\\n margin: 10px auto;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcDialog,{attrs:{\"open\":_vm.show,\"name\":_vm.t('settings', 'Choose Deploy Daemon for {appName}', {appName: _vm.app.name }),\"size\":\"normal\"},on:{\"update:open\":_setup.closeModal}},[_c(_setup.DaemonSelectionList,{attrs:{\"app\":_vm.app,\"deploy-options\":_vm.deployOptions},on:{\"close\":_setup.closeModal}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulleted.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulleted.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FormatListBulleted.vue?vue&type=template&id=5c444520\"\nimport script from \"./FormatListBulleted.vue?vue&type=script&lang=js\"\nexport * from \"./FormatListBulleted.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon format-list-bulleted-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7,5H21V7H7V5M7,13V11H21V13H7M4,4.5A1.5,1.5 0 0,1 5.5,6A1.5,1.5 0 0,1 4,7.5A1.5,1.5 0 0,1 2.5,6A1.5,1.5 0 0,1 4,4.5M4,10.5A1.5,1.5 0 0,1 5.5,12A1.5,1.5 0 0,1 4,13.5A1.5,1.5 0 0,1 2.5,12A1.5,1.5 0 0,1 4,10.5M7,19V17H21V19H7M4,16.5A1.5,1.5 0 0,1 5.5,18A1.5,1.5 0 0,1 4,19.5A1.5,1.5 0 0,1 2.5,18A1.5,1.5 0 0,1 4,16.5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcListItem',{attrs:{\"name\":_vm.itemTitle,\"details\":_vm.isDefault ? _vm.t('settings', 'Default') : '',\"force-display-actions\":true,\"counter-number\":_vm.daemon.exAppsCount,\"active\":_vm.isDefault,\"counter-type\":\"highlighted\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.selectDaemonAndInstall.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"subname\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.daemon.accepts_deploy_id)+\"\\n\\t\")]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionEntry.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!./DaemonSelectionEntry.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DaemonSelectionEntry.vue?vue&type=template&id=3834d8ce\"\nimport script from \"./DaemonSelectionEntry.vue?vue&type=script&lang=js\"\nexport * from \"./DaemonSelectionEntry.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionList.vue?vue&type=script&setup=true&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionList.vue?vue&type=script&setup=true&lang=js\"","\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!./DaemonSelectionList.vue?vue&type=style&index=0&id=07c487de&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!./DaemonSelectionList.vue?vue&type=style&index=0&id=07c487de&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DaemonSelectionList.vue?vue&type=template&id=07c487de&scoped=true\"\nimport script from \"./DaemonSelectionList.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./DaemonSelectionList.vue?vue&type=script&setup=true&lang=js\"\nimport style0 from \"./DaemonSelectionList.vue?vue&type=style&index=0&id=07c487de&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 \"07c487de\",\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('div',{staticClass:\"daemon-selection-list\"},[(_setup.dockerDaemons.length > 0)?_c('ul',{attrs:{\"aria-label\":_vm.t('settings', 'Registered Deploy daemons list')}},_vm._l((_setup.dockerDaemons),function(daemon){return _c(_setup.DaemonSelectionEntry,{key:daemon.id,attrs:{\"daemon\":daemon,\"is-default\":_setup.defaultDaemon.name === daemon.name,\"app\":_vm.app,\"deploy-options\":_vm.deployOptions},on:{\"close\":_setup.closeModal}})}),1):_c(_setup.NcEmptyContent,{staticClass:\"daemon-selection-list__empty-content\",attrs:{\"name\":_vm.t('settings', 'No Deploy daemons configured'),\"description\":_vm.t('settings', 'Register a custom one or setup from available templates')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.FormatListBullet,{attrs:{\"size\":20}})]},proxy:true},{key:\"action\",fn:function(){return [_c(_setup.NcButton,{attrs:{\"href\":_setup.appApiAdminPage}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Manage Deploy daemons'))+\"\\n\\t\\t\\t\")])]},proxy:true}])})],1)\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!./DaemonSelectionDialog.vue?vue&type=script&setup=true&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionDialog.vue?vue&type=script&setup=true&lang=js\"","\n\n\n\n","import { render, staticRenderFns } from \"./DaemonSelectionDialog.vue?vue&type=template&id=993019e6\"\nimport script from \"./DaemonSelectionDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./DaemonSelectionDialog.vue?vue&type=script&setup=true&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function 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=d9bfc6c8&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=d9bfc6c8&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=d9bfc6c8&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=d9bfc6c8&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 \"d9bfc6c8\",\n null\n \n)\n\nexport default component.exports"],"names":["showApiError","showError","t","useAppsStore","defineStore","state","apps","categories","updateCount","loadState","loading","loadingList","gettingCategoriesPromise","actions","loadCategories","force","this","length","data","axios","get","generateUrl","category","icon","APPSTORE_CATEGORY_ICONS","id","$patch","error","logger","loadApps","getCategoryById","categoryId","find","getAppById","appId","___CSS_LOADER_EXPORT___","push","module","generateOcsUrl","then","ocs","meta","statuscode","emit","window","dispatchEvent","Event","productName","OC","theme","computed","appGroups","app","groups","map","group","name","installing","app_api","appApiStore","getLoading","$store","getters","isLoading","isInitializing","status","action","isDeploying","isManualInstall","daemon","accepts_deploy_id","updateButtonText","version","update","enableButtonText","progress","deploy","init","needsDownload","disableButtonText","forceEnableButtonText","enableButtonTooltip","forceEnableButtonTooltip","base","defaultDeployDaemonAccessible","getDefaultDaemon","getDaemonAccessible","groupCheckedAppsData","mounted","methods","asyncFindGroup","query","dispatch","search","limit","offset","isLimitedToGroups","setGroupLimit","canLimitToGroups","types","includes","addGroupLimitation","groupArray","pop","concat","removeGroupLimitation","currentGroups","index","indexOf","splice","forceEnable","forceEnableApp","rebuildNavigation","catch","response","enable","deployOptions","enableApp","disable","disableApp","remove","removeData","uninstallApp","install","updateApp","store","Math","max","props","text","type","String","default","minHeading","Number","renderMarkdown","renderer","marked","Renderer","link","href","title","prot","decodeURIComponent","unescape","replace","toLowerCase","e","out","heading","depth","min","image","blockquote","dompurify","sanitize","trim","gfm","highlight","tables","breaks","pedantic","smartLists","smartypants","SAFE_FOR_JQUERY","ALLOWED_TAGS","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","staticClass","domProps","_s","_defineComponent","__name","setup","__props","__sfc","mdiTextShort","NcAppSidebarTab","NcIconSvgWrapper","Markdown","_setup","_setupProxy","attrs","scopedSlots","_u","key","fn","proxy","_v","description","components","NcDialog","NcTextField","NcButton","NcNoteCard","NcCheckboxRadioSwitch","mixins","AppManagement","Object","required","show","Boolean","useAppApiStore","environmentVariables","releases","ref","environment_variables","value","reduce","acc","envVar","envName","mounts","mdiPlus","mdiCheck","mdiClose","mdiDeleteOutline","addingMount","newMountPoint","hostPath","containerPath","readonly","addingPortBinding","configuredDeployOptions","deployOptionsDocsUrl","watch","newShow","fetchExAppDeployOptions","startAddingMount","$nextTick","$refs","newMountHostPath","focus","addMountPoint","cancelAddMountPoint","removeMount","mountToRemove","filter","mount","submitDeployOptions","fetchDockerDaemons","dockerDaemons","$emit","on","$event","active","canInstall","isCompatible","stopPropagation","apply","arguments","_e","_l","displayName","$set","keys","staticStyle","NcDateTime","NcSelect","AppDeployOptionsModal","DaemonSelectionDialog","mdiBugOutline","mdiFeatureSearchOutline","mdiStar","mdiTextBoxOutline","mdiTooltipQuestionOutline","mdiToyBrickPlusOutline","showDeployOptionsModal","showSelectDaemonModal","lastModified","appstoreData","Date","parse","sort","at","appAuthors","console","warn","authorName","xmlNode","Array","isArray","author","a","b","split","localeCompare","join","appstoreUrl","externalResources","resources","internal","label","website","documentation","user","admin","developer","appCategories","flat","rateAppUrl","getGroups","beforeUnmount","unsubscribe","subscribe","showSelectionModal","toggleRemoveData","enableButtonAction","directives","rawName","expression","_i","$$a","$$el","target","$$c","checked","$$v","$$i","slice","slot","canUnInstall","click","missingMinOwnCloudVersion","missingMaxOwnCloudVersion","missingDependencies","dep","shipped","resource","bugs","discussion","hasChangelog","values","translations","some","changelog","createChangelogFromRelease","release","getLanguage","en","mdiClockFast","gpuSupport","deploy_config","computeDevice","mdiFileChart","display_name","route","useRoute","router","useRouter","legacyStore","useStore","params","isAppApiEnabled","exApp","getAllApps","hasRating","ratingNumOverall","rating","ratingNumRecent","ratingRecent","ratingOverall","showSidebar","appIcon","categoryIcon","path","mdiCogOutline","AppstoreCategoryIcons","mdiCog","watchEffect","async","preview","fetch","blob","rawSvg","replaceAll","useAppIcon","licenseText","license","licence","toString","toUpperCase","activeTab","screenshotLoaded","hasScreenshot","screenshot","loadScreenshot","Image","onload","src","onMounted","hideAppDetails","NcAppSidebar","AppScore","AppDescriptionTab","AppDetailsTab","AppReleasesTab","AppDeployDaemonTab","AppLevelBadge","AppDaemonBadge","class","undefined","level","filterId","filterUrl","random","substring","SvgFilterMixin","listView","useBundleView","headers","inline","isSelected","scrolled","dataItemTag","withSidebar","$route","shouldDisplayDefaultIcon","watchers","prefix","content","getDataItemHeaders","columnName","tag","appName","summary","score","statusUpdater","daemonAccessible","defaultDaemon","getUpdateCount","getAppStatus","getStatusUpdater","getInitializingOrDeployingApps","appsApiFailure","message","isHTML","setLoading","Vue","setError","forEach","_id","confirmPassword","post","installed","removable","updateAppsStatus","update_required","showInfo","onClick","location","reload","close","setTimeout","api","fetchAllApps","fetchAppStatus","initializingOrDeployingApps","debug","clearInterval","hasOwn","daemons","default_daemon_config","setInterval","appstoreEnabled","developerDocsUrl","categoriesLoading","isSubscribed","onBeforeMount","APPS_SECTION_ENUM","NcAppNavigation","NcAppNavigationItem","NcAppNavigationSpacer","NcCounterBubble","NcLoadingIcon","discover","enabled","disabled","updates","bundles","supported","featured","isSupported","isFeatured","badgeIcon","mdiStarShootingOutline","badgeText","badgeTitle","freeze","mdiStarCircleOutline","mdiAccountOutline","mdiArchiveOutline","mdiDownload","ai","mdiCreationOutline","auth","mdiKeyOutline","customization","dashboard","mdiViewColumnOutline","files","mdiFolder","games","mdiControllerClassicOutline","integration","mdiOpenInApp","monitoring","mdiMonitorEye","multimedia","mdiMultimedia","office","mdiFileDocumentEdit","organization","mdiOfficeBuildingOutline","mdiMagnify","security","mdiSecurity","social","mdiAccountMultipleOutline","tools","mdiTools","workflow","mdiClipboardFlowOutline","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","drain","pLimit","concurrency","validateConcurrency","queue","activeCount","resumeNext","run","function_","resolve","arguments_","result","generator","Promise","internalResolve","bind","defineProperties","pendingCount","clearQueue","set","newConcurrency","queueMicrotask","array","promises","all","isInteger","POSITIVE_INFINITY","TypeError","AppItem","counter","hasPendingUpdate","showUpdateAll","useListView","exApps","natSortDiff","Util","naturalSortCompare","sortStringA","sortStringB","appstore","getAppBundles","bundle","bundleApps","bundleIds","searchApps","_app","useAppStoreView","allBundlesEnabled","bundleToggleText","beforeDestroy","setSearch","resetSearch","toggleBundle","disableBundle","enableBundle","Notification","updateAll","n","parseApiResponse","element","appElement","date","expiryDate","Error","filterElements","now","PostType","defineAsyncComponent","CarouselType","ShowcaseType","hasError","elements","shuffleArray","i","j","floor","info","parsedElements","shuffledElements","order","Infinity","getComponent","defineComponent","render","h","mdiEyeOffOutline","NcEmptyContent","entry","_b","currentCategory","viewLabel","pageHeading","pageTitle","instance","getCurrentInstance","shouldRefetchCategories","onBeforeUnmount","NcAppContent","AppList","AppStoreDiscoverSection","emits","fillColor","$attrs","NcListItem","isDefault","itemTitle","closeModal","selectDaemonAndInstall","exAppsCount","appApiAdminPage","DaemonSelectionEntry","FormatListBullet","DaemonSelectionList","mdiStarHalfFull","mdiStarOutline","appScore","toFixed","fullStars","emptyStars","hasHalfStar"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"settings-apps-view-4529.js?v=adb212f41caec4f0bbe0","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/store/apps-store.ts","webpack:///nextcloud/apps/settings/src/components/AppStoreDiscover/AppStoreDiscoverSection.vue?vue&type=style&index=0&id=114ea95a&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/views/AppStoreNavigation.vue?vue&type=style&index=0&id=419cd0cf&prod&scoped=true&lang=css","webpack:///nextcloud/apps/settings/src/service/rebuild-navigation.js","webpack:///nextcloud/apps/settings/src/mixins/AppManagement.js","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?vue&type=style&index=0&id=60bee524&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/Markdown.vue?vue&type=style&index=0&id=35d8331c&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppAPI/DaemonSelectionList.vue?vue&type=style&index=0&id=07c487de&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppList/AppLevelBadge.vue?vue&type=style&index=0&id=4f1ef3a1&prod&scoped=true&lang=scss","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?2b19","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?9c7b","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","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/AppStoreSidebar/AppDetailsTab.vue?090a","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?0c36","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?9c22","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?a6c0","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?5247","webpack://nextcloud/./apps/settings/src/views/AppStoreSidebar.vue?5373","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppReleasesTab.vue?vue&type=style&index=0&id=1114c30b&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/views/AppStore.vue?vue&type=style&index=0&id=cd4ac3b0&prod&scoped=true&lang=css","webpack:///nextcloud/apps/settings/src/components/AppList/AppDaemonBadge.vue?vue&type=style&index=0&id=0698b3b8&prod&scoped=true&lang=scss","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?4f6a","webpack://nextcloud/./apps/settings/src/components/AppList/AppItem.vue?a9a1","webpack:///nextcloud/apps/settings/src/store/app-api-store.ts","webpack:///nextcloud/apps/settings/src/components/AppList/AppItem.vue?vue&type=style&index=0&id=2e0b174b&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/views/AppStoreSidebar.vue?vue&type=style&index=0&id=ffae2952&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue?vue&type=style&index=0&id=d7fb3b54&prod&scoped=true&lang=css","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue?vue&type=style&index=0&id=10fcea52&prod&scoped=true&lang=scss","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?2ab3","webpack://nextcloud/./apps/settings/src/views/AppStoreNavigation.vue?6e6f","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?fbb8","webpack://nextcloud/./apps/settings/src/components/AppList/AppLevelBadge.vue?74e8","webpack:///nextcloud/apps/settings/src/constants/AppstoreCategoryIcons.ts","webpack:///nextcloud/apps/settings/src/components/AppList/AppScore.vue?vue&type=style&index=0&id=d9bfc6c8&prod&scoped=true&lang=css","webpack:///nextcloud/apps/settings/src/constants/AppsConstants.js","webpack:///nextcloud/apps/settings/src/components/AppList.vue?vue&type=style&index=0&id=5548e438&prod&lang=scss&scoped=true","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?a08c","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?107d","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?5ee2","webpack://nextcloud/./apps/settings/src/views/AppStore.vue?47b2","webpack:///nextcloud/apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue?vue&type=style&index=0&id=e726cadc&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/AppAPI/DaemonSelectionDialog.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulleted.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulleted.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/FormatListBulleted.vue?6c50","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulleted.vue?vue&type=template&id=5c444520","webpack://nextcloud/./apps/settings/src/components/AppAPI/DaemonSelectionEntry.vue?db35","webpack:///nextcloud/apps/settings/src/components/AppAPI/DaemonSelectionEntry.vue","webpack:///nextcloud/apps/settings/src/components/AppAPI/DaemonSelectionEntry.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/AppAPI/DaemonSelectionEntry.vue?462d","webpack:///nextcloud/apps/settings/src/components/AppAPI/DaemonSelectionList.vue?vue&type=script&setup=true&lang=js","webpack:///nextcloud/DaemonSelectionList.vue","webpack://nextcloud/./apps/settings/src/components/AppAPI/DaemonSelectionList.vue?7fe7","webpack://nextcloud/./apps/settings/src/components/AppAPI/DaemonSelectionList.vue?39f5","webpack:///nextcloud/apps/settings/src/components/AppAPI/DaemonSelectionList.vue","webpack:///nextcloud/apps/settings/src/components/AppAPI/DaemonSelectionDialog.vue?vue&type=script&setup=true&lang=js","webpack:///nextcloud/DaemonSelectionDialog.vue","webpack://nextcloud/./apps/settings/src/components/AppAPI/DaemonSelectionDialog.vue?7e45","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?4de9","webpack://nextcloud/./apps/settings/src/components/AppList/AppScore.vue?26fd"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { showError } from '@nextcloud/dialogs';\nimport { loadState } from '@nextcloud/initial-state';\nimport { translate as t } from '@nextcloud/l10n';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport axios from '@nextcloud/axios';\nimport logger from '../logger';\nimport APPSTORE_CATEGORY_ICONS from '../constants/AppstoreCategoryIcons.ts';\nconst showApiError = () => showError(t('settings', 'An error occurred during the request. Unable to proceed.'));\nexport const useAppsStore = defineStore('settings-apps', {\n state: () => ({\n apps: [],\n categories: [],\n updateCount: loadState('settings', 'appstoreUpdateCount', 0),\n loading: {\n apps: false,\n categories: false,\n },\n loadingList: false,\n gettingCategoriesPromise: null,\n }),\n actions: {\n async loadCategories(force = false) {\n if (this.categories.length > 0 && !force) {\n return;\n }\n try {\n this.loading.categories = true;\n const { data: categories } = await axios.get(generateUrl('settings/apps/categories'));\n for (const category of categories) {\n category.icon = APPSTORE_CATEGORY_ICONS[category.id] ?? '';\n }\n this.$patch({\n categories,\n });\n }\n catch (error) {\n logger.error(error);\n showApiError();\n }\n finally {\n this.loading.categories = false;\n }\n },\n async loadApps(force = false) {\n if (this.apps.length > 0 && !force) {\n return;\n }\n try {\n this.loading.apps = true;\n const { data } = await axios.get(generateUrl('settings/apps/list'));\n this.$patch({\n apps: data.apps,\n });\n }\n catch (error) {\n logger.error(error);\n showApiError();\n }\n finally {\n this.loading.apps = false;\n }\n },\n getCategoryById(categoryId) {\n return this.categories.find(({ id }) => id === categoryId) ?? null;\n },\n getAppById(appId) {\n return this.apps.find(({ id }) => id === appId) ?? null;\n },\n },\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-discover[data-v-114ea95a]{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, `\n/* The categories-loading indicator */\n.categories--loading[data-v-419cd0cf] {\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","/**\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\nconst productName = window.OC.theme.productName\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 {productName} version.', { productName })\n\t\t\t\t+ ' '\n\t\t\t\t+ t('settings', 'If you continue you will still be able to install the app. Note that the app might not work as expected.')\n\t\t\tif (this.app.needsDownload) {\n\t\t\t\treturn base + ' ' + t('settings', 'The app will be downloaded from the App Store')\n\t\t\t}\n\t\t\treturn base\n\t\t},\n\t\tdefaultDeployDaemonAccessible() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tif (this.app?.daemon && this.app?.daemon?.accepts_deploy_id === 'manual-install') {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tif (this.app?.daemon?.accepts_deploy_id === 'docker-install'\n\t\t\t\t\t&& this.appApiStore.getDefaultDaemon?.name === this.app?.daemon?.name) {\n\t\t\t\t\treturn this?.appApiStore.getDaemonAccessible === true\n\t\t\t\t}\n\t\t\t\treturn this?.appApiStore.getDaemonAccessible\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroupCheckedAppsData: false,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tif (this.app && this.app.groups && this.app.groups.length > 0) {\n\t\t\tthis.groupCheckedAppsData = true\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasyncFindGroup(query) {\n\t\t\treturn this.$store.dispatch('getGroups', { search: query, limit: 5, offset: 0 })\n\t\t},\n\t\tisLimitedToGroups(app) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn this.app.groups.length || this.groupCheckedAppsData\n\t\t},\n\t\tsetGroupLimit() {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn // not supported for app_api apps\n\t\t\t}\n\t\t\tif (!this.groupCheckedAppsData) {\n\t\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: [] })\n\t\t\t}\n\t\t},\n\t\tcanLimitToGroups(app) {\n\t\t\tif ((app.types && app.types.includes('filesystem'))\n\t\t\t\t\t|| app.types.includes('prelogin')\n\t\t\t\t\t|| app.types.includes('authentication')\n\t\t\t\t\t|| app.types.includes('logging')\n\t\t\t\t\t|| app.types.includes('prevent_group_restriction')\n\t\t\t\t\t|| app?.app_api) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\taddGroupLimitation(groupArray) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn // not supported for app_api apps\n\t\t\t}\n\t\t\tconst group = groupArray.pop()\n\t\t\tconst groups = this.app.groups.concat([]).concat([group.id])\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups })\n\t\t},\n\t\tremoveGroupLimitation(group) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\treturn // not supported for app_api apps\n\t\t\t}\n\t\t\tconst currentGroups = this.app.groups.concat([])\n\t\t\tconst index = currentGroups.indexOf(group.id)\n\t\t\tif (index > -1) {\n\t\t\t\tcurrentGroups.splice(index, 1)\n\t\t\t}\n\t\t\tthis.$store.dispatch('enableApp', { appId: this.app.id, groups: currentGroups })\n\t\t},\n\t\tforceEnable(appId) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.forceEnableApp(appId)\n\t\t\t\t\t.then(() => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('forceEnableApp', { appId, groups: [] })\n\t\t\t\t\t.then((response) => { rebuildNavigation() })\n\t\t\t\t\t.catch((error) => { showError(error) })\n\t\t\t}\n\t\t},\n\t\tenable(appId, daemon = null, deployOptions = {}) {\n\t\t\tif (this.app?.app_api) {\n\t\t\t\tthis.appApiStore.enableApp(appId, daemon, 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","// 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-60bee524]{padding:20px}.app-details__actions-manage[data-v-60bee524]{display:flex;align-items:center}.app-details__actions-manage input[data-v-60bee524]{flex:0 1 auto;min-width:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-details__authors[data-v-60bee524]{color:var(--color-text-maxcontrast)}.app-details__section[data-v-60bee524]{margin-top:15px}.app-details__section h4[data-v-60bee524]{font-size:16px;font-weight:bold;margin-block-end:5px}.app-details__interact[data-v-60bee524]{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px}.app-details__documentation a[data-v-60bee524]{text-decoration:underline}.app-details__documentation li[data-v-60bee524]{padding-inline-start:20px}.app-details__documentation li[data-v-60bee524]::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-60bee524]{color:var(--color-text-error);border-color:var(--color-border-error);background:var(--color-main-background)}.force[data-v-60bee524]:hover,.force[data-v-60bee524]:active{color:var(--color-main-background);border-color:var(--color-border-error) !important;background:var(--color-error)}.missing-dependencies[data-v-60bee524]{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,6BAAA,CACA,sCAAA,CACA,uCAAA,CAGD,6DAEC,kCAAA,CACA,iDAAA,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-text-error);\\n\\tborder-color: var(--color-border-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-border-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, `.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, `.daemon-selection-list[data-v-07c487de]{max-height:350px;overflow-y:scroll;padding:2rem}.daemon-selection-list__empty-content[data-v-07c487de]{margin-top:0;text-align:center}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppAPI/DaemonSelectionList.vue\"],\"names\":[],\"mappings\":\"AACA,wCACC,gBAAA,CACA,iBAAA,CACA,YAAA,CAEA,uDACC,YAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n.daemon-selection-list {\\n\\tmax-height: 350px;\\n\\toverflow-y: scroll;\\n\\tpadding: 2rem;\\n\\n\\t&__empty-content {\\n\\t\\tmargin-top: 0;\\n\\t\\ttext-align: center;\\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-level-badge[data-v-4f1ef3a1]{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-4f1ef3a1]{background-color:var(--color-success);border-color:var(--color-border-success);color:var(--color-success-text)}`, \"\",{\"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,qCAAA,CACA,wCAAA,CACA,+BAAA\",\"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\\tbackground-color: var(--color-success);\\n\\t\\tborder-color: var(--color-border-success);\\n\\t\\tcolor: var(--color-success-text);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.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=10fcea52&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=10fcea52&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=10fcea52&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=10fcea52&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 \"10fcea52\",\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.mdiTextBoxOutline}})]},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\":_vm.enableButtonAction}}):(!_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.mdiToyBrickPlusOutline}})]},proxy:true}],null,false,973660380)},[_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 {productName} version assigned. This will be an error in the future.', { productName: _vm.productName }))+\"\\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 {productName} version assigned. This will be an error in the future.', { productName: _vm.productName }))+\"\\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.mdiBugOutline}})]},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.mdiFeatureSearchOutline}})]},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.mdiTooltipQuestionOutline}})]},proxy:true}],null,false,88743630)}):_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(),_vm._v(\" \"),(_vm.app?.app_api)?_c('DaemonSelectionDialog',{attrs:{\"show\":_vm.showSelectDaemonModal,\"app\":_vm.app,\"deploy-options\":_vm.deployOptions},on:{\"update:show\":function($event){_vm.showSelectDaemonModal=$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=d7fb3b54&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=d7fb3b54&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=d7fb3b54&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=d7fb3b54&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 \"d7fb3b54\",\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.mdiDeleteOutline}})]},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 }","\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!./AppDetailsTab.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetailsTab.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetailsTab.vue?vue&type=style&index=0&id=60bee524&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=60bee524&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=60bee524&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=60bee524&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 \"60bee524\",\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=1114c30b&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=1114c30b&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=1114c30b&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=1114c30b&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 \"1114c30b\",\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=e726cadc&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=e726cadc&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=e726cadc&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=e726cadc&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 \"e726cadc\",\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=0698b3b8&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=0698b3b8&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=0698b3b8&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=0698b3b8&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 \"0698b3b8\",\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=ffae2952&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=ffae2952&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=ffae2952&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=ffae2952&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 \"ffae2952\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-sidebar-tabs__release h2[data-v-1114c30b]{border-bottom:1px solid var(--color-border);font-size:24px}.app-sidebar-tabs__release-text[data-v-1114c30b] h3{font-size:20px}.app-sidebar-tabs__release-text[data-v-1114c30b] 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, `\n.empty-content__loading[data-v-cd4ac3b0] {\n\theight: 100%;\n}\n.app-settings-content__label[data-v-cd4ac3b0] {\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\":\";AA2EA;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, `.app-daemon-badge[data-v-0698b3b8]{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","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.enableButtonAction.apply(null, arguments)}}},[_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(),_vm._v(\" \"),(_vm.app?.app_api && _vm.showSelectDaemonModal)?_c('DaemonSelectionDialog',{attrs:{\"show\":_vm.showSelectDaemonModal,\"app\":_vm.app},on:{\"update:show\":function($event){_vm.showSelectDaemonModal=$event}}}):_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=2e0b174b&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=2e0b174b&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=2e0b174b&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=2e0b174b&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 \"2e0b174b\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport 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 dockerDaemons: [],\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, daemon, 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}/${daemon.name}`), { 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 = daemon;\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 async fetchDockerDaemons() {\n try {\n const { data } = await axios.get(generateUrl('/apps/app_api/daemons'));\n this.defaultDaemon = data.daemons.find((daemon) => daemon.name === data.default_daemon_config);\n this.dockerDaemons = data.daemons.filter((daemon) => daemon.accepts_deploy_id === 'docker-install');\n }\n catch (error) {\n logger.error('[app-api-store] Failed to fetch Docker daemons', { error });\n return false;\n }\n return true;\n },\n updateAppsStatus() {\n clearInterval(this.statusUpdater);\n const initializingOrDeployingApps = this.getInitializingOrDeployingApps;\n if (initializingOrDeployingApps.length === 0) {\n return;\n }\n this.statusUpdater = setInterval(() => {\n const initializingOrDeployingApps = this.getInitializingOrDeployingApps;\n console.debug('initializingOrDeployingApps', initializingOrDeployingApps);\n initializingOrDeployingApps.forEach(app => {\n this.fetchAppStatus(app.id);\n });\n }, 2000);\n },\n },\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*!\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */.app-item[data-v-2e0b174b]{position:relative}.app-item[data-v-2e0b174b]:hover{background-color:var(--color-background-dark)}.app-item--list-view[data-v-2e0b174b]{--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-2e0b174b]{background-color:var(--color-background-dark)}.app-item--list-view>*[data-v-2e0b174b]{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-2e0b174b]{width:var(--default-clickable-area);height:auto;text-align:end}.app-item--list-view .app-image-icon svg[data-v-2e0b174b],.app-item--list-view .app-image-icon .icon-settings-dark[data-v-2e0b174b]{margin-top:5px;width:20px;height:20px;opacity:.5;background-size:cover;display:inline-block}.app-item--list-view .app-name[data-v-2e0b174b]{padding:0 var(--app-item-padding)}.app-item--list-view .app-name--link[data-v-2e0b174b]{height:var(--app-item-height);display:flex;align-items:center}.app-item--list-view .app-name--link[data-v-2e0b174b]::after{content:\"\";position:absolute;inset-inline:0;height:var(--app-item-height)}.app-item--list-view .app-actions[data-v-2e0b174b]{display:flex;gap:var(--app-item-padding);flex-wrap:wrap;justify-content:end}.app-item--list-view .app-actions .icon-loading-small[data-v-2e0b174b]{display:inline-block;top:4px;margin-inline-end:10px}@media only screen and (max-width: 900px){.app-item--list-view .app-version[data-v-2e0b174b],.app-item--list-view .app-level[data-v-2e0b174b]{display:none}}@media only screen and (max-width: 512px){.app-item--list-view .app-actions[data-v-2e0b174b]{display:none}}.app-item--store-view[data-v-2e0b174b]{padding:30px}.app-item--store-view .app-image-icon .icon-settings-dark[data-v-2e0b174b]{width:100%;height:150px;background-size:45px;opacity:.5}.app-item--store-view .app-image-icon svg[data-v-2e0b174b]{position:absolute;bottom:43px;width:64px;height:64px;opacity:.1}.app-item--store-view .app-name[data-v-2e0b174b]{margin:5px 0}.app-item--store-view .app-name--link[data-v-2e0b174b]::after{content:\"\";position:absolute;inset-block:0;inset-inline:0}.app-item--store-view .app-actions[data-v-2e0b174b]{margin:10px 0}@media only screen and (min-width: 1601px){.app-item--store-view[data-v-2e0b174b]{width:25%}.app-item--store-view.app-item--with-sidebar[data-v-2e0b174b]{width:33%}}@media only screen and (max-width: 1600px){.app-item--store-view[data-v-2e0b174b]{width:25%}.app-item--store-view.app-item--with-sidebar[data-v-2e0b174b]{width:33%}}@media only screen and (max-width: 1400px){.app-item--store-view[data-v-2e0b174b]{width:33%}.app-item--store-view.app-item--with-sidebar[data-v-2e0b174b]{width:50%}}@media only screen and (max-width: 900px){.app-item--store-view[data-v-2e0b174b]{width:50%}.app-item--store-view.app-item--with-sidebar[data-v-2e0b174b]{width:100%}}@media only screen and (max-width: 1024px){.app-item--store-view[data-v-2e0b174b]{width:50%}}@media only screen and (max-width: 480px){.app-item--store-view[data-v-2e0b174b]{width:100%}}.app-icon[data-v-2e0b174b]{filter:var(--background-invert-if-bright)}.app-image[data-v-2e0b174b]{position:relative;height:150px;opacity:1;overflow:hidden}.app-image img[data-v-2e0b174b]{width:100%}.app-version[data-v-2e0b174b]{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\\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-sidebar--with-screenshot[data-v-ffae2952] .app-sidebar-header__figure{background-size:cover}.app-sidebar__fallback-icon[data-v-ffae2952]{width:100%;height:100%}.app-sidebar__badges[data-v-ffae2952]{display:flex;flex-direction:row;gap:12px}.app-sidebar__version[data-v-ffae2952]{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.deploy-option[data-v-d7fb3b54] {\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-d7fb3b54] {\n\t\tmargin-top: 4px;\n\t\tfont-size: 0.8em;\n\t\tcolor: var(--color-text-maxcontrast);\n}\n}\n.envs[data-v-d7fb3b54] {\n\twidth: 100%;\n\toverflow: auto;\n\theight: 100%;\n\tmax-height: 300px;\nli[data-v-d7fb3b54] {\n\t\tmargin: 10px 0;\n}\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDeployOptionsModal.vue\"],\"names\":[],\"mappings\":\";AAwSA;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, `.app-description[data-v-10fcea52]{padding:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDescriptionTab.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,YAAA\",\"sourcesContent\":[\"\\n.app-description {\\n\\tpadding: 12px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _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=419cd0cf&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=419cd0cf&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=419cd0cf&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=419cd0cf&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 \"419cd0cf\",\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=4f1ef3a1&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=4f1ef3a1&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=4f1ef3a1&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=4f1ef3a1&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 \"4f1ef3a1\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { mdiAccountMultipleOutline, mdiAccountOutline, mdiArchiveOutline, mdiCheck, mdiClipboardFlowOutline, mdiClose, mdiCogOutline, mdiControllerClassicOutline, mdiCreationOutline, mdiDownload, mdiFileDocumentEdit, mdiFolder, mdiKeyOutline, mdiMagnify, mdiMonitorEye, mdiMultimedia, mdiOfficeBuildingOutline, mdiOpenInApp, mdiSecurity, mdiStar, mdiStarCircleOutline, mdiStarShootingOutline, mdiTools, mdiViewColumnOutline, } 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: mdiAccountOutline,\n enabled: mdiCheck,\n disabled: mdiClose,\n bundles: mdiArchiveOutline,\n supported: mdiStarShootingOutline,\n featured: mdiStar,\n updates: mdiDownload,\n // generic category\n ai: mdiCreationOutline,\n auth: mdiKeyOutline,\n customization: mdiCogOutline,\n dashboard: mdiViewColumnOutline,\n files: mdiFolder,\n games: mdiControllerClassicOutline,\n integration: mdiOpenInApp,\n monitoring: mdiMonitorEye,\n multimedia: mdiMultimedia,\n office: mdiFileDocumentEdit,\n organization: mdiOfficeBuildingOutline,\n search: mdiMagnify,\n security: mdiSecurity,\n social: mdiAccountMultipleOutline,\n tools: mdiTools,\n workflow: mdiClipboardFlowOutline,\n});\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\n.app-score__wrapper[data-v-d9bfc6c8] {\n\tdisplay: inline-flex;\n\tcolor: var(--color-favorite, #a08b00);\n> *[data-v-d9bfc6c8] {\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","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of verification constants, according to Apps */\nexport const APPS_SECTION_ENUM = Object.freeze({\n\tdiscover: t('settings', 'Discover'),\n\tinstalled: t('settings', 'Your apps'),\n\tenabled: t('settings', 'Active apps'),\n\tdisabled: t('settings', 'Disabled apps'),\n\tupdates: t('settings', 'Updates'),\n\t'app-bundles': t('settings', 'App bundles'),\n\tfeatured: t('settings', 'Featured apps'),\n\tsupported: t('settings', 'Supported apps'), // From subscription\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.apps-list[data-v-5548e438]{display:flex;flex-wrap:wrap;align-content:flex-start}.apps-list--move[data-v-5548e438]{transition:transform 1s}.apps-list #app-list-update-all[data-v-5548e438]{margin-inline-start:10px}.apps-list__toolbar[data-v-5548e438]{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-5548e438]{margin-bottom:100px;position:relative}.apps-list__list-container[data-v-5548e438]{width:100%}.apps-list__store-container[data-v-5548e438]{display:flex;flex-wrap:wrap}.apps-list__bundle-heading[data-v-5548e438]{display:flex;align-items:center;margin-block:20px;margin-inline:0 10px}.apps-list__bundle-header[data-v-5548e438]{color:var(--color-main-text);margin-block:0;margin-inline:50px 10px;font-weight:bold;font-size:20px;line-height:30px}#apps-list-search .app-item h2[data-v-5548e438]{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,4BAAA,CACA,cAAA,CACA,uBAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,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\\tcolor: var(--color-main-text);\\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}\\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","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.pageHeading,\"page-title\":_setup.pageTitle}},[_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\t* drain() {\n\t\twhile (this.#head) {\n\t\t\tyield this.dequeue();\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\t// Process the next queued function if we're under the concurrency limit\n\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\tactiveCount++;\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst next = () => {\n\t\tactiveCount--;\n\t\tresumeNext();\n\t};\n\n\tconst run = async (function_, resolve, arguments_) => {\n\t\t// Execute the function and capture the result promise\n\t\tconst result = (async () => function_(...arguments_))();\n\n\t\t// Resolve immediately with the promise (don't wait for completion)\n\t\tresolve(result);\n\n\t\t// Wait for the function to complete (success or failure)\n\t\t// We catch errors here to prevent unhandled rejections,\n\t\t// but the original promise rejection is preserved for the caller\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\t// Decrement active count and process next queued function\n\t\tnext();\n\t};\n\n\tconst enqueue = (function_, resolve, arguments_) => {\n\t\t// Queue the internal resolve function instead of the run function\n\t\t// to preserve the asynchronous execution context.\n\t\tnew Promise(internalResolve => { // eslint-disable-line promise/param-names\n\t\t\tqueue.enqueue(internalResolve);\n\t\t}).then(run.bind(undefined, function_, resolve, arguments_)); // eslint-disable-line promise/prefer-await-to-then\n\n\t\t// Start processing immediately if we haven't reached the concurrency limit\n\t\tif (activeCount < concurrency) {\n\t\t\tresumeNext();\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\tmap: {\n\t\t\tasync value(iterable, function_) {\n\t\t\t\tconst promises = Array.from(iterable, (value, index) => this(function_, value, index));\n\t\t\t\treturn Promise.all(promises);\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n\nexport function limitFunction(function_, options) {\n\tconst {concurrency} = options;\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=5548e438&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=5548e438&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=5548e438&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=5548e438&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 \"5548e438\",\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.mdiEyeOffOutline,\"size\":64}})]},proxy:true}],null,false,3626885458)}):(_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=114ea95a&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=114ea95a&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=114ea95a&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=114ea95a&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 \"114ea95a\",\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=cd4ac3b0&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=cd4ac3b0&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=cd4ac3b0&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=cd4ac3b0&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 \"cd4ac3b0\",\n null\n \n)\n\nexport default component.exports","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.daemon[data-v-e726cadc]{padding:20px}.daemon h4[data-v-e726cadc]{font-weight:bold;margin:10px auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AppStoreSidebar/AppDeployDaemonTab.vue\"],\"names\":[],\"mappings\":\"AACA,yBACE,YAAA,CAEA,4BACE,gBAAA,CACA,gBAAA\",\"sourcesContent\":[\"\\n.daemon {\\n padding: 20px;\\n\\n h4 {\\n font-weight: bold;\\n margin: 10px auto;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcDialog,{attrs:{\"open\":_vm.show,\"name\":_vm.t('settings', 'Choose Deploy Daemon for {appName}', {appName: _vm.app.name }),\"size\":\"normal\"},on:{\"update:open\":_setup.closeModal}},[_c(_setup.DaemonSelectionList,{attrs:{\"app\":_vm.app,\"deploy-options\":_vm.deployOptions},on:{\"close\":_setup.closeModal}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulleted.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulleted.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FormatListBulleted.vue?vue&type=template&id=5c444520\"\nimport script from \"./FormatListBulleted.vue?vue&type=script&lang=js\"\nexport * from \"./FormatListBulleted.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon format-list-bulleted-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7,5H21V7H7V5M7,13V11H21V13H7M4,4.5A1.5,1.5 0 0,1 5.5,6A1.5,1.5 0 0,1 4,7.5A1.5,1.5 0 0,1 2.5,6A1.5,1.5 0 0,1 4,4.5M4,10.5A1.5,1.5 0 0,1 5.5,12A1.5,1.5 0 0,1 4,13.5A1.5,1.5 0 0,1 2.5,12A1.5,1.5 0 0,1 4,10.5M7,19V17H21V19H7M4,16.5A1.5,1.5 0 0,1 5.5,18A1.5,1.5 0 0,1 4,19.5A1.5,1.5 0 0,1 2.5,18A1.5,1.5 0 0,1 4,16.5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcListItem',{attrs:{\"name\":_vm.itemTitle,\"details\":_vm.isDefault ? _vm.t('settings', 'Default') : '',\"force-display-actions\":true,\"counter-number\":_vm.daemon.exAppsCount,\"active\":_vm.isDefault,\"counter-type\":\"highlighted\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.selectDaemonAndInstall.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"subname\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.daemon.accepts_deploy_id)+\"\\n\\t\")]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionEntry.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!./DaemonSelectionEntry.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DaemonSelectionEntry.vue?vue&type=template&id=3834d8ce\"\nimport script from \"./DaemonSelectionEntry.vue?vue&type=script&lang=js\"\nexport * from \"./DaemonSelectionEntry.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionList.vue?vue&type=script&setup=true&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionList.vue?vue&type=script&setup=true&lang=js\"","\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!./DaemonSelectionList.vue?vue&type=style&index=0&id=07c487de&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!./DaemonSelectionList.vue?vue&type=style&index=0&id=07c487de&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DaemonSelectionList.vue?vue&type=template&id=07c487de&scoped=true\"\nimport script from \"./DaemonSelectionList.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./DaemonSelectionList.vue?vue&type=script&setup=true&lang=js\"\nimport style0 from \"./DaemonSelectionList.vue?vue&type=style&index=0&id=07c487de&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 \"07c487de\",\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('div',{staticClass:\"daemon-selection-list\"},[(_setup.dockerDaemons.length > 0)?_c('ul',{attrs:{\"aria-label\":_vm.t('settings', 'Registered Deploy daemons list')}},_vm._l((_setup.dockerDaemons),function(daemon){return _c(_setup.DaemonSelectionEntry,{key:daemon.id,attrs:{\"daemon\":daemon,\"is-default\":_setup.defaultDaemon.name === daemon.name,\"app\":_vm.app,\"deploy-options\":_vm.deployOptions},on:{\"close\":_setup.closeModal}})}),1):_c(_setup.NcEmptyContent,{staticClass:\"daemon-selection-list__empty-content\",attrs:{\"name\":_vm.t('settings', 'No Deploy daemons configured'),\"description\":_vm.t('settings', 'Register a custom one or setup from available templates')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.FormatListBullet,{attrs:{\"size\":20}})]},proxy:true},{key:\"action\",fn:function(){return [_c(_setup.NcButton,{attrs:{\"href\":_setup.appApiAdminPage}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Manage Deploy daemons'))+\"\\n\\t\\t\\t\")])]},proxy:true}])})],1)\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!./DaemonSelectionDialog.vue?vue&type=script&setup=true&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DaemonSelectionDialog.vue?vue&type=script&setup=true&lang=js\"","\n\n\n\n","import { render, staticRenderFns } from \"./DaemonSelectionDialog.vue?vue&type=template&id=993019e6\"\nimport script from \"./DaemonSelectionDialog.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./DaemonSelectionDialog.vue?vue&type=script&setup=true&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function 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=d9bfc6c8&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=d9bfc6c8&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=d9bfc6c8&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=d9bfc6c8&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 \"d9bfc6c8\",\n null\n \n)\n\nexport default component.exports"],"names":["showApiError","showError","t","useAppsStore","defineStore","state","apps","categories","updateCount","loadState","loading","loadingList","gettingCategoriesPromise","actions","loadCategories","force","this","length","data","axios","get","generateUrl","category","icon","APPSTORE_CATEGORY_ICONS","id","$patch","error","logger","loadApps","getCategoryById","categoryId","find","getAppById","appId","___CSS_LOADER_EXPORT___","push","module","generateOcsUrl","then","ocs","meta","statuscode","emit","window","dispatchEvent","Event","productName","OC","theme","computed","appGroups","app","groups","map","group","name","installing","app_api","appApiStore","getLoading","$store","getters","isLoading","isInitializing","status","action","isDeploying","isManualInstall","daemon","accepts_deploy_id","updateButtonText","version","update","enableButtonText","progress","deploy","init","needsDownload","disableButtonText","forceEnableButtonText","enableButtonTooltip","forceEnableButtonTooltip","base","defaultDeployDaemonAccessible","getDefaultDaemon","getDaemonAccessible","groupCheckedAppsData","mounted","methods","asyncFindGroup","query","dispatch","search","limit","offset","isLimitedToGroups","setGroupLimit","canLimitToGroups","types","includes","addGroupLimitation","groupArray","pop","concat","removeGroupLimitation","currentGroups","index","indexOf","splice","forceEnable","forceEnableApp","rebuildNavigation","catch","response","enable","deployOptions","enableApp","disable","disableApp","remove","removeData","uninstallApp","install","updateApp","store","Math","max","props","text","type","String","default","minHeading","Number","renderMarkdown","renderer","marked","Renderer","link","href","title","prot","decodeURIComponent","unescape","replace","toLowerCase","e","out","heading","depth","min","image","blockquote","dompurify","sanitize","trim","gfm","highlight","tables","breaks","pedantic","smartLists","smartypants","SAFE_FOR_JQUERY","ALLOWED_TAGS","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","staticClass","domProps","_s","_defineComponent","__name","setup","__props","__sfc","mdiTextShort","NcAppSidebarTab","NcIconSvgWrapper","Markdown","_setup","_setupProxy","attrs","scopedSlots","_u","key","fn","proxy","_v","description","components","NcDialog","NcTextField","NcButton","NcNoteCard","NcCheckboxRadioSwitch","mixins","AppManagement","Object","required","show","Boolean","useAppApiStore","environmentVariables","releases","ref","environment_variables","value","reduce","acc","envVar","envName","mounts","mdiPlus","mdiCheck","mdiClose","mdiDeleteOutline","addingMount","newMountPoint","hostPath","containerPath","readonly","addingPortBinding","configuredDeployOptions","deployOptionsDocsUrl","watch","newShow","fetchExAppDeployOptions","startAddingMount","$nextTick","$refs","newMountHostPath","focus","addMountPoint","cancelAddMountPoint","removeMount","mountToRemove","filter","mount","submitDeployOptions","fetchDockerDaemons","dockerDaemons","$emit","on","$event","active","canInstall","isCompatible","stopPropagation","apply","arguments","_e","_l","displayName","$set","keys","staticStyle","NcDateTime","NcSelect","AppDeployOptionsModal","DaemonSelectionDialog","mdiBugOutline","mdiFeatureSearchOutline","mdiStar","mdiTextBoxOutline","mdiTooltipQuestionOutline","mdiToyBrickPlusOutline","showDeployOptionsModal","showSelectDaemonModal","lastModified","appstoreData","Date","parse","sort","at","appAuthors","console","warn","authorName","xmlNode","Array","isArray","author","a","b","split","localeCompare","join","appstoreUrl","externalResources","resources","internal","label","website","documentation","user","admin","developer","appCategories","flat","rateAppUrl","getGroups","beforeUnmount","unsubscribe","subscribe","showSelectionModal","toggleRemoveData","enableButtonAction","directives","rawName","expression","_i","$$a","$$el","target","$$c","checked","$$v","$$i","slice","slot","canUnInstall","click","missingMinOwnCloudVersion","missingMaxOwnCloudVersion","missingDependencies","dep","shipped","resource","bugs","discussion","hasChangelog","values","translations","some","changelog","createChangelogFromRelease","release","getLanguage","en","mdiClockFast","gpuSupport","deploy_config","computeDevice","mdiFileChart","display_name","route","useRoute","router","useRouter","legacyStore","useStore","params","isAppApiEnabled","exApp","getAllApps","hasRating","ratingNumOverall","rating","ratingNumRecent","ratingRecent","ratingOverall","showSidebar","appIcon","categoryIcon","path","mdiCogOutline","AppstoreCategoryIcons","mdiCog","watchEffect","async","preview","fetch","blob","rawSvg","replaceAll","useAppIcon","licenseText","license","licence","toString","toUpperCase","activeTab","screenshotLoaded","hasScreenshot","screenshot","loadScreenshot","Image","onload","src","onMounted","hideAppDetails","NcAppSidebar","AppScore","AppDescriptionTab","AppDetailsTab","AppReleasesTab","AppDeployDaemonTab","AppLevelBadge","AppDaemonBadge","class","undefined","level","filterId","filterUrl","random","substring","SvgFilterMixin","listView","useBundleView","headers","inline","isSelected","scrolled","dataItemTag","withSidebar","$route","shouldDisplayDefaultIcon","watchers","prefix","content","getDataItemHeaders","columnName","tag","appName","summary","score","statusUpdater","daemonAccessible","defaultDaemon","getUpdateCount","getAppStatus","getStatusUpdater","getInitializingOrDeployingApps","appsApiFailure","message","isHTML","setLoading","Vue","setError","forEach","_id","confirmPassword","post","installed","removable","updateAppsStatus","update_required","showInfo","onClick","location","reload","close","setTimeout","api","fetchAllApps","fetchAppStatus","initializingOrDeployingApps","debug","clearInterval","hasOwn","daemons","default_daemon_config","setInterval","appstoreEnabled","developerDocsUrl","categoriesLoading","isSubscribed","onBeforeMount","APPS_SECTION_ENUM","NcAppNavigation","NcAppNavigationItem","NcAppNavigationSpacer","NcCounterBubble","NcLoadingIcon","discover","enabled","disabled","updates","bundles","supported","featured","isSupported","isFeatured","badgeIcon","mdiStarShootingOutline","badgeText","badgeTitle","freeze","mdiStarCircleOutline","mdiAccountOutline","mdiArchiveOutline","mdiDownload","ai","mdiCreationOutline","auth","mdiKeyOutline","customization","dashboard","mdiViewColumnOutline","files","mdiFolder","games","mdiControllerClassicOutline","integration","mdiOpenInApp","monitoring","mdiMonitorEye","multimedia","mdiMultimedia","office","mdiFileDocumentEdit","organization","mdiOfficeBuildingOutline","mdiMagnify","security","mdiSecurity","social","mdiAccountMultipleOutline","tools","mdiTools","workflow","mdiClipboardFlowOutline","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","drain","pLimit","concurrency","validateConcurrency","queue","activeCount","resumeNext","run","function_","resolve","arguments_","result","generator","Promise","internalResolve","bind","defineProperties","pendingCount","clearQueue","set","newConcurrency","queueMicrotask","iterable","promises","from","all","isInteger","POSITIVE_INFINITY","TypeError","AppItem","counter","hasPendingUpdate","showUpdateAll","useListView","exApps","natSortDiff","Util","naturalSortCompare","sortStringA","sortStringB","appstore","getAppBundles","bundle","bundleApps","bundleIds","searchApps","_app","useAppStoreView","allBundlesEnabled","bundleToggleText","beforeDestroy","setSearch","resetSearch","toggleBundle","disableBundle","enableBundle","Notification","updateAll","n","parseApiResponse","element","appElement","date","expiryDate","Error","filterElements","now","PostType","defineAsyncComponent","CarouselType","ShowcaseType","hasError","elements","shuffleArray","array","i","j","floor","info","parsedElements","shuffledElements","order","Infinity","getComponent","defineComponent","render","h","mdiEyeOffOutline","NcEmptyContent","entry","_b","currentCategory","viewLabel","pageHeading","pageTitle","instance","getCurrentInstance","shouldRefetchCategories","onBeforeUnmount","NcAppContent","AppList","AppStoreDiscoverSection","emits","fillColor","$attrs","NcListItem","isDefault","itemTitle","closeModal","selectDaemonAndInstall","exAppsCount","appApiAdminPage","DaemonSelectionEntry","FormatListBullet","DaemonSelectionList","mdiStarHalfFull","mdiStarOutline","appScore","toFixed","fullStars","emptyStars","hasHalfStar"],"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 5796883fb02..c8310e09a55 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})}},12836:(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(23),s.e(3239)]).then(s.bind(s,95538)),navigation:()=>Promise.all([s.e(4208),s.e(23),s.e(3239)]).then(s.bind(s,5409))},props:!0,children:[{path:":selectedGroup",name:"group"}]},{path:"/:index(index.php/)?settings/apps",name:"apps",redirect:{name:"apps-category",params:{category:(0,s(81222).C)("settings","appstoreEnabled",!0)?"discover":"installed"}},components:{default:()=>Promise.all([s.e(4208),s.e(23),s.e(4529)]).then(s.bind(s,96147)),navigation:()=>Promise.all([s.e(4208),s.e(23),s.e(4529)]).then(s.bind(s,78451)),sidebar:()=>Promise.all([s.e(4208),s.e(23),s.e(4529)]).then(s.bind(s,53934))},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),f=s(21777),A=s(65899);s.nc=(0,f.aV)(),r.Ay.prototype.t=n.t,r.Ay.prototype.n=n.n,r.Ay.use(A.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,A.Ey)();new r.Ay({router:g,store:b,pinia:y,render:e=>e(u),el:"#content"})},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(81222),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),f=r(36620);const A=(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:[...A.getSubAdminGroups??[],...A.systemGroups??[]],orderBy:A.sortGroups??l.q.UserCount,minPasswordLength:0,usersOffset:0,usersLimit:25,disabledUsersOffset:0,disabledUsersLimit:25,userCount:A.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:f.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=[...A.getSubAdminGroups??[],...A.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")),f.A.error(s)})}},v={getUsers:e=>e.users,getGroups:e=>e.groups,getSubAdminGroups:()=>A.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 w=null;const _={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})=>(w&&w.cancel("Operation canceled by another search request."),w=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:w.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:w.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 C={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)},E={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,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)}},F={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"),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"),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:C,mutations:E,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:F},T={serverData:(0,u.C)("settings","usersSettings",{})},k={setServerData(e,t){e.serverData=t}},S={state:T,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:_,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()},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="+{23:"fffc10d99246554f9388",459:"a3061b21bb6a7066cab4",1023:"065dd010137a6981ce7c",3239:"6aa0862c6ca46174db57",3278:"54f2149f105d311f5de1",3564:"30a1da2fed44e5a3c8c1",4529:"5c6201817505624b19f8",5862:"4ca96c4f928b038599cf",7471:"6423b9b898ffefeb7d1d",8737:"350f5f1e02ea90d51d63",8790:"46705be03e4f230f5e65"}[e]),i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),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;i.g.importScripts&&(e=i.g.location+"");var t=i.g.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(12836));n=i.O(n)})(); -//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=387bedef1d19a80a8900 \ 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})}},12836:(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(23),s.e(3239)]).then(s.bind(s,95538)),navigation:()=>Promise.all([s.e(4208),s.e(23),s.e(3239)]).then(s.bind(s,5409))},props:!0,children:[{path:":selectedGroup",name:"group"}]},{path:"/:index(index.php/)?settings/apps",name:"apps",redirect:{name:"apps-category",params:{category:(0,s(81222).C)("settings","appstoreEnabled",!0)?"discover":"installed"}},components:{default:()=>Promise.all([s.e(4208),s.e(23),s.e(4529)]).then(s.bind(s,96147)),navigation:()=>Promise.all([s.e(4208),s.e(23),s.e(4529)]).then(s.bind(s,78451)),sidebar:()=>Promise.all([s.e(4208),s.e(23),s.e(4529)]).then(s.bind(s,53934))},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"})},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(81222),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 w=null;const _={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})=>(w&&w.cancel("Operation canceled by another search request."),w=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:w.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:w.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 C={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)},E={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,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)}},F={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"),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"),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:C,mutations:E,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:F},T={serverData:(0,u.C)("settings","usersSettings",{})},k={setServerData(e,t){e.serverData=t}},S={state:T,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:_,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()},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="+{23:"fffc10d99246554f9388",459:"a3061b21bb6a7066cab4",1023:"065dd010137a6981ce7c",3239:"6aa0862c6ca46174db57",3278:"54f2149f105d311f5de1",3564:"30a1da2fed44e5a3c8c1",4529:"adb212f41caec4f0bbe0",5862:"4ca96c4f928b038599cf",7471:"6423b9b898ffefeb7d1d",8737:"350f5f1e02ea90d51d63",8790:"46705be03e4f230f5e65"}[e]),i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),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;i.g.importScripts&&(e=i.g.location+"");var t=i.g.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(12836));n=i.O(n)})(); +//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=db47ea4ab673aab817c8 \ 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 d416953082c..b420f97671b 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=387bedef1d19a80a8900","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/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/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/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/global","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","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=288003b1\"\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","/**\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\tapp.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\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\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","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=\" + {\"23\":\"fffc10d99246554f9388\",\"459\":\"a3061b21bb6a7066cab4\",\"1023\":\"065dd010137a6981ce7c\",\"3239\":\"6aa0862c6ca46174db57\",\"3278\":\"54f2149f105d311f5de1\",\"3564\":\"30a1da2fed44e5a3c8c1\",\"4529\":\"5c6201817505624b19f8\",\"5862\":\"4ca96c4f928b038599cf\",\"7471\":\"6423b9b898ffefeb7d1d\",\"8737\":\"350f5f1e02ea90d51d63\",\"8790\":\"46705be03e4f230f5e65\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\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 (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.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 = self[\"webpackChunknextcloud\"] = self[\"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__(12836)))\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","_defineComponent","__name","setup","__props","__sfc","NcContent","_vm","this","_c","_self","_setupProxy","attrs","_v","name","path","components","default","UserManagement","navigation","UserManagementNavigation","props","children","redirect","category","loadState","AppStore","AppStoreNavigation","sidebar","AppStoreSidebar","Vue","use","Router","mode","base","generateUrl","linkActiveClass","routes","__webpack_nonce__","getCSPNonce","prototype","t","n","PiniaVuePlugin","VTooltipPlugin","defaultHtml","Vuex","store","useStore","sync","router","pinia","createPinia","render","h","SettingsApp","el","naturalCollator","Intl","Collator","getLanguage","getCanonicalLocale","numeric","usage","usersSettings","localStorage","getBuilder","persist","build","defaults","id","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","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","String","catch","showError","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","appendCategories","categoriesArray","setAllApps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","setInstallState","canInstall","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","updateApp","version","update","resetApps","reset","startLoading","stopLoading","appIds","_appId","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","modules","settings","oc","strict","process","getLoggerBuilder","setApp","detectUser","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","g","globalThis","Function","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","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=db47ea4ab673aab817c8","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/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/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/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/global","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","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=288003b1\"\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","/**\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\tapp.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\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\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","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=\" + {\"23\":\"fffc10d99246554f9388\",\"459\":\"a3061b21bb6a7066cab4\",\"1023\":\"065dd010137a6981ce7c\",\"3239\":\"6aa0862c6ca46174db57\",\"3278\":\"54f2149f105d311f5de1\",\"3564\":\"30a1da2fed44e5a3c8c1\",\"4529\":\"adb212f41caec4f0bbe0\",\"5862\":\"4ca96c4f928b038599cf\",\"7471\":\"6423b9b898ffefeb7d1d\",\"8737\":\"350f5f1e02ea90d51d63\",\"8790\":\"46705be03e4f230f5e65\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\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 (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.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 = self[\"webpackChunknextcloud\"] = self[\"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__(12836)))\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","_defineComponent","__name","setup","__props","__sfc","NcContent","_vm","this","_c","_self","_setupProxy","attrs","_v","name","path","components","default","UserManagement","navigation","UserManagementNavigation","props","children","redirect","category","loadState","AppStore","AppStoreNavigation","sidebar","AppStoreSidebar","Vue","use","Router","mode","base","generateUrl","linkActiveClass","routes","__webpack_nonce__","getCSPNonce","prototype","t","n","PiniaVuePlugin","VTooltipPlugin","defaultHtml","Vuex","store","useStore","sync","router","pinia","createPinia","render","h","SettingsApp","el","naturalCollator","Intl","Collator","getLanguage","getCanonicalLocale","numeric","usage","usersSettings","localStorage","getBuilder","persist","build","defaults","id","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","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","String","catch","showError","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","appendCategories","categoriesArray","setAllApps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","setInstallState","canInstall","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","updateApp","version","update","resetApps","reset","startLoading","stopLoading","appIds","_appId","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","modules","settings","oc","strict","process","getLoggerBuilder","setApp","detectUser","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","g","globalThis","Function","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","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