aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Molakvoæ <skjnldsv@users.noreply.github.com>2025-02-21 11:06:05 +0100
committernextcloud-command <nextcloud-command@users.noreply.github.com>2025-02-21 10:21:51 +0000
commitc3fcc4a94d3c5b039e17ccde8122e80498c4cd0e (patch)
tree0a46d5e17d04507b25b5209c9610c0667c733e45
parent5dbca559e475ca7ca4eb8b4535df6a24e8be7126 (diff)
downloadnextcloud-server-c3fcc4a94d3c5b039e17ccde8122e80498c4cd0e.tar.gz
nextcloud-server-c3fcc4a94d3c5b039e17ccde8122e80498c4cd0e.zip
fix(l10n): Fix triple dot in translationbackport/50910/stable29
Co-authored-by: Joas Schilling <213943+nickvergessen@users.noreply.github.com> Signed-off-by: John Molakvoæ <skjnldsv@users.noreply.github.com> Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
-rw-r--r--apps/files_external/src/actions/inlineStorageCheckAction.ts2
-rw-r--r--dist/files_external-init.js4
-rw-r--r--dist/files_external-init.js.map2
3 files changed, 4 insertions, 4 deletions
diff --git a/apps/files_external/src/actions/inlineStorageCheckAction.ts b/apps/files_external/src/actions/inlineStorageCheckAction.ts
index b42b5ae5593..27c9b0bcabb 100644
--- a/apps/files_external/src/actions/inlineStorageCheckAction.ts
+++ b/apps/files_external/src/actions/inlineStorageCheckAction.ts
@@ -36,7 +36,7 @@ export const action = new FileAction({
async renderInline(node: Node) {
const span = document.createElement('span')
span.className = 'files-list__row-status'
- span.innerHTML = t('files_external', 'Checking storage...')
+ span.innerHTML = t('files_external', 'Checking storage …')
let config = null as unknown as StorageConfig
getStatus(node.attributes.id, node.attributes.scope === 'system')
diff --git a/dist/files_external-init.js b/dist/files_external-init.js
index a9d23d36af2..7ae2c22594f 100644
--- a/dist/files_external-init.js
+++ b/dist/files_external-init.js
@@ -1,2 +1,2 @@
-(()=>{"use strict";var e,t,n,r={26436:(e,t,n)=>{var r,s=n(32981),a=n(53334),o=n(34297),i=n(46564),l=n(63814),c=n(85168),u=n(65043),d=n(85471);!function(e){e[e.SUCCESS=0]="SUCCESS",e[e.ERROR=1]="ERROR",e[e.INDETERMINATE=2]="INDETERMINATE",e[e.INCOMPLETE_CONF=3]="INCOMPLETE_CONF",e[e.UNAUTHORIZED=4]="UNAUTHORIZED",e[e.TIMEOUT=5]="TIMEOUT",e[e.NETWORK_ERROR=6]="NETWORK_ERROR"}(r||(r={}));const A=function(e){return!(!e.status||e.status===r.SUCCESS)&&(e.userProvided||"password::global::user"===e.authMechanism)},f=function(e){if(e.type===o.pt.File)return!1;const t=e.attributes;return!(!t.scope||!t.backend||"personal"!==t.scope&&"system"!==t.scope)};(0,i.IF)(u.Ay);const g=new o.hY({id:"credentials-external-storage",displayName:()=>(0,a.Tl)("files","Enter missing credentials"),iconSvgInline:()=>'<svg xmlns="http://www.w3.org/2000/svg" id="mdi-login" viewBox="0 0 24 24"><path d="M11 7L9.6 8.4L12.2 11H2V13H12.2L9.6 15.6L11 17L16 12L11 7M20 19H12V21H20C21.1 21 22 20.1 22 19V5C22 3.9 21.1 3 20 3H12V5H20V19Z" /></svg>',enabled:e=>{var t;if(1!==e.length)return!1;const n=e[0];if(!f(n))return!1;const r=(null===(t=n.attributes)||void 0===t?void 0:t.config)||{};return!!A(r)},async exec(e){const{login:t,password:s}=await new Promise((e=>(0,c.Ss)((0,d.$V)((()=>Promise.all([n.e(4208),n.e(7367)]).then(n.bind(n,7367)))),{},(t=>{e(t)}))));if(t&&s)try{await async function(e,t,n){const s=(await u.Ay.request({method:"PUT",url:(0,l.Jv)("apps/files_external/userglobalstorages/{id}",{id:e.attributes.id}),confirmPassword:i.mH.Strict,data:{backendOptions:{user:t,password:n}}})).data;return s.status!==r.SUCCESS?((0,c.Qg)((0,a.Tl)("files_external","Unable to update this external storage config. {statusMessage}",{statusMessage:(null==s?void 0:s.statusMessage)||""})),null):((0,c.Te)((0,a.Tl)("files_external","New configuration successfully saved")),d.Ay.set(e.attributes,"config",s),!0)}(e,t,s),(0,c.Te)((0,a.Tl)("files_external","Credentials successfully set"))}catch(e){(0,c.Qg)((0,a.Tl)("files_external","Error while setting credentials: {error}",{error:e.message}))}return null},order:-1e3,default:o.m9.DEFAULT,inline:()=>!0});var p=n(85072),v=n.n(p),h=n(97825),m=n.n(h),w=n(77659),C=n.n(w),b=n(55056),x=n.n(b),y=n(10540),T=n.n(y),E=n(41113),_=n.n(E),S=n(64755),O={};O.styleTagTransform=_(),O.setAttributes=x(),O.insert=C().bind(null,"head"),O.domAPI=m(),O.insertStyleElement=T(),v()(S.A,O),S.A&&S.A.locals&&S.A.locals;var H,k=n(21777);const N="/files/".concat(null===(H=(0,k.HW)())||void 0===H?void 0:H.uid),M=e=>{var t;const n=(e.path+"/"+e.name).replace(/^\//gm,"");return new o.vd({id:e.id,source:(0,l.dC)("dav"+N+"/"+n),root:N,owner:(null===(t=(0,k.HW)())||void 0===t?void 0:t.uid)||null,permissions:e.config.status!==r.SUCCESS?o.aX.NONE:(null==e?void 0:e.permissions)||o.aX.READ,attributes:{displayName:n,...e}})},R=new o.hY({id:"check-external-storage",displayName:()=>"",iconSvgInline:()=>"",enabled:e=>e.every((e=>!0===f(e))),exec:async()=>null,async renderInline(e){const t=document.createElement("span");t.className="files-list__row-status",t.innerHTML=(0,a.Tl)("files_external","Checking storage...");let n=null;return function(e){const t=arguments.length>1&&void 0!==arguments[1]&&!arguments[1]?"userstorages":"userglobalstorages";return u.Ay.get((0,l.Jv)("apps/files_external/".concat(t,"/").concat(e,"?testOnly=false")))}(e.attributes.id,"system"===e.attributes.scope).then((s=>{var o;if(n=s.data,d.Ay.set(e.attributes,"config",n),n.status!==r.SUCCESS)throw new Error((null===(o=n)||void 0===o?void 0:o.statusMessage)||(0,a.Tl)("files_external","There was an error with this external storage."));t.remove()})).catch((r=>{r.response&&!n&&(0,c.I9)((0,a.Tl)("files_external","We were unable to check the external storage {basename}",{basename:e.basename})),t.innerHTML="";const s=!!n&&A(n),o=document.createElement("span");o.classList.add("files-list__row-status--".concat(s?"warning":"error")),s||(t.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" id="mdi-alert-circle" viewBox="0 0 24 24"><path d="M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></svg>',t.title=r.message),t.prepend(o)})),t},order:10}),U=new o.hY({id:"open-in-files-external-storage",displayName:e=>{var t;return((null==e||null===(t=e[0])||void 0===t||null===(t=t.attributes)||void 0===t?void 0:t.config)||{status:r.INDETERMINATE}).status!==r.SUCCESS?(0,a.Tl)("files_external","Examine this faulty external storage configuration"):(0,a.Tl)("files","Open in Files")},iconSvgInline:()=>"",enabled:(e,t)=>"extstoragemounts"===t.id,async exec(e){const t=e.attributes.config;return(null==t?void 0:t.status)!==r.SUCCESS?(window.OC.dialogs.confirm((0,a.Tl)("files_external","There was an error with this external storage. Do you want to review this mount point config in the settings page?"),(0,a.Tl)("files_external","External mount error"),(e=>{if(!0===e){var t;const e=null!==(t=(0,k.HW)())&&void 0!==t&&t.isAdmin?"admin":"user";window.location.href=(0,l.Jv)("/settings/".concat(e,"/externalstorages"))}})),null):(window.OCP.Files.Router.goToRoute(null,{view:"files"},{dir:e.path}),null)},order:-1e3,default:o.m9.HIDDEN}),I=(0,s.C)("files_external","allowUserMounting",!1);(0,o.bh)().register(new o.Ss({id:"extstoragemounts",name:(0,a.Tl)("files_external","External storage"),caption:(0,a.Tl)("files_external","List of external storage."),emptyCaption:I?(0,a.Tl)("files_external","There is no external storage configured. You can configure them in your Personal settings."):(0,a.Tl)("files_external","There is no external storage configured and you don't have the permission to configure them."),emptyTitle:(0,a.Tl)("files_external","No external storage"),icon:'<svg xmlns="http://www.w3.org/2000/svg" id="mdi-folder-network" viewBox="0 0 24 24"><path d="M3,15V5A2,2 0 0,1 5,3H11L13,5H19A2,2 0 0,1 21,7V15A2,2 0 0,1 19,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H5A2,2 0 0,1 3,15Z" /></svg>',order:30,columns:[new o.VP({id:"storage-type",title:(0,a.Tl)("files_external","Storage type"),render(e){var t;const n=(null===(t=e.attributes)||void 0===t?void 0:t.backend)||(0,a.Tl)("files_external","Unknown"),r=document.createElement("span");return r.textContent=n,r}}),new o.VP({id:"scope",title:(0,a.Tl)("files_external","Scope"),render(e){var t;const n=document.createElement("span");let r=(0,a.Tl)("files_external","Personal");return"system"===(null===(t=e.attributes)||void 0===t?void 0:t.scope)&&(r=(0,a.Tl)("files_external","System")),n.textContent=r,n}})],getContents:async()=>{var e;const t=(await u.Ay.get((0,l.KT)("apps/files_external/api/v1/mounts"))).data.ocs.data.map(M);return{folder:new o.vd({id:0,source:(0,l.dC)("dav"+N),root:N,owner:(null===(e=(0,k.HW)())||void 0===e?void 0:e.uid)||null,permissions:o.aX.READ}),contents:t}}})),(0,o.Gg)(g),(0,o.Gg)(R),(0,o.Gg)(U)},64755:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(71354),s=n.n(r),a=n(76314),o=n.n(a)()(s());o.push([e.id,".files-list__row-status{display:flex;min-width:44px;justify-content:center;align-items:center;height:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.files-list__row-status svg{width:24px;height:24px}.files-list__row-status svg path{fill:currentColor}.files-list__row-status--error,.files-list__row-status--warning{position:absolute;display:block;top:0;left:0;right:0;bottom:0;opacity:.1;z-index:-1}.files-list__row-status--error{background:var(--color-error)}.files-list__row-status--warning{background:var(--color-warning)}","",{version:3,sources:["webpack://./apps/files_external/src/css/fileEntryStatus.scss"],names:[],mappings:"AAAA,wBACC,YAAA,CACA,cAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CAEA,4BACC,UAAA,CACA,WAAA,CAEA,iCACC,iBAAA,CAIF,gEAEC,iBAAA,CACA,aAAA,CACA,KAAA,CACA,MAAA,CACA,OAAA,CACA,QAAA,CACA,UAAA,CACA,UAAA,CAGD,+BACC,6BAAA,CAGD,iCACC,+BAAA",sourcesContent:[".files-list__row-status {\n\tdisplay: flex;\n\tmin-width: 44px;\n\tjustify-content: center;\n\talign-items: center;\n\theight: 100%;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\n\tsvg {\n\t\twidth: 24px;\n\t\theight: 24px;\n\n\t\tpath {\n\t\t\tfill: currentColor;\n\t\t}\n\t}\n\n\t&--error,\n\t&--warning {\n\t\tposition: absolute;\n\t\tdisplay: block;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\topacity: .1;\n\t\tz-index: -1;\n\t}\n\n\t&--error {\n\t\tbackground: var(--color-error);\n\t}\n\n\t&--warning {\n\t\tbackground: var(--color-warning);\n\t}\n}\n"],sourceRoot:""}]);const i=o}},s={};function a(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={id:e,loaded:!1,exports:{}};return r[e].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=r,e=[],a.O=(t,n,r,s)=>{if(!n){var o=1/0;for(u=0;u<e.length;u++){n=e[u][0],r=e[u][1],s=e[u][2];for(var i=!0,l=0;l<n.length;l++)(!1&s||o>=s)&&Object.keys(a.O).every((e=>a.O[e](n[l])))?n.splice(l--,1):(i=!1,s<o&&(o=s));if(i){e.splice(u--,1);var c=r();void 0!==c&&(t=c)}}return t}s=s||0;for(var u=e.length;u>0&&e[u-1][2]>s;u--)e[u]=e[u-1];e[u]=[n,r,s]},a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,n)=>(a.f[n](e,t),t)),[])),a.u=e=>e+"-"+e+".js?v="+{267:"5a759edb26e45aee8685",717:"c7b61937e31b7fb31d87",3916:"13695d4f16dbb9337d86",7367:"1378e249b074821c3454",8066:"9369cd9b99b2eb542565",8645:"c63ca687371a1a78dda9"}[e],a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),t={},n="nextcloud:",a.l=(e,r,s,o)=>{if(t[e])t[e].push(r);else{var i,l;if(void 0!==s)for(var c=document.getElementsByTagName("script"),u=0;u<c.length;u++){var d=c[u];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==n+s){i=d;break}}i||(l=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,a.nc&&i.setAttribute("nonce",a.nc),i.setAttribute("data-webpack",n+s),i.src=e),t[e]=[r];var A=(n,r)=>{i.onerror=i.onload=null,clearTimeout(f);var s=t[e];if(delete t[e],i.parentNode&&i.parentNode.removeChild(i),s&&s.forEach((e=>e(r))),n)return n(r)},f=setTimeout(A.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=A.bind(null,i.onerror),i.onload=A.bind(null,i.onload),l&&document.head.appendChild(i)}},a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),a.j=1873,(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!e||!/^http(s?):/.test(e));)e=n[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{a.b=document.baseURI||self.location.href;var e={1873:0};a.f.j=(t,n)=>{var r=a.o(e,t)?e[t]:void 0;if(0!==r)if(r)n.push(r[2]);else{var s=new Promise(((n,s)=>r=e[t]=[n,s]));n.push(r[2]=s);var o=a.p+a.u(t),i=new Error;a.l(o,(n=>{if(a.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var s=n&&("load"===n.type?"missing":n.type),o=n&&n.target&&n.target.src;i.message="Loading chunk "+t+" failed.\n("+s+": "+o+")",i.name="ChunkLoadError",i.type=s,i.request=o,r[1](i)}}),"chunk-"+t,t)}},a.O.j=t=>0===e[t];var t=(t,n)=>{var r,s,o=n[0],i=n[1],l=n[2],c=0;if(o.some((t=>0!==e[t]))){for(r in i)a.o(i,r)&&(a.m[r]=i[r]);if(l)var u=l(a)}for(t&&t(n);c<o.length;c++)s=o[c],a.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return a.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),a.nc=void 0;var o=a.O(void 0,[4208],(()=>a(26436)));o=a.O(o)})();
-//# sourceMappingURL=files_external-init.js.map?v=0245ad46433d65acc737 \ No newline at end of file
+(()=>{"use strict";var e,t,n,r={26436:(e,t,n)=>{var r,s=n(32981),a=n(53334),o=n(34297),i=n(46564),l=n(63814),c=n(85168),u=n(65043),d=n(85471);!function(e){e[e.SUCCESS=0]="SUCCESS",e[e.ERROR=1]="ERROR",e[e.INDETERMINATE=2]="INDETERMINATE",e[e.INCOMPLETE_CONF=3]="INCOMPLETE_CONF",e[e.UNAUTHORIZED=4]="UNAUTHORIZED",e[e.TIMEOUT=5]="TIMEOUT",e[e.NETWORK_ERROR=6]="NETWORK_ERROR"}(r||(r={}));const A=function(e){return!(!e.status||e.status===r.SUCCESS)&&(e.userProvided||"password::global::user"===e.authMechanism)},f=function(e){if(e.type===o.pt.File)return!1;const t=e.attributes;return!(!t.scope||!t.backend||"personal"!==t.scope&&"system"!==t.scope)};(0,i.IF)(u.Ay);const g=new o.hY({id:"credentials-external-storage",displayName:()=>(0,a.Tl)("files","Enter missing credentials"),iconSvgInline:()=>'<svg xmlns="http://www.w3.org/2000/svg" id="mdi-login" viewBox="0 0 24 24"><path d="M11 7L9.6 8.4L12.2 11H2V13H12.2L9.6 15.6L11 17L16 12L11 7M20 19H12V21H20C21.1 21 22 20.1 22 19V5C22 3.9 21.1 3 20 3H12V5H20V19Z" /></svg>',enabled:e=>{var t;if(1!==e.length)return!1;const n=e[0];if(!f(n))return!1;const r=(null===(t=n.attributes)||void 0===t?void 0:t.config)||{};return!!A(r)},async exec(e){const{login:t,password:s}=await new Promise((e=>(0,c.Ss)((0,d.$V)((()=>Promise.all([n.e(4208),n.e(7367)]).then(n.bind(n,7367)))),{},(t=>{e(t)}))));if(t&&s)try{await async function(e,t,n){const s=(await u.Ay.request({method:"PUT",url:(0,l.Jv)("apps/files_external/userglobalstorages/{id}",{id:e.attributes.id}),confirmPassword:i.mH.Strict,data:{backendOptions:{user:t,password:n}}})).data;return s.status!==r.SUCCESS?((0,c.Qg)((0,a.Tl)("files_external","Unable to update this external storage config. {statusMessage}",{statusMessage:(null==s?void 0:s.statusMessage)||""})),null):((0,c.Te)((0,a.Tl)("files_external","New configuration successfully saved")),d.Ay.set(e.attributes,"config",s),!0)}(e,t,s),(0,c.Te)((0,a.Tl)("files_external","Credentials successfully set"))}catch(e){(0,c.Qg)((0,a.Tl)("files_external","Error while setting credentials: {error}",{error:e.message}))}return null},order:-1e3,default:o.m9.DEFAULT,inline:()=>!0});var p=n(85072),v=n.n(p),h=n(97825),m=n.n(h),w=n(77659),C=n.n(w),b=n(55056),x=n.n(b),y=n(10540),T=n.n(y),E=n(41113),_=n.n(E),S=n(64755),O={};O.styleTagTransform=_(),O.setAttributes=x(),O.insert=C().bind(null,"head"),O.domAPI=m(),O.insertStyleElement=T(),v()(S.A,O),S.A&&S.A.locals&&S.A.locals;var H,k=n(21777);const N="/files/".concat(null===(H=(0,k.HW)())||void 0===H?void 0:H.uid),M=e=>{var t;const n=(e.path+"/"+e.name).replace(/^\//gm,"");return new o.vd({id:e.id,source:(0,l.dC)("dav"+N+"/"+n),root:N,owner:(null===(t=(0,k.HW)())||void 0===t?void 0:t.uid)||null,permissions:e.config.status!==r.SUCCESS?o.aX.NONE:(null==e?void 0:e.permissions)||o.aX.READ,attributes:{displayName:n,...e}})},R=new o.hY({id:"check-external-storage",displayName:()=>"",iconSvgInline:()=>"",enabled:e=>e.every((e=>!0===f(e))),exec:async()=>null,async renderInline(e){const t=document.createElement("span");t.className="files-list__row-status",t.innerHTML=(0,a.Tl)("files_external","Checking storage …");let n=null;return function(e){const t=arguments.length>1&&void 0!==arguments[1]&&!arguments[1]?"userstorages":"userglobalstorages";return u.Ay.get((0,l.Jv)("apps/files_external/".concat(t,"/").concat(e,"?testOnly=false")))}(e.attributes.id,"system"===e.attributes.scope).then((s=>{var o;if(n=s.data,d.Ay.set(e.attributes,"config",n),n.status!==r.SUCCESS)throw new Error((null===(o=n)||void 0===o?void 0:o.statusMessage)||(0,a.Tl)("files_external","There was an error with this external storage."));t.remove()})).catch((r=>{r.response&&!n&&(0,c.I9)((0,a.Tl)("files_external","We were unable to check the external storage {basename}",{basename:e.basename})),t.innerHTML="";const s=!!n&&A(n),o=document.createElement("span");o.classList.add("files-list__row-status--".concat(s?"warning":"error")),s||(t.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" id="mdi-alert-circle" viewBox="0 0 24 24"><path d="M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></svg>',t.title=r.message),t.prepend(o)})),t},order:10}),U=new o.hY({id:"open-in-files-external-storage",displayName:e=>{var t;return((null==e||null===(t=e[0])||void 0===t||null===(t=t.attributes)||void 0===t?void 0:t.config)||{status:r.INDETERMINATE}).status!==r.SUCCESS?(0,a.Tl)("files_external","Examine this faulty external storage configuration"):(0,a.Tl)("files","Open in Files")},iconSvgInline:()=>"",enabled:(e,t)=>"extstoragemounts"===t.id,async exec(e){const t=e.attributes.config;return(null==t?void 0:t.status)!==r.SUCCESS?(window.OC.dialogs.confirm((0,a.Tl)("files_external","There was an error with this external storage. Do you want to review this mount point config in the settings page?"),(0,a.Tl)("files_external","External mount error"),(e=>{if(!0===e){var t;const e=null!==(t=(0,k.HW)())&&void 0!==t&&t.isAdmin?"admin":"user";window.location.href=(0,l.Jv)("/settings/".concat(e,"/externalstorages"))}})),null):(window.OCP.Files.Router.goToRoute(null,{view:"files"},{dir:e.path}),null)},order:-1e3,default:o.m9.HIDDEN}),I=(0,s.C)("files_external","allowUserMounting",!1);(0,o.bh)().register(new o.Ss({id:"extstoragemounts",name:(0,a.Tl)("files_external","External storage"),caption:(0,a.Tl)("files_external","List of external storage."),emptyCaption:I?(0,a.Tl)("files_external","There is no external storage configured. You can configure them in your Personal settings."):(0,a.Tl)("files_external","There is no external storage configured and you don't have the permission to configure them."),emptyTitle:(0,a.Tl)("files_external","No external storage"),icon:'<svg xmlns="http://www.w3.org/2000/svg" id="mdi-folder-network" viewBox="0 0 24 24"><path d="M3,15V5A2,2 0 0,1 5,3H11L13,5H19A2,2 0 0,1 21,7V15A2,2 0 0,1 19,17H13V19H14A1,1 0 0,1 15,20H22V22H15A1,1 0 0,1 14,23H10A1,1 0 0,1 9,22H2V20H9A1,1 0 0,1 10,19H11V17H5A2,2 0 0,1 3,15Z" /></svg>',order:30,columns:[new o.VP({id:"storage-type",title:(0,a.Tl)("files_external","Storage type"),render(e){var t;const n=(null===(t=e.attributes)||void 0===t?void 0:t.backend)||(0,a.Tl)("files_external","Unknown"),r=document.createElement("span");return r.textContent=n,r}}),new o.VP({id:"scope",title:(0,a.Tl)("files_external","Scope"),render(e){var t;const n=document.createElement("span");let r=(0,a.Tl)("files_external","Personal");return"system"===(null===(t=e.attributes)||void 0===t?void 0:t.scope)&&(r=(0,a.Tl)("files_external","System")),n.textContent=r,n}})],getContents:async()=>{var e;const t=(await u.Ay.get((0,l.KT)("apps/files_external/api/v1/mounts"))).data.ocs.data.map(M);return{folder:new o.vd({id:0,source:(0,l.dC)("dav"+N),root:N,owner:(null===(e=(0,k.HW)())||void 0===e?void 0:e.uid)||null,permissions:o.aX.READ}),contents:t}}})),(0,o.Gg)(g),(0,o.Gg)(R),(0,o.Gg)(U)},64755:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(71354),s=n.n(r),a=n(76314),o=n.n(a)()(s());o.push([e.id,".files-list__row-status{display:flex;min-width:44px;justify-content:center;align-items:center;height:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.files-list__row-status svg{width:24px;height:24px}.files-list__row-status svg path{fill:currentColor}.files-list__row-status--error,.files-list__row-status--warning{position:absolute;display:block;top:0;left:0;right:0;bottom:0;opacity:.1;z-index:-1}.files-list__row-status--error{background:var(--color-error)}.files-list__row-status--warning{background:var(--color-warning)}","",{version:3,sources:["webpack://./apps/files_external/src/css/fileEntryStatus.scss"],names:[],mappings:"AAAA,wBACC,YAAA,CACA,cAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CAEA,4BACC,UAAA,CACA,WAAA,CAEA,iCACC,iBAAA,CAIF,gEAEC,iBAAA,CACA,aAAA,CACA,KAAA,CACA,MAAA,CACA,OAAA,CACA,QAAA,CACA,UAAA,CACA,UAAA,CAGD,+BACC,6BAAA,CAGD,iCACC,+BAAA",sourcesContent:[".files-list__row-status {\n\tdisplay: flex;\n\tmin-width: 44px;\n\tjustify-content: center;\n\talign-items: center;\n\theight: 100%;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\n\tsvg {\n\t\twidth: 24px;\n\t\theight: 24px;\n\n\t\tpath {\n\t\t\tfill: currentColor;\n\t\t}\n\t}\n\n\t&--error,\n\t&--warning {\n\t\tposition: absolute;\n\t\tdisplay: block;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\topacity: .1;\n\t\tz-index: -1;\n\t}\n\n\t&--error {\n\t\tbackground: var(--color-error);\n\t}\n\n\t&--warning {\n\t\tbackground: var(--color-warning);\n\t}\n}\n"],sourceRoot:""}]);const i=o}},s={};function a(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={id:e,loaded:!1,exports:{}};return r[e].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=r,e=[],a.O=(t,n,r,s)=>{if(!n){var o=1/0;for(u=0;u<e.length;u++){n=e[u][0],r=e[u][1],s=e[u][2];for(var i=!0,l=0;l<n.length;l++)(!1&s||o>=s)&&Object.keys(a.O).every((e=>a.O[e](n[l])))?n.splice(l--,1):(i=!1,s<o&&(o=s));if(i){e.splice(u--,1);var c=r();void 0!==c&&(t=c)}}return t}s=s||0;for(var u=e.length;u>0&&e[u-1][2]>s;u--)e[u]=e[u-1];e[u]=[n,r,s]},a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,n)=>(a.f[n](e,t),t)),[])),a.u=e=>e+"-"+e+".js?v="+{267:"5a759edb26e45aee8685",717:"c7b61937e31b7fb31d87",3916:"13695d4f16dbb9337d86",7367:"1378e249b074821c3454",8066:"9369cd9b99b2eb542565",8645:"c63ca687371a1a78dda9"}[e],a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),t={},n="nextcloud:",a.l=(e,r,s,o)=>{if(t[e])t[e].push(r);else{var i,l;if(void 0!==s)for(var c=document.getElementsByTagName("script"),u=0;u<c.length;u++){var d=c[u];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==n+s){i=d;break}}i||(l=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,a.nc&&i.setAttribute("nonce",a.nc),i.setAttribute("data-webpack",n+s),i.src=e),t[e]=[r];var A=(n,r)=>{i.onerror=i.onload=null,clearTimeout(f);var s=t[e];if(delete t[e],i.parentNode&&i.parentNode.removeChild(i),s&&s.forEach((e=>e(r))),n)return n(r)},f=setTimeout(A.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=A.bind(null,i.onerror),i.onload=A.bind(null,i.onload),l&&document.head.appendChild(i)}},a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),a.j=1873,(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!e||!/^http(s?):/.test(e));)e=n[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{a.b=document.baseURI||self.location.href;var e={1873:0};a.f.j=(t,n)=>{var r=a.o(e,t)?e[t]:void 0;if(0!==r)if(r)n.push(r[2]);else{var s=new Promise(((n,s)=>r=e[t]=[n,s]));n.push(r[2]=s);var o=a.p+a.u(t),i=new Error;a.l(o,(n=>{if(a.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var s=n&&("load"===n.type?"missing":n.type),o=n&&n.target&&n.target.src;i.message="Loading chunk "+t+" failed.\n("+s+": "+o+")",i.name="ChunkLoadError",i.type=s,i.request=o,r[1](i)}}),"chunk-"+t,t)}},a.O.j=t=>0===e[t];var t=(t,n)=>{var r,s,o=n[0],i=n[1],l=n[2],c=0;if(o.some((t=>0!==e[t]))){for(r in i)a.o(i,r)&&(a.m[r]=i[r]);if(l)var u=l(a)}for(t&&t(n);c<o.length;c++)s=o[c],a.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return a.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),a.nc=void 0;var o=a.O(void 0,[4208],(()=>a(26436)));o=a.O(o)})();
+//# sourceMappingURL=files_external-init.js.map?v=570096ea70bd058741d0 \ No newline at end of file
diff --git a/dist/files_external-init.js.map b/dist/files_external-init.js.map
index 93594c8f07c..2e3f1ffc1be 100644
--- a/dist/files_external-init.js.map
+++ b/dist/files_external-init.js.map
@@ -1 +1 @@
-{"version":3,"file":"files_external-init.js?v=0245ad46433d65acc737","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files_external/src/utils/credentialsUtils.ts","webpack:///nextcloud/apps/files_external/src/utils/externalStorageUtils.ts","webpack:///nextcloud/apps/files_external/src/actions/enterCredentialsAction.ts","webpack://nextcloud/./apps/files_external/src/css/fileEntryStatus.scss?3c5c","webpack:///nextcloud/apps/files_external/src/services/externalStorage.ts","webpack:///nextcloud/apps/files_external/src/actions/inlineStorageCheckAction.ts","webpack:///nextcloud/apps/files_external/src/actions/openInFilesAction.ts","webpack:///nextcloud/apps/files_external/src/init.ts","webpack:///nextcloud/apps/files_external/src/css/fileEntryStatus.scss","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 = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\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\tscript.timeout = 120;\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};","// @see https://github.com/nextcloud/server/blob/ac2bc2384efe3c15ff987b87a7432bc60d545c67/lib/public/Files/StorageNotAvailableException.php#L41\nexport var STORAGE_STATUS;\n(function (STORAGE_STATUS) {\n STORAGE_STATUS[STORAGE_STATUS[\"SUCCESS\"] = 0] = \"SUCCESS\";\n STORAGE_STATUS[STORAGE_STATUS[\"ERROR\"] = 1] = \"ERROR\";\n STORAGE_STATUS[STORAGE_STATUS[\"INDETERMINATE\"] = 2] = \"INDETERMINATE\";\n STORAGE_STATUS[STORAGE_STATUS[\"INCOMPLETE_CONF\"] = 3] = \"INCOMPLETE_CONF\";\n STORAGE_STATUS[STORAGE_STATUS[\"UNAUTHORIZED\"] = 4] = \"UNAUTHORIZED\";\n STORAGE_STATUS[STORAGE_STATUS[\"TIMEOUT\"] = 5] = \"TIMEOUT\";\n STORAGE_STATUS[STORAGE_STATUS[\"NETWORK_ERROR\"] = 6] = \"NETWORK_ERROR\";\n})(STORAGE_STATUS || (STORAGE_STATUS = {}));\nexport const isMissingAuthConfig = function (config) {\n // If we don't know the status, assume it is ok\n if (!config.status || config.status === STORAGE_STATUS.SUCCESS) {\n return false;\n }\n return config.userProvided || config.authMechanism === 'password::global::user';\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { FileType, Node } from '@nextcloud/files';\nexport const isNodeExternalStorage = function (node) {\n // Not a folder, not a storage\n if (node.type === FileType.File) {\n return false;\n }\n // No backend or scope, not a storage\n const attributes = node.attributes;\n if (!attributes.scope || !attributes.backend) {\n return false;\n }\n // Specific markers that we're sure are ext storage only\n return attributes.scope === 'personal' || attributes.scope === 'system';\n};\n","import { addPasswordConfirmationInterceptors, PwdConfirmationMode } from '@nextcloud/password-confirmation';\nimport { generateUrl } from '@nextcloud/router';\nimport { showError, showSuccess, spawnDialog } from '@nextcloud/dialogs';\nimport { translate as t } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport LoginSvg from '@mdi/svg/svg/login.svg?raw';\nimport Vue, { defineAsyncComponent } from 'vue';\nimport { FileAction, DefaultType } from '@nextcloud/files';\nimport { STORAGE_STATUS, isMissingAuthConfig } from '../utils/credentialsUtils';\nimport { isNodeExternalStorage } from '../utils/externalStorageUtils';\n// Add password confirmation interceptors as\n// the backend requires the user to confirm their password\naddPasswordConfirmationInterceptors(axios);\n/**\n * Set credentials for external storage\n *\n * @param node The node for which to set the credentials\n * @param login The username\n * @param password The password\n */\nasync function setCredentials(node, login, password) {\n const configResponse = await axios.request({\n method: 'PUT',\n url: generateUrl('apps/files_external/userglobalstorages/{id}', { id: node.attributes.id }),\n confirmPassword: PwdConfirmationMode.Strict,\n data: {\n backendOptions: { user: login, password },\n },\n });\n const config = configResponse.data;\n if (config.status !== STORAGE_STATUS.SUCCESS) {\n showError(t('files_external', 'Unable to update this external storage config. {statusMessage}', {\n statusMessage: config?.statusMessage || '',\n }));\n return null;\n }\n // Success update config attribute\n showSuccess(t('files_external', 'New configuration successfully saved'));\n Vue.set(node.attributes, 'config', config);\n return true;\n}\nexport const ACTION_CREDENTIALS_EXTERNAL_STORAGE = 'credentials-external-storage';\nexport const action = new FileAction({\n id: ACTION_CREDENTIALS_EXTERNAL_STORAGE,\n displayName: () => t('files', 'Enter missing credentials'),\n iconSvgInline: () => LoginSvg,\n enabled: (nodes) => {\n // Only works on single node\n if (nodes.length !== 1) {\n return false;\n }\n const node = nodes[0];\n if (!isNodeExternalStorage(node)) {\n return false;\n }\n const config = (node.attributes?.config || {});\n if (isMissingAuthConfig(config)) {\n return true;\n }\n return false;\n },\n async exec(node) {\n const { login, password } = await new Promise(resolve => spawnDialog(defineAsyncComponent(() => import('../views/CredentialsDialog.vue')), {}, (args) => {\n resolve(args);\n }));\n if (login && password) {\n try {\n await setCredentials(node, login, password);\n showSuccess(t('files_external', 'Credentials successfully set'));\n }\n catch (error) {\n showError(t('files_external', 'Error while setting credentials: {error}', {\n error: error.message,\n }));\n }\n }\n return null;\n },\n // Before openFolderAction\n order: -1000,\n default: DefaultType.DEFAULT,\n inline: () => true,\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/sass-loader/dist/cjs.js!./fileEntryStatus.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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/sass-loader/dist/cjs.js!./fileEntryStatus.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { Folder, Permission } from '@nextcloud/files';\nimport { generateOcsUrl, generateRemoteUrl, generateUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { STORAGE_STATUS } from '../utils/credentialsUtils';\nexport const rootPath = `/files/${getCurrentUser()?.uid}`;\nconst entryToFolder = (ocsEntry) => {\n const path = (ocsEntry.path + '/' + ocsEntry.name).replace(/^\\//gm, '');\n return new Folder({\n id: ocsEntry.id,\n source: generateRemoteUrl('dav' + rootPath + '/' + path),\n root: rootPath,\n owner: getCurrentUser()?.uid || null,\n permissions: ocsEntry.config.status !== STORAGE_STATUS.SUCCESS\n ? Permission.NONE\n : ocsEntry?.permissions || Permission.READ,\n attributes: {\n displayName: path,\n ...ocsEntry,\n },\n });\n};\nexport const getContents = async () => {\n const response = await axios.get(generateOcsUrl('apps/files_external/api/v1/mounts'));\n const contents = response.data.ocs.data.map(entryToFolder);\n return {\n folder: new Folder({\n id: 0,\n source: generateRemoteUrl('dav' + rootPath),\n root: rootPath,\n owner: getCurrentUser()?.uid || null,\n permissions: Permission.READ,\n }),\n contents,\n };\n};\nexport const getStatus = function (id, global = true) {\n const type = global ? 'userglobalstorages' : 'userstorages';\n return axios.get(generateUrl(`apps/files_external/${type}/${id}?testOnly=false`));\n};\n","import { FileAction } from '@nextcloud/files';\nimport { showWarning } from '@nextcloud/dialogs';\nimport { translate as t } from '@nextcloud/l10n';\nimport AlertSvg from '@mdi/svg/svg/alert-circle.svg?raw';\nimport Vue from 'vue';\nimport '../css/fileEntryStatus.scss';\nimport { getStatus } from '../services/externalStorage';\nimport { isMissingAuthConfig, STORAGE_STATUS } from '../utils/credentialsUtils';\nimport { isNodeExternalStorage } from '../utils/externalStorageUtils';\nexport const action = new FileAction({\n id: 'check-external-storage',\n displayName: () => '',\n iconSvgInline: () => '',\n enabled: (nodes) => {\n return nodes.every(node => isNodeExternalStorage(node) === true);\n },\n exec: async () => null,\n /**\n * Use this function to check the storage availability\n * We then update the node attributes directly.\n *\n * @param node The node to render inline\n */\n async renderInline(node) {\n const span = document.createElement('span');\n span.className = 'files-list__row-status';\n span.innerHTML = t('files_external', 'Checking storage...');\n let config = null;\n getStatus(node.attributes.id, node.attributes.scope === 'system')\n .then(response => {\n config = response.data;\n Vue.set(node.attributes, 'config', config);\n if (config.status !== STORAGE_STATUS.SUCCESS) {\n throw new Error(config?.statusMessage || t('files_external', 'There was an error with this external storage.'));\n }\n span.remove();\n })\n .catch(error => {\n // If axios failed or if something else prevented\n // us from getting the config\n if (error.response && !config) {\n showWarning(t('files_external', 'We were unable to check the external storage {basename}', {\n basename: node.basename,\n }));\n }\n // Reset inline status\n span.innerHTML = '';\n // Checking if we really have an error\n const isWarning = !config ? false : isMissingAuthConfig(config);\n const overlay = document.createElement('span');\n overlay.classList.add(`files-list__row-status--${isWarning ? 'warning' : 'error'}`);\n // Only show an icon for errors, warning like missing credentials\n // have a dedicated inline action button\n if (!isWarning) {\n span.innerHTML = AlertSvg;\n span.title = error.message;\n }\n span.prepend(overlay);\n });\n return span;\n },\n order: 10,\n});\n","import { generateUrl } from '@nextcloud/router';\nimport { translate as t } from '@nextcloud/l10n';\nimport { FileAction, DefaultType } from '@nextcloud/files';\nimport { STORAGE_STATUS } from '../utils/credentialsUtils';\nimport { getCurrentUser } from '@nextcloud/auth';\nexport const action = new FileAction({\n id: 'open-in-files-external-storage',\n displayName: (nodes) => {\n const config = nodes?.[0]?.attributes?.config || { status: STORAGE_STATUS.INDETERMINATE };\n if (config.status !== STORAGE_STATUS.SUCCESS) {\n return t('files_external', 'Examine this faulty external storage configuration');\n }\n return t('files', 'Open in Files');\n },\n iconSvgInline: () => '',\n enabled: (nodes, view) => view.id === 'extstoragemounts',\n async exec(node) {\n const config = node.attributes.config;\n if (config?.status !== STORAGE_STATUS.SUCCESS) {\n window.OC.dialogs.confirm(t('files_external', 'There was an error with this external storage. Do you want to review this mount point config in the settings page?'), t('files_external', 'External mount error'), (redirect) => {\n if (redirect === true) {\n const scope = getCurrentUser()?.isAdmin ? 'admin' : 'user';\n window.location.href = generateUrl(`/settings/${scope}/externalstorages`);\n }\n });\n return null;\n }\n // Do not use fileid as we don't have that information\n // from the external storage api\n window.OCP.Files.Router.goToRoute(null, // use default route\n { view: 'files' }, { dir: node.path });\n return null;\n },\n // Before openFolderAction\n order: -1000,\n default: DefaultType.HIDDEN,\n});\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { loadState } from '@nextcloud/initial-state';\nimport { translate as t } from '@nextcloud/l10n';\nimport { View, getNavigation, Column, registerFileAction } from '@nextcloud/files';\nimport FolderNetworkSvg from '@mdi/svg/svg/folder-network.svg?raw';\nimport { action as enterCredentialsAction } from './actions/enterCredentialsAction';\nimport { action as inlineStorageCheckAction } from './actions/inlineStorageCheckAction';\nimport { action as openInFilesAction } from './actions/openInFilesAction';\nimport { getContents } from './services/externalStorage';\nconst allowUserMounting = loadState('files_external', 'allowUserMounting', false);\n// Register view\nconst Navigation = getNavigation();\nNavigation.register(new View({\n id: 'extstoragemounts',\n name: t('files_external', 'External storage'),\n caption: t('files_external', 'List of external storage.'),\n emptyCaption: allowUserMounting\n ? t('files_external', 'There is no external storage configured. You can configure them in your Personal settings.')\n : t('files_external', 'There is no external storage configured and you don\\'t have the permission to configure them.'),\n emptyTitle: t('files_external', 'No external storage'),\n icon: FolderNetworkSvg,\n order: 30,\n columns: [\n new Column({\n id: 'storage-type',\n title: t('files_external', 'Storage type'),\n render(node) {\n const backend = node.attributes?.backend || t('files_external', 'Unknown');\n const span = document.createElement('span');\n span.textContent = backend;\n return span;\n },\n }),\n new Column({\n id: 'scope',\n title: t('files_external', 'Scope'),\n render(node) {\n const span = document.createElement('span');\n let scope = t('files_external', 'Personal');\n if (node.attributes?.scope === 'system') {\n scope = t('files_external', 'System');\n }\n span.textContent = scope;\n return span;\n },\n }),\n ],\n getContents,\n}));\n// Register actions\nregisterFileAction(enterCredentialsAction);\nregisterFileAction(inlineStorageCheckAction);\nregisterFileAction(openInFilesAction);\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, `.files-list__row-status{display:flex;min-width:44px;justify-content:center;align-items:center;height:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.files-list__row-status svg{width:24px;height:24px}.files-list__row-status svg path{fill:currentColor}.files-list__row-status--error,.files-list__row-status--warning{position:absolute;display:block;top:0;left:0;right:0;bottom:0;opacity:.1;z-index:-1}.files-list__row-status--error{background:var(--color-error)}.files-list__row-status--warning{background:var(--color-warning)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_external/src/css/fileEntryStatus.scss\"],\"names\":[],\"mappings\":\"AAAA,wBACC,YAAA,CACA,cAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CAEA,4BACC,UAAA,CACA,WAAA,CAEA,iCACC,iBAAA,CAIF,gEAEC,iBAAA,CACA,aAAA,CACA,KAAA,CACA,MAAA,CACA,OAAA,CACA,QAAA,CACA,UAAA,CACA,UAAA,CAGD,+BACC,6BAAA,CAGD,iCACC,+BAAA\",\"sourcesContent\":[\".files-list__row-status {\\n\\tdisplay: flex;\\n\\tmin-width: 44px;\\n\\tjustify-content: center;\\n\\talign-items: center;\\n\\theight: 100%;\\n\\ttext-overflow: ellipsis;\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\n\\tsvg {\\n\\t\\twidth: 24px;\\n\\t\\theight: 24px;\\n\\n\\t\\tpath {\\n\\t\\t\\tfill: currentColor;\\n\\t\\t}\\n\\t}\\n\\n\\t&--error,\\n\\t&--warning {\\n\\t\\tposition: absolute;\\n\\t\\tdisplay: block;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\tright: 0;\\n\\t\\tbottom: 0;\\n\\t\\topacity: .1;\\n\\t\\tz-index: -1;\\n\\t}\\n\\n\\t&--error {\\n\\t\\tbackground: var(--color-error);\\n\\t}\\n\\n\\t&--warning {\\n\\t\\tbackground: var(--color-warning);\\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};","__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 \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"267\":\"5a759edb26e45aee8685\",\"717\":\"c7b61937e31b7fb31d87\",\"3916\":\"13695d4f16dbb9337d86\",\"7367\":\"1378e249b074821c3454\",\"8066\":\"9369cd9b99b2eb542565\",\"8645\":\"c63ca687371a1a78dda9\"}[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 = 1873;","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(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = 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\t1873: 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 = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\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__(26436)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","STORAGE_STATUS","isMissingAuthConfig","config","status","SUCCESS","userProvided","authMechanism","isNodeExternalStorage","node","type","FileType","File","attributes","scope","backend","addPasswordConfirmationInterceptors","axios","action","FileAction","id","displayName","t","iconSvgInline","enabled","nodes","_node$attributes","length","exec","login","password","Promise","resolve","spawnDialog","defineAsyncComponent","args","async","request","method","url","generateUrl","confirmPassword","PwdConfirmationMode","Strict","data","backendOptions","user","showError","statusMessage","showSuccess","Vue","setCredentials","error","message","order","default","DefaultType","DEFAULT","inline","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","rootPath","concat","_getCurrentUser","getCurrentUser","uid","entryToFolder","ocsEntry","_getCurrentUser2","path","name","replace","Folder","source","generateRemoteUrl","root","owner","permissions","Permission","NONE","READ","every","renderInline","span","document","createElement","className","innerHTML","arguments","undefined","get","getStatus","then","response","_config","Error","remove","catch","showWarning","basename","isWarning","overlay","classList","add","title","prepend","_nodes$","INDETERMINATE","view","window","OC","dialogs","confirm","redirect","isAdmin","location","href","OCP","Files","Router","goToRoute","dir","HIDDEN","allowUserMounting","loadState","getNavigation","register","View","caption","emptyCaption","emptyTitle","icon","columns","Column","render","textContent","_node$attributes2","getContents","_getCurrentUser3","contents","generateOcsUrl","ocs","map","folder","registerFileAction","enterCredentialsAction","inlineStorageCheckAction","openInFilesAction","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","all","reduce","promises","u","g","globalThis","this","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","currentScript","tagName","toUpperCase","test","p","b","baseURI","self","installedChunks","installedChunkData","promise","reject","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"files_external-init.js?v=570096ea70bd058741d0","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files_external/src/utils/credentialsUtils.ts","webpack:///nextcloud/apps/files_external/src/utils/externalStorageUtils.ts","webpack:///nextcloud/apps/files_external/src/actions/enterCredentialsAction.ts","webpack://nextcloud/./apps/files_external/src/css/fileEntryStatus.scss?3c5c","webpack:///nextcloud/apps/files_external/src/services/externalStorage.ts","webpack:///nextcloud/apps/files_external/src/actions/inlineStorageCheckAction.ts","webpack:///nextcloud/apps/files_external/src/actions/openInFilesAction.ts","webpack:///nextcloud/apps/files_external/src/init.ts","webpack:///nextcloud/apps/files_external/src/css/fileEntryStatus.scss","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 = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\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\tscript.timeout = 120;\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};","// @see https://github.com/nextcloud/server/blob/ac2bc2384efe3c15ff987b87a7432bc60d545c67/lib/public/Files/StorageNotAvailableException.php#L41\nexport var STORAGE_STATUS;\n(function (STORAGE_STATUS) {\n STORAGE_STATUS[STORAGE_STATUS[\"SUCCESS\"] = 0] = \"SUCCESS\";\n STORAGE_STATUS[STORAGE_STATUS[\"ERROR\"] = 1] = \"ERROR\";\n STORAGE_STATUS[STORAGE_STATUS[\"INDETERMINATE\"] = 2] = \"INDETERMINATE\";\n STORAGE_STATUS[STORAGE_STATUS[\"INCOMPLETE_CONF\"] = 3] = \"INCOMPLETE_CONF\";\n STORAGE_STATUS[STORAGE_STATUS[\"UNAUTHORIZED\"] = 4] = \"UNAUTHORIZED\";\n STORAGE_STATUS[STORAGE_STATUS[\"TIMEOUT\"] = 5] = \"TIMEOUT\";\n STORAGE_STATUS[STORAGE_STATUS[\"NETWORK_ERROR\"] = 6] = \"NETWORK_ERROR\";\n})(STORAGE_STATUS || (STORAGE_STATUS = {}));\nexport const isMissingAuthConfig = function (config) {\n // If we don't know the status, assume it is ok\n if (!config.status || config.status === STORAGE_STATUS.SUCCESS) {\n return false;\n }\n return config.userProvided || config.authMechanism === 'password::global::user';\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { FileType, Node } from '@nextcloud/files';\nexport const isNodeExternalStorage = function (node) {\n // Not a folder, not a storage\n if (node.type === FileType.File) {\n return false;\n }\n // No backend or scope, not a storage\n const attributes = node.attributes;\n if (!attributes.scope || !attributes.backend) {\n return false;\n }\n // Specific markers that we're sure are ext storage only\n return attributes.scope === 'personal' || attributes.scope === 'system';\n};\n","import { addPasswordConfirmationInterceptors, PwdConfirmationMode } from '@nextcloud/password-confirmation';\nimport { generateUrl } from '@nextcloud/router';\nimport { showError, showSuccess, spawnDialog } from '@nextcloud/dialogs';\nimport { translate as t } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport LoginSvg from '@mdi/svg/svg/login.svg?raw';\nimport Vue, { defineAsyncComponent } from 'vue';\nimport { FileAction, DefaultType } from '@nextcloud/files';\nimport { STORAGE_STATUS, isMissingAuthConfig } from '../utils/credentialsUtils';\nimport { isNodeExternalStorage } from '../utils/externalStorageUtils';\n// Add password confirmation interceptors as\n// the backend requires the user to confirm their password\naddPasswordConfirmationInterceptors(axios);\n/**\n * Set credentials for external storage\n *\n * @param node The node for which to set the credentials\n * @param login The username\n * @param password The password\n */\nasync function setCredentials(node, login, password) {\n const configResponse = await axios.request({\n method: 'PUT',\n url: generateUrl('apps/files_external/userglobalstorages/{id}', { id: node.attributes.id }),\n confirmPassword: PwdConfirmationMode.Strict,\n data: {\n backendOptions: { user: login, password },\n },\n });\n const config = configResponse.data;\n if (config.status !== STORAGE_STATUS.SUCCESS) {\n showError(t('files_external', 'Unable to update this external storage config. {statusMessage}', {\n statusMessage: config?.statusMessage || '',\n }));\n return null;\n }\n // Success update config attribute\n showSuccess(t('files_external', 'New configuration successfully saved'));\n Vue.set(node.attributes, 'config', config);\n return true;\n}\nexport const ACTION_CREDENTIALS_EXTERNAL_STORAGE = 'credentials-external-storage';\nexport const action = new FileAction({\n id: ACTION_CREDENTIALS_EXTERNAL_STORAGE,\n displayName: () => t('files', 'Enter missing credentials'),\n iconSvgInline: () => LoginSvg,\n enabled: (nodes) => {\n // Only works on single node\n if (nodes.length !== 1) {\n return false;\n }\n const node = nodes[0];\n if (!isNodeExternalStorage(node)) {\n return false;\n }\n const config = (node.attributes?.config || {});\n if (isMissingAuthConfig(config)) {\n return true;\n }\n return false;\n },\n async exec(node) {\n const { login, password } = await new Promise(resolve => spawnDialog(defineAsyncComponent(() => import('../views/CredentialsDialog.vue')), {}, (args) => {\n resolve(args);\n }));\n if (login && password) {\n try {\n await setCredentials(node, login, password);\n showSuccess(t('files_external', 'Credentials successfully set'));\n }\n catch (error) {\n showError(t('files_external', 'Error while setting credentials: {error}', {\n error: error.message,\n }));\n }\n }\n return null;\n },\n // Before openFolderAction\n order: -1000,\n default: DefaultType.DEFAULT,\n inline: () => true,\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/sass-loader/dist/cjs.js!./fileEntryStatus.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \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/sass-loader/dist/cjs.js!./fileEntryStatus.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { Folder, Permission } from '@nextcloud/files';\nimport { generateOcsUrl, generateRemoteUrl, generateUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { STORAGE_STATUS } from '../utils/credentialsUtils';\nexport const rootPath = `/files/${getCurrentUser()?.uid}`;\nconst entryToFolder = (ocsEntry) => {\n const path = (ocsEntry.path + '/' + ocsEntry.name).replace(/^\\//gm, '');\n return new Folder({\n id: ocsEntry.id,\n source: generateRemoteUrl('dav' + rootPath + '/' + path),\n root: rootPath,\n owner: getCurrentUser()?.uid || null,\n permissions: ocsEntry.config.status !== STORAGE_STATUS.SUCCESS\n ? Permission.NONE\n : ocsEntry?.permissions || Permission.READ,\n attributes: {\n displayName: path,\n ...ocsEntry,\n },\n });\n};\nexport const getContents = async () => {\n const response = await axios.get(generateOcsUrl('apps/files_external/api/v1/mounts'));\n const contents = response.data.ocs.data.map(entryToFolder);\n return {\n folder: new Folder({\n id: 0,\n source: generateRemoteUrl('dav' + rootPath),\n root: rootPath,\n owner: getCurrentUser()?.uid || null,\n permissions: Permission.READ,\n }),\n contents,\n };\n};\nexport const getStatus = function (id, global = true) {\n const type = global ? 'userglobalstorages' : 'userstorages';\n return axios.get(generateUrl(`apps/files_external/${type}/${id}?testOnly=false`));\n};\n","import { FileAction } from '@nextcloud/files';\nimport { showWarning } from '@nextcloud/dialogs';\nimport { translate as t } from '@nextcloud/l10n';\nimport AlertSvg from '@mdi/svg/svg/alert-circle.svg?raw';\nimport Vue from 'vue';\nimport '../css/fileEntryStatus.scss';\nimport { getStatus } from '../services/externalStorage';\nimport { isMissingAuthConfig, STORAGE_STATUS } from '../utils/credentialsUtils';\nimport { isNodeExternalStorage } from '../utils/externalStorageUtils';\nexport const action = new FileAction({\n id: 'check-external-storage',\n displayName: () => '',\n iconSvgInline: () => '',\n enabled: (nodes) => {\n return nodes.every(node => isNodeExternalStorage(node) === true);\n },\n exec: async () => null,\n /**\n * Use this function to check the storage availability\n * We then update the node attributes directly.\n *\n * @param node The node to render inline\n */\n async renderInline(node) {\n const span = document.createElement('span');\n span.className = 'files-list__row-status';\n span.innerHTML = t('files_external', 'Checking storage …');\n let config = null;\n getStatus(node.attributes.id, node.attributes.scope === 'system')\n .then(response => {\n config = response.data;\n Vue.set(node.attributes, 'config', config);\n if (config.status !== STORAGE_STATUS.SUCCESS) {\n throw new Error(config?.statusMessage || t('files_external', 'There was an error with this external storage.'));\n }\n span.remove();\n })\n .catch(error => {\n // If axios failed or if something else prevented\n // us from getting the config\n if (error.response && !config) {\n showWarning(t('files_external', 'We were unable to check the external storage {basename}', {\n basename: node.basename,\n }));\n }\n // Reset inline status\n span.innerHTML = '';\n // Checking if we really have an error\n const isWarning = !config ? false : isMissingAuthConfig(config);\n const overlay = document.createElement('span');\n overlay.classList.add(`files-list__row-status--${isWarning ? 'warning' : 'error'}`);\n // Only show an icon for errors, warning like missing credentials\n // have a dedicated inline action button\n if (!isWarning) {\n span.innerHTML = AlertSvg;\n span.title = error.message;\n }\n span.prepend(overlay);\n });\n return span;\n },\n order: 10,\n});\n","import { generateUrl } from '@nextcloud/router';\nimport { translate as t } from '@nextcloud/l10n';\nimport { FileAction, DefaultType } from '@nextcloud/files';\nimport { STORAGE_STATUS } from '../utils/credentialsUtils';\nimport { getCurrentUser } from '@nextcloud/auth';\nexport const action = new FileAction({\n id: 'open-in-files-external-storage',\n displayName: (nodes) => {\n const config = nodes?.[0]?.attributes?.config || { status: STORAGE_STATUS.INDETERMINATE };\n if (config.status !== STORAGE_STATUS.SUCCESS) {\n return t('files_external', 'Examine this faulty external storage configuration');\n }\n return t('files', 'Open in Files');\n },\n iconSvgInline: () => '',\n enabled: (nodes, view) => view.id === 'extstoragemounts',\n async exec(node) {\n const config = node.attributes.config;\n if (config?.status !== STORAGE_STATUS.SUCCESS) {\n window.OC.dialogs.confirm(t('files_external', 'There was an error with this external storage. Do you want to review this mount point config in the settings page?'), t('files_external', 'External mount error'), (redirect) => {\n if (redirect === true) {\n const scope = getCurrentUser()?.isAdmin ? 'admin' : 'user';\n window.location.href = generateUrl(`/settings/${scope}/externalstorages`);\n }\n });\n return null;\n }\n // Do not use fileid as we don't have that information\n // from the external storage api\n window.OCP.Files.Router.goToRoute(null, // use default route\n { view: 'files' }, { dir: node.path });\n return null;\n },\n // Before openFolderAction\n order: -1000,\n default: DefaultType.HIDDEN,\n});\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { loadState } from '@nextcloud/initial-state';\nimport { translate as t } from '@nextcloud/l10n';\nimport { View, getNavigation, Column, registerFileAction } from '@nextcloud/files';\nimport FolderNetworkSvg from '@mdi/svg/svg/folder-network.svg?raw';\nimport { action as enterCredentialsAction } from './actions/enterCredentialsAction';\nimport { action as inlineStorageCheckAction } from './actions/inlineStorageCheckAction';\nimport { action as openInFilesAction } from './actions/openInFilesAction';\nimport { getContents } from './services/externalStorage';\nconst allowUserMounting = loadState('files_external', 'allowUserMounting', false);\n// Register view\nconst Navigation = getNavigation();\nNavigation.register(new View({\n id: 'extstoragemounts',\n name: t('files_external', 'External storage'),\n caption: t('files_external', 'List of external storage.'),\n emptyCaption: allowUserMounting\n ? t('files_external', 'There is no external storage configured. You can configure them in your Personal settings.')\n : t('files_external', 'There is no external storage configured and you don\\'t have the permission to configure them.'),\n emptyTitle: t('files_external', 'No external storage'),\n icon: FolderNetworkSvg,\n order: 30,\n columns: [\n new Column({\n id: 'storage-type',\n title: t('files_external', 'Storage type'),\n render(node) {\n const backend = node.attributes?.backend || t('files_external', 'Unknown');\n const span = document.createElement('span');\n span.textContent = backend;\n return span;\n },\n }),\n new Column({\n id: 'scope',\n title: t('files_external', 'Scope'),\n render(node) {\n const span = document.createElement('span');\n let scope = t('files_external', 'Personal');\n if (node.attributes?.scope === 'system') {\n scope = t('files_external', 'System');\n }\n span.textContent = scope;\n return span;\n },\n }),\n ],\n getContents,\n}));\n// Register actions\nregisterFileAction(enterCredentialsAction);\nregisterFileAction(inlineStorageCheckAction);\nregisterFileAction(openInFilesAction);\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, `.files-list__row-status{display:flex;min-width:44px;justify-content:center;align-items:center;height:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.files-list__row-status svg{width:24px;height:24px}.files-list__row-status svg path{fill:currentColor}.files-list__row-status--error,.files-list__row-status--warning{position:absolute;display:block;top:0;left:0;right:0;bottom:0;opacity:.1;z-index:-1}.files-list__row-status--error{background:var(--color-error)}.files-list__row-status--warning{background:var(--color-warning)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_external/src/css/fileEntryStatus.scss\"],\"names\":[],\"mappings\":\"AAAA,wBACC,YAAA,CACA,cAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CAEA,4BACC,UAAA,CACA,WAAA,CAEA,iCACC,iBAAA,CAIF,gEAEC,iBAAA,CACA,aAAA,CACA,KAAA,CACA,MAAA,CACA,OAAA,CACA,QAAA,CACA,UAAA,CACA,UAAA,CAGD,+BACC,6BAAA,CAGD,iCACC,+BAAA\",\"sourcesContent\":[\".files-list__row-status {\\n\\tdisplay: flex;\\n\\tmin-width: 44px;\\n\\tjustify-content: center;\\n\\talign-items: center;\\n\\theight: 100%;\\n\\ttext-overflow: ellipsis;\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\n\\tsvg {\\n\\t\\twidth: 24px;\\n\\t\\theight: 24px;\\n\\n\\t\\tpath {\\n\\t\\t\\tfill: currentColor;\\n\\t\\t}\\n\\t}\\n\\n\\t&--error,\\n\\t&--warning {\\n\\t\\tposition: absolute;\\n\\t\\tdisplay: block;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\tright: 0;\\n\\t\\tbottom: 0;\\n\\t\\topacity: .1;\\n\\t\\tz-index: -1;\\n\\t}\\n\\n\\t&--error {\\n\\t\\tbackground: var(--color-error);\\n\\t}\\n\\n\\t&--warning {\\n\\t\\tbackground: var(--color-warning);\\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};","__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 \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"267\":\"5a759edb26e45aee8685\",\"717\":\"c7b61937e31b7fb31d87\",\"3916\":\"13695d4f16dbb9337d86\",\"7367\":\"1378e249b074821c3454\",\"8066\":\"9369cd9b99b2eb542565\",\"8645\":\"c63ca687371a1a78dda9\"}[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 = 1873;","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(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = 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\t1873: 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 = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\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__(26436)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","STORAGE_STATUS","isMissingAuthConfig","config","status","SUCCESS","userProvided","authMechanism","isNodeExternalStorage","node","type","FileType","File","attributes","scope","backend","addPasswordConfirmationInterceptors","axios","action","FileAction","id","displayName","t","iconSvgInline","enabled","nodes","_node$attributes","length","exec","login","password","Promise","resolve","spawnDialog","defineAsyncComponent","args","async","request","method","url","generateUrl","confirmPassword","PwdConfirmationMode","Strict","data","backendOptions","user","showError","statusMessage","showSuccess","Vue","setCredentials","error","message","order","default","DefaultType","DEFAULT","inline","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","rootPath","concat","_getCurrentUser","getCurrentUser","uid","entryToFolder","ocsEntry","_getCurrentUser2","path","name","replace","Folder","source","generateRemoteUrl","root","owner","permissions","Permission","NONE","READ","every","renderInline","span","document","createElement","className","innerHTML","arguments","undefined","get","getStatus","then","response","_config","Error","remove","catch","showWarning","basename","isWarning","overlay","classList","add","title","prepend","_nodes$","INDETERMINATE","view","window","OC","dialogs","confirm","redirect","isAdmin","location","href","OCP","Files","Router","goToRoute","dir","HIDDEN","allowUserMounting","loadState","getNavigation","register","View","caption","emptyCaption","emptyTitle","icon","columns","Column","render","textContent","_node$attributes2","getContents","_getCurrentUser3","contents","generateOcsUrl","ocs","map","folder","registerFileAction","enterCredentialsAction","inlineStorageCheckAction","openInFilesAction","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","all","reduce","promises","u","g","globalThis","this","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","currentScript","tagName","toUpperCase","test","p","b","baseURI","self","installedChunks","installedChunkData","promise","reject","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file