diff --git a/apps/comments/src/comments-activity-tab.ts b/apps/comments/src/comments-activity-tab.ts index 1c6eef75b8e86..c368236052f86 100644 --- a/apps/comments/src/comments-activity-tab.ts +++ b/apps/comments/src/comments-activity-tab.ts @@ -1,8 +1,10 @@ -/** +/*! * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ +import type { INode } from '@nextcloud/files' + import moment from '@nextcloud/moment' import { createPinia, PiniaVuePlugin } from 'pinia' import Vue, { type ComponentPublicInstance } from 'vue' @@ -19,7 +21,7 @@ let ActivityTabPluginInstance */ export function registerCommentsPlugins() { window.OCA.Activity.registerSidebarAction({ - mount: async (el, { fileInfo, reload }) => { + mount: async (el: HTMLElement, { node, reload }: { node: INode, reload: () => void }) => { const pinia = createPinia() if (!ActivityTabPluginView) { @@ -32,10 +34,10 @@ export function registerCommentsPlugins() { pinia, propsData: { reloadCallback: reload, - resourceId: fileInfo.id, + resourceId: node.fileid, }, }) - logger.info('Comments plugin mounted in Activity sidebar action', { fileInfo }) + logger.info('Comments plugin mounted in Activity sidebar action', { node }) }, unmount: () => { // destroy previous instance if available @@ -45,9 +47,15 @@ export function registerCommentsPlugins() { }, }) - window.OCA.Activity.registerSidebarEntries(async ({ fileInfo, limit, offset }) => { - const { data: comments } = await getComments({ resourceType: 'files', resourceId: fileInfo.id }, { limit, offset }) - logger.debug('Loaded comments', { fileInfo, comments }) + window.OCA.Activity.registerSidebarEntries(async ({ node, limit, offset }: { node: INode, limit?: number, offset?: number }) => { + const { data: comments } = await getComments( + { resourceType: 'files', resourceId: node.fileid }, + { + limit, + offset: offset ?? 0, + }, + ) + logger.debug('Loaded comments', { node, comments }) const { default: CommentView } = await import('./views/ActivityCommentEntry.vue') // @ts-expect-error Types are broken for Vue2 const CommentsViewObject = Vue.extend(CommentView) @@ -62,7 +70,7 @@ export function registerCommentsPlugins() { el: element, propsData: { comment, - resourceId: fileInfo.id, + resourceId: node.fileid, reloadCallback: reload, }, }) diff --git a/dist/comments-comments-tab.js b/dist/comments-comments-tab.js index c335f58ca580b..93057a004c902 100644 --- a/dist/comments-comments-tab.js +++ b/dist/comments-comments-tab.js @@ -1,2 +1,2 @@ -(()=>{var e,n,r,o={7815(t,e,n){"use strict";n.d(e,{K:()=>o});var r=n(90176);function o(t){try{const[e]=t.multistatus.response,{propstat:{prop:{"quota-used-bytes":n,"quota-available-bytes":o}}}=e;return void 0!==n&&void 0!==o?{used:parseInt(String(n),10),available:(0,r.i5)(o)}:null}catch(t){}return null}},10396(e,n,r){"use strict";r.d(n,{A:()=>u});var o=r(85168),s=r(10810),a=r(96689),i=r(80486),c=r(10767),l=r(70395),d=r(36564);const u={props:{id:{type:Number,default:null},message:{type:String,default:""},resourceId:{type:[String,Number],required:!0},resourceType:{type:String,default:"files"}},data:()=>({deleted:!1,editing:!1,loading:!1}),computed:{...(0,s.n2)(d.h)},methods:{onEdit(){this.editing=!0},onEditCancel(){this.editing=!1,this.updateLocalMessage(this.message)},async onEditComment(e){this.loading=!0;try{await(0,c.A)(this.resourceType,this.resourceId,this.id,e),a.A.debug("Comment edited",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id,message:e}),this.$emit("update:message",e),this.editing=!1}catch(e){(0,o.Qg)(t("comments","An error occurred while trying to edit the comment")),a.A.error("An error occurred while trying to edit the comment",{error:e})}finally{this.loading=!1}},onDeleteWithUndo(){this.$emit("delete"),this.deleted=!0,this.deletedCommentLimboStore.addId(this.id);const e=setTimeout(this.onDelete,o.Br);(0,o._h)(t("comments","Comment deleted"),()=>{clearTimeout(e),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)})},async onDelete(){try{await(0,i.A)(this.resourceType,this.resourceId,this.id),a.A.debug("Comment deleted",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id}),this.$emit("delete",this.id)}catch(e){(0,o.Qg)(t("comments","An error occurred while trying to delete the comment")),a.A.error("An error occurred while trying to delete the comment",{error:e}),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)}},async onNewComment(e){this.loading=!0;try{const t=await(0,l.A)(this.resourceType,this.resourceId,e);a.A.debug("New comment posted",{resourceType:this.resourceType,resourceId:this.resourceId,newComment:t}),this.$emit("new",t),this.$emit("update:message",""),this.localMessage=""}catch(e){(0,o.Qg)(t("comments","An error occurred while trying to create the comment")),a.A.error("An error occurred while trying to create the comment",{error:e})}finally{this.loading=!1}}}}},10524(t,e,n){"use strict";n.d(e,{p:()=>i});var r=n(85394),o=n(36236),s=n(89062),a=n(29999);async function i(t,e,n={}){const i=(0,s.H)({url:(0,r.oq)(t.remoteURL,(0,o.O0)(e)),method:"OPTIONS"},t,n),c=await(0,s.E)(i,t);try{(0,a.HT)(t,c)}catch(t){throw t}return{compliance:(c.headers.get("DAV")??"").split(",").map(t=>t.trim()),server:c.headers.get("Server")??""}}},10767(t,e,n){"use strict";n.d(e,{A:()=>o});var r=n(35550);async function o(t,e,n,o){const s=["",t,e,n].join("/");return await r.A.customRequest(s,{method:"PROPPATCH",data:`\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${o}\n\t\t\t\t\n\t\t\t\n\t\t\t`})}},11083(t,e,n){var r=n(11568),o=n(88835),s=t.exports;for(var a in r)r.hasOwnProperty(a)&&(s[a]=r[a]);function i(t){if("string"==typeof t&&(t=o.parse(t)),t.protocol||(t.protocol="https:"),"https:"!==t.protocol)throw new Error('Protocol "'+t.protocol+'" not supported. Expected "https:"');return t}s.request=function(t,e){return t=i(t),r.request.call(this,t,e)},s.get=function(t,e){return t=i(t),r.get.call(this,t,e)}},11568(t,e,n){var r=n(55537),o=n(6917),s=n(57510),a=n(86866),i=n(88835),c=e;c.request=function(t,e){t="string"==typeof t?i.parse(t):s(t);var n=-1===globalThis.location.protocol.search(/^https?:$/)?"http:":"",o=t.protocol||n,a=t.hostname||t.host,c=t.port,l=t.path||"/";a&&-1!==a.indexOf(":")&&(a="["+a+"]"),t.url=(a?o+"//"+a:"")+(c?":"+c:"")+l,t.method=(t.method||"GET").toUpperCase(),t.headers=t.headers||{};var d=new r(t);return e&&d.on("response",e),d},c.get=function(t,e){var n=c.request(t,e);return n.end(),n},c.ClientRequest=r,c.IncomingMessage=o.IncomingMessage,c.Agent=function(){},c.Agent.defaultMaxSockets=4,c.globalAgent=new c.Agent,c.STATUS_CODES=a,c.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]},15340(){},17003(t,e,n){"use strict";n.d(e,{e:()=>o});var r=n(63814);function o(){return(0,r.dC)("dav/comments")}},17601(t,e,n){"use strict";n.d(e,{G:()=>a});var r=n(93028),o=n(11163),s=n(78049);class a extends Error{constructor(t,e){const n=[...arguments],{options:r,shortMessage:a}=(0,s.W)(n);let i=a;if(r.cause&&(i=`${i}: ${r.cause.message}`),super(i),this.message=i,r.name&&"string"==typeof r.name?this.name=r.name:this.name=(0,o.z)(),r.cause&&Object.defineProperty(this,"_cause",{value:r.cause}),Object.defineProperty(this,"_info",{value:{}}),r.info&&"object"==typeof r.info&&Object.assign(this._info,r.info),Error.captureStackTrace){const t=r.constructorOpt||this.constructor;Error.captureStackTrace(this,t)}}static cause(t){return(0,r.t)(t),t._cause&&(0,r.b)(t._cause)?t._cause:null}static fullStack(t){(0,r.t)(t);const e=a.cause(t);return e?`${t.stack}\ncaused by: ${a.fullStack(e)}`:t.stack??""}static info(t){(0,r.t)(t);const e={},n=a.cause(t);return n&&Object.assign(e,a.info(n)),t._info&&Object.assign(e,t._info),e}toString(){let t=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(t=`${t}: ${this.message}`),t}}},17658(t,e,n){"use strict";n.d(e,{F:()=>p,b:()=>h});var r=n(42294),o=n(85394),s=n(36236),a=n(57221),i=n(22921),c=n(89062),l=n(29999),d=n(38374),u=n(62045).hp;const m=t=>t;async function p(t,e,n={}){const{format:a="binary"}=n;if("binary"!==a&&"text"!==a)throw new r.GU({info:{code:d.O4.InvalidOutputFormat}},`Invalid output format: ${a}`);return"text"===a?async function(t,e,n={}){const r=(0,c.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"GET",headers:{Accept:"text/plain"},transformResponse:[m]},t,n),a=await(0,c.E)(r,t);(0,l.HT)(t,a);const i=await a.text();return(0,l.hq)(a,i,n.details)}(t,e,n):async function(t,e,n={}){const r=(0,c.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"GET"},t,n),a=await(0,c.E)(r,t);let d;return(0,l.HT)(t,a),d=(0,i.HZ)()||(0,i.lV)()?await a.arrayBuffer():u.from(await a.arrayBuffer()),(0,l.hq)(a,d,n.details)}(t,e,n)}function h(t,e){let n=(0,o.oq)(t.remoteURL,(0,s.O0)(e));const i=/^https:/i.test(n)?"https":"http";switch(t.authType){case d.hT.None:break;case d.hT.Password:{const e=t.headers.Authorization.replace(/^Basic /i,"").trim(),r=(0,a.Ey)(e);n=n.replace(/^https?:\/\//,`${i}://${r}@`);break}default:throw new r.GU({info:{code:d.O4.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return n}},19396(t,e,n){"use strict";n.d(e,{V:()=>o});var r=n(57221);function o(t,e){return`Basic ${(0,r.nk)(`${t}:${e}`)}`}},22408(t,e,n){"use strict";n.d(e,{A:()=>i});var r=n(71354),o=n.n(r),s=n(76314),a=n.n(s)()(o());a.push([t.id,".comment[data-v-70317f94]{display:flex;gap:8px;padding:5px 10px}.comment__side[data-v-70317f94]{display:flex;align-items:flex-start;padding-top:6px}.comment__body[data-v-70317f94]{display:flex;flex-grow:1;flex-direction:column;container-type:inline-size}.comment__header[data-v-70317f94]{display:flex;align-items:center;min-height:44px}.comment__actions[data-v-70317f94]{margin-inline-start:10px !important}.comment__author[data-v-70317f94]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-70317f94],.comment__timestamp[data-v-70317f94]{margin-inline-start:auto;text-align:end;white-space:nowrap;color:var(--color-text-maxcontrast)}.comment__editor-group[data-v-70317f94]{position:relative}.comment__editor-description[data-v-70317f94]{color:var(--color-text-maxcontrast);padding-block:var(--default-grid-baseline)}.comment__submit[data-v-70317f94]{position:absolute !important;bottom:5px;inset-inline-end:0}.comment__message[data-v-70317f94]{white-space:pre-wrap;word-break:normal;max-height:200px;overflow:auto;scrollbar-gutter:stable;scrollbar-width:thin;margin-top:-6px}.comment__message--expanded[data-v-70317f94]{max-height:none;overflow:visible}.comment__message[data-v-70317f94] img{max-width:100%;height:auto}.rich-contenteditable__input[data-v-70317f94]{min-height:44px;margin:0;padding:10px}","",{version:3,sources:["webpack://./apps/comments/src/components/Comment.vue"],names:[],mappings:"AAKA,0BACC,YAAA,CACA,OAAA,CACA,gBAAA,CAEA,gCACC,YAAA,CACA,sBAAA,CACA,eAAA,CAGD,gCACC,YAAA,CACA,WAAA,CACA,qBAAA,CACA,0BAAA,CAGD,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAGD,mCACC,mCAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,wBAAA,CACA,cAAA,CACA,kBAAA,CACA,mCAAA,CAGD,wCACC,iBAAA,CAGD,8CACC,mCAAA,CACA,0CAAA,CAGD,kCACC,4BAAA,CACA,UAAA,CACA,kBAAA,CAGD,mCACC,oBAAA,CACA,iBAAA,CACA,gBAAA,CACA,aAAA,CACA,uBAAA,CACA,oBAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAED,uCACC,cAAA,CACA,WAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YAlFiB",sourcesContent:['\n@use "sass:math";\n\n$comment-padding: 10px;\n\n.comment {\n\tdisplay: flex;\n\tgap: 8px;\n\tpadding: 5px $comment-padding;\n\n\t&__side {\n\t\tdisplay: flex;\n\t\talign-items: flex-start;\n\t\tpadding-top: 6px;\n\t}\n\n\t&__body {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\tflex-direction: column;\n\t\tcontainer-type: inline-size;\n\t}\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tmin-height: 44px;\n\t}\n\n\t&__actions {\n\t\tmargin-inline-start: $comment-padding !important;\n\t}\n\n\t&__author {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&_loading,\n\t&__timestamp {\n\t\tmargin-inline-start: auto;\n\t\ttext-align: end;\n\t\twhite-space: nowrap;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__editor-group {\n\t\tposition: relative;\n\t}\n\n\t&__editor-description {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tpadding-block: var(--default-grid-baseline);\n\t}\n\n\t&__submit {\n\t\tposition: absolute !important;\n\t\tbottom: 5px;\n\t\tinset-inline-end: 0;\n\t}\n\n\t&__message {\n\t\twhite-space: pre-wrap;\n\t\tword-break: normal;\n\t\tmax-height: 200px;\n\t\toverflow: auto;\n\t\tscrollbar-gutter: stable;\n\t\tscrollbar-width: thin;\n\t\tmargin-top: -6px;\n\t\t&--expanded {\n\t\t\tmax-height: none;\n\t\t\toverflow: visible;\n\t\t}\n\t\t:deep(img) {\n\t\t\tmax-width: 100%;\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.rich-contenteditable__input {\n\tmin-height: 44px;\n\tmargin: 0;\n\tpadding: $comment-padding;\n}\n\n'],sourceRoot:""}]);const i=a},27562(t,e,n){"use strict";n.d(e,{A:()=>o,o:()=>a});var r=n(14113);function o(t){return new r.XMLBuilder({attributeNamePrefix:"@_",format:!0,ignoreAttributes:!1,suppressEmptyNode:!0}).build(s({lockinfo:{"@_xmlns:d":"DAV:",lockscope:{exclusive:{}},locktype:{write:{}},owner:{href:t}}},"d"))}function s(t,e){const n={...t};for(const t in n)n.hasOwnProperty(t)&&(n[t]&&"object"==typeof n[t]&&-1===t.indexOf(":")?(n[`${e}:${t}`]=s(n[t],e),delete n[t]):!1===/^@_/.test(t)&&(n[`${e}:${t}`]=n[t],delete n[t]));return n}function a(t){return new r.XMLParser({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(t)}},28161(t,e,n){"use strict";n.d(e,{c:()=>c});var r=n(85394),o=n(36236),s=n(89062),a=n(29999),i=n(84830);async function c(t,e,n={}){if(!0===n.recursive)return async function(t,e,n={}){const r=(0,o.xi)((0,o.qb)(e));r.sort((t,e)=>t.length>e.length?1:e.length>t.length?-1:0);let s=!1;for(const o of r)if(s)await c(t,o,{...n,recursive:!1});else try{if("directory"!==(await(0,i.z)(t,o)).type)throw new Error(`Path includes a file: ${e}`)}catch(e){if(404!==e.status)throw e;s=!0,await c(t,o,{...n,recursive:!1})}}(t,e,n);const l=(0,s.H)({url:(0,r.oq)(t.remoteURL,(u=(0,o.O0)(e),u.endsWith("/")?u:u+"/")),method:"MKCOL"},t,n),d=await(0,s.E)(l,t);var u;(0,a.HT)(t,d)}},29369(t,e,n){"use strict";n.d(e,{A:()=>y});var r=n(21777),o=n(53334),s=n(10810),a=n(57505),i=n(24764),c=n(15502),l=n(41944),d=n(74095),u=n(4604),m=n(88289),p=n(77764),h=n(33691),f=n(66001),A=n(16502),g=n(37793),E=n(10396),C=n(36564);const y={name:"Comment",components:{IconArrowRight:h.A,IconClose:f.A,IconTrashCanOutline:g.A,IconPencilOutline:A.A,NcActionButton:a.A,NcActions:i.A,NcActionSeparator:c.A,NcAvatar:l.A,NcButton:d.A,NcDateTime:u.A,NcLoadingIcon:m.A,NcRichContenteditable:()=>Promise.all([n.e(4208),n.e(4818),n.e(5258)]).then(n.bind(n,95528)),NcRichText:()=>Promise.all([n.e(4208),n.e(4818),n.e(4508)]).then(n.bind(n,64508))},mixins:[E.A],inheritAttrs:!1,props:{actorDisplayName:{type:String,required:!0},actorId:{type:String,required:!0},creationDateTime:{type:String,default:null},editor:{type:Boolean,default:!1},autoComplete:{type:Function,required:!0},userData:{type:Object,default:()=>({})},tag:{type:String,default:"div"}},data:()=>({expanded:!1,localMessage:"",submitted:!1}),computed:{...(0,s.n2)(C.h),isOwnComment(){return(0,r.HW)().uid===this.actorId},richContent(){const t={};let e=this.localMessage;return Object.keys(this.userData).forEach((n,r)=>{const o=`mention-${r}`,s=new RegExp(`@${n}|@"${n}"`,"g");e=e.replace(s,`{${o}}`),t[o]={component:p.A,props:{user:n,displayName:this.userData[n].label,primary:this.userData[n].primary}}}),{mentions:t,message:e}},isEmptyMessage(){return!this.localMessage||""===this.localMessage.trim()},timestamp(){return Date.parse(this.creationDateTime)},isLimbo(){return this.deletedCommentLimboStore.checkForId(this.id)}},watch:{message(t){this.updateLocalMessage(t)}},beforeMount(){this.updateLocalMessage(this.message)},methods:{t:o.Tl,updateLocalMessage(t){this.localMessage=t.toString(),this.submitted=!1},onSubmit(){if(""!==this.localMessage.trim())return this.editor?(this.onNewComment(this.localMessage.trim()),void this.$nextTick(()=>{this.$refs.editor.$el.focus()})):void this.onEditComment(this.localMessage.trim())},onExpand(){this.expanded=!0}}}},30047(t,e,n){"use strict";n.d(e,{g:()=>p,w:()=>h});var r=n(42294),o=n(88310),s=n(57221),a=n(85394),i=n(36236),c=n(71922),l=n(22921),d=n(89062),u=n(29999),m=n(38374);async function p(t,e,n,r={}){const{contentLength:s=!0,overwrite:m=!0}=r,p={"Content-Type":"application/octet-stream"};!(0,l.HZ)()&&!(0,l.lV)()&&void 0!==o&&void 0!==o?.Readable&&n instanceof o.Readable||!1===s||(p["Content-Length"]="number"==typeof s?`${s}`:`${(0,c.J)(n)}`),m||(p["If-None-Match"]="*");const h=(0,d.H)({url:(0,a.oq)(t.remoteURL,(0,i.O0)(e)),method:"PUT",headers:p,data:n},t,r),f=await(0,d.E)(h,t);try{(0,u.HT)(t,f)}catch(t){const e=t;if(412!==e.status||m)throw e;return!1}return!0}function h(t,e){let n=`${(0,a.oq)(t.remoteURL,(0,i.O0)(e))}?Content-Type=application/octet-stream`;const o=/^https:/i.test(n)?"https":"http";switch(t.authType){case m.hT.None:break;case m.hT.Password:{const e=t.headers.Authorization.replace(/^Basic /i,"").trim(),r=(0,s.Ey)(e);n=n.replace(/^https?:\/\//,`${o}://${r}@`);break}default:throw new r.GU({info:{code:m.O4.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return n}},31538(t,e,n){"use strict";n.d(e,{A:()=>i});var r=n(21777),o=n(19051),s=n(81222),a=n(63814);const i=(0,n(85471).pM)({props:{resourceId:{type:Number,required:!0},resourceType:{type:String,default:"files"}},data(){return{editorData:{actorDisplayName:(0,r.HW)().displayName,actorId:(0,r.HW)().uid,key:"editor"},userData:{},currentResourceId:this.resourceId}},methods:{async autoComplete(t,e){const{data:n}=await o.Ay.get((0,a.KT)("core/autocomplete/get"),{params:{search:t,itemType:this.resourceType,itemId:this.currentResourceId,sorter:"commenters|share-recipients",limit:(0,s.C)("comments","maxAutoCompleteResults")}});return n.ocs.data.forEach(t=>{this.userData[t.id]=t}),e(Object.values(this.userData))},genMentionsData(t){return Object.values(t).flat().forEach(t=>{this.userData[t.mentionId]={icon:"icon-user",id:t.mentionId,label:t.mentionDisplayName,source:"users",primary:(0,r.HW)()?.uid===t.mentionId}}),this.userData}}})},35550(t,e,n){"use strict";n.d(e,{A:()=>c});var r=n(21777),o=n(82415),s=n(17003);const a=(0,o.UU)((0,s.e)());function i(t){a.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}(0,r.zo)(i),i((0,r.do)());const c=a},36564(t,e,n){"use strict";n.d(e,{h:()=>r});const r=(0,n(10810).nY)("deletedCommentLimbo",{state:()=>({idsInLimbo:[]}),actions:{addId(t){this.idsInLimbo.push(t)},removeId(t){const e=this.idsInLimbo.indexOf(t);e>-1&&this.idsInLimbo.splice(e,1)},checkForId(t){return this.idsInLimbo.includes(t)}}})},36942(t,e,n){"use strict";n.d(e,{e:()=>c});var r=n(42294),o=n(90036),s=n(19396),a=n(89793),i=n(38374);function c(t,e,n,c,l){switch(t.authType){case i.hT.Auto:e&&n&&(t.headers.Authorization=(0,s.V)(e,n));break;case i.hT.Digest:t.digest=(0,o.C8)(e,n,l);break;case i.hT.None:break;case i.hT.Password:t.headers.Authorization=(0,s.V)(e,n);break;case i.hT.Token:t.headers.Authorization=(0,a.O)(c);break;default:throw new r.GU({info:{code:i.O4.InvalidAuthType}},`Invalid auth type: ${t.authType}`)}}},39299(t,e,n){"use strict";n.d(e,{P:()=>i});var r=n(88310),o=n(47397),s=n(53850),a=n(22921);function i(t){if(!(0,a.HZ)()&&!(0,a.lV)()&&t instanceof r.Readable)return[t,{}];if("string"==typeof t)return[t,{}];if((0,s.P)(t))return[t,{}];if((0,o.m)(t))return[t,{}];if(t&&"object"==typeof t)return[JSON.stringify(t),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: "+typeof t)}},39615(t,e,n){"use strict";n.d(e,{T:()=>u,s:()=>d});var r=n(26602),o=n(85394),s=n(36236),a=n(27562),i=n(89062),c=n(29999);const l="Infinite, Second-4100000000";async function d(t,e,n={}){const{refreshToken:d,timeout:u=l}=n,m={Accept:"text/plain,application/xml",Timeout:u};d&&(m.If=d);const p=(0,i.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"LOCK",headers:m,data:(0,a.A)(t.contactHref)},t,n),h=await(0,i.E)(p,t);(0,c.HT)(t,h);const f=await h.text(),A=(0,a.o)(f),g=r.get(A,"prop.lockdiscovery.activelock.locktoken.href"),E=r.get(A,"prop.lockdiscovery.activelock.timeout");if(!g)throw(0,c.YQ)(h,"No lock token received: ");return{token:g,serverTimeout:E}}async function u(t,e,n,r={}){const a=(0,i.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"UNLOCK",headers:{"Lock-Token":n}},t,r),l=await(0,i.E)(a,t);if((0,c.HT)(t,l),204!==l.status&&200!==l.status)throw(0,c.YQ)(l)}},42634(){},46270(t,e,n){"use strict";n(70247)},47397(t,e,n){"use strict";n.d(e,{m:()=>s});const r="function"==typeof ArrayBuffer,{toString:o}=Object.prototype;function s(t){return r&&(t instanceof ArrayBuffer||"[object ArrayBuffer]"===o.call(t))}},47790(){},50335(t,e,n){"use strict";n.d(e,{m:()=>i});var r=n(85394),o=n(36236),s=n(89062),a=n(29999);async function i(t,e,n,i={}){const c=(0,s.H)({url:(0,r.oq)(t.remoteURL,(0,o.O0)(e)),method:"COPY",headers:{Destination:(0,r.oq)(t.remoteURL,(0,o.O0)(n)),Overwrite:!1===i.overwrite?"F":"T",Depth:i.shallow?"0":"infinity"}},t,i),l=await(0,s.E)(c,t);(0,a.HT)(t,l)}},51069(){},51195(t,e,n){"use strict";function r(t,e=1){const n=new DOMParser;let r=t;for(let t=0;tr})},54416(t,e,n){"use strict";n.d(e,{A:()=>r});const r=n(29369).A},57221(t,e,n){"use strict";n.d(e,{Ey:()=>o,nk:()=>s});var r=n(85914);function o(t){return r.decode(t)}function s(t){return r.encode(t)}n(29602)},59169(){},61160(t,e,n){"use strict";var r=n(92063),o=n(73992),s=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,a=/[\n\r\t]/g,i=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,c=/:\d+$/,l=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,d=/^[a-zA-Z]:/;function u(t){return(t||"").toString().replace(s,"")}var m=[["#","hash"],["?","query"],function(t,e){return f(e.protocol)?t.replace(/\\/g,"/"):t},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],p={hash:1,query:1};function h(t){var e,n=("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{}).location||{},r={},o=typeof(t=t||n);if("blob:"===t.protocol)r=new g(unescape(t.pathname),{});else if("string"===o)for(e in r=new g(t,{}),p)delete r[e];else if("object"===o){for(e in t)e in p||(r[e]=t[e]);void 0===r.slashes&&(r.slashes=i.test(t.href))}return r}function f(t){return"file:"===t||"ftp:"===t||"http:"===t||"https:"===t||"ws:"===t||"wss:"===t}function A(t,e){t=(t=u(t)).replace(a,""),e=e||{};var n,r=l.exec(t),o=r[1]?r[1].toLowerCase():"",s=!!r[2],i=!!r[3],c=0;return s?i?(n=r[2]+r[3]+r[4],c=r[2].length+r[3].length):(n=r[2]+r[4],c=r[2].length):i?(n=r[3]+r[4],c=r[3].length):n=r[4],"file:"===o?c>=2&&(n=n.slice(2)):f(o)?n=r[4]:o?s&&(n=n.slice(2)):c>=2&&f(e.protocol)&&(n=r[4]),{protocol:o,slashes:s||f(o),slashesCount:c,rest:n}}function g(t,e,n){if(t=(t=u(t)).replace(a,""),!(this instanceof g))return new g(t,e,n);var s,i,c,l,p,E,C=m.slice(),y=typeof e,v=this,w=0;for("object"!==y&&"string"!==y&&(n=e,e=null),n&&"function"!=typeof n&&(n=o.parse),s=!(i=A(t||"",e=h(e))).protocol&&!i.slashes,v.slashes=i.slashes||s&&e.slashes,v.protocol=i.protocol||e.protocol||"",t=i.rest,("file:"===i.protocol&&(2!==i.slashesCount||d.test(t))||!i.slashes&&(i.protocol||i.slashesCount<2||!f(v.protocol)))&&(C[3]=[/(.*)/,"pathname"]);ws});var r=n(70058),o=n(54416);n(46270);const s=(0,n(14486).A)(o.A,r.X,r.Y,!1,null,"70317f94",null).exports},66089(){},67691(t,e){"use strict";e.d=function(t){if(!t)return 0;for(var e=(t=t.toString()).length,n=t.length;n--;){var r=t.charCodeAt(n);56320<=r&&r<=57343&&n--,127l,o:()=>d});var r=n(88310),o=n(85394),s=n(36236),a=n(89062),i=n(29999);const c=()=>{};function l(t,e,n={}){const c=new(0,r.PassThrough);return async function(t,e,n={}){const r={};if("object"==typeof n.range&&"number"==typeof n.range.start){let t=`bytes=${n.range.start}-`;"number"==typeof n.range.end&&(t=`${t}${n.range.end}`),r.Range=t}const c=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"GET",headers:r},t,n),l=await(0,a.E)(c,t);if((0,i.HT)(t,l),r.Range&&206!==l.status){const t=new Error(`Invalid response code for partial request: ${l.status}`);throw t.status=l.status,t}return n.callback&&setTimeout(()=>{n.callback(l)},0),l.body}(t,e,n).then(t=>{t.pipe(c)}).catch(t=>{c.emit("error",t)}),c}function d(t,e,n={},l=c){const d=new(0,r.PassThrough),u={};!1===n.overwrite&&(u["If-None-Match"]="*");const m=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"PUT",headers:u,data:d,maxRedirects:0},t,n);return(0,a.E)(m,t).then(e=>(0,i.HT)(t,e)).then(t=>{setTimeout(()=>{l(t)},0)}).catch(t=>{d.emit("error",t)}),d}},70058(t,e,n){"use strict";n.d(e,{X:()=>r,Y:()=>o});var r=function(){var t=this,e=t._self._c;return e(t.tag,{directives:[{name:"show",rawName:"v-show",value:!t.deleted&&!t.isLimbo,expression:"!deleted && !isLimbo"}],tag:"component",staticClass:"comment",class:{"comment--loading":t.loading}},[e("div",{staticClass:"comment__side"},[e("NcAvatar",{staticClass:"comment__avatar",attrs:{"display-name":t.actorDisplayName,user:t.actorId,size:32}})],1),t._v(" "),e("div",{staticClass:"comment__body"},[e("div",{staticClass:"comment__header"},[e("span",{staticClass:"comment__author"},[t._v(t._s(t.actorDisplayName))]),t._v(" "),t.isOwnComment&&t.id&&!t.loading?e("NcActions",{staticClass:"comment__actions"},[t.editing?e("NcActionButton",{on:{click:t.onEditCancel},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconClose",{attrs:{size:20}})]},proxy:!0}],null,!1,2888946197)},[t._v("\n\t\t\t\t\t"+t._s(t.t("comments","Cancel edit"))+"\n\t\t\t\t")]):[e("NcActionButton",{attrs:{"close-after-click":""},on:{click:t.onEdit},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconPencilOutline",{attrs:{size:20}})]},proxy:!0}],null,!1,3345211262)},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("comments","Edit comment"))+"\n\t\t\t\t\t")]),t._v(" "),e("NcActionSeparator"),t._v(" "),e("NcActionButton",{attrs:{"close-after-click":""},on:{click:t.onDeleteWithUndo},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconTrashCanOutline",{attrs:{size:20}})]},proxy:!0}],null,!1,1034796883)},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("comments","Delete comment"))+"\n\t\t\t\t\t")])]],2):t._e(),t._v(" "),t.id&&t.loading?e("div",{staticClass:"comment_loading icon-loading-small"}):t.creationDateTime?e("NcDateTime",{staticClass:"comment__timestamp",attrs:{timestamp:t.timestamp,"ignore-seconds":!0}}):t._e()],1),t._v(" "),t.editor||t.editing?e("form",{staticClass:"comment__editor",on:{submit:function(t){t.preventDefault()}}},[e("div",{staticClass:"comment__editor-group"},[e("NcRichContenteditable",{ref:"editor",attrs:{"auto-complete":t.autoComplete,contenteditable:!t.loading,label:t.editor?t.t("comments","New comment"):t.t("comments","Edit comment"),placeholder:t.t("comments","Write a comment …"),"model-value":t.localMessage,"user-data":t.userData,"aria-describedby":"tab-comments__editor-description"},on:{"update:value":t.updateLocalMessage,submit:t.onSubmit}}),t._v(" "),e("div",{staticClass:"comment__submit"},[e("NcButton",{attrs:{variant:"tertiary-no-background",type:"submit","aria-label":t.t("comments","Post comment"),disabled:t.isEmptyMessage},on:{click:t.onSubmit},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?e("NcLoadingIcon"):e("IconArrowRight",{attrs:{size:20}})]},proxy:!0}],null,!1,758946661)})],1)],1),t._v(" "),e("div",{staticClass:"comment__editor-description",attrs:{id:"tab-comments__editor-description"}},[t._v("\n\t\t\t\t"+t._s(t.t("comments","@ for mentions, : for emoji, / for smart picker"))+"\n\t\t\t")])]):e("NcRichText",{staticClass:"comment__message",class:{"comment__message--expanded":t.expanded},attrs:{text:t.richContent.message,arguments:t.richContent.mentions,"use-markdown":""},nativeOn:{click:function(e){return t.onExpand.apply(null,arguments)}}})],1)])},o=[]},70247(t,e,n){"use strict";var r=n(85072),o=n.n(r),s=n(97825),a=n.n(s),i=n(77659),c=n.n(i),l=n(55056),d=n.n(l),u=n(10540),m=n.n(u),p=n(41113),h=n.n(p),f=n(22408),A={};A.styleTagTransform=h(),A.setAttributes=d(),A.insert=c().bind(null,"head"),A.domAPI=a(),A.insertStyleElement=m(),o()(f.A,A),f.A&&f.A.locals&&f.A.locals},70395(t,e,n){"use strict";n.d(e,{A:()=>c});var r=n(21777),o=n(19051),s=n(17003),a=n(51195),i=n(35550);async function c(t,e,n){const c=["",t,e].join("/"),l=await o.Ay.post((0,s.e)()+c,{actorDisplayName:(0,r.HW)().displayName,actorId:(0,r.HW)().uid,actorType:"users",creationDateTime:(new Date).toUTCString(),message:n,objectType:t,verb:"comment"}),d=c+"/"+parseInt(l.headers["content-location"].split("/").pop()),u=await i.A.stat(d,{details:!0}),m=u.data.props;return m.actorDisplayName=(0,a.j)(m.actorDisplayName,2),m.message=(0,a.j)(m.message,2),u.data}},71922(t,e,n){"use strict";n.d(e,{J:()=>c});var r=n(42294),o=n(67691),s=n(47397),a=n(53850),i=n(38374);function c(t){if((0,s.m)(t))return t.byteLength;if((0,a.P)(t))return t.length;if("string"==typeof t)return(0,o.d)(t);throw new r.GU({info:{code:i.O4.DataTypeNoLength}},"Cannot calculate data length: Invalid type")}},73776(){},74419(t,e,n){"use strict";n.d(e,{A:()=>l});var r=n(12692),o=n(85394),s=n(36236),a=n(90176),i=n(89062),c=n(29999);async function l(t,e,n={}){const l=(0,i.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e),"/"),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:n.deep?"infinity":"1"}},t,n),d=await(0,i.E)(l,t);(0,c.HT)(t,d);const u=await d.text();if(!u)throw new Error("Failed parsing directory contents: Empty response");const m=await(0,a.h4)(u),p=(0,s.dU)(e);let h=function(t,e,n,i=!1,c=!1){const l=r.join(e,"/"),{multistatus:{response:d}}=t,u=d.map(t=>{const e=(0,o.S8)(t.href),{propstat:{prop:n}}=t,c="/"===l?decodeURIComponent((0,s.qb)(e)):(0,s.qb)(r.relative(decodeURIComponent(l),decodeURIComponent(e)));return(0,a.ch)(n,c,i)});return c?u:u.filter(t=>t.basename&&("file"===t.type||t.filename!==n.replace(/\/$/,"")))}(m,(0,s.dU)(t.remoteBasePath||t.remotePath),p,n.details,n.includeSelf);return n.glob&&(h=(0,c.eh)(h,n.glob)),(0,c.hq)(d,h,n.details)}},75892(t,e,n){"use strict";n.d(e,{t:()=>o});var r=n(84830);async function o(t,e,n={}){try{return await(0,r.z)(t,e,n),!0}catch(t){if(404===t.status)return!1;throw t}}},76374(t,e,n){"use strict";n.d(e,{J:()=>i});var r=n(85394),o=n(36236),s=n(89062),a=n(29999);async function i(t,e,n){n.url||(n.url=(0,r.oq)(t.remoteURL,(0,o.O0)(e)));const i=(0,s.H)(n,t,{}),c=await(0,s.E)(i,t);return(0,a.HT)(t,c),c}},77087(t,e,n){"use strict";n.d(e,{m:()=>i});var r=n(85394),o=n(36236),s=n(89062),a=n(29999);async function i(t,e,n,i={}){const c=(0,s.H)({url:(0,r.oq)(t.remoteURL,(0,o.O0)(e)),method:"MOVE",headers:{Destination:(0,r.oq)(t.remoteURL,(0,o.O0)(n)),Overwrite:!1===i.overwrite?"F":"T"}},t,i),l=await(0,s.E)(c,t);(0,a.HT)(t,l)}},77101(t,e,n){"use strict";n.d(e,{W:()=>i});var r=n(85394),o=n(36236),s=n(89062),a=n(29999);async function i(t,e,n={}){const i=(0,s.H)({url:(0,r.oq)(t.remoteURL,(0,o.O0)(e)),method:"DELETE"},t,n),c=await(0,s.E)(i,t);(0,a.HT)(t,c)}},77199(){},77965(){},78982(){},79368(){},79838(){},80156(t,e,n){"use strict";n.d(e,{T:()=>c});var r=n(90176),o=n(85394),s=n(36236),a=n(89062),i=n(29999);async function c(t,e,n={}){const{details:c=!1}=n,l=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"SEARCH",headers:{Accept:"text/plain,application/xml","Content-Type":t.headers["Content-Type"]||"application/xml; charset=utf-8"}},t,n),d=await(0,a.E)(l,t);(0,i.HT)(t,d);const u=await d.text(),m=await(0,r.h4)(u),p=(0,r.KA)(m,e,c);return(0,i.hq)(d,p,c)}},80486(t,e,n){"use strict";n.d(e,{A:()=>o});var r=n(35550);async function o(t,e,n){const o=["",t,e,n].join("/");await r.A.deleteFile(o)}},81838(t,e,n){"use strict";n.d(e,{V:()=>d});var r=n(42294),o=n(85394),s=n(36236),a=n(89062),i=n(29999),c=n(10524),l=n(38374);async function d(t,e,n,d,u,m={}){const p=await(0,c.p)(t,e,m);if(p.compliance.includes("sabredav-partialupdate"))return await async function(t,e,n,c,d,u={}){if(n>c||n<0)throw new r.GU({info:{code:l.O4.InvalidUpdateRange}},`Invalid update range ${n} for partial update`);const m={"Content-Type":"application/x-sabredav-partialupdate","Content-Length":""+(c-n+1),"X-Update-Range":`bytes=${n}-${c}`},p=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"PATCH",headers:m,data:d},t,u),h=await(0,a.E)(p,t);(0,i.HT)(t,h)}(t,e,n,d,u,m);if(p.server.includes("Apache")&&p.compliance.includes(""))return await async function(t,e,n,c,d,u={}){if(n>c||n<0)throw new r.GU({info:{code:l.O4.InvalidUpdateRange}},`Invalid update range ${n} for partial update`);const m={"Content-Type":"application/octet-stream","Content-Length":""+(c-n+1),"Content-Range":`bytes ${n}-${c}/*`},p=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"PUT",headers:m,data:d},t,u),h=await(0,a.E)(p,t);(0,i.HT)(t,h)}(t,e,n,d,u,m);throw new r.GU({info:{code:l.O4.NotSupported}},"Not supported")}},82415(t,e,n){"use strict";n.d(e,{UU:()=>r.U,h4:()=>o.h4});var r=n(84997),o=(n(38374),n(90176));n(29999)},84830(t,e,n){"use strict";n.d(e,{z:()=>c});var r=n(90176),o=n(85394),s=n(36236),a=n(89062),i=n(29999);async function c(t,e,n={}){const{details:c=!1}=n,l=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,n),d=await(0,a.E)(l,t);(0,i.HT)(t,d);const u=await d.text(),m=await(0,r.h4)(u),p=(0,r.ky)(m,e,c);return(0,i.hq)(d,p,c)}},84997(t,e,n){"use strict";n.d(e,{U:()=>b});var r=n(85394),o=n(36942),s=n(50335),a=n(28161),i=n(68476),c=n(76374),l=n(77101),d=n(75892),u=n(74419),m=n(17658),p=n(39615),h=n(86772),f=n(84830),A=n(80156),g=n(77087),E=n(30047),C=n(81838),y=n(10524),v=n(38374);const w="https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md";function b(t,e={}){const{authType:n=null,remoteBasePath:b,contactHref:I=w,ha1:T,headers:R={},httpAgent:_,httpsAgent:O,password:N,token:L,username:$,withCredentials:x}=e;let S=n;S||(S=$||N?v.hT.Password:v.hT.None);const D={authType:S,remoteBasePath:b,contactHref:I,ha1:T,headers:Object.assign({},R),httpAgent:_,httpsAgent:O,password:N,remotePath:(0,r.wB)(t),remoteURL:t,token:L,username:$,withCredentials:x};return(0,o.e)(D,$,N,L,T),{copyFile:(t,e,n)=>(0,s.m)(D,t,e,n),createDirectory:(t,e)=>(0,a.c)(D,t,e),createReadStream:(t,e)=>(0,i.V)(D,t,e),createWriteStream:(t,e,n)=>(0,i.o)(D,t,e,n),customRequest:(t,e)=>(0,c.J)(D,t,e),deleteFile:(t,e)=>(0,l.W)(D,t,e),exists:(t,e)=>(0,d.t)(D,t,e),getDirectoryContents:(t,e)=>(0,u.A)(D,t,e),getFileContents:(t,e)=>(0,m.F)(D,t,e),getFileDownloadLink:t=>(0,m.b)(D,t),getFileUploadLink:t=>(0,E.w)(D,t),getHeaders:()=>Object.assign({},D.headers),getQuota:t=>(0,h.T)(D,t),lock:(t,e)=>(0,p.s)(D,t,e),moveFile:(t,e,n)=>(0,g.m)(D,t,e,n),putFileContents:(t,e,n)=>(0,E.g)(D,t,e,n),partialUpdateFileContents:(t,e,n,r,o)=>(0,C.V)(D,t,e,n,r,o),getDAVCompliance:t=>(0,y.p)(D,t),search:(t,e)=>(0,A.T)(D,t,e),setHeaders:t=>{D.headers=Object.assign({},t)},stat:(t,e)=>(0,f.z)(D,t,e),unlock:(t,e,n)=>(0,p.T)(D,t,e,n)}}},85394(t,e,n){"use strict";n.d(e,{S8:()=>l,oq:()=>c,wB:()=>i});var r=n(61160),o=n(42294),s=n(406),a=n(36236);function i(t){let e=new r(t).pathname;return e.length<=0&&(e="/"),(0,a.qb)(e)}function c(...t){return(0,s.A)(t.reduce((t,e,n)=>((0===n||"/"!==e||"/"===e&&"/"!==t[t.length-1])&&t.push(e),t),[]))}function l(t){try{return t.replace(/^https?:\/\/[^\/]+/,"")}catch(t){throw new o.GU(t,"Failed normalising HREF")}}},85914(t,e,n){var r;t=n.nmd(t),function(){var o=(t&&t.exports,"object"==typeof globalThis&&globalThis);o.global!==o&&o.window;var s=function(t){this.message=t};(s.prototype=new Error).name="InvalidCharacterError";var a=function(t){throw new s(t)},i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=/[\t\n\f\r ]/g,l={encode:function(t){t=String(t),/[^\0-\xFF]/.test(t)&&a("The string to be encoded contains characters outside of the Latin1 range.");for(var e,n,r,o,s=t.length%3,c="",l=-1,d=t.length-s;++l>18&63)+i.charAt(o>>12&63)+i.charAt(o>>6&63)+i.charAt(63&o);return 2==s?(e=t.charCodeAt(l)<<8,n=t.charCodeAt(++l),c+=i.charAt((o=e+n)>>10)+i.charAt(o>>4&63)+i.charAt(o<<2&63)+"="):1==s&&(o=t.charCodeAt(l),c+=i.charAt(o>>2)+i.charAt(o<<4&63)+"=="),c},decode:function(t){var e=(t=String(t).replace(c,"")).length;e%4==0&&(e=(t=t.replace(/==?$/,"")).length),(e%4==1||/[^+a-zA-Z0-9/]/.test(t))&&a("Invalid character: the string to be decoded is not correctly encoded.");for(var n,r,o=0,s="",l=-1;++l>(-2*o&6)));return s},version:"1.0.0"};void 0===(r=function(){return l}.call(e,n,e,t))||(t.exports=r)}()},86772(t,e,n){"use strict";n.d(e,{T:()=>c});var r=n(89062),o=n(29999),s=n(90176),a=n(85394),i=n(7815);async function c(t,e={}){const n=e.path||"/",c=(0,r.H)({url:(0,a.oq)(t.remoteURL,n),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,e),l=await(0,r.E)(c,t);(0,o.HT)(t,l);const d=await l.text(),u=await(0,s.h4)(d),m=(0,i.K)(u);return(0,o.hq)(l,m,e.details)}},86833(){},89062(t,e,n){"use strict";n.d(e,{E:()=>f,H:()=>h});var r=n(11568),o=n(11083),s=n(97192),a=n(84819),i=n(22921),c=n(90036),l=n(79275),d=n(79605),u=n(39299),m=n(38374),p=n(36942);function h(t,e,n){const r=(0,l.q)(t);return r.headers=(0,d.l)(e.headers,r.headers||{},n.headers||{}),void 0!==n.data&&(r.data=n.data),n.signal&&(r.signal=n.signal),e.httpAgent&&(r.httpAgent=e.httpAgent),e.httpsAgent&&(r.httpsAgent=e.httpsAgent),e.digest&&(r._digest=e.digest),"boolean"==typeof e.withCredentials&&(r.withCredentials=e.withCredentials),r}async function f(t,e){return e.authType===m.hT.Auto?async function(t,e){const n=await g(t);return n.ok?(e.authType=m.hT.Password,n):401==n.status&&(0,c.oD)(n)?(e.authType=m.hT.Digest,(0,p.e)(e,e.username,e.password,void 0,void 0),t._digest=e.digest,A(t)):n}(t,e):t._digest?A(t):g(t)}async function A(t){const e=t._digest;delete t._digest,e.hasDigestAuth&&(t=(0,l.h)(t,{headers:{Authorization:(0,c.XX)(t,e)}}));const n=await g(t);if(401==n.status){if(e.hasDigestAuth=(0,c.Wb)(n,e),e.hasDigestAuth){t=(0,l.h)(t,{headers:{Authorization:(0,c.XX)(t,e)}});const n=await g(t);return 401==n.status?e.hasDigestAuth=!1:e.nc++,n}}else e.nc++;return n}function g(t){const e=(0,a.G)();return e.patchInline("request",t=>e.patchInline("fetch",s.hd,t.url,function(t){let e={};const n={method:t.method};if(t.headers&&(e=(0,d.l)(e,t.headers)),void 0!==t.data){const[r,o]=(0,u.P)(t.data);n.body=r,e=(0,d.l)(e,o)}return t.signal&&(n.signal=t.signal),t.withCredentials&&(n.credentials="include"),(0,i.HZ)()||(0,i.lV)()||(t.httpAgent||t.httpsAgent)&&(n.agent=e=>"http:"===e.protocol?t.httpAgent||new r.Agent:t.httpsAgent||new o.Agent),n.headers=e,n}(t)),t)}},90036(t,e,n){"use strict";n.d(e,{C8:()=>s,Wb:()=>i,XX:()=>a,oD:()=>c});var r=n(83503),o=n(35658);function s(t,e,n){return{username:t,password:e,ha1:n,nc:0,algorithm:"md5",hasDigestAuth:!1}}function a(t,e){const n=t.url.replace("//",""),s=-1==n.indexOf("/")?"/":n.slice(n.indexOf("/")),a=t.method?t.method.toUpperCase():"GET",i=!!/(^|,)\s*auth\s*($|,)/.test(e.qop)&&"auth",c=`00000000${e.nc}`.slice(-8),l=(0,o.M)(e.algorithm,e.username,e.realm,e.password,e.nonce,e.cnonce,e.ha1),d=r(`${a}:${s}`),u=r(i?`${l}:${e.nonce}:${c}:${e.cnonce}:${i}:${d}`:`${l}:${e.nonce}:${d}`),m={username:e.username,realm:e.realm,nonce:e.nonce,uri:s,qop:i,response:u,nc:c,cnonce:e.cnonce,algorithm:e.algorithm,opaque:e.opaque},p=[];for(const t in m)m[t]&&("qop"===t||"nc"===t||"algorithm"===t?p.push(`${t}=${m[t]}`):p.push(`${t}="${m[t]}"`));return`Digest ${p.join(", ")}`}function i(t,e){if(!c(t))return!1;const n=/([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi;for(;;){const r=t.headers&&t.headers.get("www-authenticate")||"",o=n.exec(r);if(!o)break;e[o[1]]=o[2]||o[3]}return e.nc+=1,e.cnonce=function(){let t="";for(let e=0;e<32;++e)t=`${t}${"abcdef0123456789"[Math.floor(16*Math.random())]}`;return t}(),!0}function c(t){return"digest"===(t.headers&&t.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()}},93226(t,e,n){"use strict";var r,o,s,a,i=n(21777),c=n(44013),l=n(380),d=n(20005),u=n(53334),m=n(65606);function p(){if(o)return r;o=1;const t="object"==typeof m&&m.env&&m.env.NODE_DEBUG&&/\bsemver\b/i.test(m.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};return r=t}function h(){if(a)return s;a=1;const t=Number.MAX_SAFE_INTEGER||9007199254740991;return s={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:t,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}var f,A,g,E,C,y,v,w,b,I,T,R,_,O={exports:{}};function N(){if(v)return y;v=1;const t=p(),{MAX_LENGTH:e,MAX_SAFE_INTEGER:n}=h(),{safeRe:r,t:o}=(f||(f=1,function(t,e){const{MAX_SAFE_COMPONENT_LENGTH:n,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:o}=h(),s=p(),a=(e=t.exports={}).re=[],i=e.safeRe=[],c=e.src=[],l=e.safeSrc=[],d=e.t={};let u=0;const m="[a-zA-Z0-9-]",f=[["\\s",1],["\\d",o],[m,r]],A=(t,e,n)=>{const r=(t=>{for(const[e,n]of f)t=t.split(`${e}*`).join(`${e}{0,${n}}`).split(`${e}+`).join(`${e}{1,${n}}`);return t})(e),o=u++;s(t,o,e),d[t]=o,c[o]=e,l[o]=r,a[o]=new RegExp(e,n?"g":void 0),i[o]=new RegExp(r,n?"g":void 0)};A("NUMERICIDENTIFIER","0|[1-9]\\d*"),A("NUMERICIDENTIFIERLOOSE","\\d+"),A("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${m}*`),A("MAINVERSION",`(${c[d.NUMERICIDENTIFIER]})\\.(${c[d.NUMERICIDENTIFIER]})\\.(${c[d.NUMERICIDENTIFIER]})`),A("MAINVERSIONLOOSE",`(${c[d.NUMERICIDENTIFIERLOOSE]})\\.(${c[d.NUMERICIDENTIFIERLOOSE]})\\.(${c[d.NUMERICIDENTIFIERLOOSE]})`),A("PRERELEASEIDENTIFIER",`(?:${c[d.NONNUMERICIDENTIFIER]}|${c[d.NUMERICIDENTIFIER]})`),A("PRERELEASEIDENTIFIERLOOSE",`(?:${c[d.NONNUMERICIDENTIFIER]}|${c[d.NUMERICIDENTIFIERLOOSE]})`),A("PRERELEASE",`(?:-(${c[d.PRERELEASEIDENTIFIER]}(?:\\.${c[d.PRERELEASEIDENTIFIER]})*))`),A("PRERELEASELOOSE",`(?:-?(${c[d.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${c[d.PRERELEASEIDENTIFIERLOOSE]})*))`),A("BUILDIDENTIFIER",`${m}+`),A("BUILD",`(?:\\+(${c[d.BUILDIDENTIFIER]}(?:\\.${c[d.BUILDIDENTIFIER]})*))`),A("FULLPLAIN",`v?${c[d.MAINVERSION]}${c[d.PRERELEASE]}?${c[d.BUILD]}?`),A("FULL",`^${c[d.FULLPLAIN]}$`),A("LOOSEPLAIN",`[v=\\s]*${c[d.MAINVERSIONLOOSE]}${c[d.PRERELEASELOOSE]}?${c[d.BUILD]}?`),A("LOOSE",`^${c[d.LOOSEPLAIN]}$`),A("GTLT","((?:<|>)?=?)"),A("XRANGEIDENTIFIERLOOSE",`${c[d.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),A("XRANGEIDENTIFIER",`${c[d.NUMERICIDENTIFIER]}|x|X|\\*`),A("XRANGEPLAIN",`[v=\\s]*(${c[d.XRANGEIDENTIFIER]})(?:\\.(${c[d.XRANGEIDENTIFIER]})(?:\\.(${c[d.XRANGEIDENTIFIER]})(?:${c[d.PRERELEASE]})?${c[d.BUILD]}?)?)?`),A("XRANGEPLAINLOOSE",`[v=\\s]*(${c[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[d.XRANGEIDENTIFIERLOOSE]})(?:${c[d.PRERELEASELOOSE]})?${c[d.BUILD]}?)?)?`),A("XRANGE",`^${c[d.GTLT]}\\s*${c[d.XRANGEPLAIN]}$`),A("XRANGELOOSE",`^${c[d.GTLT]}\\s*${c[d.XRANGEPLAINLOOSE]}$`),A("COERCEPLAIN",`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?`),A("COERCE",`${c[d.COERCEPLAIN]}(?:$|[^\\d])`),A("COERCEFULL",c[d.COERCEPLAIN]+`(?:${c[d.PRERELEASE]})?(?:${c[d.BUILD]})?(?:$|[^\\d])`),A("COERCERTL",c[d.COERCE],!0),A("COERCERTLFULL",c[d.COERCEFULL],!0),A("LONETILDE","(?:~>?)"),A("TILDETRIM",`(\\s*)${c[d.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",A("TILDE",`^${c[d.LONETILDE]}${c[d.XRANGEPLAIN]}$`),A("TILDELOOSE",`^${c[d.LONETILDE]}${c[d.XRANGEPLAINLOOSE]}$`),A("LONECARET","(?:\\^)"),A("CARETTRIM",`(\\s*)${c[d.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",A("CARET",`^${c[d.LONECARET]}${c[d.XRANGEPLAIN]}$`),A("CARETLOOSE",`^${c[d.LONECARET]}${c[d.XRANGEPLAINLOOSE]}$`),A("COMPARATORLOOSE",`^${c[d.GTLT]}\\s*(${c[d.LOOSEPLAIN]})$|^$`),A("COMPARATOR",`^${c[d.GTLT]}\\s*(${c[d.FULLPLAIN]})$|^$`),A("COMPARATORTRIM",`(\\s*)${c[d.GTLT]}\\s*(${c[d.LOOSEPLAIN]}|${c[d.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",A("HYPHENRANGE",`^\\s*(${c[d.XRANGEPLAIN]})\\s+-\\s+(${c[d.XRANGEPLAIN]})\\s*$`),A("HYPHENRANGELOOSE",`^\\s*(${c[d.XRANGEPLAINLOOSE]})\\s+-\\s+(${c[d.XRANGEPLAINLOOSE]})\\s*$`),A("STAR","(<|>)?=?\\s*\\*"),A("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),A("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(O,O.exports)),O.exports),s=function(){if(g)return A;g=1;const t=Object.freeze({loose:!0}),e=Object.freeze({});return A=n=>n?"object"!=typeof n?t:n:e,A}(),{compareIdentifiers:a}=function(){if(C)return E;C=1;const t=/^[0-9]+$/,e=(e,n)=>{if("number"==typeof e&&"number"==typeof n)return e===n?0:ee(n,t)}}();class i{constructor(a,c){if(c=s(c),a instanceof i){if(a.loose===!!c.loose&&a.includePrerelease===!!c.includePrerelease)return a;a=a.version}else if("string"!=typeof a)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof a}".`);if(a.length>e)throw new TypeError(`version is longer than ${e} characters`);t("SemVer",a,c),this.options=c,this.loose=!!c.loose,this.includePrerelease=!!c.includePrerelease;const l=a.trim().match(c.loose?r[o.LOOSE]:r[o.FULL]);if(!l)throw new TypeError(`Invalid Version: ${a}`);if(this.raw=a,this.major=+l[1],this.minor=+l[2],this.patch=+l[3],this.major>n||this.major<0)throw new TypeError("Invalid major version");if(this.minor>n||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>n||this.patch<0)throw new TypeError("Invalid patch version");l[4]?this.prerelease=l[4].split(".").map(t=>{if(/^[0-9]+$/.test(t)){const e=+t;if(e>=0&&et.major?1:this.minort.minor?1:this.patcht.patch?1:0}comparePre(e){if(e instanceof i||(e=new i(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let n=0;do{const r=this.prerelease[n],o=e.prerelease[n];if(t("prerelease compare",n,r,o),void 0===r&&void 0===o)return 0;if(void 0===o)return 1;if(void 0===r)return-1;if(r!==o)return a(r,o)}while(++n)}compareBuild(e){e instanceof i||(e=new i(e,this.options));let n=0;do{const r=this.build[n],o=e.build[n];if(t("build compare",n,r,o),void 0===r&&void 0===o)return 0;if(void 0===o)return 1;if(void 0===r)return-1;if(r!==o)return a(r,o)}while(++n)}inc(t,e,n){if(t.startsWith("pre")){if(!e&&!1===n)throw new Error("invalid increment argument: identifier is empty");if(e){const t=`-${e}`.match(this.options.loose?r[o.PRERELEASELOOSE]:r[o.PRERELEASE]);if(!t||t[1]!==e)throw new Error(`invalid identifier: ${e}`)}}switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",e,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",e,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",e,n),this.inc("pre",e,n);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",e,n),this.inc("pre",e,n);break;case"release":if(0===this.prerelease.length)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{const t=Number(n)?1:0;if(0===this.prerelease.length)this.prerelease=[t];else{let r=this.prerelease.length;for(;--r>=0;)"number"==typeof this.prerelease[r]&&(this.prerelease[r]++,r=-2);if(-1===r){if(e===this.prerelease.join(".")&&!1===n)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(t)}}if(e){let r=[e,t];!1===n&&(r=[e]),0===a(this.prerelease[0],e)?isNaN(this.prerelease[1])&&(this.prerelease=r):this.prerelease=r}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}return y=i}!function(){if(b)return w;b=1;const t=N();w=(e,n)=>new t(e,n).major}(),function(){if(_)return R;_=1;const t=function(){if(T)return I;T=1;const t=N();return I=(e,n,r=!1)=>{if(e instanceof t)return e;try{return new t(e,n)}catch(t){if(!r)return null;throw t}},I}();R=(e,n)=>{const r=t(e,n);return r?r.version:null}}(),l.m,Error;var L=n(81222),$=n(26422),x=n(10810),S=n(85471),D=n(85168),P=n(57579),U=n(74095),k=n(42507),M=n(57578);const H={name:"MessageReplyTextOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var F=n(14486);const q=(0,F.A)(H,function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon message-reply-text-outline-icon",attrs:{"aria-hidden":t.title?null:"true","aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},[],!1,null,null,null).exports;var G=n(83239),j=n(65463),B=n(96689),V=n(31538),X=n(82415),z=n(29999),W=n(90176),Y=n(35550);async function K({resourceType:t,resourceId:e},n){const r=["",t,e].join("/"),o=n.datetime?`${n.datetime.toISOString()}`:"",s=await Y.A.customRequest(r,{method:"REPORT",data:`\n\t\t\t\n\t\t\t\t${n.limit??20}\n\t\t\t\t${n.offset||0}\n\t\t\t\t${o}\n\t\t\t`,...n}),a=await s.text(),i=function(t,e=!1){const{multistatus:{response:n}}=t;return n.map(t=>{const n=t.propstat.prop;return(0,W.ch)(n,n.id.toString(),e)})}(await(0,X.h4)(a),!0);return(0,z.hq)(s,i,!0)}const Z={name:"Comments",components:{Comment:j.A,NcEmptyContent:k.A,NcButton:U.A,IconRefresh:G.A,IconMessageReplyTextOutline:q,IconAlertCircleOutline:M.A},directives:{elementVisibility:P.Zx},mixins:[V.A],data:()=>({error:"",loading:!1,done:!1,offset:0,comments:[],cancelRequest:()=>{},Comment:j.A,userData:{}}),computed:{hasComments(){return this.comments.length>0},isFirstLoading(){return this.loading&&0===this.offset}},watch:{resourceId(){this.currentResourceId=this.resourceId}},methods:{t:u.Tl,async onVisibilityChange(t){if(t)try{await function(t,e,n){const r=["",t,e].join("/"),o=n.toUTCString();return Y.A.customRequest(r,{method:"PROPPATCH",data:`\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${o}\n\t\t\t\t\n\t\t\t\n\t\t\t`})}(this.resourceType,this.currentResourceId,new Date)}catch(t){(0,D.Qg)(t.message||(0,u.Tl)("comments","Failed to mark comments as read"))}},async update(t){this.currentResourceId=t,this.resetState(),await this.getComments()},onScrollBottomReached(){this.error||this.done||this.loading||this.getComments()},async getComments(){this.cancelRequest("cancel");try{this.loading=!0,this.error="";const{request:t,abort:e}=function(t){const e=new AbortController,n=e.signal;return{request:async function(e,r){return await t(e,{signal:n,...r})},abort:()=>e.abort()}}(K);this.cancelRequest=e;const{data:n}=await t({resourceType:this.resourceType,resourceId:this.currentResourceId},{offset:this.offset})||{data:[]};this.logger.debug(`Processed ${n.length} comments`,{comments:n}),n.length<20&&(this.done=!0);for(const t of n)t.props.actorId=t.props.actorId.toString();this.comments=[...this.comments,...n],this.offset+=20}catch(t){if("cancel"===t.message)return;this.error=(0,u.Tl)("comments","Unable to load the comments list"),B.A.error("Error loading the comments list",{error:t})}finally{this.loading=!1}},onNewComment(t){this.comments.unshift(t)},onDelete(t){const e=this.comments.findIndex(e=>e.props.id===t);e>-1?this.comments.splice(e,1):B.A.error("Could not find the deleted comment in the list",{id:t})},resetState(){this.error="",this.loading=!1,this.done=!1,this.offset=0,this.comments=[]}}};var Q=n(85072),J=n.n(Q),tt=n(97825),et=n.n(tt),nt=n(77659),rt=n.n(nt),ot=n(55056),st=n.n(ot),at=n(10540),it=n.n(at),ct=n(41113),lt=n.n(ct),dt=n(94262),ut={};ut.styleTagTransform=lt(),ut.setAttributes=st(),ut.insert=rt().bind(null,"head"),ut.domAPI=et(),ut.insertStyleElement=it(),J()(dt.A,ut),dt.A&&dt.A.locals&&dt.A.locals;const mt=(0,F.A)(Z,function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"element-visibility",rawName:"v-element-visibility",value:t.onVisibilityChange,expression:"onVisibilityChange"}],staticClass:"comments",class:{"icon-loading":t.isFirstLoading}},[e("Comment",t._b({staticClass:"comments__writer",attrs:{"auto-complete":t.autoComplete,"resource-type":t.resourceType,editor:!0,"user-data":t.userData,"resource-id":t.currentResourceId},on:{new:t.onNewComment}},"Comment",t.editorData,!1)),t._v(" "),t.isFirstLoading?t._e():[!t.hasComments&&t.done?e("NcEmptyContent",{staticClass:"comments__empty",attrs:{name:t.t("comments","No comments yet, start the conversation!")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconMessageReplyTextOutline")]},proxy:!0}],null,!1,326612300)}):e("ul",t._l(t.comments,function(n){return e("Comment",t._b({key:n.props.id,staticClass:"comments__list",attrs:{tag:"li","auto-complete":t.autoComplete,"resource-type":t.resourceType,message:n.props.message,"resource-id":t.currentResourceId,"user-data":t.genMentionsData(n.props.mentions)},on:{"update:message":function(e){return t.$set(n.props,"message",e)},delete:t.onDelete}},"Comment",n.props,!1))}),1),t._v(" "),t.loading&&!t.isFirstLoading?e("div",{staticClass:"comments__info icon-loading"}):t.hasComments&&t.done?e("div",{staticClass:"comments__info"},[t._v("\n\t\t\t"+t._s(t.t("comments","No more messages"))+"\n\t\t")]):t.error?[e("NcEmptyContent",{staticClass:"comments__error",attrs:{name:t.error},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconAlertCircleOutline")]},proxy:!0}],null,!1,3663249556)}),t._v(" "),e("NcButton",{staticClass:"comments__retry",on:{click:t.getComments},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconRefresh")]},proxy:!0}],null,!1,2997625269)},[t._v("\n\t\t\t\t"+t._s(t.t("comments","Retry"))+"\n\t\t\t")])]:t._e()]],2)},[],!1,null,"6c8c157a",null).exports,pt=(0,S.pM)({__name:"FilesSidebarTab",props:{node:null,folder:null,view:null},setup(t,{expose:e}){const n=t;e({setActive:o});const r=(0,S.EW)(()=>n.node?.fileid);function o(t){return t}return{__sfc:!0,props:n,resourceId:r,setActive:o,Comments:mt}}}),ht=(0,F.A)(pt,function(){var t=this,e=t._self._c,n=t._self._setupProxy;return void 0!==n.resourceId?e(n.Comments,{key:n.resourceId,attrs:{"resource-id":n.resourceId,"resource-type":"files"}}):t._e()},[],!1,null,null,null).exports;var ft=n(51651);let At,gt;S.Ay.use(x.R2),n.nc=(0,i.aV)();const Et="comments_files-sidebar-tab";var Ct;(0,L.C)("comments","activityEnabled",!1)&&void 0!==OCA?.Activity?.registerSidebarAction?window.addEventListener("DOMContentLoaded",function(){window.OCA.Activity.registerSidebarAction({mount:async(t,{fileInfo:e,reload:r})=>{const o=(0,x.Ey)();if(!At){const{default:t}=await n.e(4906).then(n.bind(n,44906));At=S.Ay.extend(t)}gt=new At({el:t,pinia:o,propsData:{reloadCallback:r,resourceId:e.id}}),B.A.info("Comments plugin mounted in Activity sidebar action",{fileInfo:e})},unmount:()=>{gt&>.$destroy()}}),window.OCA.Activity.registerSidebarEntries(async({fileInfo:t,limit:e,offset:r})=>{const{data:o}=await K({resourceType:"files",resourceId:t.id},{limit:e,offset:r});B.A.debug("Loaded comments",{fileInfo:t,comments:o});const{default:s}=await n.e(7039).then(n.bind(n,57039)),a=S.Ay.extend(s);return o.map(e=>({_CommentsViewInstance:void 0,timestamp:(0,ft.A)(e.props?.creationDateTime).toDate().getTime(),mount(n,{reload:r}){this._CommentsViewInstance=new a({el:n,propsData:{comment:e,resourceId:t.id,reloadCallback:r}})},unmount(){this._CommentsViewInstance?.$destroy()}}))}),window.OCA.Activity.registerSidebarFilter(t=>"comments"!==t.type),B.A.info("Comments plugin registered for Activity sidebar action")}):(function(t){if("object"!=typeof t)throw new Error("Sidebar tab is not an object");if(!t.id||"string"!=typeof t.id||t.id!==CSS.escape(t.id))throw new Error("Sidebar tabs need to have an id conforming to the HTML id attribute specifications");if(!t.tagName||"string"!=typeof t.tagName)throw new Error("Sidebar tabs need to have the tagName name set");if(!t.tagName.match(/^[a-z][a-z0-9-_]+$/))throw new Error("Sidebar tabs tagName name is invalid");if(!t.displayName||"string"!=typeof t.displayName)throw new Error("Sidebar tabs need to have a name set");if("string"!=typeof t.iconSvgInline||!(0,d.A)(t.iconSvgInline))throw new Error("Sidebar tabs need to have an valid SVG icon");if("number"!=typeof t.order)throw new Error("Sidebar tabs need to have a numeric order set");if("function"!=typeof t.enabled)throw new Error('Sidebar tabs need to have an "enabled" method')}(Ct={id:"comments",displayName:(0,u.t)("comments","Comments"),iconSvgInline:'',order:50,tagName:Et,enabled:()=>(window.customElements.get(Et)||function(){S.Ay.use(x.R2),S.Ay.mixin({pinia:(0,x.Ey)()});const t=(0,$.A)(S.Ay,ht);Object.defineProperty(t.prototype,"attachShadow",{value(){return this}}),Object.defineProperty(t.prototype,"shadowRoot",{get(){return this}}),window.customElements.define(Et,t)}(),!0)}),window._nc_files_sidebar_tabs??=new Map,window._nc_files_sidebar_tabs.has(Ct.id)?c.l.warn(`Sidebar tab with id "${Ct.id}" already registered. Skipping.`):(window._nc_files_sidebar_tabs.set(Ct.id,Ct),c.l.debug(`New sidebar tab with id "${Ct.id}" registered.`)))},94262(t,e,n){"use strict";n.d(e,{A:()=>i});var r=n(71354),o=n.n(r),s=n(76314),a=n.n(s)()(o());a.push([t.id,".comments[data-v-6c8c157a]{min-height:100%;display:flex;flex-direction:column}.comments__empty[data-v-6c8c157a],.comments__error[data-v-6c8c157a]{flex:1 0}.comments__retry[data-v-6c8c157a]{margin:0 auto}.comments__info[data-v-6c8c157a]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}","",{version:3,sources:["webpack://./apps/comments/src/views/Comments.vue"],names:[],mappings:"AACA,2BACC,eAAA,CACA,YAAA,CACA,qBAAA,CAEA,oEAEC,QAAA,CAGD,kCACC,aAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA",sourcesContent:["\n.comments {\n\tmin-height: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&__empty,\n\t&__error {\n\t\tflex: 1 0;\n\t}\n\n\t&__retry {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__info {\n\t\theight: 60px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\ttext-align: center;\n\t\tline-height: 60px;\n\t}\n}\n"],sourceRoot:""}]);const i=a},96689(t,e,n){"use strict";n.d(e,{A:()=>r});const r=(0,n(35947).YK)().setApp("comments").detectUser().build()}},s={};function a(t){var e=s[t];if(void 0!==e)return e.exports;var n=s[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=o,e=[],a.O=(t,n,r,o)=>{if(!n){var s=1/0;for(d=0;d=o)&&Object.keys(a.O).every(t=>a.O[t](n[c]))?n.splice(c--,1):(i=!1,o0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[n,r,o]},a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.f={},a.e=t=>Promise.all(Object.keys(a.f).reduce((e,n)=>(a.f[n](t,e),e),[])),a.u=t=>t+"-"+t+".js?v="+{594:"f5af3d132040859cb666",620:"e5d77a046303aedd05c5",2391:"6d29c12fea2fbb265756",2880:"803b63f847e6d68bcf0d",4325:"b597fcd1212503c968df",4508:"b788d8e845a1709aacd5",4818:"d7d676d61bc734e1307a",4906:"494ff510a1379d42d106",5258:"bf877d931968f112154d",5862:"580b9c2e231a9169a12f",7039:"9800c2c4f93af8d9465e",7145:"1f907ab7a1c83e8a6617",8339:"b2246be0f4c885a9d524"}[t],a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n={},r="nextcloud-ui-legacy:",a.l=(t,e,o,s)=>{if(n[t])n[t].push(e);else{var i,c;if(void 0!==o)for(var l=document.getElementsByTagName("script"),d=0;d{i.onerror=i.onload=null,clearTimeout(p);var o=n[t];if(delete n[t],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(t=>t(r)),e)return e(r)},p=setTimeout(m.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=m.bind(null,i.onerror),i.onload=m.bind(null,i.onload),c&&document.head.appendChild(i)}},a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),a.j=2122,(()=>{var t;globalThis.importScripts&&(t=globalThis.location+"");var e=globalThis.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!t||!/^http(s?):/.test(t));)t=n[r--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=t})(),(()=>{a.b="undefined"!=typeof document&&document.baseURI||self.location.href;var t={2122:0};a.f.j=(e,n)=>{var r=a.o(t,e)?t[e]:void 0;if(0!==r)if(r)n.push(r[2]);else{var o=new Promise((n,o)=>r=t[e]=[n,o]);n.push(r[2]=o);var s=a.p+a.u(e),i=new Error;a.l(s,n=>{if(a.o(t,e)&&(0!==(r=t[e])&&(t[e]=void 0),r)){var o=n&&("load"===n.type?"missing":n.type),s=n&&n.target&&n.target.src;i.message="Loading chunk "+e+" failed.\n("+o+": "+s+")",i.name="ChunkLoadError",i.type=o,i.request=s,r[1](i)}},"chunk-"+e,e)}},a.O.j=e=>0===t[e];var e=(e,n)=>{var r,o,[s,i,c]=n,l=0;if(s.some(e=>0!==t[e])){for(r in i)a.o(i,r)&&(a.m[r]=i[r]);if(c)var d=c(a)}for(e&&e(n);la(93226));i=a.O(i)})(); -//# sourceMappingURL=comments-comments-tab.js.map?v=2088f3e2eedd7c67707d \ No newline at end of file +(()=>{var e,n,r,o={7815(t,e,n){"use strict";n.d(e,{K:()=>o});var r=n(90176);function o(t){try{const[e]=t.multistatus.response,{propstat:{prop:{"quota-used-bytes":n,"quota-available-bytes":o}}}=e;return void 0!==n&&void 0!==o?{used:parseInt(String(n),10),available:(0,r.i5)(o)}:null}catch(t){}return null}},10396(e,n,r){"use strict";r.d(n,{A:()=>u});var o=r(85168),s=r(10810),a=r(96689),i=r(80486),c=r(10767),l=r(70395),d=r(36564);const u={props:{id:{type:Number,default:null},message:{type:String,default:""},resourceId:{type:[String,Number],required:!0},resourceType:{type:String,default:"files"}},data:()=>({deleted:!1,editing:!1,loading:!1}),computed:{...(0,s.n2)(d.h)},methods:{onEdit(){this.editing=!0},onEditCancel(){this.editing=!1,this.updateLocalMessage(this.message)},async onEditComment(e){this.loading=!0;try{await(0,c.A)(this.resourceType,this.resourceId,this.id,e),a.A.debug("Comment edited",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id,message:e}),this.$emit("update:message",e),this.editing=!1}catch(e){(0,o.Qg)(t("comments","An error occurred while trying to edit the comment")),a.A.error("An error occurred while trying to edit the comment",{error:e})}finally{this.loading=!1}},onDeleteWithUndo(){this.$emit("delete"),this.deleted=!0,this.deletedCommentLimboStore.addId(this.id);const e=setTimeout(this.onDelete,o.Br);(0,o._h)(t("comments","Comment deleted"),()=>{clearTimeout(e),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)})},async onDelete(){try{await(0,i.A)(this.resourceType,this.resourceId,this.id),a.A.debug("Comment deleted",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id}),this.$emit("delete",this.id)}catch(e){(0,o.Qg)(t("comments","An error occurred while trying to delete the comment")),a.A.error("An error occurred while trying to delete the comment",{error:e}),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)}},async onNewComment(e){this.loading=!0;try{const t=await(0,l.A)(this.resourceType,this.resourceId,e);a.A.debug("New comment posted",{resourceType:this.resourceType,resourceId:this.resourceId,newComment:t}),this.$emit("new",t),this.$emit("update:message",""),this.localMessage=""}catch(e){(0,o.Qg)(t("comments","An error occurred while trying to create the comment")),a.A.error("An error occurred while trying to create the comment",{error:e})}finally{this.loading=!1}}}}},10524(t,e,n){"use strict";n.d(e,{p:()=>i});var r=n(85394),o=n(36236),s=n(89062),a=n(29999);async function i(t,e,n={}){const i=(0,s.H)({url:(0,r.oq)(t.remoteURL,(0,o.O0)(e)),method:"OPTIONS"},t,n),c=await(0,s.E)(i,t);try{(0,a.HT)(t,c)}catch(t){throw t}return{compliance:(c.headers.get("DAV")??"").split(",").map(t=>t.trim()),server:c.headers.get("Server")??""}}},10767(t,e,n){"use strict";n.d(e,{A:()=>o});var r=n(35550);async function o(t,e,n,o){const s=["",t,e,n].join("/");return await r.A.customRequest(s,{method:"PROPPATCH",data:`\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${o}\n\t\t\t\t\n\t\t\t\n\t\t\t`})}},11083(t,e,n){var r=n(11568),o=n(88835),s=t.exports;for(var a in r)r.hasOwnProperty(a)&&(s[a]=r[a]);function i(t){if("string"==typeof t&&(t=o.parse(t)),t.protocol||(t.protocol="https:"),"https:"!==t.protocol)throw new Error('Protocol "'+t.protocol+'" not supported. Expected "https:"');return t}s.request=function(t,e){return t=i(t),r.request.call(this,t,e)},s.get=function(t,e){return t=i(t),r.get.call(this,t,e)}},11568(t,e,n){var r=n(55537),o=n(6917),s=n(57510),a=n(86866),i=n(88835),c=e;c.request=function(t,e){t="string"==typeof t?i.parse(t):s(t);var n=-1===globalThis.location.protocol.search(/^https?:$/)?"http:":"",o=t.protocol||n,a=t.hostname||t.host,c=t.port,l=t.path||"/";a&&-1!==a.indexOf(":")&&(a="["+a+"]"),t.url=(a?o+"//"+a:"")+(c?":"+c:"")+l,t.method=(t.method||"GET").toUpperCase(),t.headers=t.headers||{};var d=new r(t);return e&&d.on("response",e),d},c.get=function(t,e){var n=c.request(t,e);return n.end(),n},c.ClientRequest=r,c.IncomingMessage=o.IncomingMessage,c.Agent=function(){},c.Agent.defaultMaxSockets=4,c.globalAgent=new c.Agent,c.STATUS_CODES=a,c.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]},15340(){},17003(t,e,n){"use strict";n.d(e,{e:()=>o});var r=n(63814);function o(){return(0,r.dC)("dav/comments")}},17601(t,e,n){"use strict";n.d(e,{G:()=>a});var r=n(93028),o=n(11163),s=n(78049);class a extends Error{constructor(t,e){const n=[...arguments],{options:r,shortMessage:a}=(0,s.W)(n);let i=a;if(r.cause&&(i=`${i}: ${r.cause.message}`),super(i),this.message=i,r.name&&"string"==typeof r.name?this.name=r.name:this.name=(0,o.z)(),r.cause&&Object.defineProperty(this,"_cause",{value:r.cause}),Object.defineProperty(this,"_info",{value:{}}),r.info&&"object"==typeof r.info&&Object.assign(this._info,r.info),Error.captureStackTrace){const t=r.constructorOpt||this.constructor;Error.captureStackTrace(this,t)}}static cause(t){return(0,r.t)(t),t._cause&&(0,r.b)(t._cause)?t._cause:null}static fullStack(t){(0,r.t)(t);const e=a.cause(t);return e?`${t.stack}\ncaused by: ${a.fullStack(e)}`:t.stack??""}static info(t){(0,r.t)(t);const e={},n=a.cause(t);return n&&Object.assign(e,a.info(n)),t._info&&Object.assign(e,t._info),e}toString(){let t=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(t=`${t}: ${this.message}`),t}}},17658(t,e,n){"use strict";n.d(e,{F:()=>p,b:()=>h});var r=n(42294),o=n(85394),s=n(36236),a=n(57221),i=n(22921),c=n(89062),l=n(29999),d=n(38374),u=n(62045).hp;const m=t=>t;async function p(t,e,n={}){const{format:a="binary"}=n;if("binary"!==a&&"text"!==a)throw new r.GU({info:{code:d.O4.InvalidOutputFormat}},`Invalid output format: ${a}`);return"text"===a?async function(t,e,n={}){const r=(0,c.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"GET",headers:{Accept:"text/plain"},transformResponse:[m]},t,n),a=await(0,c.E)(r,t);(0,l.HT)(t,a);const i=await a.text();return(0,l.hq)(a,i,n.details)}(t,e,n):async function(t,e,n={}){const r=(0,c.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"GET"},t,n),a=await(0,c.E)(r,t);let d;return(0,l.HT)(t,a),d=(0,i.HZ)()||(0,i.lV)()?await a.arrayBuffer():u.from(await a.arrayBuffer()),(0,l.hq)(a,d,n.details)}(t,e,n)}function h(t,e){let n=(0,o.oq)(t.remoteURL,(0,s.O0)(e));const i=/^https:/i.test(n)?"https":"http";switch(t.authType){case d.hT.None:break;case d.hT.Password:{const e=t.headers.Authorization.replace(/^Basic /i,"").trim(),r=(0,a.Ey)(e);n=n.replace(/^https?:\/\//,`${i}://${r}@`);break}default:throw new r.GU({info:{code:d.O4.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return n}},19396(t,e,n){"use strict";n.d(e,{V:()=>o});var r=n(57221);function o(t,e){return`Basic ${(0,r.nk)(`${t}:${e}`)}`}},22408(t,e,n){"use strict";n.d(e,{A:()=>i});var r=n(71354),o=n.n(r),s=n(76314),a=n.n(s)()(o());a.push([t.id,".comment[data-v-70317f94]{display:flex;gap:8px;padding:5px 10px}.comment__side[data-v-70317f94]{display:flex;align-items:flex-start;padding-top:6px}.comment__body[data-v-70317f94]{display:flex;flex-grow:1;flex-direction:column;container-type:inline-size}.comment__header[data-v-70317f94]{display:flex;align-items:center;min-height:44px}.comment__actions[data-v-70317f94]{margin-inline-start:10px !important}.comment__author[data-v-70317f94]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-70317f94],.comment__timestamp[data-v-70317f94]{margin-inline-start:auto;text-align:end;white-space:nowrap;color:var(--color-text-maxcontrast)}.comment__editor-group[data-v-70317f94]{position:relative}.comment__editor-description[data-v-70317f94]{color:var(--color-text-maxcontrast);padding-block:var(--default-grid-baseline)}.comment__submit[data-v-70317f94]{position:absolute !important;bottom:5px;inset-inline-end:0}.comment__message[data-v-70317f94]{white-space:pre-wrap;word-break:normal;max-height:200px;overflow:auto;scrollbar-gutter:stable;scrollbar-width:thin;margin-top:-6px}.comment__message--expanded[data-v-70317f94]{max-height:none;overflow:visible}.comment__message[data-v-70317f94] img{max-width:100%;height:auto}.rich-contenteditable__input[data-v-70317f94]{min-height:44px;margin:0;padding:10px}","",{version:3,sources:["webpack://./apps/comments/src/components/Comment.vue"],names:[],mappings:"AAKA,0BACC,YAAA,CACA,OAAA,CACA,gBAAA,CAEA,gCACC,YAAA,CACA,sBAAA,CACA,eAAA,CAGD,gCACC,YAAA,CACA,WAAA,CACA,qBAAA,CACA,0BAAA,CAGD,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAGD,mCACC,mCAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,wBAAA,CACA,cAAA,CACA,kBAAA,CACA,mCAAA,CAGD,wCACC,iBAAA,CAGD,8CACC,mCAAA,CACA,0CAAA,CAGD,kCACC,4BAAA,CACA,UAAA,CACA,kBAAA,CAGD,mCACC,oBAAA,CACA,iBAAA,CACA,gBAAA,CACA,aAAA,CACA,uBAAA,CACA,oBAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAED,uCACC,cAAA,CACA,WAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YAlFiB",sourcesContent:['\n@use "sass:math";\n\n$comment-padding: 10px;\n\n.comment {\n\tdisplay: flex;\n\tgap: 8px;\n\tpadding: 5px $comment-padding;\n\n\t&__side {\n\t\tdisplay: flex;\n\t\talign-items: flex-start;\n\t\tpadding-top: 6px;\n\t}\n\n\t&__body {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\tflex-direction: column;\n\t\tcontainer-type: inline-size;\n\t}\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tmin-height: 44px;\n\t}\n\n\t&__actions {\n\t\tmargin-inline-start: $comment-padding !important;\n\t}\n\n\t&__author {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&_loading,\n\t&__timestamp {\n\t\tmargin-inline-start: auto;\n\t\ttext-align: end;\n\t\twhite-space: nowrap;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__editor-group {\n\t\tposition: relative;\n\t}\n\n\t&__editor-description {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tpadding-block: var(--default-grid-baseline);\n\t}\n\n\t&__submit {\n\t\tposition: absolute !important;\n\t\tbottom: 5px;\n\t\tinset-inline-end: 0;\n\t}\n\n\t&__message {\n\t\twhite-space: pre-wrap;\n\t\tword-break: normal;\n\t\tmax-height: 200px;\n\t\toverflow: auto;\n\t\tscrollbar-gutter: stable;\n\t\tscrollbar-width: thin;\n\t\tmargin-top: -6px;\n\t\t&--expanded {\n\t\t\tmax-height: none;\n\t\t\toverflow: visible;\n\t\t}\n\t\t:deep(img) {\n\t\t\tmax-width: 100%;\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.rich-contenteditable__input {\n\tmin-height: 44px;\n\tmargin: 0;\n\tpadding: $comment-padding;\n}\n\n'],sourceRoot:""}]);const i=a},27562(t,e,n){"use strict";n.d(e,{A:()=>o,o:()=>a});var r=n(14113);function o(t){return new r.XMLBuilder({attributeNamePrefix:"@_",format:!0,ignoreAttributes:!1,suppressEmptyNode:!0}).build(s({lockinfo:{"@_xmlns:d":"DAV:",lockscope:{exclusive:{}},locktype:{write:{}},owner:{href:t}}},"d"))}function s(t,e){const n={...t};for(const t in n)n.hasOwnProperty(t)&&(n[t]&&"object"==typeof n[t]&&-1===t.indexOf(":")?(n[`${e}:${t}`]=s(n[t],e),delete n[t]):!1===/^@_/.test(t)&&(n[`${e}:${t}`]=n[t],delete n[t]));return n}function a(t){return new r.XMLParser({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(t)}},28161(t,e,n){"use strict";n.d(e,{c:()=>c});var r=n(85394),o=n(36236),s=n(89062),a=n(29999),i=n(84830);async function c(t,e,n={}){if(!0===n.recursive)return async function(t,e,n={}){const r=(0,o.xi)((0,o.qb)(e));r.sort((t,e)=>t.length>e.length?1:e.length>t.length?-1:0);let s=!1;for(const o of r)if(s)await c(t,o,{...n,recursive:!1});else try{if("directory"!==(await(0,i.z)(t,o)).type)throw new Error(`Path includes a file: ${e}`)}catch(e){if(404!==e.status)throw e;s=!0,await c(t,o,{...n,recursive:!1})}}(t,e,n);const l=(0,s.H)({url:(0,r.oq)(t.remoteURL,(u=(0,o.O0)(e),u.endsWith("/")?u:u+"/")),method:"MKCOL"},t,n),d=await(0,s.E)(l,t);var u;(0,a.HT)(t,d)}},29369(t,e,n){"use strict";n.d(e,{A:()=>y});var r=n(21777),o=n(53334),s=n(10810),a=n(57505),i=n(24764),c=n(15502),l=n(41944),d=n(74095),u=n(4604),m=n(88289),p=n(77764),h=n(33691),f=n(66001),A=n(16502),g=n(37793),E=n(10396),C=n(36564);const y={name:"Comment",components:{IconArrowRight:h.A,IconClose:f.A,IconTrashCanOutline:g.A,IconPencilOutline:A.A,NcActionButton:a.A,NcActions:i.A,NcActionSeparator:c.A,NcAvatar:l.A,NcButton:d.A,NcDateTime:u.A,NcLoadingIcon:m.A,NcRichContenteditable:()=>Promise.all([n.e(4208),n.e(4818),n.e(5258)]).then(n.bind(n,95528)),NcRichText:()=>Promise.all([n.e(4208),n.e(4818),n.e(4508)]).then(n.bind(n,64508))},mixins:[E.A],inheritAttrs:!1,props:{actorDisplayName:{type:String,required:!0},actorId:{type:String,required:!0},creationDateTime:{type:String,default:null},editor:{type:Boolean,default:!1},autoComplete:{type:Function,required:!0},userData:{type:Object,default:()=>({})},tag:{type:String,default:"div"}},data:()=>({expanded:!1,localMessage:"",submitted:!1}),computed:{...(0,s.n2)(C.h),isOwnComment(){return(0,r.HW)().uid===this.actorId},richContent(){const t={};let e=this.localMessage;return Object.keys(this.userData).forEach((n,r)=>{const o=`mention-${r}`,s=new RegExp(`@${n}|@"${n}"`,"g");e=e.replace(s,`{${o}}`),t[o]={component:p.A,props:{user:n,displayName:this.userData[n].label,primary:this.userData[n].primary}}}),{mentions:t,message:e}},isEmptyMessage(){return!this.localMessage||""===this.localMessage.trim()},timestamp(){return Date.parse(this.creationDateTime)},isLimbo(){return this.deletedCommentLimboStore.checkForId(this.id)}},watch:{message(t){this.updateLocalMessage(t)}},beforeMount(){this.updateLocalMessage(this.message)},methods:{t:o.Tl,updateLocalMessage(t){this.localMessage=t.toString(),this.submitted=!1},onSubmit(){if(""!==this.localMessage.trim())return this.editor?(this.onNewComment(this.localMessage.trim()),void this.$nextTick(()=>{this.$refs.editor.$el.focus()})):void this.onEditComment(this.localMessage.trim())},onExpand(){this.expanded=!0}}}},30047(t,e,n){"use strict";n.d(e,{g:()=>p,w:()=>h});var r=n(42294),o=n(88310),s=n(57221),a=n(85394),i=n(36236),c=n(71922),l=n(22921),d=n(89062),u=n(29999),m=n(38374);async function p(t,e,n,r={}){const{contentLength:s=!0,overwrite:m=!0}=r,p={"Content-Type":"application/octet-stream"};!(0,l.HZ)()&&!(0,l.lV)()&&void 0!==o&&void 0!==o?.Readable&&n instanceof o.Readable||!1===s||(p["Content-Length"]="number"==typeof s?`${s}`:`${(0,c.J)(n)}`),m||(p["If-None-Match"]="*");const h=(0,d.H)({url:(0,a.oq)(t.remoteURL,(0,i.O0)(e)),method:"PUT",headers:p,data:n},t,r),f=await(0,d.E)(h,t);try{(0,u.HT)(t,f)}catch(t){const e=t;if(412!==e.status||m)throw e;return!1}return!0}function h(t,e){let n=`${(0,a.oq)(t.remoteURL,(0,i.O0)(e))}?Content-Type=application/octet-stream`;const o=/^https:/i.test(n)?"https":"http";switch(t.authType){case m.hT.None:break;case m.hT.Password:{const e=t.headers.Authorization.replace(/^Basic /i,"").trim(),r=(0,s.Ey)(e);n=n.replace(/^https?:\/\//,`${o}://${r}@`);break}default:throw new r.GU({info:{code:m.O4.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return n}},31538(t,e,n){"use strict";n.d(e,{A:()=>i});var r=n(21777),o=n(19051),s=n(81222),a=n(63814);const i=(0,n(85471).pM)({props:{resourceId:{type:Number,required:!0},resourceType:{type:String,default:"files"}},data(){return{editorData:{actorDisplayName:(0,r.HW)().displayName,actorId:(0,r.HW)().uid,key:"editor"},userData:{},currentResourceId:this.resourceId}},methods:{async autoComplete(t,e){const{data:n}=await o.Ay.get((0,a.KT)("core/autocomplete/get"),{params:{search:t,itemType:this.resourceType,itemId:this.currentResourceId,sorter:"commenters|share-recipients",limit:(0,s.C)("comments","maxAutoCompleteResults")}});return n.ocs.data.forEach(t=>{this.userData[t.id]=t}),e(Object.values(this.userData))},genMentionsData(t){return Object.values(t).flat().forEach(t=>{this.userData[t.mentionId]={icon:"icon-user",id:t.mentionId,label:t.mentionDisplayName,source:"users",primary:(0,r.HW)()?.uid===t.mentionId}}),this.userData}}})},35550(t,e,n){"use strict";n.d(e,{A:()=>c});var r=n(21777),o=n(82415),s=n(17003);const a=(0,o.UU)((0,s.e)());function i(t){a.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}(0,r.zo)(i),i((0,r.do)());const c=a},36564(t,e,n){"use strict";n.d(e,{h:()=>r});const r=(0,n(10810).nY)("deletedCommentLimbo",{state:()=>({idsInLimbo:[]}),actions:{addId(t){this.idsInLimbo.push(t)},removeId(t){const e=this.idsInLimbo.indexOf(t);e>-1&&this.idsInLimbo.splice(e,1)},checkForId(t){return this.idsInLimbo.includes(t)}}})},36942(t,e,n){"use strict";n.d(e,{e:()=>c});var r=n(42294),o=n(90036),s=n(19396),a=n(89793),i=n(38374);function c(t,e,n,c,l){switch(t.authType){case i.hT.Auto:e&&n&&(t.headers.Authorization=(0,s.V)(e,n));break;case i.hT.Digest:t.digest=(0,o.C8)(e,n,l);break;case i.hT.None:break;case i.hT.Password:t.headers.Authorization=(0,s.V)(e,n);break;case i.hT.Token:t.headers.Authorization=(0,a.O)(c);break;default:throw new r.GU({info:{code:i.O4.InvalidAuthType}},`Invalid auth type: ${t.authType}`)}}},39299(t,e,n){"use strict";n.d(e,{P:()=>i});var r=n(88310),o=n(47397),s=n(53850),a=n(22921);function i(t){if(!(0,a.HZ)()&&!(0,a.lV)()&&t instanceof r.Readable)return[t,{}];if("string"==typeof t)return[t,{}];if((0,s.P)(t))return[t,{}];if((0,o.m)(t))return[t,{}];if(t&&"object"==typeof t)return[JSON.stringify(t),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: "+typeof t)}},39615(t,e,n){"use strict";n.d(e,{T:()=>u,s:()=>d});var r=n(26602),o=n(85394),s=n(36236),a=n(27562),i=n(89062),c=n(29999);const l="Infinite, Second-4100000000";async function d(t,e,n={}){const{refreshToken:d,timeout:u=l}=n,m={Accept:"text/plain,application/xml",Timeout:u};d&&(m.If=d);const p=(0,i.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"LOCK",headers:m,data:(0,a.A)(t.contactHref)},t,n),h=await(0,i.E)(p,t);(0,c.HT)(t,h);const f=await h.text(),A=(0,a.o)(f),g=r.get(A,"prop.lockdiscovery.activelock.locktoken.href"),E=r.get(A,"prop.lockdiscovery.activelock.timeout");if(!g)throw(0,c.YQ)(h,"No lock token received: ");return{token:g,serverTimeout:E}}async function u(t,e,n,r={}){const a=(0,i.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"UNLOCK",headers:{"Lock-Token":n}},t,r),l=await(0,i.E)(a,t);if((0,c.HT)(t,l),204!==l.status&&200!==l.status)throw(0,c.YQ)(l)}},42634(){},46270(t,e,n){"use strict";n(70247)},47397(t,e,n){"use strict";n.d(e,{m:()=>s});const r="function"==typeof ArrayBuffer,{toString:o}=Object.prototype;function s(t){return r&&(t instanceof ArrayBuffer||"[object ArrayBuffer]"===o.call(t))}},47790(){},50335(t,e,n){"use strict";n.d(e,{m:()=>i});var r=n(85394),o=n(36236),s=n(89062),a=n(29999);async function i(t,e,n,i={}){const c=(0,s.H)({url:(0,r.oq)(t.remoteURL,(0,o.O0)(e)),method:"COPY",headers:{Destination:(0,r.oq)(t.remoteURL,(0,o.O0)(n)),Overwrite:!1===i.overwrite?"F":"T",Depth:i.shallow?"0":"infinity"}},t,i),l=await(0,s.E)(c,t);(0,a.HT)(t,l)}},51069(){},51195(t,e,n){"use strict";function r(t,e=1){const n=new DOMParser;let r=t;for(let t=0;tr})},54416(t,e,n){"use strict";n.d(e,{A:()=>r});const r=n(29369).A},57221(t,e,n){"use strict";n.d(e,{Ey:()=>o,nk:()=>s});var r=n(85914);function o(t){return r.decode(t)}function s(t){return r.encode(t)}n(29602)},59169(){},61160(t,e,n){"use strict";var r=n(92063),o=n(73992),s=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,a=/[\n\r\t]/g,i=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,c=/:\d+$/,l=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,d=/^[a-zA-Z]:/;function u(t){return(t||"").toString().replace(s,"")}var m=[["#","hash"],["?","query"],function(t,e){return f(e.protocol)?t.replace(/\\/g,"/"):t},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],p={hash:1,query:1};function h(t){var e,n=("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{}).location||{},r={},o=typeof(t=t||n);if("blob:"===t.protocol)r=new g(unescape(t.pathname),{});else if("string"===o)for(e in r=new g(t,{}),p)delete r[e];else if("object"===o){for(e in t)e in p||(r[e]=t[e]);void 0===r.slashes&&(r.slashes=i.test(t.href))}return r}function f(t){return"file:"===t||"ftp:"===t||"http:"===t||"https:"===t||"ws:"===t||"wss:"===t}function A(t,e){t=(t=u(t)).replace(a,""),e=e||{};var n,r=l.exec(t),o=r[1]?r[1].toLowerCase():"",s=!!r[2],i=!!r[3],c=0;return s?i?(n=r[2]+r[3]+r[4],c=r[2].length+r[3].length):(n=r[2]+r[4],c=r[2].length):i?(n=r[3]+r[4],c=r[3].length):n=r[4],"file:"===o?c>=2&&(n=n.slice(2)):f(o)?n=r[4]:o?s&&(n=n.slice(2)):c>=2&&f(e.protocol)&&(n=r[4]),{protocol:o,slashes:s||f(o),slashesCount:c,rest:n}}function g(t,e,n){if(t=(t=u(t)).replace(a,""),!(this instanceof g))return new g(t,e,n);var s,i,c,l,p,E,C=m.slice(),y=typeof e,v=this,w=0;for("object"!==y&&"string"!==y&&(n=e,e=null),n&&"function"!=typeof n&&(n=o.parse),s=!(i=A(t||"",e=h(e))).protocol&&!i.slashes,v.slashes=i.slashes||s&&e.slashes,v.protocol=i.protocol||e.protocol||"",t=i.rest,("file:"===i.protocol&&(2!==i.slashesCount||d.test(t))||!i.slashes&&(i.protocol||i.slashesCount<2||!f(v.protocol)))&&(C[3]=[/(.*)/,"pathname"]);ws});var r=n(70058),o=n(54416);n(46270);const s=(0,n(14486).A)(o.A,r.X,r.Y,!1,null,"70317f94",null).exports},66089(){},67691(t,e){"use strict";e.d=function(t){if(!t)return 0;for(var e=(t=t.toString()).length,n=t.length;n--;){var r=t.charCodeAt(n);56320<=r&&r<=57343&&n--,127l,o:()=>d});var r=n(88310),o=n(85394),s=n(36236),a=n(89062),i=n(29999);const c=()=>{};function l(t,e,n={}){const c=new(0,r.PassThrough);return async function(t,e,n={}){const r={};if("object"==typeof n.range&&"number"==typeof n.range.start){let t=`bytes=${n.range.start}-`;"number"==typeof n.range.end&&(t=`${t}${n.range.end}`),r.Range=t}const c=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"GET",headers:r},t,n),l=await(0,a.E)(c,t);if((0,i.HT)(t,l),r.Range&&206!==l.status){const t=new Error(`Invalid response code for partial request: ${l.status}`);throw t.status=l.status,t}return n.callback&&setTimeout(()=>{n.callback(l)},0),l.body}(t,e,n).then(t=>{t.pipe(c)}).catch(t=>{c.emit("error",t)}),c}function d(t,e,n={},l=c){const d=new(0,r.PassThrough),u={};!1===n.overwrite&&(u["If-None-Match"]="*");const m=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"PUT",headers:u,data:d,maxRedirects:0},t,n);return(0,a.E)(m,t).then(e=>(0,i.HT)(t,e)).then(t=>{setTimeout(()=>{l(t)},0)}).catch(t=>{d.emit("error",t)}),d}},70058(t,e,n){"use strict";n.d(e,{X:()=>r,Y:()=>o});var r=function(){var t=this,e=t._self._c;return e(t.tag,{directives:[{name:"show",rawName:"v-show",value:!t.deleted&&!t.isLimbo,expression:"!deleted && !isLimbo"}],tag:"component",staticClass:"comment",class:{"comment--loading":t.loading}},[e("div",{staticClass:"comment__side"},[e("NcAvatar",{staticClass:"comment__avatar",attrs:{"display-name":t.actorDisplayName,user:t.actorId,size:32}})],1),t._v(" "),e("div",{staticClass:"comment__body"},[e("div",{staticClass:"comment__header"},[e("span",{staticClass:"comment__author"},[t._v(t._s(t.actorDisplayName))]),t._v(" "),t.isOwnComment&&t.id&&!t.loading?e("NcActions",{staticClass:"comment__actions"},[t.editing?e("NcActionButton",{on:{click:t.onEditCancel},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconClose",{attrs:{size:20}})]},proxy:!0}],null,!1,2888946197)},[t._v("\n\t\t\t\t\t"+t._s(t.t("comments","Cancel edit"))+"\n\t\t\t\t")]):[e("NcActionButton",{attrs:{"close-after-click":""},on:{click:t.onEdit},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconPencilOutline",{attrs:{size:20}})]},proxy:!0}],null,!1,3345211262)},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("comments","Edit comment"))+"\n\t\t\t\t\t")]),t._v(" "),e("NcActionSeparator"),t._v(" "),e("NcActionButton",{attrs:{"close-after-click":""},on:{click:t.onDeleteWithUndo},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconTrashCanOutline",{attrs:{size:20}})]},proxy:!0}],null,!1,1034796883)},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("comments","Delete comment"))+"\n\t\t\t\t\t")])]],2):t._e(),t._v(" "),t.id&&t.loading?e("div",{staticClass:"comment_loading icon-loading-small"}):t.creationDateTime?e("NcDateTime",{staticClass:"comment__timestamp",attrs:{timestamp:t.timestamp,"ignore-seconds":!0}}):t._e()],1),t._v(" "),t.editor||t.editing?e("form",{staticClass:"comment__editor",on:{submit:function(t){t.preventDefault()}}},[e("div",{staticClass:"comment__editor-group"},[e("NcRichContenteditable",{ref:"editor",attrs:{"auto-complete":t.autoComplete,contenteditable:!t.loading,label:t.editor?t.t("comments","New comment"):t.t("comments","Edit comment"),placeholder:t.t("comments","Write a comment …"),"model-value":t.localMessage,"user-data":t.userData,"aria-describedby":"tab-comments__editor-description"},on:{"update:value":t.updateLocalMessage,submit:t.onSubmit}}),t._v(" "),e("div",{staticClass:"comment__submit"},[e("NcButton",{attrs:{variant:"tertiary-no-background",type:"submit","aria-label":t.t("comments","Post comment"),disabled:t.isEmptyMessage},on:{click:t.onSubmit},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?e("NcLoadingIcon"):e("IconArrowRight",{attrs:{size:20}})]},proxy:!0}],null,!1,758946661)})],1)],1),t._v(" "),e("div",{staticClass:"comment__editor-description",attrs:{id:"tab-comments__editor-description"}},[t._v("\n\t\t\t\t"+t._s(t.t("comments","@ for mentions, : for emoji, / for smart picker"))+"\n\t\t\t")])]):e("NcRichText",{staticClass:"comment__message",class:{"comment__message--expanded":t.expanded},attrs:{text:t.richContent.message,arguments:t.richContent.mentions,"use-markdown":""},nativeOn:{click:function(e){return t.onExpand.apply(null,arguments)}}})],1)])},o=[]},70247(t,e,n){"use strict";var r=n(85072),o=n.n(r),s=n(97825),a=n.n(s),i=n(77659),c=n.n(i),l=n(55056),d=n.n(l),u=n(10540),m=n.n(u),p=n(41113),h=n.n(p),f=n(22408),A={};A.styleTagTransform=h(),A.setAttributes=d(),A.insert=c().bind(null,"head"),A.domAPI=a(),A.insertStyleElement=m(),o()(f.A,A),f.A&&f.A.locals&&f.A.locals},70395(t,e,n){"use strict";n.d(e,{A:()=>c});var r=n(21777),o=n(19051),s=n(17003),a=n(51195),i=n(35550);async function c(t,e,n){const c=["",t,e].join("/"),l=await o.Ay.post((0,s.e)()+c,{actorDisplayName:(0,r.HW)().displayName,actorId:(0,r.HW)().uid,actorType:"users",creationDateTime:(new Date).toUTCString(),message:n,objectType:t,verb:"comment"}),d=c+"/"+parseInt(l.headers["content-location"].split("/").pop()),u=await i.A.stat(d,{details:!0}),m=u.data.props;return m.actorDisplayName=(0,a.j)(m.actorDisplayName,2),m.message=(0,a.j)(m.message,2),u.data}},71922(t,e,n){"use strict";n.d(e,{J:()=>c});var r=n(42294),o=n(67691),s=n(47397),a=n(53850),i=n(38374);function c(t){if((0,s.m)(t))return t.byteLength;if((0,a.P)(t))return t.length;if("string"==typeof t)return(0,o.d)(t);throw new r.GU({info:{code:i.O4.DataTypeNoLength}},"Cannot calculate data length: Invalid type")}},73776(){},74419(t,e,n){"use strict";n.d(e,{A:()=>l});var r=n(12692),o=n(85394),s=n(36236),a=n(90176),i=n(89062),c=n(29999);async function l(t,e,n={}){const l=(0,i.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e),"/"),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:n.deep?"infinity":"1"}},t,n),d=await(0,i.E)(l,t);(0,c.HT)(t,d);const u=await d.text();if(!u)throw new Error("Failed parsing directory contents: Empty response");const m=await(0,a.h4)(u),p=(0,s.dU)(e);let h=function(t,e,n,i=!1,c=!1){const l=r.join(e,"/"),{multistatus:{response:d}}=t,u=d.map(t=>{const e=(0,o.S8)(t.href),{propstat:{prop:n}}=t,c="/"===l?decodeURIComponent((0,s.qb)(e)):(0,s.qb)(r.relative(decodeURIComponent(l),decodeURIComponent(e)));return(0,a.ch)(n,c,i)});return c?u:u.filter(t=>t.basename&&("file"===t.type||t.filename!==n.replace(/\/$/,"")))}(m,(0,s.dU)(t.remoteBasePath||t.remotePath),p,n.details,n.includeSelf);return n.glob&&(h=(0,c.eh)(h,n.glob)),(0,c.hq)(d,h,n.details)}},75892(t,e,n){"use strict";n.d(e,{t:()=>o});var r=n(84830);async function o(t,e,n={}){try{return await(0,r.z)(t,e,n),!0}catch(t){if(404===t.status)return!1;throw t}}},76374(t,e,n){"use strict";n.d(e,{J:()=>i});var r=n(85394),o=n(36236),s=n(89062),a=n(29999);async function i(t,e,n){n.url||(n.url=(0,r.oq)(t.remoteURL,(0,o.O0)(e)));const i=(0,s.H)(n,t,{}),c=await(0,s.E)(i,t);return(0,a.HT)(t,c),c}},77087(t,e,n){"use strict";n.d(e,{m:()=>i});var r=n(85394),o=n(36236),s=n(89062),a=n(29999);async function i(t,e,n,i={}){const c=(0,s.H)({url:(0,r.oq)(t.remoteURL,(0,o.O0)(e)),method:"MOVE",headers:{Destination:(0,r.oq)(t.remoteURL,(0,o.O0)(n)),Overwrite:!1===i.overwrite?"F":"T"}},t,i),l=await(0,s.E)(c,t);(0,a.HT)(t,l)}},77101(t,e,n){"use strict";n.d(e,{W:()=>i});var r=n(85394),o=n(36236),s=n(89062),a=n(29999);async function i(t,e,n={}){const i=(0,s.H)({url:(0,r.oq)(t.remoteURL,(0,o.O0)(e)),method:"DELETE"},t,n),c=await(0,s.E)(i,t);(0,a.HT)(t,c)}},77199(){},77965(){},78982(){},79368(){},79838(){},80156(t,e,n){"use strict";n.d(e,{T:()=>c});var r=n(90176),o=n(85394),s=n(36236),a=n(89062),i=n(29999);async function c(t,e,n={}){const{details:c=!1}=n,l=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"SEARCH",headers:{Accept:"text/plain,application/xml","Content-Type":t.headers["Content-Type"]||"application/xml; charset=utf-8"}},t,n),d=await(0,a.E)(l,t);(0,i.HT)(t,d);const u=await d.text(),m=await(0,r.h4)(u),p=(0,r.KA)(m,e,c);return(0,i.hq)(d,p,c)}},80486(t,e,n){"use strict";n.d(e,{A:()=>o});var r=n(35550);async function o(t,e,n){const o=["",t,e,n].join("/");await r.A.deleteFile(o)}},81838(t,e,n){"use strict";n.d(e,{V:()=>d});var r=n(42294),o=n(85394),s=n(36236),a=n(89062),i=n(29999),c=n(10524),l=n(38374);async function d(t,e,n,d,u,m={}){const p=await(0,c.p)(t,e,m);if(p.compliance.includes("sabredav-partialupdate"))return await async function(t,e,n,c,d,u={}){if(n>c||n<0)throw new r.GU({info:{code:l.O4.InvalidUpdateRange}},`Invalid update range ${n} for partial update`);const m={"Content-Type":"application/x-sabredav-partialupdate","Content-Length":""+(c-n+1),"X-Update-Range":`bytes=${n}-${c}`},p=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"PATCH",headers:m,data:d},t,u),h=await(0,a.E)(p,t);(0,i.HT)(t,h)}(t,e,n,d,u,m);if(p.server.includes("Apache")&&p.compliance.includes(""))return await async function(t,e,n,c,d,u={}){if(n>c||n<0)throw new r.GU({info:{code:l.O4.InvalidUpdateRange}},`Invalid update range ${n} for partial update`);const m={"Content-Type":"application/octet-stream","Content-Length":""+(c-n+1),"Content-Range":`bytes ${n}-${c}/*`},p=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"PUT",headers:m,data:d},t,u),h=await(0,a.E)(p,t);(0,i.HT)(t,h)}(t,e,n,d,u,m);throw new r.GU({info:{code:l.O4.NotSupported}},"Not supported")}},82415(t,e,n){"use strict";n.d(e,{UU:()=>r.U,h4:()=>o.h4});var r=n(84997),o=(n(38374),n(90176));n(29999)},84830(t,e,n){"use strict";n.d(e,{z:()=>c});var r=n(90176),o=n(85394),s=n(36236),a=n(89062),i=n(29999);async function c(t,e,n={}){const{details:c=!1}=n,l=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,s.O0)(e)),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,n),d=await(0,a.E)(l,t);(0,i.HT)(t,d);const u=await d.text(),m=await(0,r.h4)(u),p=(0,r.ky)(m,e,c);return(0,i.hq)(d,p,c)}},84997(t,e,n){"use strict";n.d(e,{U:()=>b});var r=n(85394),o=n(36942),s=n(50335),a=n(28161),i=n(68476),c=n(76374),l=n(77101),d=n(75892),u=n(74419),m=n(17658),p=n(39615),h=n(86772),f=n(84830),A=n(80156),g=n(77087),E=n(30047),C=n(81838),y=n(10524),v=n(38374);const w="https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md";function b(t,e={}){const{authType:n=null,remoteBasePath:b,contactHref:I=w,ha1:T,headers:R={},httpAgent:_,httpsAgent:O,password:N,token:L,username:$,withCredentials:x}=e;let S=n;S||(S=$||N?v.hT.Password:v.hT.None);const D={authType:S,remoteBasePath:b,contactHref:I,ha1:T,headers:Object.assign({},R),httpAgent:_,httpsAgent:O,password:N,remotePath:(0,r.wB)(t),remoteURL:t,token:L,username:$,withCredentials:x};return(0,o.e)(D,$,N,L,T),{copyFile:(t,e,n)=>(0,s.m)(D,t,e,n),createDirectory:(t,e)=>(0,a.c)(D,t,e),createReadStream:(t,e)=>(0,i.V)(D,t,e),createWriteStream:(t,e,n)=>(0,i.o)(D,t,e,n),customRequest:(t,e)=>(0,c.J)(D,t,e),deleteFile:(t,e)=>(0,l.W)(D,t,e),exists:(t,e)=>(0,d.t)(D,t,e),getDirectoryContents:(t,e)=>(0,u.A)(D,t,e),getFileContents:(t,e)=>(0,m.F)(D,t,e),getFileDownloadLink:t=>(0,m.b)(D,t),getFileUploadLink:t=>(0,E.w)(D,t),getHeaders:()=>Object.assign({},D.headers),getQuota:t=>(0,h.T)(D,t),lock:(t,e)=>(0,p.s)(D,t,e),moveFile:(t,e,n)=>(0,g.m)(D,t,e,n),putFileContents:(t,e,n)=>(0,E.g)(D,t,e,n),partialUpdateFileContents:(t,e,n,r,o)=>(0,C.V)(D,t,e,n,r,o),getDAVCompliance:t=>(0,y.p)(D,t),search:(t,e)=>(0,A.T)(D,t,e),setHeaders:t=>{D.headers=Object.assign({},t)},stat:(t,e)=>(0,f.z)(D,t,e),unlock:(t,e,n)=>(0,p.T)(D,t,e,n)}}},85394(t,e,n){"use strict";n.d(e,{S8:()=>l,oq:()=>c,wB:()=>i});var r=n(61160),o=n(42294),s=n(406),a=n(36236);function i(t){let e=new r(t).pathname;return e.length<=0&&(e="/"),(0,a.qb)(e)}function c(...t){return(0,s.A)(t.reduce((t,e,n)=>((0===n||"/"!==e||"/"===e&&"/"!==t[t.length-1])&&t.push(e),t),[]))}function l(t){try{return t.replace(/^https?:\/\/[^\/]+/,"")}catch(t){throw new o.GU(t,"Failed normalising HREF")}}},85914(t,e,n){var r;t=n.nmd(t),function(){var o=(t&&t.exports,"object"==typeof globalThis&&globalThis);o.global!==o&&o.window;var s=function(t){this.message=t};(s.prototype=new Error).name="InvalidCharacterError";var a=function(t){throw new s(t)},i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=/[\t\n\f\r ]/g,l={encode:function(t){t=String(t),/[^\0-\xFF]/.test(t)&&a("The string to be encoded contains characters outside of the Latin1 range.");for(var e,n,r,o,s=t.length%3,c="",l=-1,d=t.length-s;++l>18&63)+i.charAt(o>>12&63)+i.charAt(o>>6&63)+i.charAt(63&o);return 2==s?(e=t.charCodeAt(l)<<8,n=t.charCodeAt(++l),c+=i.charAt((o=e+n)>>10)+i.charAt(o>>4&63)+i.charAt(o<<2&63)+"="):1==s&&(o=t.charCodeAt(l),c+=i.charAt(o>>2)+i.charAt(o<<4&63)+"=="),c},decode:function(t){var e=(t=String(t).replace(c,"")).length;e%4==0&&(e=(t=t.replace(/==?$/,"")).length),(e%4==1||/[^+a-zA-Z0-9/]/.test(t))&&a("Invalid character: the string to be decoded is not correctly encoded.");for(var n,r,o=0,s="",l=-1;++l>(-2*o&6)));return s},version:"1.0.0"};void 0===(r=function(){return l}.call(e,n,e,t))||(t.exports=r)}()},86772(t,e,n){"use strict";n.d(e,{T:()=>c});var r=n(89062),o=n(29999),s=n(90176),a=n(85394),i=n(7815);async function c(t,e={}){const n=e.path||"/",c=(0,r.H)({url:(0,a.oq)(t.remoteURL,n),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,e),l=await(0,r.E)(c,t);(0,o.HT)(t,l);const d=await l.text(),u=await(0,s.h4)(d),m=(0,i.K)(u);return(0,o.hq)(l,m,e.details)}},86833(){},89062(t,e,n){"use strict";n.d(e,{E:()=>f,H:()=>h});var r=n(11568),o=n(11083),s=n(97192),a=n(84819),i=n(22921),c=n(90036),l=n(79275),d=n(79605),u=n(39299),m=n(38374),p=n(36942);function h(t,e,n){const r=(0,l.q)(t);return r.headers=(0,d.l)(e.headers,r.headers||{},n.headers||{}),void 0!==n.data&&(r.data=n.data),n.signal&&(r.signal=n.signal),e.httpAgent&&(r.httpAgent=e.httpAgent),e.httpsAgent&&(r.httpsAgent=e.httpsAgent),e.digest&&(r._digest=e.digest),"boolean"==typeof e.withCredentials&&(r.withCredentials=e.withCredentials),r}async function f(t,e){return e.authType===m.hT.Auto?async function(t,e){const n=await g(t);return n.ok?(e.authType=m.hT.Password,n):401==n.status&&(0,c.oD)(n)?(e.authType=m.hT.Digest,(0,p.e)(e,e.username,e.password,void 0,void 0),t._digest=e.digest,A(t)):n}(t,e):t._digest?A(t):g(t)}async function A(t){const e=t._digest;delete t._digest,e.hasDigestAuth&&(t=(0,l.h)(t,{headers:{Authorization:(0,c.XX)(t,e)}}));const n=await g(t);if(401==n.status){if(e.hasDigestAuth=(0,c.Wb)(n,e),e.hasDigestAuth){t=(0,l.h)(t,{headers:{Authorization:(0,c.XX)(t,e)}});const n=await g(t);return 401==n.status?e.hasDigestAuth=!1:e.nc++,n}}else e.nc++;return n}function g(t){const e=(0,a.G)();return e.patchInline("request",t=>e.patchInline("fetch",s.hd,t.url,function(t){let e={};const n={method:t.method};if(t.headers&&(e=(0,d.l)(e,t.headers)),void 0!==t.data){const[r,o]=(0,u.P)(t.data);n.body=r,e=(0,d.l)(e,o)}return t.signal&&(n.signal=t.signal),t.withCredentials&&(n.credentials="include"),(0,i.HZ)()||(0,i.lV)()||(t.httpAgent||t.httpsAgent)&&(n.agent=e=>"http:"===e.protocol?t.httpAgent||new r.Agent:t.httpsAgent||new o.Agent),n.headers=e,n}(t)),t)}},90036(t,e,n){"use strict";n.d(e,{C8:()=>s,Wb:()=>i,XX:()=>a,oD:()=>c});var r=n(83503),o=n(35658);function s(t,e,n){return{username:t,password:e,ha1:n,nc:0,algorithm:"md5",hasDigestAuth:!1}}function a(t,e){const n=t.url.replace("//",""),s=-1==n.indexOf("/")?"/":n.slice(n.indexOf("/")),a=t.method?t.method.toUpperCase():"GET",i=!!/(^|,)\s*auth\s*($|,)/.test(e.qop)&&"auth",c=`00000000${e.nc}`.slice(-8),l=(0,o.M)(e.algorithm,e.username,e.realm,e.password,e.nonce,e.cnonce,e.ha1),d=r(`${a}:${s}`),u=r(i?`${l}:${e.nonce}:${c}:${e.cnonce}:${i}:${d}`:`${l}:${e.nonce}:${d}`),m={username:e.username,realm:e.realm,nonce:e.nonce,uri:s,qop:i,response:u,nc:c,cnonce:e.cnonce,algorithm:e.algorithm,opaque:e.opaque},p=[];for(const t in m)m[t]&&("qop"===t||"nc"===t||"algorithm"===t?p.push(`${t}=${m[t]}`):p.push(`${t}="${m[t]}"`));return`Digest ${p.join(", ")}`}function i(t,e){if(!c(t))return!1;const n=/([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi;for(;;){const r=t.headers&&t.headers.get("www-authenticate")||"",o=n.exec(r);if(!o)break;e[o[1]]=o[2]||o[3]}return e.nc+=1,e.cnonce=function(){let t="";for(let e=0;e<32;++e)t=`${t}${"abcdef0123456789"[Math.floor(16*Math.random())]}`;return t}(),!0}function c(t){return"digest"===(t.headers&&t.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()}},93226(t,e,n){"use strict";var r,o,s,a,i=n(21777),c=n(44013),l=n(380),d=n(20005),u=n(53334),m=n(65606);function p(){if(o)return r;o=1;const t="object"==typeof m&&m.env&&m.env.NODE_DEBUG&&/\bsemver\b/i.test(m.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};return r=t}function h(){if(a)return s;a=1;const t=Number.MAX_SAFE_INTEGER||9007199254740991;return s={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:t,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}var f,A,g,E,C,y,v,w,b,I,T,R,_,O={exports:{}};function N(){if(v)return y;v=1;const t=p(),{MAX_LENGTH:e,MAX_SAFE_INTEGER:n}=h(),{safeRe:r,t:o}=(f||(f=1,function(t,e){const{MAX_SAFE_COMPONENT_LENGTH:n,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:o}=h(),s=p(),a=(e=t.exports={}).re=[],i=e.safeRe=[],c=e.src=[],l=e.safeSrc=[],d=e.t={};let u=0;const m="[a-zA-Z0-9-]",f=[["\\s",1],["\\d",o],[m,r]],A=(t,e,n)=>{const r=(t=>{for(const[e,n]of f)t=t.split(`${e}*`).join(`${e}{0,${n}}`).split(`${e}+`).join(`${e}{1,${n}}`);return t})(e),o=u++;s(t,o,e),d[t]=o,c[o]=e,l[o]=r,a[o]=new RegExp(e,n?"g":void 0),i[o]=new RegExp(r,n?"g":void 0)};A("NUMERICIDENTIFIER","0|[1-9]\\d*"),A("NUMERICIDENTIFIERLOOSE","\\d+"),A("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${m}*`),A("MAINVERSION",`(${c[d.NUMERICIDENTIFIER]})\\.(${c[d.NUMERICIDENTIFIER]})\\.(${c[d.NUMERICIDENTIFIER]})`),A("MAINVERSIONLOOSE",`(${c[d.NUMERICIDENTIFIERLOOSE]})\\.(${c[d.NUMERICIDENTIFIERLOOSE]})\\.(${c[d.NUMERICIDENTIFIERLOOSE]})`),A("PRERELEASEIDENTIFIER",`(?:${c[d.NONNUMERICIDENTIFIER]}|${c[d.NUMERICIDENTIFIER]})`),A("PRERELEASEIDENTIFIERLOOSE",`(?:${c[d.NONNUMERICIDENTIFIER]}|${c[d.NUMERICIDENTIFIERLOOSE]})`),A("PRERELEASE",`(?:-(${c[d.PRERELEASEIDENTIFIER]}(?:\\.${c[d.PRERELEASEIDENTIFIER]})*))`),A("PRERELEASELOOSE",`(?:-?(${c[d.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${c[d.PRERELEASEIDENTIFIERLOOSE]})*))`),A("BUILDIDENTIFIER",`${m}+`),A("BUILD",`(?:\\+(${c[d.BUILDIDENTIFIER]}(?:\\.${c[d.BUILDIDENTIFIER]})*))`),A("FULLPLAIN",`v?${c[d.MAINVERSION]}${c[d.PRERELEASE]}?${c[d.BUILD]}?`),A("FULL",`^${c[d.FULLPLAIN]}$`),A("LOOSEPLAIN",`[v=\\s]*${c[d.MAINVERSIONLOOSE]}${c[d.PRERELEASELOOSE]}?${c[d.BUILD]}?`),A("LOOSE",`^${c[d.LOOSEPLAIN]}$`),A("GTLT","((?:<|>)?=?)"),A("XRANGEIDENTIFIERLOOSE",`${c[d.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),A("XRANGEIDENTIFIER",`${c[d.NUMERICIDENTIFIER]}|x|X|\\*`),A("XRANGEPLAIN",`[v=\\s]*(${c[d.XRANGEIDENTIFIER]})(?:\\.(${c[d.XRANGEIDENTIFIER]})(?:\\.(${c[d.XRANGEIDENTIFIER]})(?:${c[d.PRERELEASE]})?${c[d.BUILD]}?)?)?`),A("XRANGEPLAINLOOSE",`[v=\\s]*(${c[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[d.XRANGEIDENTIFIERLOOSE]})(?:${c[d.PRERELEASELOOSE]})?${c[d.BUILD]}?)?)?`),A("XRANGE",`^${c[d.GTLT]}\\s*${c[d.XRANGEPLAIN]}$`),A("XRANGELOOSE",`^${c[d.GTLT]}\\s*${c[d.XRANGEPLAINLOOSE]}$`),A("COERCEPLAIN",`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?`),A("COERCE",`${c[d.COERCEPLAIN]}(?:$|[^\\d])`),A("COERCEFULL",c[d.COERCEPLAIN]+`(?:${c[d.PRERELEASE]})?(?:${c[d.BUILD]})?(?:$|[^\\d])`),A("COERCERTL",c[d.COERCE],!0),A("COERCERTLFULL",c[d.COERCEFULL],!0),A("LONETILDE","(?:~>?)"),A("TILDETRIM",`(\\s*)${c[d.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",A("TILDE",`^${c[d.LONETILDE]}${c[d.XRANGEPLAIN]}$`),A("TILDELOOSE",`^${c[d.LONETILDE]}${c[d.XRANGEPLAINLOOSE]}$`),A("LONECARET","(?:\\^)"),A("CARETTRIM",`(\\s*)${c[d.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",A("CARET",`^${c[d.LONECARET]}${c[d.XRANGEPLAIN]}$`),A("CARETLOOSE",`^${c[d.LONECARET]}${c[d.XRANGEPLAINLOOSE]}$`),A("COMPARATORLOOSE",`^${c[d.GTLT]}\\s*(${c[d.LOOSEPLAIN]})$|^$`),A("COMPARATOR",`^${c[d.GTLT]}\\s*(${c[d.FULLPLAIN]})$|^$`),A("COMPARATORTRIM",`(\\s*)${c[d.GTLT]}\\s*(${c[d.LOOSEPLAIN]}|${c[d.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",A("HYPHENRANGE",`^\\s*(${c[d.XRANGEPLAIN]})\\s+-\\s+(${c[d.XRANGEPLAIN]})\\s*$`),A("HYPHENRANGELOOSE",`^\\s*(${c[d.XRANGEPLAINLOOSE]})\\s+-\\s+(${c[d.XRANGEPLAINLOOSE]})\\s*$`),A("STAR","(<|>)?=?\\s*\\*"),A("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),A("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(O,O.exports)),O.exports),s=function(){if(g)return A;g=1;const t=Object.freeze({loose:!0}),e=Object.freeze({});return A=n=>n?"object"!=typeof n?t:n:e,A}(),{compareIdentifiers:a}=function(){if(C)return E;C=1;const t=/^[0-9]+$/,e=(e,n)=>{if("number"==typeof e&&"number"==typeof n)return e===n?0:ee(n,t)}}();class i{constructor(a,c){if(c=s(c),a instanceof i){if(a.loose===!!c.loose&&a.includePrerelease===!!c.includePrerelease)return a;a=a.version}else if("string"!=typeof a)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof a}".`);if(a.length>e)throw new TypeError(`version is longer than ${e} characters`);t("SemVer",a,c),this.options=c,this.loose=!!c.loose,this.includePrerelease=!!c.includePrerelease;const l=a.trim().match(c.loose?r[o.LOOSE]:r[o.FULL]);if(!l)throw new TypeError(`Invalid Version: ${a}`);if(this.raw=a,this.major=+l[1],this.minor=+l[2],this.patch=+l[3],this.major>n||this.major<0)throw new TypeError("Invalid major version");if(this.minor>n||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>n||this.patch<0)throw new TypeError("Invalid patch version");l[4]?this.prerelease=l[4].split(".").map(t=>{if(/^[0-9]+$/.test(t)){const e=+t;if(e>=0&&et.major?1:this.minort.minor?1:this.patcht.patch?1:0}comparePre(e){if(e instanceof i||(e=new i(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let n=0;do{const r=this.prerelease[n],o=e.prerelease[n];if(t("prerelease compare",n,r,o),void 0===r&&void 0===o)return 0;if(void 0===o)return 1;if(void 0===r)return-1;if(r!==o)return a(r,o)}while(++n)}compareBuild(e){e instanceof i||(e=new i(e,this.options));let n=0;do{const r=this.build[n],o=e.build[n];if(t("build compare",n,r,o),void 0===r&&void 0===o)return 0;if(void 0===o)return 1;if(void 0===r)return-1;if(r!==o)return a(r,o)}while(++n)}inc(t,e,n){if(t.startsWith("pre")){if(!e&&!1===n)throw new Error("invalid increment argument: identifier is empty");if(e){const t=`-${e}`.match(this.options.loose?r[o.PRERELEASELOOSE]:r[o.PRERELEASE]);if(!t||t[1]!==e)throw new Error(`invalid identifier: ${e}`)}}switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",e,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",e,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",e,n),this.inc("pre",e,n);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",e,n),this.inc("pre",e,n);break;case"release":if(0===this.prerelease.length)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{const t=Number(n)?1:0;if(0===this.prerelease.length)this.prerelease=[t];else{let r=this.prerelease.length;for(;--r>=0;)"number"==typeof this.prerelease[r]&&(this.prerelease[r]++,r=-2);if(-1===r){if(e===this.prerelease.join(".")&&!1===n)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(t)}}if(e){let r=[e,t];!1===n&&(r=[e]),0===a(this.prerelease[0],e)?isNaN(this.prerelease[1])&&(this.prerelease=r):this.prerelease=r}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}return y=i}!function(){if(b)return w;b=1;const t=N();w=(e,n)=>new t(e,n).major}(),function(){if(_)return R;_=1;const t=function(){if(T)return I;T=1;const t=N();return I=(e,n,r=!1)=>{if(e instanceof t)return e;try{return new t(e,n)}catch(t){if(!r)return null;throw t}},I}();R=(e,n)=>{const r=t(e,n);return r?r.version:null}}(),l.m,Error;var L=n(81222),$=n(26422),x=n(10810),S=n(85471),D=n(85168),P=n(57579),U=n(74095),k=n(42507),M=n(57578);const H={name:"MessageReplyTextOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var F=n(14486);const q=(0,F.A)(H,function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon message-reply-text-outline-icon",attrs:{"aria-hidden":t.title?null:"true","aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},[],!1,null,null,null).exports;var G=n(83239),j=n(65463),B=n(96689),V=n(31538),X=n(82415),z=n(29999),W=n(90176),Y=n(35550);async function K({resourceType:t,resourceId:e},n){const r=["",t,e].join("/"),o=n.datetime?`${n.datetime.toISOString()}`:"",s=await Y.A.customRequest(r,{method:"REPORT",data:`\n\t\t\t\n\t\t\t\t${n.limit??20}\n\t\t\t\t${n.offset||0}\n\t\t\t\t${o}\n\t\t\t`,...n}),a=await s.text(),i=function(t,e=!1){const{multistatus:{response:n}}=t;return n.map(t=>{const n=t.propstat.prop;return(0,W.ch)(n,n.id.toString(),e)})}(await(0,X.h4)(a),!0);return(0,z.hq)(s,i,!0)}const Z={name:"Comments",components:{Comment:j.A,NcEmptyContent:k.A,NcButton:U.A,IconRefresh:G.A,IconMessageReplyTextOutline:q,IconAlertCircleOutline:M.A},directives:{elementVisibility:P.Zx},mixins:[V.A],data:()=>({error:"",loading:!1,done:!1,offset:0,comments:[],cancelRequest:()=>{},Comment:j.A,userData:{}}),computed:{hasComments(){return this.comments.length>0},isFirstLoading(){return this.loading&&0===this.offset}},watch:{resourceId(){this.currentResourceId=this.resourceId}},methods:{t:u.Tl,async onVisibilityChange(t){if(t)try{await function(t,e,n){const r=["",t,e].join("/"),o=n.toUTCString();return Y.A.customRequest(r,{method:"PROPPATCH",data:`\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${o}\n\t\t\t\t\n\t\t\t\n\t\t\t`})}(this.resourceType,this.currentResourceId,new Date)}catch(t){(0,D.Qg)(t.message||(0,u.Tl)("comments","Failed to mark comments as read"))}},async update(t){this.currentResourceId=t,this.resetState(),await this.getComments()},onScrollBottomReached(){this.error||this.done||this.loading||this.getComments()},async getComments(){this.cancelRequest("cancel");try{this.loading=!0,this.error="";const{request:t,abort:e}=function(t){const e=new AbortController,n=e.signal;return{request:async function(e,r){return await t(e,{signal:n,...r})},abort:()=>e.abort()}}(K);this.cancelRequest=e;const{data:n}=await t({resourceType:this.resourceType,resourceId:this.currentResourceId},{offset:this.offset})||{data:[]};this.logger.debug(`Processed ${n.length} comments`,{comments:n}),n.length<20&&(this.done=!0);for(const t of n)t.props.actorId=t.props.actorId.toString();this.comments=[...this.comments,...n],this.offset+=20}catch(t){if("cancel"===t.message)return;this.error=(0,u.Tl)("comments","Unable to load the comments list"),B.A.error("Error loading the comments list",{error:t})}finally{this.loading=!1}},onNewComment(t){this.comments.unshift(t)},onDelete(t){const e=this.comments.findIndex(e=>e.props.id===t);e>-1?this.comments.splice(e,1):B.A.error("Could not find the deleted comment in the list",{id:t})},resetState(){this.error="",this.loading=!1,this.done=!1,this.offset=0,this.comments=[]}}};var Q=n(85072),J=n.n(Q),tt=n(97825),et=n.n(tt),nt=n(77659),rt=n.n(nt),ot=n(55056),st=n.n(ot),at=n(10540),it=n.n(at),ct=n(41113),lt=n.n(ct),dt=n(94262),ut={};ut.styleTagTransform=lt(),ut.setAttributes=st(),ut.insert=rt().bind(null,"head"),ut.domAPI=et(),ut.insertStyleElement=it(),J()(dt.A,ut),dt.A&&dt.A.locals&&dt.A.locals;const mt=(0,F.A)(Z,function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"element-visibility",rawName:"v-element-visibility",value:t.onVisibilityChange,expression:"onVisibilityChange"}],staticClass:"comments",class:{"icon-loading":t.isFirstLoading}},[e("Comment",t._b({staticClass:"comments__writer",attrs:{"auto-complete":t.autoComplete,"resource-type":t.resourceType,editor:!0,"user-data":t.userData,"resource-id":t.currentResourceId},on:{new:t.onNewComment}},"Comment",t.editorData,!1)),t._v(" "),t.isFirstLoading?t._e():[!t.hasComments&&t.done?e("NcEmptyContent",{staticClass:"comments__empty",attrs:{name:t.t("comments","No comments yet, start the conversation!")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconMessageReplyTextOutline")]},proxy:!0}],null,!1,326612300)}):e("ul",t._l(t.comments,function(n){return e("Comment",t._b({key:n.props.id,staticClass:"comments__list",attrs:{tag:"li","auto-complete":t.autoComplete,"resource-type":t.resourceType,message:n.props.message,"resource-id":t.currentResourceId,"user-data":t.genMentionsData(n.props.mentions)},on:{"update:message":function(e){return t.$set(n.props,"message",e)},delete:t.onDelete}},"Comment",n.props,!1))}),1),t._v(" "),t.loading&&!t.isFirstLoading?e("div",{staticClass:"comments__info icon-loading"}):t.hasComments&&t.done?e("div",{staticClass:"comments__info"},[t._v("\n\t\t\t"+t._s(t.t("comments","No more messages"))+"\n\t\t")]):t.error?[e("NcEmptyContent",{staticClass:"comments__error",attrs:{name:t.error},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconAlertCircleOutline")]},proxy:!0}],null,!1,3663249556)}),t._v(" "),e("NcButton",{staticClass:"comments__retry",on:{click:t.getComments},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconRefresh")]},proxy:!0}],null,!1,2997625269)},[t._v("\n\t\t\t\t"+t._s(t.t("comments","Retry"))+"\n\t\t\t")])]:t._e()]],2)},[],!1,null,"6c8c157a",null).exports,pt=(0,S.pM)({__name:"FilesSidebarTab",props:{node:null,folder:null,view:null},setup(t,{expose:e}){const n=t;e({setActive:o});const r=(0,S.EW)(()=>n.node?.fileid);function o(t){return t}return{__sfc:!0,props:n,resourceId:r,setActive:o,Comments:mt}}}),ht=(0,F.A)(pt,function(){var t=this,e=t._self._c,n=t._self._setupProxy;return void 0!==n.resourceId?e(n.Comments,{key:n.resourceId,attrs:{"resource-id":n.resourceId,"resource-type":"files"}}):t._e()},[],!1,null,null,null).exports;var ft=n(51651);let At,gt;S.Ay.use(x.R2),n.nc=(0,i.aV)();const Et="comments_files-sidebar-tab";var Ct;(0,L.C)("comments","activityEnabled",!1)&&void 0!==OCA?.Activity?.registerSidebarAction?window.addEventListener("DOMContentLoaded",function(){window.OCA.Activity.registerSidebarAction({mount:async(t,{node:e,reload:r})=>{const o=(0,x.Ey)();if(!At){const{default:t}=await n.e(4906).then(n.bind(n,44906));At=S.Ay.extend(t)}gt=new At({el:t,pinia:o,propsData:{reloadCallback:r,resourceId:e.fileid}}),B.A.info("Comments plugin mounted in Activity sidebar action",{node:e})},unmount:()=>{gt&>.$destroy()}}),window.OCA.Activity.registerSidebarEntries(async({node:t,limit:e,offset:r})=>{const{data:o}=await K({resourceType:"files",resourceId:t.fileid},{limit:e,offset:r??0});B.A.debug("Loaded comments",{node:t,comments:o});const{default:s}=await n.e(7039).then(n.bind(n,57039)),a=S.Ay.extend(s);return o.map(e=>({_CommentsViewInstance:void 0,timestamp:(0,ft.A)(e.props?.creationDateTime).toDate().getTime(),mount(n,{reload:r}){this._CommentsViewInstance=new a({el:n,propsData:{comment:e,resourceId:t.fileid,reloadCallback:r}})},unmount(){this._CommentsViewInstance?.$destroy()}}))}),window.OCA.Activity.registerSidebarFilter(t=>"comments"!==t.type),B.A.info("Comments plugin registered for Activity sidebar action")}):(function(t){if("object"!=typeof t)throw new Error("Sidebar tab is not an object");if(!t.id||"string"!=typeof t.id||t.id!==CSS.escape(t.id))throw new Error("Sidebar tabs need to have an id conforming to the HTML id attribute specifications");if(!t.tagName||"string"!=typeof t.tagName)throw new Error("Sidebar tabs need to have the tagName name set");if(!t.tagName.match(/^[a-z][a-z0-9-_]+$/))throw new Error("Sidebar tabs tagName name is invalid");if(!t.displayName||"string"!=typeof t.displayName)throw new Error("Sidebar tabs need to have a name set");if("string"!=typeof t.iconSvgInline||!(0,d.A)(t.iconSvgInline))throw new Error("Sidebar tabs need to have an valid SVG icon");if("number"!=typeof t.order)throw new Error("Sidebar tabs need to have a numeric order set");if("function"!=typeof t.enabled)throw new Error('Sidebar tabs need to have an "enabled" method')}(Ct={id:"comments",displayName:(0,u.t)("comments","Comments"),iconSvgInline:'',order:50,tagName:Et,enabled:()=>(window.customElements.get(Et)||function(){S.Ay.use(x.R2),S.Ay.mixin({pinia:(0,x.Ey)()});const t=(0,$.A)(S.Ay,ht);Object.defineProperty(t.prototype,"attachShadow",{value(){return this}}),Object.defineProperty(t.prototype,"shadowRoot",{get(){return this}}),window.customElements.define(Et,t)}(),!0)}),window._nc_files_sidebar_tabs??=new Map,window._nc_files_sidebar_tabs.has(Ct.id)?c.l.warn(`Sidebar tab with id "${Ct.id}" already registered. Skipping.`):(window._nc_files_sidebar_tabs.set(Ct.id,Ct),c.l.debug(`New sidebar tab with id "${Ct.id}" registered.`)))},94262(t,e,n){"use strict";n.d(e,{A:()=>i});var r=n(71354),o=n.n(r),s=n(76314),a=n.n(s)()(o());a.push([t.id,".comments[data-v-6c8c157a]{min-height:100%;display:flex;flex-direction:column}.comments__empty[data-v-6c8c157a],.comments__error[data-v-6c8c157a]{flex:1 0}.comments__retry[data-v-6c8c157a]{margin:0 auto}.comments__info[data-v-6c8c157a]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}","",{version:3,sources:["webpack://./apps/comments/src/views/Comments.vue"],names:[],mappings:"AACA,2BACC,eAAA,CACA,YAAA,CACA,qBAAA,CAEA,oEAEC,QAAA,CAGD,kCACC,aAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA",sourcesContent:["\n.comments {\n\tmin-height: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&__empty,\n\t&__error {\n\t\tflex: 1 0;\n\t}\n\n\t&__retry {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__info {\n\t\theight: 60px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\ttext-align: center;\n\t\tline-height: 60px;\n\t}\n}\n"],sourceRoot:""}]);const i=a},96689(t,e,n){"use strict";n.d(e,{A:()=>r});const r=(0,n(35947).YK)().setApp("comments").detectUser().build()}},s={};function a(t){var e=s[t];if(void 0!==e)return e.exports;var n=s[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=o,e=[],a.O=(t,n,r,o)=>{if(!n){var s=1/0;for(d=0;d=o)&&Object.keys(a.O).every(t=>a.O[t](n[c]))?n.splice(c--,1):(i=!1,o0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[n,r,o]},a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.f={},a.e=t=>Promise.all(Object.keys(a.f).reduce((e,n)=>(a.f[n](t,e),e),[])),a.u=t=>t+"-"+t+".js?v="+{594:"f5af3d132040859cb666",620:"e5d77a046303aedd05c5",2391:"6d29c12fea2fbb265756",2880:"803b63f847e6d68bcf0d",4325:"b597fcd1212503c968df",4508:"b788d8e845a1709aacd5",4818:"d7d676d61bc734e1307a",4906:"494ff510a1379d42d106",5258:"bf877d931968f112154d",5862:"580b9c2e231a9169a12f",7039:"9800c2c4f93af8d9465e",7145:"1f907ab7a1c83e8a6617",8339:"b2246be0f4c885a9d524"}[t],a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n={},r="nextcloud-ui-legacy:",a.l=(t,e,o,s)=>{if(n[t])n[t].push(e);else{var i,c;if(void 0!==o)for(var l=document.getElementsByTagName("script"),d=0;d{i.onerror=i.onload=null,clearTimeout(p);var o=n[t];if(delete n[t],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach(t=>t(r)),e)return e(r)},p=setTimeout(m.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=m.bind(null,i.onerror),i.onload=m.bind(null,i.onload),c&&document.head.appendChild(i)}},a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),a.j=2122,(()=>{var t;globalThis.importScripts&&(t=globalThis.location+"");var e=globalThis.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!t||!/^http(s?):/.test(t));)t=n[r--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=t})(),(()=>{a.b="undefined"!=typeof document&&document.baseURI||self.location.href;var t={2122:0};a.f.j=(e,n)=>{var r=a.o(t,e)?t[e]:void 0;if(0!==r)if(r)n.push(r[2]);else{var o=new Promise((n,o)=>r=t[e]=[n,o]);n.push(r[2]=o);var s=a.p+a.u(e),i=new Error;a.l(s,n=>{if(a.o(t,e)&&(0!==(r=t[e])&&(t[e]=void 0),r)){var o=n&&("load"===n.type?"missing":n.type),s=n&&n.target&&n.target.src;i.message="Loading chunk "+e+" failed.\n("+o+": "+s+")",i.name="ChunkLoadError",i.type=o,i.request=s,r[1](i)}},"chunk-"+e,e)}},a.O.j=e=>0===t[e];var e=(e,n)=>{var r,o,[s,i,c]=n,l=0;if(s.some(e=>0!==t[e])){for(r in i)a.o(i,r)&&(a.m[r]=i[r]);if(c)var d=c(a)}for(e&&e(n);la(93226));i=a.O(i)})(); +//# sourceMappingURL=comments-comments-tab.js.map?v=2f8bf0dbeb61f003cc9e \ No newline at end of file diff --git a/dist/comments-comments-tab.js.map b/dist/comments-comments-tab.js.map index 0d25026e79a65..28e4a30ba85c4 100644 --- a/dist/comments-comments-tab.js.map +++ b/dist/comments-comments-tab.js.map @@ -1 +1 @@ -{"version":3,"file":"comments-comments-tab.js?v=2088f3e2eedd7c67707d","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/node_modules/webdav/dist/node/tools/quota.js","webpack:///nextcloud/apps/comments/src/mixins/CommentMixin.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getDAVCompliance.js","webpack:///nextcloud/apps/comments/src/services/EditComment.js","webpack:///nextcloud/node_modules/https-browserify/index.js","webpack:///nextcloud/node_modules/stream-http/index.js","webpack:///nextcloud/apps/comments/src/utils/davUtils.js","webpack:///nextcloud/node_modules/layerr/dist/layerr.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/basic.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true","webpack:///nextcloud/node_modules/webdav/dist/node/tools/xml.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createDirectory.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue","webpack:///nextcloud/node_modules/webdav/dist/node/operations/putFileContents.js","webpack:///nextcloud/apps/comments/src/mixins/CommentView.ts","webpack:///nextcloud/apps/comments/src/services/DavClient.js","webpack:///nextcloud/apps/comments/src/store/deletedCommentLimbo.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/body.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/lock.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/arrayBuffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/copyFile.js","webpack:///nextcloud/apps/comments/src/utils/decodeHtmlEntities.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/encode.js","webpack:///nextcloud/node_modules/url-parse/index.js","webpack://nextcloud/./apps/comments/src/components/Comment.vue?7f26","webpack:///nextcloud/node_modules/byte-length/dist/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createStream.js","webpack://nextcloud/./apps/comments/src/components/Comment.vue?d1f7","webpack://nextcloud/./apps/comments/src/components/Comment.vue?7275","webpack:///nextcloud/apps/comments/src/services/NewComment.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/size.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/directoryContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/exists.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/customRequest.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/moveFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/deleteFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/search.js","webpack:///nextcloud/apps/comments/src/services/DeleteComment.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/partialUpdateFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/stat.js","webpack:///nextcloud/node_modules/webdav/dist/node/factory.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/url.js","webpack:///nextcloud/node_modules/base-64/base64.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getQuota.js","webpack:///nextcloud/node_modules/webdav/dist/node/request.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/digest.js","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/node_modules/vue-material-design-icons/MessageReplyTextOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/MessageReplyTextOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/MessageReplyTextOutline.vue?87e1","webpack:///nextcloud/node_modules/vue-material-design-icons/MessageReplyTextOutline.vue?vue&type=template&id=5d6c4e92","webpack:///nextcloud/apps/comments/src/services/GetComments.ts","webpack:///nextcloud/apps/comments/src/utils/cancelableRequest.js","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/comments/src/views/Comments.vue","webpack:///nextcloud/apps/comments/src/services/ReadComments.ts","webpack://nextcloud/./apps/comments/src/views/Comments.vue?4d55","webpack://nextcloud/./apps/comments/src/views/Comments.vue?f45b","webpack://nextcloud/./apps/comments/src/views/Comments.vue?0e41","webpack:///nextcloud/apps/comments/src/views/FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/comments/src/views/FilesSidebarTab.vue","webpack://nextcloud/./apps/comments/src/views/FilesSidebarTab.vue?e0e6","webpack:///nextcloud/apps/comments/src/comments-activity-tab.ts","webpack:///nextcloud/apps/comments/src/files-sidebar.ts","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/comments/src/logger.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\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};","import { translateDiskSpace } from \"./dav.js\";\nexport function parseQuota(result) {\n try {\n const [responseItem] = result.multistatus.response;\n const { propstat: { prop: { \"quota-used-bytes\": quotaUsed, \"quota-available-bytes\": quotaAvail } } } = responseItem;\n return typeof quotaUsed !== \"undefined\" && typeof quotaAvail !== \"undefined\"\n ? {\n // As it could be both a string or a number ensure we are working with a number\n used: parseInt(String(quotaUsed), 10),\n available: translateDiskSpace(quotaAvail)\n }\n : null;\n }\n catch (err) {\n /* ignore */\n }\n return null;\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs'\nimport { mapStores } from 'pinia'\nimport logger from '../logger.js'\nimport DeleteComment from '../services/DeleteComment.js'\nimport EditComment from '../services/EditComment.js'\nimport NewComment from '../services/NewComment.js'\nimport { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.js'\n\nexport default {\n\tprops: {\n\t\tid: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tresourceId: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: 'files',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdeleted: false,\n\t\t\tediting: false,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t...mapStores(useDeletedCommentLimbo),\n\t},\n\n\tmethods: {\n\t\t// EDITION\n\t\tonEdit() {\n\t\t\tthis.editing = true\n\t\t},\n\t\tonEditCancel() {\n\t\t\tthis.editing = false\n\t\t\t// Restore original value\n\t\t\tthis.updateLocalMessage(this.message)\n\t\t},\n\t\tasync onEditComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait EditComment(this.resourceType, this.resourceId, this.id, message)\n\t\t\t\tlogger.debug('Comment edited', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id, message })\n\t\t\t\tthis.$emit('update:message', message)\n\t\t\t\tthis.editing = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to edit the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to edit the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t// DELETION\n\t\tonDeleteWithUndo() {\n\t\t\tthis.$emit('delete')\n\t\t\tthis.deleted = true\n\t\t\tthis.deletedCommentLimboStore.addId(this.id)\n\t\t\tconst timeOutDelete = setTimeout(this.onDelete, TOAST_UNDO_TIMEOUT)\n\t\t\tshowUndo(t('comments', 'Comment deleted'), () => {\n\t\t\t\tclearTimeout(timeOutDelete)\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t})\n\t\t},\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tawait DeleteComment(this.resourceType, this.resourceId, this.id)\n\t\t\t\tlogger.debug('Comment deleted', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id })\n\t\t\t\tthis.$emit('delete', this.id)\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to delete the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to delete the comment', { error })\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t}\n\t\t},\n\n\t\t// CREATION\n\t\tasync onNewComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst newComment = await NewComment(this.resourceType, this.resourceId, message)\n\t\t\t\tlogger.debug('New comment posted', { resourceType: this.resourceType, resourceId: this.resourceId, newComment })\n\t\t\t\tthis.$emit('new', newComment)\n\n\t\t\t\t// Clear old content\n\t\t\t\tthis.$emit('update:message', '')\n\t\t\t\tthis.localMessage = ''\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to create the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to create the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function getDAVCompliance(context, filePath, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"OPTIONS\"\n }, context, options);\n const response = await request(requestOptions, context);\n try {\n handleResponseCode(context, response);\n }\n catch (err) {\n const error = err;\n throw error;\n }\n const davHeader = response.headers.get(\"DAV\") ?? \"\";\n const compliance = davHeader.split(\",\").map(item => item.trim());\n const server = response.headers.get(\"Server\") ?? \"\";\n return {\n compliance,\n server\n };\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.js'\n\n/**\n * Edit an existing comment\n *\n * @param {string} resourceType the resource type\n * @param {number} resourceId the resource ID\n * @param {number} commentId the comment iD\n * @param {string} message the message content\n */\nexport default async function(resourceType, resourceId, commentId, message) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\treturn await client.customRequest(commentPath, {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${message}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n\t})\n}\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params)\n return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n params = validateParams(params)\n return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n if (typeof params === 'string') {\n params = url.parse(params)\n }\n if (!params.protocol) {\n params.protocol = 'https:'\n }\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n }\n return params\n}\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\n/**\n *\n */\nfunction getRootPath() {\n\treturn generateRemoteUrl('dav/comments')\n}\n\nexport { getRootPath }\n","import { assertError, isError } from \"./error.js\";\nimport { getGlobalName } from \"./global.js\";\nimport { parseArguments } from \"./tools.js\";\nexport class Layerr extends Error {\n constructor(errorOptionsOrMessage, messageText) {\n const args = [...arguments];\n const { options, shortMessage } = parseArguments(args);\n let message = shortMessage;\n if (options.cause) {\n message = `${message}: ${options.cause.message}`;\n }\n super(message);\n this.message = message;\n if (options.name && typeof options.name === \"string\") {\n this.name = options.name;\n }\n else {\n this.name = getGlobalName();\n }\n if (options.cause) {\n Object.defineProperty(this, \"_cause\", { value: options.cause });\n }\n Object.defineProperty(this, \"_info\", { value: {} });\n if (options.info && typeof options.info === \"object\") {\n Object.assign(this._info, options.info);\n }\n if (Error.captureStackTrace) {\n const ctor = options.constructorOpt || this.constructor;\n Error.captureStackTrace(this, ctor);\n }\n }\n static cause(err) {\n assertError(err);\n if (!err._cause)\n return null;\n return isError(err._cause)\n ? err._cause\n : null;\n }\n static fullStack(err) {\n assertError(err);\n const cause = Layerr.cause(err);\n if (cause) {\n return `${err.stack}\\ncaused by: ${Layerr.fullStack(cause)}`;\n }\n return err.stack ?? \"\";\n }\n static info(err) {\n assertError(err);\n const output = {};\n const cause = Layerr.cause(err);\n if (cause) {\n Object.assign(output, Layerr.info(cause));\n }\n if (err._info) {\n Object.assign(output, err._info);\n }\n return output;\n }\n toString() {\n let output = this.name ||\n this.constructor.name ||\n this.constructor.prototype.name;\n if (this.message) {\n output = `${output}: ${this.message}`;\n }\n return output;\n }\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nconst TRANSFORM_RETAIN_FORMAT = (v) => v;\nexport async function getFileContents(context, filePath, options = {}) {\n const { format = \"binary\" } = options;\n if (format !== \"binary\" && format !== \"text\") {\n throw new Layerr({\n info: {\n code: ErrorCode.InvalidOutputFormat\n }\n }, `Invalid output format: ${format}`);\n }\n return format === \"text\"\n ? getFileContentsString(context, filePath, options)\n : getFileContentsBuffer(context, filePath, options);\n}\nasync function getFileContentsBuffer(context, filePath, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"GET\"\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n let body;\n if (isWeb() || isReactNative()) {\n body = await response.arrayBuffer();\n }\n else {\n body = Buffer.from(await response.arrayBuffer());\n }\n return processResponsePayload(response, body, options.details);\n}\nasync function getFileContentsString(context, filePath, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"GET\",\n headers: {\n Accept: \"text/plain\"\n },\n transformResponse: [TRANSFORM_RETAIN_FORMAT]\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n const body = await response.text();\n return processResponsePayload(response, body, options.details);\n}\nexport function getFileDownloadLink(context, filePath) {\n let url = joinURL(context.remoteURL, encodePath(filePath));\n const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n switch (context.authType) {\n case AuthType.None:\n // Do nothing\n break;\n case AuthType.Password: {\n const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n const authContents = fromBase64(authPart);\n url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n break;\n }\n default:\n throw new Layerr({\n info: {\n code: ErrorCode.LinkUnsupportedAuthType\n }\n }, `Unsupported auth type for file link: ${context.authType}`);\n }\n return url;\n}\n","import { toBase64 } from \"../tools/encode.js\";\nexport function generateBasicAuthHeader(username, password) {\n const encoded = toBase64(`${username}:${password}`);\n return `Basic ${encoded}`;\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, `.comment[data-v-70317f94]{display:flex;gap:8px;padding:5px 10px}.comment__side[data-v-70317f94]{display:flex;align-items:flex-start;padding-top:6px}.comment__body[data-v-70317f94]{display:flex;flex-grow:1;flex-direction:column;container-type:inline-size}.comment__header[data-v-70317f94]{display:flex;align-items:center;min-height:44px}.comment__actions[data-v-70317f94]{margin-inline-start:10px !important}.comment__author[data-v-70317f94]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-70317f94],.comment__timestamp[data-v-70317f94]{margin-inline-start:auto;text-align:end;white-space:nowrap;color:var(--color-text-maxcontrast)}.comment__editor-group[data-v-70317f94]{position:relative}.comment__editor-description[data-v-70317f94]{color:var(--color-text-maxcontrast);padding-block:var(--default-grid-baseline)}.comment__submit[data-v-70317f94]{position:absolute !important;bottom:5px;inset-inline-end:0}.comment__message[data-v-70317f94]{white-space:pre-wrap;word-break:normal;max-height:200px;overflow:auto;scrollbar-gutter:stable;scrollbar-width:thin;margin-top:-6px}.comment__message--expanded[data-v-70317f94]{max-height:none;overflow:visible}.comment__message[data-v-70317f94] img{max-width:100%;height:auto}.rich-contenteditable__input[data-v-70317f94]{min-height:44px;margin:0;padding:10px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/components/Comment.vue\"],\"names\":[],\"mappings\":\"AAKA,0BACC,YAAA,CACA,OAAA,CACA,gBAAA,CAEA,gCACC,YAAA,CACA,sBAAA,CACA,eAAA,CAGD,gCACC,YAAA,CACA,WAAA,CACA,qBAAA,CACA,0BAAA,CAGD,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAGD,mCACC,mCAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,wBAAA,CACA,cAAA,CACA,kBAAA,CACA,mCAAA,CAGD,wCACC,iBAAA,CAGD,8CACC,mCAAA,CACA,0CAAA,CAGD,kCACC,4BAAA,CACA,UAAA,CACA,kBAAA,CAGD,mCACC,oBAAA,CACA,iBAAA,CACA,gBAAA,CACA,aAAA,CACA,uBAAA,CACA,oBAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAED,uCACC,cAAA,CACA,WAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YAlFiB\",\"sourcesContent\":[\"\\n@use \\\"sass:math\\\";\\n\\n$comment-padding: 10px;\\n\\n.comment {\\n\\tdisplay: flex;\\n\\tgap: 8px;\\n\\tpadding: 5px $comment-padding;\\n\\n\\t&__side {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: flex-start;\\n\\t\\tpadding-top: 6px;\\n\\t}\\n\\n\\t&__body {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-grow: 1;\\n\\t\\tflex-direction: column;\\n\\t\\tcontainer-type: inline-size;\\n\\t}\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tmin-height: 44px;\\n\\t}\\n\\n\\t&__actions {\\n\\t\\tmargin-inline-start: $comment-padding !important;\\n\\t}\\n\\n\\t&__author {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&_loading,\\n\\t&__timestamp {\\n\\t\\tmargin-inline-start: auto;\\n\\t\\ttext-align: end;\\n\\t\\twhite-space: nowrap;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&__editor-group {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t&__editor-description {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding-block: var(--default-grid-baseline);\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tposition: absolute !important;\\n\\t\\tbottom: 5px;\\n\\t\\tinset-inline-end: 0;\\n\\t}\\n\\n\\t&__message {\\n\\t\\twhite-space: pre-wrap;\\n\\t\\tword-break: normal;\\n\\t\\tmax-height: 200px;\\n\\t\\toverflow: auto;\\n\\t\\tscrollbar-gutter: stable;\\n\\t\\tscrollbar-width: thin;\\n\\t\\tmargin-top: -6px;\\n\\t\\t&--expanded {\\n\\t\\t\\tmax-height: none;\\n\\t\\t\\toverflow: visible;\\n\\t\\t}\\n\\t\\t:deep(img) {\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\theight: auto;\\n\\t\\t}\\n\\t}\\n}\\n\\n.rich-contenteditable__input {\\n\\tmin-height: 44px;\\n\\tmargin: 0;\\n\\tpadding: $comment-padding;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import { XMLParser, XMLBuilder } from \"fast-xml-parser\";\nexport function generateLockXML(ownerHREF) {\n return getBuilder().build(namespace({\n lockinfo: {\n \"@_xmlns:d\": \"DAV:\",\n lockscope: {\n exclusive: {}\n },\n locktype: {\n write: {}\n },\n owner: {\n href: ownerHREF\n }\n }\n }, \"d\"));\n}\nfunction getBuilder() {\n return new XMLBuilder({\n attributeNamePrefix: \"@_\",\n format: true,\n ignoreAttributes: false,\n suppressEmptyNode: true\n });\n}\nfunction getParser() {\n return new XMLParser({\n removeNSPrefix: true,\n parseAttributeValue: true,\n parseTagValue: true\n });\n}\nfunction namespace(obj, ns) {\n const copy = { ...obj };\n for (const key in copy) {\n if (!copy.hasOwnProperty(key)) {\n continue;\n }\n if (copy[key] && typeof copy[key] === \"object\" && key.indexOf(\":\") === -1) {\n copy[`${ns}:${key}`] = namespace(copy[key], ns);\n delete copy[key];\n }\n else if (/^@_/.test(key) === false) {\n copy[`${ns}:${key}`] = copy[key];\n delete copy[key];\n }\n }\n return copy;\n}\nexport function parseGenericResponse(xml) {\n return getParser().parse(xml);\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath, getAllDirectories, normalisePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getStat } from \"./stat.js\";\nexport async function createDirectory(context, dirPath, options = {}) {\n if (options.recursive === true)\n return createDirectoryRecursively(context, dirPath, options);\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, ensureCollectionPath(encodePath(dirPath))),\n method: \"MKCOL\"\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n}\n/**\n * Ensure the path is a proper \"collection\" path by ensuring it has a trailing \"/\".\n * The proper format of collection according to the specification does contain the trailing slash.\n * http://www.webdav.org/specs/rfc4918.html#rfc.section.5.2\n * @param path Path of the collection\n * @return string Path of the collection with appended trailing \"/\" in case the `path` does not have it.\n */\nfunction ensureCollectionPath(path) {\n if (!path.endsWith(\"/\")) {\n return path + \"/\";\n }\n return path;\n}\nasync function createDirectoryRecursively(context, dirPath, options = {}) {\n const paths = getAllDirectories(normalisePath(dirPath));\n paths.sort((a, b) => {\n if (a.length > b.length) {\n return 1;\n }\n else if (b.length > a.length) {\n return -1;\n }\n return 0;\n });\n let creating = false;\n for (const testPath of paths) {\n if (creating) {\n await createDirectory(context, testPath, {\n ...options,\n recursive: false\n });\n continue;\n }\n try {\n const testStat = (await getStat(context, testPath));\n if (testStat.type !== \"directory\") {\n throw new Error(`Path includes a file: ${dirPath}`);\n }\n }\n catch (err) {\n const error = err;\n if (error.status === 404) {\n creating = true;\n await createDirectory(context, testPath, {\n ...options,\n recursive: false\n });\n }\n else {\n throw err;\n }\n }\n }\n}\n","\n\n\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t{{ actorDisplayName }}\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ t('comments', 'Edit comment') }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ t('comments', 'Delete comment') }}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{{ t('comments', 'Cancel edit') }}\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\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\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{{ t('comments', '@ for mentions, : for emoji, / for smart picker') }}\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\n\t\n\n\n\n\n\n","import { Layerr } from \"layerr\";\nimport Stream from \"stream\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { calculateDataLength } from \"../tools/size.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport async function putFileContents(context, filePath, data, options = {}) {\n const { contentLength = true, overwrite = true } = options;\n const headers = {\n \"Content-Type\": \"application/octet-stream\"\n };\n if (!isWeb() &&\n !isReactNative() &&\n typeof Stream !== \"undefined\" &&\n typeof Stream?.Readable !== \"undefined\" &&\n data instanceof Stream.Readable) {\n // Skip, no content-length\n }\n else if (contentLength === false) {\n // Skip, disabled\n }\n else if (typeof contentLength === \"number\") {\n headers[\"Content-Length\"] = `${contentLength}`;\n }\n else {\n headers[\"Content-Length\"] = `${calculateDataLength(data)}`;\n }\n if (!overwrite) {\n headers[\"If-None-Match\"] = \"*\";\n }\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"PUT\",\n headers,\n data\n }, context, options);\n const response = await request(requestOptions, context);\n try {\n handleResponseCode(context, response);\n }\n catch (err) {\n const error = err;\n if (error.status === 412 && !overwrite) {\n return false;\n }\n else {\n throw error;\n }\n }\n return true;\n}\nexport function getFileUploadLink(context, filePath) {\n let url = `${joinURL(context.remoteURL, encodePath(filePath))}?Content-Type=application/octet-stream`;\n const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n switch (context.authType) {\n case AuthType.None:\n // Do nothing\n break;\n case AuthType.Password: {\n const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n const authContents = fromBase64(authPart);\n url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n break;\n }\n default:\n throw new Layerr({\n info: {\n code: ErrorCode.LinkUnsupportedAuthType\n }\n }, `Unsupported auth type for file link: ${context.authType}`);\n }\n return url;\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { loadState } from '@nextcloud/initial-state';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n props: {\n resourceId: {\n type: Number,\n required: true,\n },\n resourceType: {\n type: String,\n default: 'files',\n },\n },\n data() {\n return {\n editorData: {\n actorDisplayName: getCurrentUser().displayName,\n actorId: getCurrentUser().uid,\n key: 'editor',\n },\n userData: {},\n currentResourceId: this.resourceId,\n };\n },\n methods: {\n /**\n * Autocomplete `@mentions`\n *\n * @param search the query\n * @param callback the callback to process the results with\n */\n async autoComplete(search, callback) {\n const { data } = await axios.get(generateOcsUrl('core/autocomplete/get'), {\n params: {\n search,\n itemType: this.resourceType,\n itemId: this.currentResourceId,\n sorter: 'commenters|share-recipients',\n limit: loadState('comments', 'maxAutoCompleteResults'),\n },\n });\n // Save user data so it can be used by the editor to replace mentions\n data.ocs.data.forEach((user) => {\n this.userData[user.id] = user;\n });\n return callback(Object.values(this.userData));\n },\n /**\n * Make sure we have all mentions as Array of objects\n *\n * @param mentions the mentions list\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n genMentionsData(mentions) {\n Object.values(mentions)\n .flat()\n .forEach((mention) => {\n this.userData[mention.mentionId] = {\n // TODO: support groups\n icon: 'icon-user',\n id: mention.mentionId,\n label: mention.mentionDisplayName,\n source: 'users',\n primary: getCurrentUser()?.uid === mention.mentionId,\n };\n });\n return this.userData;\n },\n },\n});\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'\nimport { createClient } from 'webdav'\nimport { getRootPath } from '../utils/davUtils.js'\n\n// init webdav client\nconst client = createClient(getRootPath())\n\n// set CSRF token header\n/**\n * @param token\n */\nfunction setHeaders(token) {\n\tclient.setHeaders({\n\t\t// Add this so the server knows it is an request from the browser\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t// Inject user auth\n\t\trequesttoken: token ?? '',\n\t})\n}\n\n// refresh headers when request token changes\nonRequestTokenUpdate(setHeaders)\nsetHeaders(getRequestToken())\n\nexport default client\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { defineStore } from 'pinia'\n\nexport const useDeletedCommentLimbo = defineStore('deletedCommentLimbo', {\n\tstate: () => ({\n\t\tidsInLimbo: [],\n\t}),\n\tactions: {\n\t\taddId(id) {\n\t\t\tthis.idsInLimbo.push(id)\n\t\t},\n\n\t\tremoveId(id) {\n\t\t\tconst index = this.idsInLimbo.indexOf(id)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.idsInLimbo.splice(index, 1)\n\t\t\t}\n\t\t},\n\n\t\tcheckForId(id) {\n\t\t\treturn this.idsInLimbo.includes(id)\n\t\t},\n\t},\n})\n","import { Layerr } from \"layerr\";\nimport { createDigestContext } from \"./digest.js\";\nimport { generateBasicAuthHeader } from \"./basic.js\";\nimport { generateTokenAuthHeader } from \"./oauth.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport function setupAuth(context, username, password, oauthToken, ha1) {\n switch (context.authType) {\n case AuthType.Auto:\n if (username && password) {\n context.headers.Authorization = generateBasicAuthHeader(username, password);\n }\n break;\n case AuthType.Digest:\n context.digest = createDigestContext(username, password, ha1);\n break;\n case AuthType.None:\n // Do nothing\n break;\n case AuthType.Password:\n context.headers.Authorization = generateBasicAuthHeader(username, password);\n break;\n case AuthType.Token:\n context.headers.Authorization = generateTokenAuthHeader(oauthToken);\n break;\n default:\n throw new Layerr({\n info: {\n code: ErrorCode.InvalidAuthType\n }\n }, `Invalid auth type: ${context.authType}`);\n }\n}\n","import Stream from \"stream\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nexport function requestDataToFetchBody(data) {\n if (!isWeb() && !isReactNative() && data instanceof Stream.Readable) {\n // @ts-ignore\n return [data, {}];\n }\n if (typeof data === \"string\") {\n return [data, {}];\n }\n else if (isBuffer(data)) {\n return [data, {}];\n }\n else if (isArrayBuffer(data)) {\n return [data, {}];\n }\n else if (data && typeof data === \"object\") {\n return [\n JSON.stringify(data),\n {\n \"content-type\": \"application/json\"\n }\n ];\n }\n throw new Error(`Unable to convert request body: Unexpected body type: ${typeof data}`);\n}\n","import nestedProp from \"nested-property\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { generateLockXML, parseGenericResponse } from \"../tools/xml.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { createErrorFromResponse, handleResponseCode } from \"../response.js\";\nconst DEFAULT_TIMEOUT = \"Infinite, Second-4100000000\";\nexport async function lock(context, path, options = {}) {\n const { refreshToken, timeout = DEFAULT_TIMEOUT } = options;\n const headers = {\n Accept: \"text/plain,application/xml\",\n Timeout: timeout\n };\n if (refreshToken) {\n headers.If = refreshToken;\n }\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(path)),\n method: \"LOCK\",\n headers,\n data: generateLockXML(context.contactHref)\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n const responseData = await response.text();\n const lockPayload = parseGenericResponse(responseData);\n const token = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.locktoken.href\");\n const serverTimeout = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.timeout\");\n if (!token) {\n const err = createErrorFromResponse(response, \"No lock token received: \");\n throw err;\n }\n return {\n token,\n serverTimeout\n };\n}\nexport async function unlock(context, path, token, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(path)),\n method: \"UNLOCK\",\n headers: {\n \"Lock-Token\": token\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n if (response.status !== 204 && response.status !== 200) {\n const err = createErrorFromResponse(response);\n throw err;\n }\n}\n","const hasArrayBuffer = typeof ArrayBuffer === \"function\";\nconst { toString: objToString } = Object.prototype;\n// Taken from: https://github.com/fengyuanchen/is-array-buffer/blob/master/src/index.js\nexport function isArrayBuffer(value) {\n return (hasArrayBuffer &&\n (value instanceof ArrayBuffer || objToString.call(value) === \"[object ArrayBuffer]\"));\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function copyFile(context, filename, destination, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filename)),\n method: \"COPY\",\n headers: {\n Destination: joinURL(context.remoteURL, encodePath(destination)),\n /**\n * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n *\n * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n */\n Overwrite: options.overwrite === false ? \"F\" : \"T\",\n /**\n * From RFC4918 section 9.8.3: A client may submit a Depth header on a COPY on a collection with a value of \"0\"\n * or \"infinity\". The COPY method on a collection without a Depth header MUST act as if\n * a Depth header with value \"infinity\" was included.\n */\n Depth: options.shallow ? \"0\" : \"infinity\"\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n}\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * @param {any} value -\n * @param {any} passes -\n */\nexport function decodeHtmlEntities(value, passes = 1) {\n\tconst parser = new DOMParser()\n\tlet decoded = value\n\tfor (let i = 0; i < passes; i++) {\n\t\tdecoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent\n\t}\n\treturn decoded\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.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!./Comment.vue?vue&type=script&lang=js\"","import base64 from \"base-64\";\nimport { decodeHTML } from \"entities\";\nimport { isWeb } from \"../compat/env.js\";\nexport function decodeHTMLEntities(text) {\n if (isWeb()) {\n const txt = document.createElement(\"textarea\");\n txt.innerHTML = text;\n return txt.value;\n }\n return decodeHTML(text);\n}\nexport function fromBase64(text) {\n return base64.decode(text);\n}\nexport function toBase64(text) {\n return base64.encode(text);\n}\n","'use strict';\n\nvar required = require('requires-port')\n , qs = require('querystringify')\n , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n , CRHTLF = /[\\n\\r\\t]/g\n , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n , port = /:\\d+$/\n , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n * characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n * indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n * the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n ['#', 'hash'], // Extract from the back.\n ['?', 'query'], // Extract from the back.\n function sanitize(address, url) { // Sanitize what is left of the address\n return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n },\n ['/', 'pathname'], // Extract from the back.\n ['@', 'auth', 1], // Extract from the front.\n [NaN, 'host', undefined, 1, 1], // Set left over value.\n [/:(\\d*)$/, 'port', undefined, 1], // RegExp the back.\n [NaN, 'hostname', undefined, 1, 1] // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n var globalVar;\n\n if (typeof window !== 'undefined') globalVar = window;\n else if (typeof global !== 'undefined') globalVar = global;\n else if (typeof self !== 'undefined') globalVar = self;\n else globalVar = {};\n\n var location = globalVar.location || {};\n loc = loc || location;\n\n var finaldestination = {}\n , type = typeof loc\n , key;\n\n if ('blob:' === loc.protocol) {\n finaldestination = new Url(unescape(loc.pathname), {});\n } else if ('string' === type) {\n finaldestination = new Url(loc, {});\n for (key in ignore) delete finaldestination[key];\n } else if ('object' === type) {\n for (key in loc) {\n if (key in ignore) continue;\n finaldestination[key] = loc[key];\n }\n\n if (finaldestination.slashes === undefined) {\n finaldestination.slashes = slashes.test(loc.href);\n }\n }\n\n return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n return (\n scheme === 'file:' ||\n scheme === 'ftp:' ||\n scheme === 'http:' ||\n scheme === 'https:' ||\n scheme === 'ws:' ||\n scheme === 'wss:'\n );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n location = location || {};\n\n var match = protocolre.exec(address);\n var protocol = match[1] ? match[1].toLowerCase() : '';\n var forwardSlashes = !!match[2];\n var otherSlashes = !!match[3];\n var slashesCount = 0;\n var rest;\n\n if (forwardSlashes) {\n if (otherSlashes) {\n rest = match[2] + match[3] + match[4];\n slashesCount = match[2].length + match[3].length;\n } else {\n rest = match[2] + match[4];\n slashesCount = match[2].length;\n }\n } else {\n if (otherSlashes) {\n rest = match[3] + match[4];\n slashesCount = match[3].length;\n } else {\n rest = match[4]\n }\n }\n\n if (protocol === 'file:') {\n if (slashesCount >= 2) {\n rest = rest.slice(2);\n }\n } else if (isSpecial(protocol)) {\n rest = match[4];\n } else if (protocol) {\n if (forwardSlashes) {\n rest = rest.slice(2);\n }\n } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n rest = match[4];\n }\n\n return {\n protocol: protocol,\n slashes: forwardSlashes || isSpecial(protocol),\n slashesCount: slashesCount,\n rest: rest\n };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n if (relative === '') return base;\n\n var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n , i = path.length\n , last = path[i - 1]\n , unshift = false\n , up = 0;\n\n while (i--) {\n if (path[i] === '.') {\n path.splice(i, 1);\n } else if (path[i] === '..') {\n path.splice(i, 1);\n up++;\n } else if (up) {\n if (i === 0) unshift = true;\n path.splice(i, 1);\n up--;\n }\n }\n\n if (unshift) path.unshift('');\n if (last === '.' || last === '..') path.push('');\n\n return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n\n if (!(this instanceof Url)) {\n return new Url(address, location, parser);\n }\n\n var relative, extracted, parse, instruction, index, key\n , instructions = rules.slice()\n , type = typeof location\n , url = this\n , i = 0;\n\n //\n // The following if statements allows this module two have compatibility with\n // 2 different API:\n //\n // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n // where the boolean indicates that the query string should also be parsed.\n //\n // 2. The `URL` interface of the browser which accepts a URL, object as\n // arguments. The supplied object will be used as default values / fall-back\n // for relative paths.\n //\n if ('object' !== type && 'string' !== type) {\n parser = location;\n location = null;\n }\n\n if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n location = lolcation(location);\n\n //\n // Extract protocol information before running the instructions.\n //\n extracted = extractProtocol(address || '', location);\n relative = !extracted.protocol && !extracted.slashes;\n url.slashes = extracted.slashes || relative && location.slashes;\n url.protocol = extracted.protocol || location.protocol || '';\n address = extracted.rest;\n\n //\n // When the authority component is absent the URL starts with a path\n // component.\n //\n if (\n extracted.protocol === 'file:' && (\n extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n (!extracted.slashes &&\n (extracted.protocol ||\n extracted.slashesCount < 2 ||\n !isSpecial(url.protocol)))\n ) {\n instructions[3] = [/(.*)/, 'pathname'];\n }\n\n for (; i < instructions.length; i++) {\n instruction = instructions[i];\n\n if (typeof instruction === 'function') {\n address = instruction(address, url);\n continue;\n }\n\n parse = instruction[0];\n key = instruction[1];\n\n if (parse !== parse) {\n url[key] = address;\n } else if ('string' === typeof parse) {\n index = parse === '@'\n ? address.lastIndexOf(parse)\n : address.indexOf(parse);\n\n if (~index) {\n if ('number' === typeof instruction[2]) {\n url[key] = address.slice(0, index);\n address = address.slice(index + instruction[2]);\n } else {\n url[key] = address.slice(index);\n address = address.slice(0, index);\n }\n }\n } else if ((index = parse.exec(address))) {\n url[key] = index[1];\n address = address.slice(0, index.index);\n }\n\n url[key] = url[key] || (\n relative && instruction[3] ? location[key] || '' : ''\n );\n\n //\n // Hostname, host and protocol should be lowercased so they can be used to\n // create a proper `origin`.\n //\n if (instruction[4]) url[key] = url[key].toLowerCase();\n }\n\n //\n // Also parse the supplied query string in to an object. If we're supplied\n // with a custom parser as function use that instead of the default build-in\n // parser.\n //\n if (parser) url.query = parser(url.query);\n\n //\n // If the URL is relative, resolve the pathname against the base URL.\n //\n if (\n relative\n && location.slashes\n && url.pathname.charAt(0) !== '/'\n && (url.pathname !== '' || location.pathname !== '')\n ) {\n url.pathname = resolve(url.pathname, location.pathname);\n }\n\n //\n // Default to a / for pathname if none exists. This normalizes the URL\n // to always have a /\n //\n if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n url.pathname = '/' + url.pathname;\n }\n\n //\n // We should not add port numbers if they are already the default port number\n // for a given protocol. As the host also contains the port number we're going\n // override it with the hostname which contains no port number.\n //\n if (!required(url.port, url.protocol)) {\n url.host = url.hostname;\n url.port = '';\n }\n\n //\n // Parse down the `auth` for the username and password.\n //\n url.username = url.password = '';\n\n if (url.auth) {\n index = url.auth.indexOf(':');\n\n if (~index) {\n url.username = url.auth.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = url.auth.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password))\n } else {\n url.username = encodeURIComponent(decodeURIComponent(url.auth));\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n }\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n //\n // The href is just the compiled result.\n //\n url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part Property we need to adjust.\n * @param {Mixed} value The newly assigned value.\n * @param {Boolean|Function} fn When setting the query, it will be the function\n * used to parse the query.\n * When setting the protocol, double slash will be\n * removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n var url = this;\n\n switch (part) {\n case 'query':\n if ('string' === typeof value && value.length) {\n value = (fn || qs.parse)(value);\n }\n\n url[part] = value;\n break;\n\n case 'port':\n url[part] = value;\n\n if (!required(value, url.protocol)) {\n url.host = url.hostname;\n url[part] = '';\n } else if (value) {\n url.host = url.hostname +':'+ value;\n }\n\n break;\n\n case 'hostname':\n url[part] = value;\n\n if (url.port) value += ':'+ url.port;\n url.host = value;\n break;\n\n case 'host':\n url[part] = value;\n\n if (port.test(value)) {\n value = value.split(':');\n url.port = value.pop();\n url.hostname = value.join(':');\n } else {\n url.hostname = value;\n url.port = '';\n }\n\n break;\n\n case 'protocol':\n url.protocol = value.toLowerCase();\n url.slashes = !fn;\n break;\n\n case 'pathname':\n case 'hash':\n if (value) {\n var char = part === 'pathname' ? '/' : '#';\n url[part] = value.charAt(0) !== char ? char + value : value;\n } else {\n url[part] = value;\n }\n break;\n\n case 'username':\n case 'password':\n url[part] = encodeURIComponent(value);\n break;\n\n case 'auth':\n var index = value.indexOf(':');\n\n if (~index) {\n url.username = value.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = value.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password));\n } else {\n url.username = encodeURIComponent(decodeURIComponent(value));\n }\n }\n\n for (var i = 0; i < rules.length; i++) {\n var ins = rules[i];\n\n if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n url.href = url.toString();\n\n return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n var query\n , url = this\n , host = url.host\n , protocol = url.protocol;\n\n if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n var result =\n protocol +\n ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n if (url.username) {\n result += url.username;\n if (url.password) result += ':'+ url.password;\n result += '@';\n } else if (url.password) {\n result += ':'+ url.password;\n result += '@';\n } else if (\n url.protocol !== 'file:' &&\n isSpecial(url.protocol) &&\n !host &&\n url.pathname !== '/'\n ) {\n //\n // Add back the empty userinfo, otherwise the original invalid URL\n // might be transformed into a valid one with `url.pathname` as host.\n //\n result += '@';\n }\n\n //\n // Trailing colon is removed from `url.host` when it is parsed. If it still\n // ends with a colon, then add back the trailing colon that was removed. This\n // prevents an invalid URL from being transformed into a valid one.\n //\n if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n host += ':';\n }\n\n result += host + url.pathname;\n\n query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n if (url.hash) result += url.hash;\n\n return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","import { render, staticRenderFns } from \"./Comment.vue?vue&type=template&id=70317f94&scoped=true\"\nimport script from \"./Comment.vue?vue&type=script&lang=js\"\nexport * from \"./Comment.vue?vue&type=script&lang=js\"\nimport style0 from \"./Comment.vue?vue&type=style&index=0&id=70317f94&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 \"70317f94\",\n null\n \n)\n\nexport default component.exports","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Calculate the byte lengths for utf8 encoded strings.\n */\nfunction byteLength(str) {\n if (!str) {\n return 0;\n }\n str = str.toString();\n var len = str.length;\n for (var i = str.length; i--;) {\n var code = str.charCodeAt(i);\n if (0xdc00 <= code && code <= 0xdfff) {\n i--;\n }\n if (0x7f < code && code <= 0x7ff) {\n len++;\n }\n else if (0x7ff < code && code <= 0xffff) {\n len += 2;\n }\n }\n return len;\n}\nexports.byteLength = byteLength;\n//# sourceMappingURL=index.js.map","import Stream from \"stream\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nconst NOOP = () => { };\nexport function createReadStream(context, filePath, options = {}) {\n const PassThroughStream = Stream.PassThrough;\n const outStream = new PassThroughStream();\n getFileStream(context, filePath, options)\n .then(stream => {\n stream.pipe(outStream);\n })\n .catch(err => {\n outStream.emit(\"error\", err);\n });\n return outStream;\n}\nexport function createWriteStream(context, filePath, options = {}, callback = NOOP) {\n const PassThroughStream = Stream.PassThrough;\n const writeStream = new PassThroughStream();\n const headers = {};\n if (options.overwrite === false) {\n headers[\"If-None-Match\"] = \"*\";\n }\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"PUT\",\n headers,\n data: writeStream,\n maxRedirects: 0\n }, context, options);\n request(requestOptions, context)\n .then(response => handleResponseCode(context, response))\n .then(response => {\n // Fire callback asynchronously to avoid errors\n setTimeout(() => {\n callback(response);\n }, 0);\n })\n .catch(err => {\n writeStream.emit(\"error\", err);\n });\n return writeStream;\n}\nasync function getFileStream(context, filePath, options = {}) {\n const headers = {};\n if (typeof options.range === \"object\" && typeof options.range.start === \"number\") {\n let rangeHeader = `bytes=${options.range.start}-`;\n if (typeof options.range.end === \"number\") {\n rangeHeader = `${rangeHeader}${options.range.end}`;\n }\n headers.Range = rangeHeader;\n }\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"GET\",\n headers\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n if (headers.Range && response.status !== 206) {\n const responseError = new Error(`Invalid response code for partial request: ${response.status}`);\n responseError.status = response.status;\n throw responseError;\n }\n if (options.callback) {\n setTimeout(() => {\n options.callback(response);\n }, 0);\n }\n // @ts-ignore\n return response.body;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.tag,{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.deleted && !_vm.isLimbo),expression:\"!deleted && !isLimbo\"}],tag:\"component\",staticClass:\"comment\",class:{ 'comment--loading': _vm.loading }},[_c('div',{staticClass:\"comment__side\"},[_c('NcAvatar',{staticClass:\"comment__avatar\",attrs:{\"display-name\":_vm.actorDisplayName,\"user\":_vm.actorId,\"size\":32}})],1),_vm._v(\" \"),_c('div',{staticClass:\"comment__body\"},[_c('div',{staticClass:\"comment__header\"},[_c('span',{staticClass:\"comment__author\"},[_vm._v(_vm._s(_vm.actorDisplayName))]),_vm._v(\" \"),(_vm.isOwnComment && _vm.id && !_vm.loading)?_c('NcActions',{staticClass:\"comment__actions\"},[(!_vm.editing)?[_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":_vm.onEdit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconPencilOutline',{attrs:{\"size\":20}})]},proxy:true}],null,false,3345211262)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Edit comment'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":_vm.onDeleteWithUndo},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconTrashCanOutline',{attrs:{\"size\":20}})]},proxy:true}],null,false,1034796883)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Delete comment'))+\"\\n\\t\\t\\t\\t\\t\")])]:_c('NcActionButton',{on:{\"click\":_vm.onEditCancel},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconClose',{attrs:{\"size\":20}})]},proxy:true}],null,false,2888946197)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Cancel edit'))+\"\\n\\t\\t\\t\\t\")])],2):_vm._e(),_vm._v(\" \"),(_vm.id && _vm.loading)?_c('div',{staticClass:\"comment_loading icon-loading-small\"}):(_vm.creationDateTime)?_c('NcDateTime',{staticClass:\"comment__timestamp\",attrs:{\"timestamp\":_vm.timestamp,\"ignore-seconds\":true}}):_vm._e()],1),_vm._v(\" \"),(_vm.editor || _vm.editing)?_c('form',{staticClass:\"comment__editor\",on:{\"submit\":function($event){$event.preventDefault();}}},[_c('div',{staticClass:\"comment__editor-group\"},[_c('NcRichContenteditable',{ref:\"editor\",attrs:{\"auto-complete\":_vm.autoComplete,\"contenteditable\":!_vm.loading,\"label\":_vm.editor ? _vm.t('comments', 'New comment') : _vm.t('comments', 'Edit comment'),\"placeholder\":_vm.t('comments', 'Write a comment …'),\"model-value\":_vm.localMessage,\"user-data\":_vm.userData,\"aria-describedby\":\"tab-comments__editor-description\"},on:{\"update:value\":_vm.updateLocalMessage,\"submit\":_vm.onSubmit}}),_vm._v(\" \"),_c('div',{staticClass:\"comment__submit\"},[_c('NcButton',{attrs:{\"variant\":\"tertiary-no-background\",\"type\":\"submit\",\"aria-label\":_vm.t('comments', 'Post comment'),\"disabled\":_vm.isEmptyMessage},on:{\"click\":_vm.onSubmit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('NcLoadingIcon'):_c('IconArrowRight',{attrs:{\"size\":20}})]},proxy:true}],null,false,758946661)})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"comment__editor-description\",attrs:{\"id\":\"tab-comments__editor-description\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', '@ for mentions, : for emoji, / for smart picker'))+\"\\n\\t\\t\\t\")])]):_c('NcRichText',{staticClass:\"comment__message\",class:{ 'comment__message--expanded': _vm.expanded },attrs:{\"text\":_vm.richContent.message,\"arguments\":_vm.richContent.mentions,\"use-markdown\":\"\"},nativeOn:{\"click\":function($event){return _vm.onExpand.apply(null, arguments)}}})],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!./Comment.vue?vue&type=style&index=0&id=70317f94&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!./Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getRootPath } from '../utils/davUtils.js'\nimport { decodeHtmlEntities } from '../utils/decodeHtmlEntities.js'\nimport client from './DavClient.js'\n\n/**\n * Retrieve the comments list\n *\n * @param {string} resourceType the resource type\n * @param {number} resourceId the resource ID\n * @param {string} message the message\n * @return {object} the new comment\n */\nexport default async function(resourceType, resourceId, message) {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\n\tconst response = await axios.post(getRootPath() + resourcePath, {\n\t\tactorDisplayName: getCurrentUser().displayName,\n\t\tactorId: getCurrentUser().uid,\n\t\tactorType: 'users',\n\t\tcreationDateTime: (new Date()).toUTCString(),\n\t\tmessage,\n\t\tobjectType: resourceType,\n\t\tverb: 'comment',\n\t})\n\n\t// Retrieve comment id from resource location\n\tconst commentId = parseInt(response.headers['content-location'].split('/').pop())\n\tconst commentPath = resourcePath + '/' + commentId\n\n\t// Fetch newly created comment data\n\tconst comment = await client.stat(commentPath, {\n\t\tdetails: true,\n\t})\n\n\tconst props = comment.data.props\n\t// Decode twice to handle potentially double-encoded entities\n\t// FIXME Remove this once https://github.com/nextcloud/server/issues/29306\n\t// is resolved\n\tprops.actorDisplayName = decodeHtmlEntities(props.actorDisplayName, 2)\n\tprops.message = decodeHtmlEntities(props.message, 2)\n\n\treturn comment.data\n}\n","import { Layerr } from \"layerr\";\nimport { byteLength } from \"byte-length\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { ErrorCode } from \"../types.js\";\nexport function calculateDataLength(data) {\n if (isArrayBuffer(data)) {\n return data.byteLength;\n }\n else if (isBuffer(data)) {\n return data.length;\n }\n else if (typeof data === \"string\") {\n return byteLength(data);\n }\n throw new Layerr({\n info: {\n code: ErrorCode.DataTypeNoLength\n }\n }, \"Cannot calculate data length: Invalid type\");\n}\n","import pathPosix from \"path-posix\";\nimport { joinURL, normaliseHREF } from \"../tools/url.js\";\nimport { encodePath, makePathAbsolute, normalisePath } from \"../tools/path.js\";\nimport { parseXML, prepareFileFromProps } from \"../tools/dav.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processGlobFilter, processResponsePayload } from \"../response.js\";\nexport async function getDirectoryContents(context, remotePath, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(remotePath), \"/\"),\n method: \"PROPFIND\",\n headers: {\n Accept: \"text/plain,application/xml\",\n Depth: options.deep ? \"infinity\" : \"1\"\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n const responseData = await response.text();\n if (!responseData) {\n throw new Error(\"Failed parsing directory contents: Empty response\");\n }\n const davResp = await parseXML(responseData);\n const _remotePath = makePathAbsolute(remotePath);\n const remoteBasePath = makePathAbsolute(context.remoteBasePath || context.remotePath);\n let files = getDirectoryFiles(davResp, remoteBasePath, _remotePath, options.details, options.includeSelf);\n if (options.glob) {\n files = processGlobFilter(files, options.glob);\n }\n return processResponsePayload(response, files, options.details);\n}\nfunction getDirectoryFiles(result, serverremoteBasePath, requestPath, isDetailed = false, includeSelf = false) {\n const serverBase = pathPosix.join(serverremoteBasePath, \"/\");\n // Extract the response items (directory contents)\n const { multistatus: { response: responseItems } } = result;\n // Map all items to a consistent output structure (results)\n const nodes = responseItems.map(item => {\n // HREF is the file path (in full) - The href is already XML entities decoded (e.g. foo&bar is reverted to foo&bar)\n const href = normaliseHREF(item.href);\n // Each item should contain a stat object\n const { propstat: { prop: props } } = item;\n // Process the true full filename (minus the base server path)\n const filename = serverBase === \"/\"\n ? decodeURIComponent(normalisePath(href))\n : normalisePath(pathPosix.relative(decodeURIComponent(serverBase), decodeURIComponent(href)));\n return prepareFileFromProps(props, filename, isDetailed);\n });\n // If specified, also return the current directory\n if (includeSelf) {\n return nodes;\n }\n // Else, filter out the item pointing to the current directory (not needed)\n return nodes.filter(item => item.basename &&\n (item.type === \"file\" || item.filename !== requestPath.replace(/\\/$/, \"\")));\n}\n","import { getStat } from \"./stat.js\";\nexport async function exists(context, remotePath, options = {}) {\n try {\n await getStat(context, remotePath, options);\n return true;\n }\n catch (err) {\n if (err.status === 404) {\n return false;\n }\n throw err;\n }\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function customRequest(context, remotePath, requestOptions) {\n if (!requestOptions.url) {\n requestOptions.url = joinURL(context.remoteURL, encodePath(remotePath));\n }\n const finalOptions = prepareRequestOptions(requestOptions, context, {});\n const response = await request(finalOptions, context);\n handleResponseCode(context, response);\n return response;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function moveFile(context, filename, destination, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filename)),\n method: \"MOVE\",\n headers: {\n Destination: joinURL(context.remoteURL, encodePath(destination)),\n /**\n * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n *\n * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n */\n Overwrite: options.overwrite === false ? \"F\" : \"T\"\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function deleteFile(context, filename, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filename)),\n method: \"DELETE\"\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n}\n","import { parseSearch, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getSearch(context, searchArbiter, options = {}) {\n const { details: isDetailed = false } = options;\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(searchArbiter)),\n method: \"SEARCH\",\n headers: {\n Accept: \"text/plain,application/xml\",\n // Ensure a Content-Type header is set was this is required by e.g. sabre/dav\n \"Content-Type\": context.headers[\"Content-Type\"] || \"application/xml; charset=utf-8\"\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n const responseText = await response.text();\n const responseData = await parseXML(responseText);\n const results = parseSearch(responseData, searchArbiter, isDetailed);\n return processResponsePayload(response, results, isDetailed);\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.js'\n\n/**\n * Delete a comment\n *\n * @param {string} resourceType the resource type\n * @param {number} resourceId the resource ID\n * @param {number} commentId the comment iD\n */\nexport default async function(resourceType, resourceId, commentId) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\t// Fetch newly created comment data\n\tawait client.deleteFile(commentPath)\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getDAVCompliance } from \"./getDAVCompliance.js\";\nimport { ErrorCode } from \"../types.js\";\nexport async function partialUpdateFileContents(context, filePath, start, end, data, options = {}) {\n const compliance = await getDAVCompliance(context, filePath, options);\n if (compliance.compliance.includes(\"sabredav-partialupdate\")) {\n return await partialUpdateFileContentsSabredav(context, filePath, start, end, data, options);\n }\n if (compliance.server.includes(\"Apache\") &&\n compliance.compliance.includes(\"\")) {\n return await partialUpdateFileContentsApache(context, filePath, start, end, data, options);\n }\n throw new Layerr({\n info: {\n code: ErrorCode.NotSupported\n }\n }, \"Not supported\");\n}\nasync function partialUpdateFileContentsSabredav(context, filePath, start, end, data, options = {}) {\n if (start > end || start < 0) {\n // Actually, SabreDAV support negative start value,\n // Do not support here for compatibility with Apache-style way\n throw new Layerr({\n info: {\n code: ErrorCode.InvalidUpdateRange\n }\n }, `Invalid update range ${start} for partial update`);\n }\n const headers = {\n \"Content-Type\": \"application/x-sabredav-partialupdate\",\n \"Content-Length\": `${end - start + 1}`,\n \"X-Update-Range\": `bytes=${start}-${end}`\n };\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"PATCH\",\n headers,\n data\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n}\nasync function partialUpdateFileContentsApache(context, filePath, start, end, data, options = {}) {\n if (start > end || start < 0) {\n throw new Layerr({\n info: {\n code: ErrorCode.InvalidUpdateRange\n }\n }, `Invalid update range ${start} for partial update`);\n }\n const headers = {\n \"Content-Type\": \"application/octet-stream\",\n \"Content-Length\": `${end - start + 1}`,\n \"Content-Range\": `bytes ${start}-${end}/*`\n };\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"PUT\",\n headers,\n data\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n}\n","import { parseStat, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getStat(context, filename, options = {}) {\n const { details: isDetailed = false } = options;\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filename)),\n method: \"PROPFIND\",\n headers: {\n Accept: \"text/plain,application/xml\",\n Depth: \"0\"\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n const responseData = await response.text();\n const result = await parseXML(responseData);\n const stat = parseStat(result, filename, isDetailed);\n return processResponsePayload(response, stat, isDetailed);\n}\n","import { extractURLPath } from \"./tools/url.js\";\nimport { setupAuth } from \"./auth/index.js\";\nimport { copyFile } from \"./operations/copyFile.js\";\nimport { createDirectory } from \"./operations/createDirectory.js\";\nimport { createReadStream, createWriteStream } from \"./operations/createStream.js\";\nimport { customRequest } from \"./operations/customRequest.js\";\nimport { deleteFile } from \"./operations/deleteFile.js\";\nimport { exists } from \"./operations/exists.js\";\nimport { getDirectoryContents } from \"./operations/directoryContents.js\";\nimport { getFileContents, getFileDownloadLink } from \"./operations/getFileContents.js\";\nimport { lock, unlock } from \"./operations/lock.js\";\nimport { getQuota } from \"./operations/getQuota.js\";\nimport { getStat } from \"./operations/stat.js\";\nimport { getSearch } from \"./operations/search.js\";\nimport { moveFile } from \"./operations/moveFile.js\";\nimport { getFileUploadLink, putFileContents } from \"./operations/putFileContents.js\";\nimport { partialUpdateFileContents } from \"./operations/partialUpdateFileContents.js\";\nimport { getDAVCompliance } from \"./operations/getDAVCompliance.js\";\nimport { AuthType } from \"./types.js\";\nconst DEFAULT_CONTACT_HREF = \"https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md\";\nexport function createClient(remoteURL, options = {}) {\n const { authType: authTypeRaw = null, remoteBasePath, contactHref = DEFAULT_CONTACT_HREF, ha1, headers = {}, httpAgent, httpsAgent, password, token, username, withCredentials } = options;\n let authType = authTypeRaw;\n if (!authType) {\n authType = username || password ? AuthType.Password : AuthType.None;\n }\n const context = {\n authType,\n remoteBasePath,\n contactHref,\n ha1,\n headers: Object.assign({}, headers),\n httpAgent,\n httpsAgent,\n password,\n remotePath: extractURLPath(remoteURL),\n remoteURL,\n token,\n username,\n withCredentials\n };\n setupAuth(context, username, password, token, ha1);\n return {\n copyFile: (filename, destination, options) => copyFile(context, filename, destination, options),\n createDirectory: (path, options) => createDirectory(context, path, options),\n createReadStream: (filename, options) => createReadStream(context, filename, options),\n createWriteStream: (filename, options, callback) => createWriteStream(context, filename, options, callback),\n customRequest: (path, requestOptions) => customRequest(context, path, requestOptions),\n deleteFile: (filename, options) => deleteFile(context, filename, options),\n exists: (path, options) => exists(context, path, options),\n getDirectoryContents: (path, options) => getDirectoryContents(context, path, options),\n getFileContents: (filename, options) => getFileContents(context, filename, options),\n getFileDownloadLink: (filename) => getFileDownloadLink(context, filename),\n getFileUploadLink: (filename) => getFileUploadLink(context, filename),\n getHeaders: () => Object.assign({}, context.headers),\n getQuota: (options) => getQuota(context, options),\n lock: (path, options) => lock(context, path, options),\n moveFile: (filename, destinationFilename, options) => moveFile(context, filename, destinationFilename, options),\n putFileContents: (filename, data, options) => putFileContents(context, filename, data, options),\n partialUpdateFileContents: (filePath, start, end, data, options) => partialUpdateFileContents(context, filePath, start, end, data, options),\n getDAVCompliance: (path) => getDAVCompliance(context, path),\n search: (path, options) => getSearch(context, path, options),\n setHeaders: (headers) => {\n context.headers = Object.assign({}, headers);\n },\n stat: (path, options) => getStat(context, path, options),\n unlock: (path, token, options) => unlock(context, path, token, options)\n };\n}\n","import URL from \"url-parse\";\nimport { Layerr } from \"layerr\";\nimport _joinURL from \"url-join\";\nimport { normalisePath } from \"./path.js\";\nexport function extractURLPath(fullURL) {\n const url = new URL(fullURL);\n let urlPath = url.pathname;\n if (urlPath.length <= 0) {\n urlPath = \"/\";\n }\n return normalisePath(urlPath);\n}\nexport function joinURL(...parts) {\n return _joinURL(parts.reduce((output, nextPart, partIndex) => {\n if (partIndex === 0 ||\n nextPart !== \"/\" ||\n (nextPart === \"/\" && output[output.length - 1] !== \"/\")) {\n output.push(nextPart);\n }\n return output;\n }, []));\n}\nexport function normaliseHREF(href) {\n try {\n const normalisedHref = href.replace(/^https?:\\/\\/[^\\/]+/, \"\");\n return normalisedHref;\n }\n catch (err) {\n throw new Layerr(err, \"Failed normalising HREF\");\n }\n}\n","/*! https://mths.be/base64 v1.0.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '1.0.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n","import { prepareRequestOptions, request } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { parseQuota } from \"../tools/quota.js\";\nexport async function getQuota(context, options = {}) {\n const path = options.path || \"/\";\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, path),\n method: \"PROPFIND\",\n headers: {\n Accept: \"text/plain,application/xml\",\n Depth: \"0\"\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n const responseData = await response.text();\n const result = await parseXML(responseData);\n const quota = parseQuota(result);\n return processResponsePayload(response, quota, options.details);\n}\n","import { Agent as HTTPAgent } from \"http\";\nimport { Agent as HTTPSAgent } from \"https\";\nimport { fetch } from \"@buttercup/fetch\";\nimport { getPatcher } from \"./compat/patcher.js\";\nimport { isReactNative, isWeb } from \"./compat/env.js\";\nimport { generateDigestAuthHeader, parseDigestAuth, responseIndicatesDigestAuth } from \"./auth/digest.js\";\nimport { cloneShallow, merge } from \"./tools/merge.js\";\nimport { mergeHeaders } from \"./tools/headers.js\";\nimport { requestDataToFetchBody } from \"./tools/body.js\";\nimport { AuthType } from \"./types.js\";\nimport { setupAuth } from \"./auth/index.js\";\nfunction getFetchOptions(requestOptions) {\n let headers = {};\n // Handle standard options\n const opts = {\n method: requestOptions.method\n };\n if (requestOptions.headers) {\n headers = mergeHeaders(headers, requestOptions.headers);\n }\n if (typeof requestOptions.data !== \"undefined\") {\n const [body, newHeaders] = requestDataToFetchBody(requestOptions.data);\n opts.body = body;\n headers = mergeHeaders(headers, newHeaders);\n }\n if (requestOptions.signal) {\n opts.signal = requestOptions.signal;\n }\n if (requestOptions.withCredentials) {\n opts.credentials = \"include\";\n }\n // Check for node-specific options\n if (!isWeb() && !isReactNative()) {\n if (requestOptions.httpAgent || requestOptions.httpsAgent) {\n opts.agent = (parsedURL) => {\n if (parsedURL.protocol === \"http:\") {\n return requestOptions.httpAgent || new HTTPAgent();\n }\n return requestOptions.httpsAgent || new HTTPSAgent();\n };\n }\n }\n // Attach headers\n opts.headers = headers;\n return opts;\n}\nexport function prepareRequestOptions(requestOptions, context, userOptions) {\n const finalOptions = cloneShallow(requestOptions);\n finalOptions.headers = mergeHeaders(context.headers, finalOptions.headers || {}, userOptions.headers || {});\n if (typeof userOptions.data !== \"undefined\") {\n finalOptions.data = userOptions.data;\n }\n if (userOptions.signal) {\n finalOptions.signal = userOptions.signal;\n }\n if (context.httpAgent) {\n finalOptions.httpAgent = context.httpAgent;\n }\n if (context.httpsAgent) {\n finalOptions.httpsAgent = context.httpsAgent;\n }\n if (context.digest) {\n finalOptions._digest = context.digest;\n }\n if (typeof context.withCredentials === \"boolean\") {\n finalOptions.withCredentials = context.withCredentials;\n }\n return finalOptions;\n}\nexport async function request(requestOptions, context) {\n if (context.authType === AuthType.Auto) {\n return requestAuto(requestOptions, context);\n }\n if (requestOptions._digest) {\n return requestDigest(requestOptions);\n }\n return requestStandard(requestOptions);\n}\nasync function requestAuto(requestOptions, context) {\n const response = await requestStandard(requestOptions);\n if (response.ok) {\n context.authType = AuthType.Password;\n return response;\n }\n if (response.status == 401 && responseIndicatesDigestAuth(response)) {\n context.authType = AuthType.Digest;\n setupAuth(context, context.username, context.password, undefined, undefined);\n requestOptions._digest = context.digest;\n return requestDigest(requestOptions);\n }\n return response;\n}\nasync function requestDigest(requestOptions) {\n // Remove client's digest authentication object from request options\n const _digest = requestOptions._digest;\n delete requestOptions._digest;\n // If client is already using digest authentication, include the digest authorization header\n if (_digest.hasDigestAuth) {\n requestOptions = merge(requestOptions, {\n headers: {\n Authorization: generateDigestAuthHeader(requestOptions, _digest)\n }\n });\n }\n // Perform digest request + check\n const response = await requestStandard(requestOptions);\n if (response.status == 401) {\n _digest.hasDigestAuth = parseDigestAuth(response, _digest);\n if (_digest.hasDigestAuth) {\n requestOptions = merge(requestOptions, {\n headers: {\n Authorization: generateDigestAuthHeader(requestOptions, _digest)\n }\n });\n const response2 = await requestStandard(requestOptions);\n if (response2.status == 401) {\n _digest.hasDigestAuth = false;\n }\n else {\n _digest.nc++;\n }\n return response2;\n }\n }\n else {\n _digest.nc++;\n }\n return response;\n}\nfunction requestStandard(requestOptions) {\n const patcher = getPatcher();\n return patcher.patchInline(\"request\", (options) => patcher.patchInline(\"fetch\", fetch, options.url, getFetchOptions(options)), requestOptions);\n}\n","import md5 from \"md5\";\nimport { ha1Compute } from \"../tools/crypto.js\";\nconst NONCE_CHARS = \"abcdef0123456789\";\nconst NONCE_SIZE = 32;\nexport function createDigestContext(username, password, ha1) {\n return { username, password, ha1, nc: 0, algorithm: \"md5\", hasDigestAuth: false };\n}\nexport function generateDigestAuthHeader(options, digest) {\n const url = options.url.replace(\"//\", \"\");\n const uri = url.indexOf(\"/\") == -1 ? \"/\" : url.slice(url.indexOf(\"/\"));\n const method = options.method ? options.method.toUpperCase() : \"GET\";\n const qop = /(^|,)\\s*auth\\s*($|,)/.test(digest.qop) ? \"auth\" : false;\n const ncString = `00000000${digest.nc}`.slice(-8);\n const ha1 = ha1Compute(digest.algorithm, digest.username, digest.realm, digest.password, digest.nonce, digest.cnonce, digest.ha1);\n const ha2 = md5(`${method}:${uri}`);\n const digestResponse = qop\n ? md5(`${ha1}:${digest.nonce}:${ncString}:${digest.cnonce}:${qop}:${ha2}`)\n : md5(`${ha1}:${digest.nonce}:${ha2}`);\n const authValues = {\n username: digest.username,\n realm: digest.realm,\n nonce: digest.nonce,\n uri,\n qop,\n response: digestResponse,\n nc: ncString,\n cnonce: digest.cnonce,\n algorithm: digest.algorithm,\n opaque: digest.opaque\n };\n const authHeader = [];\n for (const k in authValues) {\n if (authValues[k]) {\n if (k === \"qop\" || k === \"nc\" || k === \"algorithm\") {\n authHeader.push(`${k}=${authValues[k]}`);\n }\n else {\n authHeader.push(`${k}=\"${authValues[k]}\"`);\n }\n }\n }\n return `Digest ${authHeader.join(\", \")}`;\n}\nfunction makeNonce() {\n let uid = \"\";\n for (let i = 0; i < NONCE_SIZE; ++i) {\n uid = `${uid}${NONCE_CHARS[Math.floor(Math.random() * NONCE_CHARS.length)]}`;\n }\n return uid;\n}\nexport function parseDigestAuth(response, _digest) {\n const isDigest = responseIndicatesDigestAuth(response);\n if (!isDigest) {\n return false;\n }\n const re = /([a-z0-9_-]+)=(?:\"([^\"]+)\"|([a-z0-9_-]+))/gi;\n for (;;) {\n const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n const match = re.exec(authHeader);\n if (!match) {\n break;\n }\n _digest[match[1]] = match[2] || match[3];\n }\n _digest.nc += 1;\n _digest.cnonce = makeNonce();\n return true;\n}\nexport function responseIndicatesDigestAuth(response) {\n const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n return authHeader.split(/\\s/)[0].toLowerCase() === \"digest\";\n}\n","import { l as logger, F as FileType } from \"./chunks/folder-Bf-tAYWu.mjs\";\nimport { a, b, N, c, P } from \"./chunks/folder-Bf-tAYWu.mjs\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nimport isSvg from \"is-svg\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"@nextcloud/paths\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get hotkey() {\n return this._action.hotkey;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n if (\"hotkey\" in action && action.hotkey !== void 0) {\n if (typeof action.hotkey !== \"object\") {\n throw new Error(\"Invalid hotkey configuration\");\n }\n if (typeof action.hotkey.key !== \"string\" || !action.hotkey.key) {\n throw new Error(\"Missing or invalid hotkey key\");\n }\n if (typeof action.hotkey.description !== \"string\" || !action.hotkey.description) {\n throw new Error(\"Missing or invalid hotkey description\");\n }\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n if (hasRequiredDebug) return debug_1;\n hasRequiredDebug = 1;\n const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n };\n debug_1 = debug;\n return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n if (hasRequiredConstants) return constants;\n hasRequiredConstants = 1;\n const SEMVER_SPEC_VERSION = \"2.0.0\";\n const MAX_LENGTH = 256;\n const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n 9007199254740991;\n const MAX_SAFE_COMPONENT_LENGTH = 16;\n const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n const RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n ];\n constants = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n };\n return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n if (hasRequiredRe) return re.exports;\n hasRequiredRe = 1;\n (function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = requireConstants();\n const debug = requireDebug();\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const safeSrc = exports.safeSrc = [];\n const t = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug(name, index, value);\n t[name] = index;\n src[index] = value;\n safeSrc[index] = safe;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t.NUMERICIDENTIFIER]})\\\\.(${src[t.NUMERICIDENTIFIER]})\\\\.(${src[t.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t.BUILDIDENTIFIER]}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`);\n createToken(\"FULL\", `^${src[t.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\\\.(${src[t.XRANGEIDENTIFIER]})(?:\\\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n createToken(\"COERCE\", `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n })(re, re.exports);\n return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n if (hasRequiredParseOptions) return parseOptions_1;\n hasRequiredParseOptions = 1;\n const looseOption = Object.freeze({ loose: true });\n const emptyOpts = Object.freeze({});\n const parseOptions = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n };\n parseOptions_1 = parseOptions;\n return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n if (hasRequiredIdentifiers) return identifiers;\n hasRequiredIdentifiers = 1;\n const numeric = /^[0-9]+$/;\n const compareIdentifiers = (a2, b2) => {\n if (typeof a2 === \"number\" && typeof b2 === \"number\") {\n return a2 === b2 ? 0 : a2 < b2 ? -1 : 1;\n }\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n };\n const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n identifiers = {\n compareIdentifiers,\n rcompareIdentifiers\n };\n return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n if (hasRequiredSemver) return semver;\n hasRequiredSemver = 1;\n const debug = requireDebug();\n const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n const { safeRe: re2, t } = requireRe();\n const parseOptions = requireParseOptions();\n const { compareIdentifiers } = requireIdentifiers();\n class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m = version.trim().match(options.loose ? re2[t.LOOSE] : re2[t.FULL]);\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m[1];\n this.minor = +m[2];\n this.patch = +m[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m[5] ? m[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.major < other.major) {\n return -1;\n }\n if (this.major > other.major) {\n return 1;\n }\n if (this.minor < other.minor) {\n return -1;\n }\n if (this.minor > other.minor) {\n return 1;\n }\n if (this.patch < other.patch) {\n return -1;\n }\n if (this.patch > other.patch) {\n return 1;\n }\n return 0;\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i = 0;\n do {\n const a2 = this.prerelease[i];\n const b2 = other.prerelease[i];\n debug(\"prerelease compare\", i, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i = 0;\n do {\n const a2 = this.build[i];\n const b2 = other.build[i];\n debug(\"build compare\", i, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n if (release.startsWith(\"pre\")) {\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re2[t.PRERELEASELOOSE] : re2[t.PRERELEASE]);\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`);\n }\n }\n }\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"release\":\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`);\n }\n this.prerelease.length = 0;\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i = this.prerelease.length;\n while (--i >= 0) {\n if (typeof this.prerelease[i] === \"number\") {\n this.prerelease[i]++;\n i = -2;\n }\n }\n if (i === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n }\n semver = SemVer;\n return semver;\n}\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n if (hasRequiredMajor) return major_1;\n hasRequiredMajor = 1;\n const SemVer = requireSemver();\n const major2 = (a2, loose) => new SemVer(a2, loose).major;\n major_1 = major2;\n return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n const SemVer = requireSemver();\n const parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n };\n parse_1 = parse;\n return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n if (hasRequiredValid) return valid_1;\n hasRequiredValid = 1;\n const parse = requireParse();\n const valid2 = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n };\n valid_1 = valid2;\n return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.3\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, ...event) {\n this.bus.emit(name, ...event);\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.3\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h) => h !== handler)\n );\n }\n emit(name, ...event) {\n const handlers = this.handlers.get(name) || [];\n handlers.forEach((h) => {\n try {\n ;\n h(event[0]);\n } catch (e) {\n console.error(\"could not invoke event listener\", e);\n }\n });\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, ...event) {\n getBus().emit(name, ...event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nfunction checkOptionalProperty(obj, property, type) {\n if (typeof obj[property] !== \"undefined\") {\n if (type === \"array\") {\n if (!Array.isArray(obj[property])) {\n throw new Error(`View ${property} must be an array`);\n }\n } else if (typeof obj[property] !== type) {\n throw new Error(`View ${property} must be a ${type}`);\n } else if (type === \"object\" && (obj[property] === null || Array.isArray(obj[property]))) {\n throw new Error(`View ${property} must be an object`);\n }\n }\n}\nclass Column {\n _column;\n constructor(column) {\n validateColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nfunction validateColumn(column) {\n if (typeof column !== \"object\" || column === null) {\n throw new Error(\"View column must be an object\");\n }\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n checkOptionalProperty(column, \"sort\", \"function\");\n checkOptionalProperty(column, \"summary\", \"function\");\n}\nclass View {\n _view;\n constructor(view) {\n validateView(view);\n this._view = view;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get hidden() {\n return this._view.hidden;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(icon) {\n this._view.icon = icon;\n }\n get order() {\n return this._view.order;\n }\n set order(order) {\n this._view.order = order;\n }\n get params() {\n return this._view.params;\n }\n set params(params) {\n this._view.params = params;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(expanded) {\n this._view.expanded = expanded;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n get loadChildViews() {\n return this._view.loadChildViews;\n }\n}\nfunction validateView(view) {\n if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n throw new Error(\"View icon is required and must be a valid svg string\");\n }\n if (!view.id || typeof view.id !== \"string\") {\n throw new Error(\"View id is required and must be a string\");\n }\n if (!view.getContents || typeof view.getContents !== \"function\") {\n throw new Error(\"View getContents is required and must be a function\");\n }\n if (!view.name || typeof view.name !== \"string\") {\n throw new Error(\"View name is required and must be a string\");\n }\n checkOptionalProperty(view, \"caption\", \"string\");\n checkOptionalProperty(view, \"columns\", \"array\");\n checkOptionalProperty(view, \"defaultSortKey\", \"string\");\n checkOptionalProperty(view, \"emptyCaption\", \"string\");\n checkOptionalProperty(view, \"emptyTitle\", \"string\");\n checkOptionalProperty(view, \"emptyView\", \"function\");\n checkOptionalProperty(view, \"expanded\", \"boolean\");\n checkOptionalProperty(view, \"hidden\", \"boolean\");\n checkOptionalProperty(view, \"loadChildViews\", \"function\");\n checkOptionalProperty(view, \"order\", \"number\");\n checkOptionalProperty(view, \"params\", \"object\");\n checkOptionalProperty(view, \"parent\", \"string\");\n checkOptionalProperty(view, \"sticky\", \"boolean\");\n if (view.columns) {\n view.columns.forEach(validateColumn);\n const columnIds = view.columns.reduce((set, column) => set.add(column.id), /* @__PURE__ */ new Set());\n if (columnIds.size !== view.columns.length) {\n throw new Error(\"View columns must have unique ids\");\n }\n }\n}\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws {Error} if a view with the same id is already registered\n * @throws {Error} if the registered view is invalid\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`IView id ${view.id} is already registered`);\n }\n validateView(view);\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n *\n * @param id - The id of the view to set as active\n * @throws {Error} If no view with the given id was registered\n * @fires UpdateActiveViewEvent\n */\n setActive(id) {\n if (id === null) {\n this._currentView = null;\n } else {\n const view = this._views.find(({ id: viewId }) => viewId === id);\n if (!view) {\n throw new Error(`No view with ${id} registered`);\n }\n this._currentView = view;\n }\n const event = new CustomEvent(\"updateActive\", { detail: this._currentView });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n entry.category = entry.category ?? 1;\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param context - The creation context. Usually the current folder\n */\n getEntries(context) {\n if (context) {\n return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex((entry) => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !entry.iconSvgInline || !entry.handler) {\n throw new Error(\"Invalid entry\");\n }\n if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n throw new Error(\"Invalid id or displayName property\");\n }\n if (entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n throw new Error(\"Invalid icon provided\");\n }\n if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (typeof entry.handler !== \"function\") {\n throw new Error(\"Invalid handler property\");\n }\n if (\"order\" in entry && typeof entry.order !== \"number\") {\n throw new Error(\"Invalid order property\");\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error(\"Duplicate entry\");\n }\n }\n}\nfunction getNewFileMenu() {\n if (typeof window._nc_newfilemenu === \"undefined\") {\n window._nc_newfilemenu = new NewMenu();\n logger.debug(\"NewFileMenu initialized\");\n }\n return window._nc_newfilemenu;\n}\nfunction addNewFileMenuEntry(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n}\nfunction removeNewFileMenuEntry(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n}\nfunction getNewFileMenuEntries(context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context).sort((a2, b2) => {\n if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n return a2.order - b2.order;\n }\n return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n });\n}\nfunction registerSidebarAction(action) {\n validateSidebarAction(action);\n window._nc_files_sidebar_actions ??= /* @__PURE__ */ new Map();\n if (window._nc_files_sidebar_actions.has(action.id)) {\n logger.warn(`Sidebar action with id \"${action.id}\" already registered. Skipping.`);\n return;\n }\n window._nc_files_sidebar_actions.set(action.id, action);\n logger.debug(`New sidebar action with id \"${action.id}\" registered.`);\n}\nfunction getSidebarActions() {\n if (window._nc_files_sidebar_actions) {\n return [...window._nc_files_sidebar_actions.values()];\n }\n return [];\n}\nfunction validateSidebarAction(action) {\n if (typeof action !== \"object\") {\n throw new Error(\"Sidebar action is not an object\");\n }\n if (!action.id || typeof action.id !== \"string\" || action.id !== CSS.escape(action.id)) {\n throw new Error(\"Sidebar actions need to have an id conforming to the HTML id attribute specifications\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Sidebar actions need to have a displayName function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Sidebar actions need to have a iconSvgInline function\");\n }\n if (!action.enabled || typeof action.enabled !== \"function\") {\n throw new Error(\"Sidebar actions need to have an enabled function\");\n }\n if (!action.onClick || typeof action.onClick !== \"function\") {\n throw new Error(\"Sidebar actions need to have an onClick function\");\n }\n}\nfunction registerSidebarTab(tab) {\n validateSidebarTab(tab);\n window._nc_files_sidebar_tabs ??= /* @__PURE__ */ new Map();\n if (window._nc_files_sidebar_tabs.has(tab.id)) {\n logger.warn(`Sidebar tab with id \"${tab.id}\" already registered. Skipping.`);\n return;\n }\n window._nc_files_sidebar_tabs.set(tab.id, tab);\n logger.debug(`New sidebar tab with id \"${tab.id}\" registered.`);\n}\nfunction getSidebarTabs() {\n if (window._nc_files_sidebar_tabs) {\n return [...window._nc_files_sidebar_tabs.values()];\n }\n return [];\n}\nfunction validateSidebarTab(tab) {\n if (typeof tab !== \"object\") {\n throw new Error(\"Sidebar tab is not an object\");\n }\n if (!tab.id || typeof tab.id !== \"string\" || tab.id !== CSS.escape(tab.id)) {\n throw new Error(\"Sidebar tabs need to have an id conforming to the HTML id attribute specifications\");\n }\n if (!tab.tagName || typeof tab.tagName !== \"string\") {\n throw new Error(\"Sidebar tabs need to have the tagName name set\");\n }\n if (!tab.tagName.match(/^[a-z][a-z0-9-_]+$/)) {\n throw new Error(\"Sidebar tabs tagName name is invalid\");\n }\n if (!tab.displayName || typeof tab.displayName !== \"string\") {\n throw new Error(\"Sidebar tabs need to have a name set\");\n }\n if (typeof tab.iconSvgInline !== \"string\" || !isSvg(tab.iconSvgInline)) {\n throw new Error(\"Sidebar tabs need to have an valid SVG icon\");\n }\n if (typeof tab.order !== \"number\") {\n throw new Error(\"Sidebar tabs need to have a numeric order set\");\n }\n if (typeof tab.enabled !== \"function\") {\n throw new Error('Sidebar tabs need to have an \"enabled\" method');\n }\n}\nclass SidebarProxy {\n get #impl() {\n return window.OCA?.Files?._sidebar?.();\n }\n get available() {\n return !!this.#impl;\n }\n get isOpen() {\n return this.#impl?.isOpen ?? false;\n }\n get activeTab() {\n return this.#impl?.activeTab;\n }\n get node() {\n return this.#impl?.node;\n }\n open(node, tab) {\n this.#impl?.open(node, tab);\n }\n close() {\n this.#impl?.close();\n }\n setActiveTab(tabId) {\n this.#impl?.setActiveTab(tabId);\n }\n registerTab(tab) {\n registerSidebarTab(tab);\n }\n getTabs(context) {\n return this.#impl?.getTabs(context) ?? [];\n }\n getActions(context) {\n return this.#impl?.getActions(context) ?? [];\n }\n registerAction(action) {\n registerSidebarAction(action);\n }\n}\nfunction getSidebar() {\n return new SidebarProxy();\n}\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n constructor(options) {\n super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n }\n /**\n * The filename that was validated\n */\n get filename() {\n return this.cause.filename;\n }\n /**\n * Reason why the validation failed\n */\n get reason() {\n return this.cause.reason;\n }\n /**\n * Part of the filename that caused this error\n */\n get segment() {\n return this.cause.segment;\n }\n}\nfunction validateFilename(filename) {\n const capabilities = getCapabilities().files;\n const forbiddenCharacters = capabilities.forbidden_filename_characters ?? [\"/\", \"\\\\\"];\n for (const character of forbiddenCharacters) {\n if (filename.includes(character)) {\n throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n }\n }\n filename = filename.toLocaleLowerCase();\n const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n if (forbiddenFilenames.includes(filename)) {\n throw new InvalidFilenameError({\n filename,\n segment: filename,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const endOfBasename = filename.indexOf(\".\", 1);\n const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n if (forbiddenFilenameBasenames.includes(basename2)) {\n throw new InvalidFilenameError({\n filename,\n segment: basename2,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [];\n for (const extension of forbiddenFilenameExtensions) {\n if (filename.length > extension.length && filename.endsWith(extension)) {\n throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n }\n }\n}\nfunction isFilenameValid(filename) {\n try {\n validateFilename(filename);\n return true;\n } catch (error) {\n if (error instanceof InvalidFilenameError) {\n return false;\n }\n throw error;\n }\n}\nfunction getUniqueName(name, otherNames, options) {\n const opts = {\n suffix: (n) => `(${n})`,\n ignoreFileExtension: false,\n ...options\n };\n let newName = name;\n let i = 1;\n while (otherNames.includes(newName)) {\n const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n const base = basename(name, ext);\n newName = `${base} ${opts.suffix(i++)}${ext}`;\n }\n return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n binaryPrefixes = binaryPrefixes && !base1000;\n if (typeof size === \"string\") {\n size = Number(size);\n }\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n } else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n try {\n value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch (e) {\n return null;\n }\n const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (match === null || match[1] === \".\" || match[1] === \"\") {\n return null;\n }\n const bytesArray = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n };\n const decimalString = `${match[1]}`;\n const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n identifiers2 = identifiers2 ?? [(value) => value];\n orders = orders ?? [];\n const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n const collator = Intl.Collator(\n [getLanguage(), getCanonicalLocale()],\n {\n // handle 10 as ten and not as one-zero\n numeric: true,\n usage: \"sort\"\n }\n );\n return [...collection].sort((a2, b2) => {\n for (const [index, identifier] of identifiers2.entries()) {\n const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n if (value !== 0) {\n return value * sorting[index];\n }\n }\n return 0;\n });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n FilesSortingMode2[\"Name\"] = \"basename\";\n FilesSortingMode2[\"Modified\"] = \"mtime\";\n FilesSortingMode2[\"Size\"] = \"size\";\n return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n const sortingOptions = {\n // Default to sort by name\n sortingMode: \"basename\",\n // Default to sort ascending\n sortingOrder: \"asc\",\n ...options\n };\n function basename2(node) {\n const name = node.displayname || node.attributes?.displayname || node.basename || \"\";\n if (node.type === FileType.Folder) {\n return name;\n }\n return name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n }\n const identifiers2 = [\n // 1: Sort favorites first if enabled\n ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n // 2: Sort folders first if sorting by name\n ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n // 3: Use sorting mode if NOT basename (to be able to use display name too)\n ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode] ?? v.attributes[sortingOptions.sortingMode]] : [],\n // 4: Use display name if available, fallback to name\n (v) => basename2(v),\n // 5: Finally, use basename if all previous sorting methods failed\n (v) => v.basename\n ];\n const orders = [\n // (for 1): always sort favorites before normal files\n ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n // (for 2): always sort folders before files\n ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n // (also for 3 so make sure not to conflict with 2 and 3)\n ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n // for 4: use configured sorting direction\n sortingOptions.sortingOrder,\n // for 5: use configured sorting direction\n sortingOptions.sortingOrder\n ];\n return orderBy(nodes, identifiers2, orders);\n}\nexport {\n Column,\n DefaultType,\n a as File,\n FileAction,\n FileListAction,\n FileListFilter,\n FileType,\n FilesSortingMode,\n b as Folder,\n Header,\n InvalidFilenameError,\n InvalidFilenameErrorReason,\n Navigation,\n NewMenuEntryCategory,\n N as Node,\n c as NodeStatus,\n P as Permission,\n View,\n addNewFileMenuEntry,\n formatFileSize,\n getFileActions,\n getFileListActions,\n getFileListFilters,\n getFileListHeaders,\n getNavigation,\n getNewFileMenu,\n getNewFileMenuEntries,\n getSidebar,\n getSidebarActions,\n getSidebarTabs,\n getUniqueName,\n isFilenameValid,\n orderBy,\n parseFileSize,\n registerFileAction,\n registerFileListAction,\n registerFileListFilter,\n registerFileListHeaders,\n registerSidebarAction,\n registerSidebarTab,\n removeNewFileMenuEntry,\n sortNodes,\n unregisterFileListFilter,\n validateColumn,\n validateFilename,\n validateView\n};\n//# sourceMappingURL=index.mjs.map\n","\n \n \n \n {{ title }}\n \n \n \n\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./MessageReplyTextOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./MessageReplyTextOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./MessageReplyTextOutline.vue?vue&type=template&id=5d6c4e92\"\nimport script from \"./MessageReplyTextOutline.vue?vue&type=script&lang=js\"\nexport * from \"./MessageReplyTextOutline.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 message-reply-text-outline-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\":\"M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { parseXML } from 'webdav';\nimport { processResponsePayload } from 'webdav/dist/node/response.js';\nimport { prepareFileFromProps } from 'webdav/dist/node/tools/dav.js';\nimport client from './DavClient.js';\nexport const DEFAULT_LIMIT = 20;\n/**\n * Retrieve the comments list\n *\n * @param data destructuring object\n * @param data.resourceType the resource type\n * @param data.resourceId the resource ID\n * @param [options] optional options for axios\n * @param [options.offset] the pagination offset\n * @param [options.limit] the pagination limit, defaults to 20\n * @param [options.datetime] optional date to query\n * @return the comments list\n */\nexport async function getComments({ resourceType, resourceId }, options) {\n const resourcePath = ['', resourceType, resourceId].join('/');\n const datetime = options.datetime ? `${options.datetime.toISOString()}` : '';\n const response = await client.customRequest(resourcePath, {\n method: 'REPORT',\n data: `\n\t\t\t\n\t\t\t\t${options.limit ?? DEFAULT_LIMIT}\n\t\t\t\t${options.offset || 0}\n\t\t\t\t${datetime}\n\t\t\t`,\n ...options,\n });\n const responseData = await response.text();\n const result = await parseXML(responseData);\n const stat = getDirectoryFiles(result, true);\n // https://github.com/perry-mitchell/webdav-client/issues/339\n return processResponsePayload(response, stat, true);\n}\n/**\n * https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/operations/directoryContents.ts\n *\n * @param result\n * @param isDetailed\n */\nfunction getDirectoryFiles(result, isDetailed = false) {\n // Extract the response items (directory contents)\n const { multistatus: { response: responseItems }, } = result;\n // Map all items to a consistent output structure (results)\n return responseItems.map((item) => {\n // Each item should contain a stat object\n const props = item.propstat.prop;\n return prepareFileFromProps(props, props.id.toString(), isDetailed);\n });\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param {Function} request the axios promise request\n * @return {object}\n */\nfunction cancelableRequest(request) {\n\tconst controller = new AbortController()\n\tconst signal = controller.signal\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param {string} url the url to send the request to\n\t * @param {object} [options] optional config for the request\n\t */\n\tconst fetch = async function(url, options) {\n\t\tconst response = await request(\n\t\t\turl,\n\t\t\t{ signal, ...options },\n\t\t)\n\t\treturn response\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tabort: () => controller.abort(),\n\t}\n}\n\nexport default cancelableRequest\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.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!./Comments.vue?vue&type=script&lang=js\"","\n\n\n\t\n\t\t\n\t\t\n\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t{{ t('comments', 'No more messages') }}\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{{ t('comments', 'Retry') }}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport client from './DavClient.js';\n/**\n * Mark comments older than the date timestamp as read\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param date the date object\n */\nexport function markCommentsAsRead(resourceType, resourceId, date) {\n const resourcePath = ['', resourceType, resourceId].join('/');\n const readMarker = date.toUTCString();\n return client.customRequest(resourcePath, {\n method: 'PROPPATCH',\n data: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${readMarker}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\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!./Comments.vue?vue&type=style&index=0&id=6c8c157a&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!./Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Comments.vue?vue&type=template&id=6c8c157a&scoped=true\"\nimport script from \"./Comments.vue?vue&type=script&lang=js\"\nexport * from \"./Comments.vue?vue&type=script&lang=js\"\nimport style0 from \"./Comments.vue?vue&type=style&index=0&id=6c8c157a&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 \"6c8c157a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"element-visibility\",rawName:\"v-element-visibility\",value:(_vm.onVisibilityChange),expression:\"onVisibilityChange\"}],staticClass:\"comments\",class:{ 'icon-loading': _vm.isFirstLoading }},[_c('Comment',_vm._b({staticClass:\"comments__writer\",attrs:{\"auto-complete\":_vm.autoComplete,\"resource-type\":_vm.resourceType,\"editor\":true,\"user-data\":_vm.userData,\"resource-id\":_vm.currentResourceId},on:{\"new\":_vm.onNewComment}},'Comment',_vm.editorData,false)),_vm._v(\" \"),(!_vm.isFirstLoading)?[(!_vm.hasComments && _vm.done)?_c('NcEmptyContent',{staticClass:\"comments__empty\",attrs:{\"name\":_vm.t('comments', 'No comments yet, start the conversation!')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconMessageReplyTextOutline')]},proxy:true}],null,false,326612300)}):_c('ul',_vm._l((_vm.comments),function(comment){return _c('Comment',_vm._b({key:comment.props.id,staticClass:\"comments__list\",attrs:{\"tag\":\"li\",\"auto-complete\":_vm.autoComplete,\"resource-type\":_vm.resourceType,\"message\":comment.props.message,\"resource-id\":_vm.currentResourceId,\"user-data\":_vm.genMentionsData(comment.props.mentions)},on:{\"update:message\":function($event){return _vm.$set(comment.props, \"message\", $event)},\"delete\":_vm.onDelete}},'Comment',comment.props,false))}),1),_vm._v(\" \"),(_vm.loading && !_vm.isFirstLoading)?_c('div',{staticClass:\"comments__info icon-loading\"}):(_vm.hasComments && _vm.done)?_c('div',{staticClass:\"comments__info\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('comments', 'No more messages'))+\"\\n\\t\\t\")]):(_vm.error)?[_c('NcEmptyContent',{staticClass:\"comments__error\",attrs:{\"name\":_vm.error},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconAlertCircleOutline')]},proxy:true}],null,false,3663249556)}),_vm._v(\" \"),_c('NcButton',{staticClass:\"comments__retry\",on:{\"click\":_vm.getComments},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconRefresh')]},proxy:true}],null,false,2997625269)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Retry'))+\"\\n\\t\\t\\t\")])]:_vm._e()]:_vm._e()],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-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarTab.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-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarTab.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.resourceId !== undefined)?_c(_setup.Comments,{key:_setup.resourceId,attrs:{\"resource-id\":_setup.resourceId,\"resource-type\":\"files\"}}):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesSidebarTab.vue?vue&type=template&id=60255b91\"\nimport script from \"./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesSidebarTab.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","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport moment from '@nextcloud/moment';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport Vue, {} from 'vue';\nimport logger from './logger.js';\nimport { getComments } from './services/GetComments.js';\nVue.use(PiniaVuePlugin);\nlet ActivityTabPluginView;\nlet ActivityTabPluginInstance;\n/**\n * Register the comments plugins for the Activity sidebar\n */\nexport function registerCommentsPlugins() {\n window.OCA.Activity.registerSidebarAction({\n mount: async (el, { fileInfo, reload }) => {\n const pinia = createPinia();\n if (!ActivityTabPluginView) {\n const { default: ActivityCommentAction } = await import('./views/ActivityCommentAction.vue');\n // @ts-expect-error Types are broken for Vue2\n ActivityTabPluginView = Vue.extend(ActivityCommentAction);\n }\n ActivityTabPluginInstance = new ActivityTabPluginView({\n el,\n pinia,\n propsData: {\n reloadCallback: reload,\n resourceId: fileInfo.id,\n },\n });\n logger.info('Comments plugin mounted in Activity sidebar action', { fileInfo });\n },\n unmount: () => {\n // destroy previous instance if available\n if (ActivityTabPluginInstance) {\n ActivityTabPluginInstance.$destroy();\n }\n },\n });\n window.OCA.Activity.registerSidebarEntries(async ({ fileInfo, limit, offset }) => {\n const { data: comments } = await getComments({ resourceType: 'files', resourceId: fileInfo.id }, { limit, offset });\n logger.debug('Loaded comments', { fileInfo, comments });\n const { default: CommentView } = await import('./views/ActivityCommentEntry.vue');\n // @ts-expect-error Types are broken for Vue2\n const CommentsViewObject = Vue.extend(CommentView);\n return comments.map((comment) => ({\n _CommentsViewInstance: undefined,\n timestamp: moment(comment.props?.creationDateTime).toDate().getTime(),\n mount(element, { reload }) {\n this._CommentsViewInstance = new CommentsViewObject({\n el: element,\n propsData: {\n comment,\n resourceId: fileInfo.id,\n reloadCallback: reload,\n },\n });\n },\n unmount() {\n this._CommentsViewInstance?.$destroy();\n },\n }));\n });\n window.OCA.Activity.registerSidebarFilter((activity) => activity.type !== 'comments');\n logger.info('Comments plugin registered for Activity sidebar action');\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport MessageReplyText from '@mdi/svg/svg/message-reply-text.svg?raw';\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { registerSidebarTab } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport { t } from '@nextcloud/l10n';\nimport wrap from '@vue/web-component-wrapper';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport Vue from 'vue';\nimport FilesSidebarTab from './views/FilesSidebarTab.vue';\nimport { registerCommentsPlugins } from './comments-activity-tab.ts';\n__webpack_nonce__ = getCSPNonce();\nconst tagName = 'comments_files-sidebar-tab';\nif (loadState('comments', 'activityEnabled', false) && OCA?.Activity?.registerSidebarAction !== undefined) {\n // Do not mount own tab but mount into activity\n window.addEventListener('DOMContentLoaded', function () {\n registerCommentsPlugins();\n });\n}\nelse {\n registerSidebarTab({\n id: 'comments',\n displayName: t('comments', 'Comments'),\n iconSvgInline: MessageReplyText,\n order: 50,\n tagName,\n enabled() {\n if (!window.customElements.get(tagName)) {\n setupSidebarTab();\n }\n return true;\n },\n });\n}\n/**\n * Setup the sidebar tab as a web component\n */\nfunction setupSidebarTab() {\n Vue.use(PiniaVuePlugin);\n Vue.mixin({ pinia: createPinia() });\n const webComponent = wrap(Vue, FilesSidebarTab);\n // In Vue 2, wrap doesn't support disabling shadow. Disable with a hack\n Object.defineProperty(webComponent.prototype, 'attachShadow', {\n value() { return this; },\n });\n Object.defineProperty(webComponent.prototype, 'shadowRoot', {\n get() { return this; },\n });\n window.customElements.define(tagName, webComponent);\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, `.comments[data-v-6c8c157a]{min-height:100%;display:flex;flex-direction:column}.comments__empty[data-v-6c8c157a],.comments__error[data-v-6c8c157a]{flex:1 0}.comments__retry[data-v-6c8c157a]{margin:0 auto}.comments__info[data-v-6c8c157a]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/views/Comments.vue\"],\"names\":[],\"mappings\":\"AACA,2BACC,eAAA,CACA,YAAA,CACA,qBAAA,CAEA,oEAEC,QAAA,CAGD,kCACC,aAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA\",\"sourcesContent\":[\"\\n.comments {\\n\\tmin-height: 100%;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\t&__empty,\\n\\t&__error {\\n\\t\\tflex: 1 0;\\n\\t}\\n\\n\\t&__retry {\\n\\t\\tmargin: 0 auto;\\n\\t}\\n\\n\\t&__info {\\n\\t\\theight: 60px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\ttext-align: center;\\n\\t\\tline-height: 60px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('comments')\n\t.detectUser()\n\t.build()\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=\" + {\"594\":\"f5af3d132040859cb666\",\"620\":\"e5d77a046303aedd05c5\",\"2391\":\"6d29c12fea2fbb265756\",\"2880\":\"803b63f847e6d68bcf0d\",\"4325\":\"b597fcd1212503c968df\",\"4508\":\"b788d8e845a1709aacd5\",\"4818\":\"d7d676d61bc734e1307a\",\"4906\":\"494ff510a1379d42d106\",\"5258\":\"bf877d931968f112154d\",\"5862\":\"580b9c2e231a9169a12f\",\"7039\":\"9800c2c4f93af8d9465e\",\"7145\":\"1f907ab7a1c83e8a6617\",\"8339\":\"b2246be0f4c885a9d524\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2122;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2122: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\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__(93226)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","parseQuota","result","responseItem","multistatus","response","propstat","prop","quotaUsed","quotaAvail","used","parseInt","String","available","err","props","id","type","Number","default","message","resourceId","required","resourceType","data","deleted","editing","loading","computed","mapStores","useDeletedCommentLimbo","methods","onEdit","this","onEditCancel","updateLocalMessage","onEditComment","EditComment","logger","debug","$emit","error","showError","t","onDeleteWithUndo","deletedCommentLimboStore","addId","timeOutDelete","setTimeout","onDelete","TOAST_UNDO_TIMEOUT","showUndo","clearTimeout","removeId","DeleteComment","onNewComment","newComment","NewComment","localMessage","async","getDAVCompliance","context","filePath","options","requestOptions","url","remoteURL","method","compliance","headers","get","split","map","item","trim","server","commentId","commentPath","join","client","customRequest","http","https","module","exports","key","hasOwnProperty","validateParams","params","parse","protocol","Error","request","cb","call","ClientRequest","extend","statusCodes","opts","defaultProtocol","location","search","host","hostname","port","path","indexOf","toUpperCase","req","on","end","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","getRootPath","generateRemoteUrl","Layerr","constructor","errorOptionsOrMessage","messageText","args","arguments","shortMessage","cause","super","name","Object","defineProperty","value","info","assign","_info","captureStackTrace","ctor","constructorOpt","_cause","fullStack","stack","output","toString","prototype","TRANSFORM_RETAIN_FORMAT","v","getFileContents","format","code","InvalidOutputFormat","Accept","transformResponse","body","text","details","getFileContentsString","arrayBuffer","Buffer","from","getFileContentsBuffer","getFileDownloadLink","test","authType","None","Password","authPart","Authorization","replace","authContents","LinkUnsupportedAuthType","generateBasicAuthHeader","username","password","___CSS_LOADER_EXPORT___","push","generateLockXML","ownerHREF","XMLBuilder","attributeNamePrefix","ignoreAttributes","suppressEmptyNode","build","namespace","lockinfo","lockscope","exclusive","locktype","write","owner","href","obj","ns","copy","parseGenericResponse","xml","XMLParser","removeNSPrefix","parseAttributeValue","parseTagValue","createDirectory","dirPath","recursive","paths","sort","a","b","length","creating","testPath","status","createDirectoryRecursively","endsWith","components","IconArrowRight","IconClose","IconTrashCanOutline","IconPencilOutline","NcActionButton","NcActions","NcActionSeparator","NcAvatar","NcButton","NcDateTime","NcLoadingIcon","NcRichContenteditable","NcRichText","mixins","CommentMixin","inheritAttrs","actorDisplayName","actorId","creationDateTime","editor","Boolean","autoComplete","Function","userData","tag","expanded","submitted","isOwnComment","getCurrentUser","uid","richContent","mentions","keys","forEach","user","index","regex","RegExp","component","NcUserBubble","displayName","label","primary","isEmptyMessage","timestamp","Date","isLimbo","checkForId","watch","beforeMount","onSubmit","$nextTick","$refs","$el","focus","onExpand","putFileContents","contentLength","overwrite","Readable","getFileUploadLink","defineComponent","editorData","currentResourceId","callback","axios","generateOcsUrl","itemType","itemId","sorter","limit","loadState","ocs","values","genMentionsData","flat","mention","mentionId","icon","mentionDisplayName","source","createClient","setHeaders","token","requesttoken","onRequestTokenUpdate","getRequestToken","defineStore","state","idsInLimbo","actions","splice","includes","setupAuth","oauthToken","ha1","Auto","Digest","digest","Token","InvalidAuthType","requestDataToFetchBody","JSON","stringify","DEFAULT_TIMEOUT","lock","refreshToken","timeout","Timeout","If","contactHref","responseData","lockPayload","serverTimeout","unlock","hasArrayBuffer","ArrayBuffer","objToString","isArrayBuffer","copyFile","filename","destination","Destination","Overwrite","Depth","shallow","decodeHtmlEntities","passes","parser","DOMParser","decoded","i","parseFromString","documentElement","textContent","fromBase64","toBase64","qs","controlOrWhitespace","CRHTLF","slashes","protocolre","windowsDriveLetter","trimLeft","str","rules","address","isSpecial","NaN","undefined","ignore","hash","query","lolcation","loc","window","self","finaldestination","Url","unescape","pathname","scheme","extractProtocol","rest","match","exec","toLowerCase","forwardSlashes","otherSlashes","slashesCount","slice","relative","extracted","instruction","instructions","lastIndexOf","charAt","base","concat","last","unshift","up","resolve","auth","encodeURIComponent","decodeURIComponent","origin","set","part","fn","pop","char","ins","len","charCodeAt","NOOP","createReadStream","outStream","PassThroughStream","range","start","rangeHeader","Range","responseError","getFileStream","then","stream","pipe","catch","emit","createWriteStream","writeStream","maxRedirects","render","_vm","_c","_self","directives","rawName","expression","staticClass","class","attrs","_v","_s","scopedSlots","_u","proxy","_e","$event","preventDefault","ref","nativeOn","apply","staticRenderFns","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","resourcePath","post","actorType","toUTCString","objectType","verb","comment","stat","calculateDataLength","byteLength","DataTypeNoLength","getDirectoryContents","remotePath","deep","davResp","_remotePath","files","serverremoteBasePath","requestPath","isDetailed","includeSelf","serverBase","responseItems","nodes","filter","basename","getDirectoryFiles","remoteBasePath","glob","exists","finalOptions","moveFile","deleteFile","getSearch","searchArbiter","responseText","results","partialUpdateFileContents","InvalidUpdateRange","partialUpdateFileContentsSabredav","partialUpdateFileContentsApache","NotSupported","getStat","DEFAULT_CONTACT_HREF","authTypeRaw","httpAgent","httpsAgent","withCredentials","c","getHeaders","getQuota","destinationFilename","m","extractURLPath","fullURL","urlPath","joinURL","parts","reduce","nextPart","partIndex","normaliseHREF","freeGlobal","global","InvalidCharacterError","TABLE","REGEX_SPACE_CHARACTERS","base64","input","buffer","padding","position","bitStorage","bitCounter","fromCharCode","quota","prepareRequestOptions","userOptions","signal","_digest","requestStandard","ok","requestDigest","requestAuto","hasDigestAuth","response2","nc","patcher","patchInline","newHeaders","credentials","agent","parsedURL","getFetchOptions","createDigestContext","algorithm","generateDigestAuthHeader","uri","qop","ncString","realm","nonce","cnonce","ha2","digestResponse","authValues","opaque","authHeader","k","parseDigestAuth","responseIndicatesDigestAuth","re","Math","floor","NONCE_CHARS","random","makeNonce","debug_1","hasRequiredDebug","constants","hasRequiredConstants","requireDebug","process","env","NODE_DEBUG","console","requireConstants","MAX_SAFE_INTEGER","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","hasRequiredRe","parseOptions_1","hasRequiredParseOptions","identifiers","hasRequiredIdentifiers","semver","hasRequiredSemver","major_1","hasRequiredMajor","parse_1","hasRequiredParse","valid_1","hasRequiredValid","requireSemver","safeRe","re2","src","safeSrc","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","max","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","parseOptions","looseOption","freeze","loose","emptyOpts","requireParseOptions","compareIdentifiers","numeric","a2","b2","anum","bnum","rcompareIdentifiers","requireIdentifiers","SemVer","version","includePrerelease","TypeError","LOOSE","FULL","raw","major","minor","patch","prerelease","num","compare","other","compareMain","comparePre","compareBuild","inc","release","identifier","identifierBase","startsWith","isNaN","requireMajor","throwErrors","er","requireParse","requireValid","emits","title","fillColor","size","_b","$attrs","getComments","datetime","toISOString","offset","prepareFileFromProps","parseXML","processResponsePayload","Comment","NcEmptyContent","IconRefresh","IconMessageReplyTextOutline","IconAlertCircleOutline","elementVisibility","CommentView","done","comments","cancelRequest","hasComments","isFirstLoading","onVisibilityChange","isVisible","date","readMarker","markCommentsAsRead","e","update","resetState","onScrollBottomReached","abort","controller","AbortController","cancelableRequest","findIndex","_l","$set","_defineComponent","__name","node","folder","view","setup","__props","expose","setActive","fileid","active","__sfc","Comments","_setup","_setupProxy","ActivityTabPluginView","ActivityTabPluginInstance","Vue","use","PiniaVuePlugin","__webpack_nonce__","getCSPNonce","tagName","tab","OCA","Activity","registerSidebarAction","addEventListener","mount","el","fileInfo","reload","pinia","createPinia","ActivityCommentAction","propsData","reloadCallback","unmount","$destroy","registerSidebarEntries","CommentsViewObject","_CommentsViewInstance","moment","toDate","getTime","element","registerSidebarFilter","activity","CSS","escape","iconSvgInline","order","enabled","validateSidebarTab","customElements","mixin","webComponent","wrap","FilesSidebarTab","define","setupSidebarTab","_nc_files_sidebar_tabs","Map","has","l","warn","getLoggerBuilder","setApp","detectUser","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","every","r","n","getter","__esModule","d","definition","o","enumerable","f","chunkId","Promise","all","promises","u","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","setAttribute","onScriptComplete","prev","event","onerror","onload","doneFns","parentNode","removeChild","bind","target","head","appendChild","Symbol","toStringTag","nmd","children","scriptUrl","globalThis","importScripts","currentScript","p","baseURI","installedChunks","installedChunkData","promise","reject","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"comments-comments-tab.js?v=2f8bf0dbeb61f003cc9e","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/node_modules/webdav/dist/node/tools/quota.js","webpack:///nextcloud/apps/comments/src/mixins/CommentMixin.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getDAVCompliance.js","webpack:///nextcloud/apps/comments/src/services/EditComment.js","webpack:///nextcloud/node_modules/https-browserify/index.js","webpack:///nextcloud/node_modules/stream-http/index.js","webpack:///nextcloud/apps/comments/src/utils/davUtils.js","webpack:///nextcloud/node_modules/layerr/dist/layerr.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/basic.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true","webpack:///nextcloud/node_modules/webdav/dist/node/tools/xml.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createDirectory.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue","webpack:///nextcloud/node_modules/webdav/dist/node/operations/putFileContents.js","webpack:///nextcloud/apps/comments/src/mixins/CommentView.ts","webpack:///nextcloud/apps/comments/src/services/DavClient.js","webpack:///nextcloud/apps/comments/src/store/deletedCommentLimbo.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/body.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/lock.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/arrayBuffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/copyFile.js","webpack:///nextcloud/apps/comments/src/utils/decodeHtmlEntities.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/encode.js","webpack:///nextcloud/node_modules/url-parse/index.js","webpack://nextcloud/./apps/comments/src/components/Comment.vue?7f26","webpack:///nextcloud/node_modules/byte-length/dist/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createStream.js","webpack://nextcloud/./apps/comments/src/components/Comment.vue?d1f7","webpack://nextcloud/./apps/comments/src/components/Comment.vue?7275","webpack:///nextcloud/apps/comments/src/services/NewComment.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/size.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/directoryContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/exists.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/customRequest.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/moveFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/deleteFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/search.js","webpack:///nextcloud/apps/comments/src/services/DeleteComment.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/partialUpdateFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/stat.js","webpack:///nextcloud/node_modules/webdav/dist/node/factory.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/url.js","webpack:///nextcloud/node_modules/base-64/base64.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getQuota.js","webpack:///nextcloud/node_modules/webdav/dist/node/request.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/digest.js","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/node_modules/vue-material-design-icons/MessageReplyTextOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/MessageReplyTextOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/MessageReplyTextOutline.vue?87e1","webpack:///nextcloud/node_modules/vue-material-design-icons/MessageReplyTextOutline.vue?vue&type=template&id=5d6c4e92","webpack:///nextcloud/apps/comments/src/services/GetComments.ts","webpack:///nextcloud/apps/comments/src/utils/cancelableRequest.js","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/comments/src/views/Comments.vue","webpack:///nextcloud/apps/comments/src/services/ReadComments.ts","webpack://nextcloud/./apps/comments/src/views/Comments.vue?4d55","webpack://nextcloud/./apps/comments/src/views/Comments.vue?f45b","webpack://nextcloud/./apps/comments/src/views/Comments.vue?0e41","webpack:///nextcloud/apps/comments/src/views/FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/comments/src/views/FilesSidebarTab.vue","webpack://nextcloud/./apps/comments/src/views/FilesSidebarTab.vue?e0e6","webpack:///nextcloud/apps/comments/src/comments-activity-tab.ts","webpack:///nextcloud/apps/comments/src/files-sidebar.ts","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/comments/src/logger.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\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};","import { translateDiskSpace } from \"./dav.js\";\nexport function parseQuota(result) {\n try {\n const [responseItem] = result.multistatus.response;\n const { propstat: { prop: { \"quota-used-bytes\": quotaUsed, \"quota-available-bytes\": quotaAvail } } } = responseItem;\n return typeof quotaUsed !== \"undefined\" && typeof quotaAvail !== \"undefined\"\n ? {\n // As it could be both a string or a number ensure we are working with a number\n used: parseInt(String(quotaUsed), 10),\n available: translateDiskSpace(quotaAvail)\n }\n : null;\n }\n catch (err) {\n /* ignore */\n }\n return null;\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs'\nimport { mapStores } from 'pinia'\nimport logger from '../logger.js'\nimport DeleteComment from '../services/DeleteComment.js'\nimport EditComment from '../services/EditComment.js'\nimport NewComment from '../services/NewComment.js'\nimport { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.js'\n\nexport default {\n\tprops: {\n\t\tid: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tresourceId: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: 'files',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdeleted: false,\n\t\t\tediting: false,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t...mapStores(useDeletedCommentLimbo),\n\t},\n\n\tmethods: {\n\t\t// EDITION\n\t\tonEdit() {\n\t\t\tthis.editing = true\n\t\t},\n\t\tonEditCancel() {\n\t\t\tthis.editing = false\n\t\t\t// Restore original value\n\t\t\tthis.updateLocalMessage(this.message)\n\t\t},\n\t\tasync onEditComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait EditComment(this.resourceType, this.resourceId, this.id, message)\n\t\t\t\tlogger.debug('Comment edited', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id, message })\n\t\t\t\tthis.$emit('update:message', message)\n\t\t\t\tthis.editing = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to edit the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to edit the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t// DELETION\n\t\tonDeleteWithUndo() {\n\t\t\tthis.$emit('delete')\n\t\t\tthis.deleted = true\n\t\t\tthis.deletedCommentLimboStore.addId(this.id)\n\t\t\tconst timeOutDelete = setTimeout(this.onDelete, TOAST_UNDO_TIMEOUT)\n\t\t\tshowUndo(t('comments', 'Comment deleted'), () => {\n\t\t\t\tclearTimeout(timeOutDelete)\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t})\n\t\t},\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tawait DeleteComment(this.resourceType, this.resourceId, this.id)\n\t\t\t\tlogger.debug('Comment deleted', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id })\n\t\t\t\tthis.$emit('delete', this.id)\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to delete the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to delete the comment', { error })\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t}\n\t\t},\n\n\t\t// CREATION\n\t\tasync onNewComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst newComment = await NewComment(this.resourceType, this.resourceId, message)\n\t\t\t\tlogger.debug('New comment posted', { resourceType: this.resourceType, resourceId: this.resourceId, newComment })\n\t\t\t\tthis.$emit('new', newComment)\n\n\t\t\t\t// Clear old content\n\t\t\t\tthis.$emit('update:message', '')\n\t\t\t\tthis.localMessage = ''\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to create the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to create the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function getDAVCompliance(context, filePath, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"OPTIONS\"\n }, context, options);\n const response = await request(requestOptions, context);\n try {\n handleResponseCode(context, response);\n }\n catch (err) {\n const error = err;\n throw error;\n }\n const davHeader = response.headers.get(\"DAV\") ?? \"\";\n const compliance = davHeader.split(\",\").map(item => item.trim());\n const server = response.headers.get(\"Server\") ?? \"\";\n return {\n compliance,\n server\n };\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.js'\n\n/**\n * Edit an existing comment\n *\n * @param {string} resourceType the resource type\n * @param {number} resourceId the resource ID\n * @param {number} commentId the comment iD\n * @param {string} message the message content\n */\nexport default async function(resourceType, resourceId, commentId, message) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\treturn await client.customRequest(commentPath, {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${message}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n\t})\n}\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params)\n return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n params = validateParams(params)\n return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n if (typeof params === 'string') {\n params = url.parse(params)\n }\n if (!params.protocol) {\n params.protocol = 'https:'\n }\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n }\n return params\n}\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\n/**\n *\n */\nfunction getRootPath() {\n\treturn generateRemoteUrl('dav/comments')\n}\n\nexport { getRootPath }\n","import { assertError, isError } from \"./error.js\";\nimport { getGlobalName } from \"./global.js\";\nimport { parseArguments } from \"./tools.js\";\nexport class Layerr extends Error {\n constructor(errorOptionsOrMessage, messageText) {\n const args = [...arguments];\n const { options, shortMessage } = parseArguments(args);\n let message = shortMessage;\n if (options.cause) {\n message = `${message}: ${options.cause.message}`;\n }\n super(message);\n this.message = message;\n if (options.name && typeof options.name === \"string\") {\n this.name = options.name;\n }\n else {\n this.name = getGlobalName();\n }\n if (options.cause) {\n Object.defineProperty(this, \"_cause\", { value: options.cause });\n }\n Object.defineProperty(this, \"_info\", { value: {} });\n if (options.info && typeof options.info === \"object\") {\n Object.assign(this._info, options.info);\n }\n if (Error.captureStackTrace) {\n const ctor = options.constructorOpt || this.constructor;\n Error.captureStackTrace(this, ctor);\n }\n }\n static cause(err) {\n assertError(err);\n if (!err._cause)\n return null;\n return isError(err._cause)\n ? err._cause\n : null;\n }\n static fullStack(err) {\n assertError(err);\n const cause = Layerr.cause(err);\n if (cause) {\n return `${err.stack}\\ncaused by: ${Layerr.fullStack(cause)}`;\n }\n return err.stack ?? \"\";\n }\n static info(err) {\n assertError(err);\n const output = {};\n const cause = Layerr.cause(err);\n if (cause) {\n Object.assign(output, Layerr.info(cause));\n }\n if (err._info) {\n Object.assign(output, err._info);\n }\n return output;\n }\n toString() {\n let output = this.name ||\n this.constructor.name ||\n this.constructor.prototype.name;\n if (this.message) {\n output = `${output}: ${this.message}`;\n }\n return output;\n }\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nconst TRANSFORM_RETAIN_FORMAT = (v) => v;\nexport async function getFileContents(context, filePath, options = {}) {\n const { format = \"binary\" } = options;\n if (format !== \"binary\" && format !== \"text\") {\n throw new Layerr({\n info: {\n code: ErrorCode.InvalidOutputFormat\n }\n }, `Invalid output format: ${format}`);\n }\n return format === \"text\"\n ? getFileContentsString(context, filePath, options)\n : getFileContentsBuffer(context, filePath, options);\n}\nasync function getFileContentsBuffer(context, filePath, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"GET\"\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n let body;\n if (isWeb() || isReactNative()) {\n body = await response.arrayBuffer();\n }\n else {\n body = Buffer.from(await response.arrayBuffer());\n }\n return processResponsePayload(response, body, options.details);\n}\nasync function getFileContentsString(context, filePath, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"GET\",\n headers: {\n Accept: \"text/plain\"\n },\n transformResponse: [TRANSFORM_RETAIN_FORMAT]\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n const body = await response.text();\n return processResponsePayload(response, body, options.details);\n}\nexport function getFileDownloadLink(context, filePath) {\n let url = joinURL(context.remoteURL, encodePath(filePath));\n const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n switch (context.authType) {\n case AuthType.None:\n // Do nothing\n break;\n case AuthType.Password: {\n const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n const authContents = fromBase64(authPart);\n url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n break;\n }\n default:\n throw new Layerr({\n info: {\n code: ErrorCode.LinkUnsupportedAuthType\n }\n }, `Unsupported auth type for file link: ${context.authType}`);\n }\n return url;\n}\n","import { toBase64 } from \"../tools/encode.js\";\nexport function generateBasicAuthHeader(username, password) {\n const encoded = toBase64(`${username}:${password}`);\n return `Basic ${encoded}`;\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, `.comment[data-v-70317f94]{display:flex;gap:8px;padding:5px 10px}.comment__side[data-v-70317f94]{display:flex;align-items:flex-start;padding-top:6px}.comment__body[data-v-70317f94]{display:flex;flex-grow:1;flex-direction:column;container-type:inline-size}.comment__header[data-v-70317f94]{display:flex;align-items:center;min-height:44px}.comment__actions[data-v-70317f94]{margin-inline-start:10px !important}.comment__author[data-v-70317f94]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-70317f94],.comment__timestamp[data-v-70317f94]{margin-inline-start:auto;text-align:end;white-space:nowrap;color:var(--color-text-maxcontrast)}.comment__editor-group[data-v-70317f94]{position:relative}.comment__editor-description[data-v-70317f94]{color:var(--color-text-maxcontrast);padding-block:var(--default-grid-baseline)}.comment__submit[data-v-70317f94]{position:absolute !important;bottom:5px;inset-inline-end:0}.comment__message[data-v-70317f94]{white-space:pre-wrap;word-break:normal;max-height:200px;overflow:auto;scrollbar-gutter:stable;scrollbar-width:thin;margin-top:-6px}.comment__message--expanded[data-v-70317f94]{max-height:none;overflow:visible}.comment__message[data-v-70317f94] img{max-width:100%;height:auto}.rich-contenteditable__input[data-v-70317f94]{min-height:44px;margin:0;padding:10px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/components/Comment.vue\"],\"names\":[],\"mappings\":\"AAKA,0BACC,YAAA,CACA,OAAA,CACA,gBAAA,CAEA,gCACC,YAAA,CACA,sBAAA,CACA,eAAA,CAGD,gCACC,YAAA,CACA,WAAA,CACA,qBAAA,CACA,0BAAA,CAGD,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAGD,mCACC,mCAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,wBAAA,CACA,cAAA,CACA,kBAAA,CACA,mCAAA,CAGD,wCACC,iBAAA,CAGD,8CACC,mCAAA,CACA,0CAAA,CAGD,kCACC,4BAAA,CACA,UAAA,CACA,kBAAA,CAGD,mCACC,oBAAA,CACA,iBAAA,CACA,gBAAA,CACA,aAAA,CACA,uBAAA,CACA,oBAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAED,uCACC,cAAA,CACA,WAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YAlFiB\",\"sourcesContent\":[\"\\n@use \\\"sass:math\\\";\\n\\n$comment-padding: 10px;\\n\\n.comment {\\n\\tdisplay: flex;\\n\\tgap: 8px;\\n\\tpadding: 5px $comment-padding;\\n\\n\\t&__side {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: flex-start;\\n\\t\\tpadding-top: 6px;\\n\\t}\\n\\n\\t&__body {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-grow: 1;\\n\\t\\tflex-direction: column;\\n\\t\\tcontainer-type: inline-size;\\n\\t}\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tmin-height: 44px;\\n\\t}\\n\\n\\t&__actions {\\n\\t\\tmargin-inline-start: $comment-padding !important;\\n\\t}\\n\\n\\t&__author {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&_loading,\\n\\t&__timestamp {\\n\\t\\tmargin-inline-start: auto;\\n\\t\\ttext-align: end;\\n\\t\\twhite-space: nowrap;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&__editor-group {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t&__editor-description {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding-block: var(--default-grid-baseline);\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tposition: absolute !important;\\n\\t\\tbottom: 5px;\\n\\t\\tinset-inline-end: 0;\\n\\t}\\n\\n\\t&__message {\\n\\t\\twhite-space: pre-wrap;\\n\\t\\tword-break: normal;\\n\\t\\tmax-height: 200px;\\n\\t\\toverflow: auto;\\n\\t\\tscrollbar-gutter: stable;\\n\\t\\tscrollbar-width: thin;\\n\\t\\tmargin-top: -6px;\\n\\t\\t&--expanded {\\n\\t\\t\\tmax-height: none;\\n\\t\\t\\toverflow: visible;\\n\\t\\t}\\n\\t\\t:deep(img) {\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\theight: auto;\\n\\t\\t}\\n\\t}\\n}\\n\\n.rich-contenteditable__input {\\n\\tmin-height: 44px;\\n\\tmargin: 0;\\n\\tpadding: $comment-padding;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import { XMLParser, XMLBuilder } from \"fast-xml-parser\";\nexport function generateLockXML(ownerHREF) {\n return getBuilder().build(namespace({\n lockinfo: {\n \"@_xmlns:d\": \"DAV:\",\n lockscope: {\n exclusive: {}\n },\n locktype: {\n write: {}\n },\n owner: {\n href: ownerHREF\n }\n }\n }, \"d\"));\n}\nfunction getBuilder() {\n return new XMLBuilder({\n attributeNamePrefix: \"@_\",\n format: true,\n ignoreAttributes: false,\n suppressEmptyNode: true\n });\n}\nfunction getParser() {\n return new XMLParser({\n removeNSPrefix: true,\n parseAttributeValue: true,\n parseTagValue: true\n });\n}\nfunction namespace(obj, ns) {\n const copy = { ...obj };\n for (const key in copy) {\n if (!copy.hasOwnProperty(key)) {\n continue;\n }\n if (copy[key] && typeof copy[key] === \"object\" && key.indexOf(\":\") === -1) {\n copy[`${ns}:${key}`] = namespace(copy[key], ns);\n delete copy[key];\n }\n else if (/^@_/.test(key) === false) {\n copy[`${ns}:${key}`] = copy[key];\n delete copy[key];\n }\n }\n return copy;\n}\nexport function parseGenericResponse(xml) {\n return getParser().parse(xml);\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath, getAllDirectories, normalisePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getStat } from \"./stat.js\";\nexport async function createDirectory(context, dirPath, options = {}) {\n if (options.recursive === true)\n return createDirectoryRecursively(context, dirPath, options);\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, ensureCollectionPath(encodePath(dirPath))),\n method: \"MKCOL\"\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n}\n/**\n * Ensure the path is a proper \"collection\" path by ensuring it has a trailing \"/\".\n * The proper format of collection according to the specification does contain the trailing slash.\n * http://www.webdav.org/specs/rfc4918.html#rfc.section.5.2\n * @param path Path of the collection\n * @return string Path of the collection with appended trailing \"/\" in case the `path` does not have it.\n */\nfunction ensureCollectionPath(path) {\n if (!path.endsWith(\"/\")) {\n return path + \"/\";\n }\n return path;\n}\nasync function createDirectoryRecursively(context, dirPath, options = {}) {\n const paths = getAllDirectories(normalisePath(dirPath));\n paths.sort((a, b) => {\n if (a.length > b.length) {\n return 1;\n }\n else if (b.length > a.length) {\n return -1;\n }\n return 0;\n });\n let creating = false;\n for (const testPath of paths) {\n if (creating) {\n await createDirectory(context, testPath, {\n ...options,\n recursive: false\n });\n continue;\n }\n try {\n const testStat = (await getStat(context, testPath));\n if (testStat.type !== \"directory\") {\n throw new Error(`Path includes a file: ${dirPath}`);\n }\n }\n catch (err) {\n const error = err;\n if (error.status === 404) {\n creating = true;\n await createDirectory(context, testPath, {\n ...options,\n recursive: false\n });\n }\n else {\n throw err;\n }\n }\n }\n}\n","\n\n\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t{{ actorDisplayName }}\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ t('comments', 'Edit comment') }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ t('comments', 'Delete comment') }}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{{ t('comments', 'Cancel edit') }}\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\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\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{{ t('comments', '@ for mentions, : for emoji, / for smart picker') }}\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\n\t\n\n\n\n\n\n","import { Layerr } from \"layerr\";\nimport Stream from \"stream\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { calculateDataLength } from \"../tools/size.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport async function putFileContents(context, filePath, data, options = {}) {\n const { contentLength = true, overwrite = true } = options;\n const headers = {\n \"Content-Type\": \"application/octet-stream\"\n };\n if (!isWeb() &&\n !isReactNative() &&\n typeof Stream !== \"undefined\" &&\n typeof Stream?.Readable !== \"undefined\" &&\n data instanceof Stream.Readable) {\n // Skip, no content-length\n }\n else if (contentLength === false) {\n // Skip, disabled\n }\n else if (typeof contentLength === \"number\") {\n headers[\"Content-Length\"] = `${contentLength}`;\n }\n else {\n headers[\"Content-Length\"] = `${calculateDataLength(data)}`;\n }\n if (!overwrite) {\n headers[\"If-None-Match\"] = \"*\";\n }\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"PUT\",\n headers,\n data\n }, context, options);\n const response = await request(requestOptions, context);\n try {\n handleResponseCode(context, response);\n }\n catch (err) {\n const error = err;\n if (error.status === 412 && !overwrite) {\n return false;\n }\n else {\n throw error;\n }\n }\n return true;\n}\nexport function getFileUploadLink(context, filePath) {\n let url = `${joinURL(context.remoteURL, encodePath(filePath))}?Content-Type=application/octet-stream`;\n const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n switch (context.authType) {\n case AuthType.None:\n // Do nothing\n break;\n case AuthType.Password: {\n const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n const authContents = fromBase64(authPart);\n url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n break;\n }\n default:\n throw new Layerr({\n info: {\n code: ErrorCode.LinkUnsupportedAuthType\n }\n }, `Unsupported auth type for file link: ${context.authType}`);\n }\n return url;\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { loadState } from '@nextcloud/initial-state';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n props: {\n resourceId: {\n type: Number,\n required: true,\n },\n resourceType: {\n type: String,\n default: 'files',\n },\n },\n data() {\n return {\n editorData: {\n actorDisplayName: getCurrentUser().displayName,\n actorId: getCurrentUser().uid,\n key: 'editor',\n },\n userData: {},\n currentResourceId: this.resourceId,\n };\n },\n methods: {\n /**\n * Autocomplete `@mentions`\n *\n * @param search the query\n * @param callback the callback to process the results with\n */\n async autoComplete(search, callback) {\n const { data } = await axios.get(generateOcsUrl('core/autocomplete/get'), {\n params: {\n search,\n itemType: this.resourceType,\n itemId: this.currentResourceId,\n sorter: 'commenters|share-recipients',\n limit: loadState('comments', 'maxAutoCompleteResults'),\n },\n });\n // Save user data so it can be used by the editor to replace mentions\n data.ocs.data.forEach((user) => {\n this.userData[user.id] = user;\n });\n return callback(Object.values(this.userData));\n },\n /**\n * Make sure we have all mentions as Array of objects\n *\n * @param mentions the mentions list\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n genMentionsData(mentions) {\n Object.values(mentions)\n .flat()\n .forEach((mention) => {\n this.userData[mention.mentionId] = {\n // TODO: support groups\n icon: 'icon-user',\n id: mention.mentionId,\n label: mention.mentionDisplayName,\n source: 'users',\n primary: getCurrentUser()?.uid === mention.mentionId,\n };\n });\n return this.userData;\n },\n },\n});\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'\nimport { createClient } from 'webdav'\nimport { getRootPath } from '../utils/davUtils.js'\n\n// init webdav client\nconst client = createClient(getRootPath())\n\n// set CSRF token header\n/**\n * @param token\n */\nfunction setHeaders(token) {\n\tclient.setHeaders({\n\t\t// Add this so the server knows it is an request from the browser\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t// Inject user auth\n\t\trequesttoken: token ?? '',\n\t})\n}\n\n// refresh headers when request token changes\nonRequestTokenUpdate(setHeaders)\nsetHeaders(getRequestToken())\n\nexport default client\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { defineStore } from 'pinia'\n\nexport const useDeletedCommentLimbo = defineStore('deletedCommentLimbo', {\n\tstate: () => ({\n\t\tidsInLimbo: [],\n\t}),\n\tactions: {\n\t\taddId(id) {\n\t\t\tthis.idsInLimbo.push(id)\n\t\t},\n\n\t\tremoveId(id) {\n\t\t\tconst index = this.idsInLimbo.indexOf(id)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.idsInLimbo.splice(index, 1)\n\t\t\t}\n\t\t},\n\n\t\tcheckForId(id) {\n\t\t\treturn this.idsInLimbo.includes(id)\n\t\t},\n\t},\n})\n","import { Layerr } from \"layerr\";\nimport { createDigestContext } from \"./digest.js\";\nimport { generateBasicAuthHeader } from \"./basic.js\";\nimport { generateTokenAuthHeader } from \"./oauth.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport function setupAuth(context, username, password, oauthToken, ha1) {\n switch (context.authType) {\n case AuthType.Auto:\n if (username && password) {\n context.headers.Authorization = generateBasicAuthHeader(username, password);\n }\n break;\n case AuthType.Digest:\n context.digest = createDigestContext(username, password, ha1);\n break;\n case AuthType.None:\n // Do nothing\n break;\n case AuthType.Password:\n context.headers.Authorization = generateBasicAuthHeader(username, password);\n break;\n case AuthType.Token:\n context.headers.Authorization = generateTokenAuthHeader(oauthToken);\n break;\n default:\n throw new Layerr({\n info: {\n code: ErrorCode.InvalidAuthType\n }\n }, `Invalid auth type: ${context.authType}`);\n }\n}\n","import Stream from \"stream\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nexport function requestDataToFetchBody(data) {\n if (!isWeb() && !isReactNative() && data instanceof Stream.Readable) {\n // @ts-ignore\n return [data, {}];\n }\n if (typeof data === \"string\") {\n return [data, {}];\n }\n else if (isBuffer(data)) {\n return [data, {}];\n }\n else if (isArrayBuffer(data)) {\n return [data, {}];\n }\n else if (data && typeof data === \"object\") {\n return [\n JSON.stringify(data),\n {\n \"content-type\": \"application/json\"\n }\n ];\n }\n throw new Error(`Unable to convert request body: Unexpected body type: ${typeof data}`);\n}\n","import nestedProp from \"nested-property\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { generateLockXML, parseGenericResponse } from \"../tools/xml.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { createErrorFromResponse, handleResponseCode } from \"../response.js\";\nconst DEFAULT_TIMEOUT = \"Infinite, Second-4100000000\";\nexport async function lock(context, path, options = {}) {\n const { refreshToken, timeout = DEFAULT_TIMEOUT } = options;\n const headers = {\n Accept: \"text/plain,application/xml\",\n Timeout: timeout\n };\n if (refreshToken) {\n headers.If = refreshToken;\n }\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(path)),\n method: \"LOCK\",\n headers,\n data: generateLockXML(context.contactHref)\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n const responseData = await response.text();\n const lockPayload = parseGenericResponse(responseData);\n const token = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.locktoken.href\");\n const serverTimeout = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.timeout\");\n if (!token) {\n const err = createErrorFromResponse(response, \"No lock token received: \");\n throw err;\n }\n return {\n token,\n serverTimeout\n };\n}\nexport async function unlock(context, path, token, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(path)),\n method: \"UNLOCK\",\n headers: {\n \"Lock-Token\": token\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n if (response.status !== 204 && response.status !== 200) {\n const err = createErrorFromResponse(response);\n throw err;\n }\n}\n","const hasArrayBuffer = typeof ArrayBuffer === \"function\";\nconst { toString: objToString } = Object.prototype;\n// Taken from: https://github.com/fengyuanchen/is-array-buffer/blob/master/src/index.js\nexport function isArrayBuffer(value) {\n return (hasArrayBuffer &&\n (value instanceof ArrayBuffer || objToString.call(value) === \"[object ArrayBuffer]\"));\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function copyFile(context, filename, destination, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filename)),\n method: \"COPY\",\n headers: {\n Destination: joinURL(context.remoteURL, encodePath(destination)),\n /**\n * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n *\n * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n */\n Overwrite: options.overwrite === false ? \"F\" : \"T\",\n /**\n * From RFC4918 section 9.8.3: A client may submit a Depth header on a COPY on a collection with a value of \"0\"\n * or \"infinity\". The COPY method on a collection without a Depth header MUST act as if\n * a Depth header with value \"infinity\" was included.\n */\n Depth: options.shallow ? \"0\" : \"infinity\"\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n}\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * @param {any} value -\n * @param {any} passes -\n */\nexport function decodeHtmlEntities(value, passes = 1) {\n\tconst parser = new DOMParser()\n\tlet decoded = value\n\tfor (let i = 0; i < passes; i++) {\n\t\tdecoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent\n\t}\n\treturn decoded\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.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!./Comment.vue?vue&type=script&lang=js\"","import base64 from \"base-64\";\nimport { decodeHTML } from \"entities\";\nimport { isWeb } from \"../compat/env.js\";\nexport function decodeHTMLEntities(text) {\n if (isWeb()) {\n const txt = document.createElement(\"textarea\");\n txt.innerHTML = text;\n return txt.value;\n }\n return decodeHTML(text);\n}\nexport function fromBase64(text) {\n return base64.decode(text);\n}\nexport function toBase64(text) {\n return base64.encode(text);\n}\n","'use strict';\n\nvar required = require('requires-port')\n , qs = require('querystringify')\n , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n , CRHTLF = /[\\n\\r\\t]/g\n , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n , port = /:\\d+$/\n , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n * characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n * indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n * the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n ['#', 'hash'], // Extract from the back.\n ['?', 'query'], // Extract from the back.\n function sanitize(address, url) { // Sanitize what is left of the address\n return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n },\n ['/', 'pathname'], // Extract from the back.\n ['@', 'auth', 1], // Extract from the front.\n [NaN, 'host', undefined, 1, 1], // Set left over value.\n [/:(\\d*)$/, 'port', undefined, 1], // RegExp the back.\n [NaN, 'hostname', undefined, 1, 1] // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n var globalVar;\n\n if (typeof window !== 'undefined') globalVar = window;\n else if (typeof global !== 'undefined') globalVar = global;\n else if (typeof self !== 'undefined') globalVar = self;\n else globalVar = {};\n\n var location = globalVar.location || {};\n loc = loc || location;\n\n var finaldestination = {}\n , type = typeof loc\n , key;\n\n if ('blob:' === loc.protocol) {\n finaldestination = new Url(unescape(loc.pathname), {});\n } else if ('string' === type) {\n finaldestination = new Url(loc, {});\n for (key in ignore) delete finaldestination[key];\n } else if ('object' === type) {\n for (key in loc) {\n if (key in ignore) continue;\n finaldestination[key] = loc[key];\n }\n\n if (finaldestination.slashes === undefined) {\n finaldestination.slashes = slashes.test(loc.href);\n }\n }\n\n return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n return (\n scheme === 'file:' ||\n scheme === 'ftp:' ||\n scheme === 'http:' ||\n scheme === 'https:' ||\n scheme === 'ws:' ||\n scheme === 'wss:'\n );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n location = location || {};\n\n var match = protocolre.exec(address);\n var protocol = match[1] ? match[1].toLowerCase() : '';\n var forwardSlashes = !!match[2];\n var otherSlashes = !!match[3];\n var slashesCount = 0;\n var rest;\n\n if (forwardSlashes) {\n if (otherSlashes) {\n rest = match[2] + match[3] + match[4];\n slashesCount = match[2].length + match[3].length;\n } else {\n rest = match[2] + match[4];\n slashesCount = match[2].length;\n }\n } else {\n if (otherSlashes) {\n rest = match[3] + match[4];\n slashesCount = match[3].length;\n } else {\n rest = match[4]\n }\n }\n\n if (protocol === 'file:') {\n if (slashesCount >= 2) {\n rest = rest.slice(2);\n }\n } else if (isSpecial(protocol)) {\n rest = match[4];\n } else if (protocol) {\n if (forwardSlashes) {\n rest = rest.slice(2);\n }\n } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n rest = match[4];\n }\n\n return {\n protocol: protocol,\n slashes: forwardSlashes || isSpecial(protocol),\n slashesCount: slashesCount,\n rest: rest\n };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n if (relative === '') return base;\n\n var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n , i = path.length\n , last = path[i - 1]\n , unshift = false\n , up = 0;\n\n while (i--) {\n if (path[i] === '.') {\n path.splice(i, 1);\n } else if (path[i] === '..') {\n path.splice(i, 1);\n up++;\n } else if (up) {\n if (i === 0) unshift = true;\n path.splice(i, 1);\n up--;\n }\n }\n\n if (unshift) path.unshift('');\n if (last === '.' || last === '..') path.push('');\n\n return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n address = trimLeft(address);\n address = address.replace(CRHTLF, '');\n\n if (!(this instanceof Url)) {\n return new Url(address, location, parser);\n }\n\n var relative, extracted, parse, instruction, index, key\n , instructions = rules.slice()\n , type = typeof location\n , url = this\n , i = 0;\n\n //\n // The following if statements allows this module two have compatibility with\n // 2 different API:\n //\n // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n // where the boolean indicates that the query string should also be parsed.\n //\n // 2. The `URL` interface of the browser which accepts a URL, object as\n // arguments. The supplied object will be used as default values / fall-back\n // for relative paths.\n //\n if ('object' !== type && 'string' !== type) {\n parser = location;\n location = null;\n }\n\n if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n location = lolcation(location);\n\n //\n // Extract protocol information before running the instructions.\n //\n extracted = extractProtocol(address || '', location);\n relative = !extracted.protocol && !extracted.slashes;\n url.slashes = extracted.slashes || relative && location.slashes;\n url.protocol = extracted.protocol || location.protocol || '';\n address = extracted.rest;\n\n //\n // When the authority component is absent the URL starts with a path\n // component.\n //\n if (\n extracted.protocol === 'file:' && (\n extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n (!extracted.slashes &&\n (extracted.protocol ||\n extracted.slashesCount < 2 ||\n !isSpecial(url.protocol)))\n ) {\n instructions[3] = [/(.*)/, 'pathname'];\n }\n\n for (; i < instructions.length; i++) {\n instruction = instructions[i];\n\n if (typeof instruction === 'function') {\n address = instruction(address, url);\n continue;\n }\n\n parse = instruction[0];\n key = instruction[1];\n\n if (parse !== parse) {\n url[key] = address;\n } else if ('string' === typeof parse) {\n index = parse === '@'\n ? address.lastIndexOf(parse)\n : address.indexOf(parse);\n\n if (~index) {\n if ('number' === typeof instruction[2]) {\n url[key] = address.slice(0, index);\n address = address.slice(index + instruction[2]);\n } else {\n url[key] = address.slice(index);\n address = address.slice(0, index);\n }\n }\n } else if ((index = parse.exec(address))) {\n url[key] = index[1];\n address = address.slice(0, index.index);\n }\n\n url[key] = url[key] || (\n relative && instruction[3] ? location[key] || '' : ''\n );\n\n //\n // Hostname, host and protocol should be lowercased so they can be used to\n // create a proper `origin`.\n //\n if (instruction[4]) url[key] = url[key].toLowerCase();\n }\n\n //\n // Also parse the supplied query string in to an object. If we're supplied\n // with a custom parser as function use that instead of the default build-in\n // parser.\n //\n if (parser) url.query = parser(url.query);\n\n //\n // If the URL is relative, resolve the pathname against the base URL.\n //\n if (\n relative\n && location.slashes\n && url.pathname.charAt(0) !== '/'\n && (url.pathname !== '' || location.pathname !== '')\n ) {\n url.pathname = resolve(url.pathname, location.pathname);\n }\n\n //\n // Default to a / for pathname if none exists. This normalizes the URL\n // to always have a /\n //\n if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n url.pathname = '/' + url.pathname;\n }\n\n //\n // We should not add port numbers if they are already the default port number\n // for a given protocol. As the host also contains the port number we're going\n // override it with the hostname which contains no port number.\n //\n if (!required(url.port, url.protocol)) {\n url.host = url.hostname;\n url.port = '';\n }\n\n //\n // Parse down the `auth` for the username and password.\n //\n url.username = url.password = '';\n\n if (url.auth) {\n index = url.auth.indexOf(':');\n\n if (~index) {\n url.username = url.auth.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = url.auth.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password))\n } else {\n url.username = encodeURIComponent(decodeURIComponent(url.auth));\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n }\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n //\n // The href is just the compiled result.\n //\n url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part Property we need to adjust.\n * @param {Mixed} value The newly assigned value.\n * @param {Boolean|Function} fn When setting the query, it will be the function\n * used to parse the query.\n * When setting the protocol, double slash will be\n * removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n var url = this;\n\n switch (part) {\n case 'query':\n if ('string' === typeof value && value.length) {\n value = (fn || qs.parse)(value);\n }\n\n url[part] = value;\n break;\n\n case 'port':\n url[part] = value;\n\n if (!required(value, url.protocol)) {\n url.host = url.hostname;\n url[part] = '';\n } else if (value) {\n url.host = url.hostname +':'+ value;\n }\n\n break;\n\n case 'hostname':\n url[part] = value;\n\n if (url.port) value += ':'+ url.port;\n url.host = value;\n break;\n\n case 'host':\n url[part] = value;\n\n if (port.test(value)) {\n value = value.split(':');\n url.port = value.pop();\n url.hostname = value.join(':');\n } else {\n url.hostname = value;\n url.port = '';\n }\n\n break;\n\n case 'protocol':\n url.protocol = value.toLowerCase();\n url.slashes = !fn;\n break;\n\n case 'pathname':\n case 'hash':\n if (value) {\n var char = part === 'pathname' ? '/' : '#';\n url[part] = value.charAt(0) !== char ? char + value : value;\n } else {\n url[part] = value;\n }\n break;\n\n case 'username':\n case 'password':\n url[part] = encodeURIComponent(value);\n break;\n\n case 'auth':\n var index = value.indexOf(':');\n\n if (~index) {\n url.username = value.slice(0, index);\n url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n url.password = value.slice(index + 1);\n url.password = encodeURIComponent(decodeURIComponent(url.password));\n } else {\n url.username = encodeURIComponent(decodeURIComponent(value));\n }\n }\n\n for (var i = 0; i < rules.length; i++) {\n var ins = rules[i];\n\n if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n }\n\n url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n ? url.protocol +'//'+ url.host\n : 'null';\n\n url.href = url.toString();\n\n return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n var query\n , url = this\n , host = url.host\n , protocol = url.protocol;\n\n if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n var result =\n protocol +\n ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n if (url.username) {\n result += url.username;\n if (url.password) result += ':'+ url.password;\n result += '@';\n } else if (url.password) {\n result += ':'+ url.password;\n result += '@';\n } else if (\n url.protocol !== 'file:' &&\n isSpecial(url.protocol) &&\n !host &&\n url.pathname !== '/'\n ) {\n //\n // Add back the empty userinfo, otherwise the original invalid URL\n // might be transformed into a valid one with `url.pathname` as host.\n //\n result += '@';\n }\n\n //\n // Trailing colon is removed from `url.host` when it is parsed. If it still\n // ends with a colon, then add back the trailing colon that was removed. This\n // prevents an invalid URL from being transformed into a valid one.\n //\n if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n host += ':';\n }\n\n result += host + url.pathname;\n\n query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n if (url.hash) result += url.hash;\n\n return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","import { render, staticRenderFns } from \"./Comment.vue?vue&type=template&id=70317f94&scoped=true\"\nimport script from \"./Comment.vue?vue&type=script&lang=js\"\nexport * from \"./Comment.vue?vue&type=script&lang=js\"\nimport style0 from \"./Comment.vue?vue&type=style&index=0&id=70317f94&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 \"70317f94\",\n null\n \n)\n\nexport default component.exports","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Calculate the byte lengths for utf8 encoded strings.\n */\nfunction byteLength(str) {\n if (!str) {\n return 0;\n }\n str = str.toString();\n var len = str.length;\n for (var i = str.length; i--;) {\n var code = str.charCodeAt(i);\n if (0xdc00 <= code && code <= 0xdfff) {\n i--;\n }\n if (0x7f < code && code <= 0x7ff) {\n len++;\n }\n else if (0x7ff < code && code <= 0xffff) {\n len += 2;\n }\n }\n return len;\n}\nexports.byteLength = byteLength;\n//# sourceMappingURL=index.js.map","import Stream from \"stream\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nconst NOOP = () => { };\nexport function createReadStream(context, filePath, options = {}) {\n const PassThroughStream = Stream.PassThrough;\n const outStream = new PassThroughStream();\n getFileStream(context, filePath, options)\n .then(stream => {\n stream.pipe(outStream);\n })\n .catch(err => {\n outStream.emit(\"error\", err);\n });\n return outStream;\n}\nexport function createWriteStream(context, filePath, options = {}, callback = NOOP) {\n const PassThroughStream = Stream.PassThrough;\n const writeStream = new PassThroughStream();\n const headers = {};\n if (options.overwrite === false) {\n headers[\"If-None-Match\"] = \"*\";\n }\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"PUT\",\n headers,\n data: writeStream,\n maxRedirects: 0\n }, context, options);\n request(requestOptions, context)\n .then(response => handleResponseCode(context, response))\n .then(response => {\n // Fire callback asynchronously to avoid errors\n setTimeout(() => {\n callback(response);\n }, 0);\n })\n .catch(err => {\n writeStream.emit(\"error\", err);\n });\n return writeStream;\n}\nasync function getFileStream(context, filePath, options = {}) {\n const headers = {};\n if (typeof options.range === \"object\" && typeof options.range.start === \"number\") {\n let rangeHeader = `bytes=${options.range.start}-`;\n if (typeof options.range.end === \"number\") {\n rangeHeader = `${rangeHeader}${options.range.end}`;\n }\n headers.Range = rangeHeader;\n }\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"GET\",\n headers\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n if (headers.Range && response.status !== 206) {\n const responseError = new Error(`Invalid response code for partial request: ${response.status}`);\n responseError.status = response.status;\n throw responseError;\n }\n if (options.callback) {\n setTimeout(() => {\n options.callback(response);\n }, 0);\n }\n // @ts-ignore\n return response.body;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.tag,{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.deleted && !_vm.isLimbo),expression:\"!deleted && !isLimbo\"}],tag:\"component\",staticClass:\"comment\",class:{ 'comment--loading': _vm.loading }},[_c('div',{staticClass:\"comment__side\"},[_c('NcAvatar',{staticClass:\"comment__avatar\",attrs:{\"display-name\":_vm.actorDisplayName,\"user\":_vm.actorId,\"size\":32}})],1),_vm._v(\" \"),_c('div',{staticClass:\"comment__body\"},[_c('div',{staticClass:\"comment__header\"},[_c('span',{staticClass:\"comment__author\"},[_vm._v(_vm._s(_vm.actorDisplayName))]),_vm._v(\" \"),(_vm.isOwnComment && _vm.id && !_vm.loading)?_c('NcActions',{staticClass:\"comment__actions\"},[(!_vm.editing)?[_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":_vm.onEdit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconPencilOutline',{attrs:{\"size\":20}})]},proxy:true}],null,false,3345211262)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Edit comment'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":_vm.onDeleteWithUndo},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconTrashCanOutline',{attrs:{\"size\":20}})]},proxy:true}],null,false,1034796883)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Delete comment'))+\"\\n\\t\\t\\t\\t\\t\")])]:_c('NcActionButton',{on:{\"click\":_vm.onEditCancel},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconClose',{attrs:{\"size\":20}})]},proxy:true}],null,false,2888946197)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Cancel edit'))+\"\\n\\t\\t\\t\\t\")])],2):_vm._e(),_vm._v(\" \"),(_vm.id && _vm.loading)?_c('div',{staticClass:\"comment_loading icon-loading-small\"}):(_vm.creationDateTime)?_c('NcDateTime',{staticClass:\"comment__timestamp\",attrs:{\"timestamp\":_vm.timestamp,\"ignore-seconds\":true}}):_vm._e()],1),_vm._v(\" \"),(_vm.editor || _vm.editing)?_c('form',{staticClass:\"comment__editor\",on:{\"submit\":function($event){$event.preventDefault();}}},[_c('div',{staticClass:\"comment__editor-group\"},[_c('NcRichContenteditable',{ref:\"editor\",attrs:{\"auto-complete\":_vm.autoComplete,\"contenteditable\":!_vm.loading,\"label\":_vm.editor ? _vm.t('comments', 'New comment') : _vm.t('comments', 'Edit comment'),\"placeholder\":_vm.t('comments', 'Write a comment …'),\"model-value\":_vm.localMessage,\"user-data\":_vm.userData,\"aria-describedby\":\"tab-comments__editor-description\"},on:{\"update:value\":_vm.updateLocalMessage,\"submit\":_vm.onSubmit}}),_vm._v(\" \"),_c('div',{staticClass:\"comment__submit\"},[_c('NcButton',{attrs:{\"variant\":\"tertiary-no-background\",\"type\":\"submit\",\"aria-label\":_vm.t('comments', 'Post comment'),\"disabled\":_vm.isEmptyMessage},on:{\"click\":_vm.onSubmit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('NcLoadingIcon'):_c('IconArrowRight',{attrs:{\"size\":20}})]},proxy:true}],null,false,758946661)})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"comment__editor-description\",attrs:{\"id\":\"tab-comments__editor-description\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', '@ for mentions, : for emoji, / for smart picker'))+\"\\n\\t\\t\\t\")])]):_c('NcRichText',{staticClass:\"comment__message\",class:{ 'comment__message--expanded': _vm.expanded },attrs:{\"text\":_vm.richContent.message,\"arguments\":_vm.richContent.mentions,\"use-markdown\":\"\"},nativeOn:{\"click\":function($event){return _vm.onExpand.apply(null, arguments)}}})],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!./Comment.vue?vue&type=style&index=0&id=70317f94&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!./Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getRootPath } from '../utils/davUtils.js'\nimport { decodeHtmlEntities } from '../utils/decodeHtmlEntities.js'\nimport client from './DavClient.js'\n\n/**\n * Retrieve the comments list\n *\n * @param {string} resourceType the resource type\n * @param {number} resourceId the resource ID\n * @param {string} message the message\n * @return {object} the new comment\n */\nexport default async function(resourceType, resourceId, message) {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\n\tconst response = await axios.post(getRootPath() + resourcePath, {\n\t\tactorDisplayName: getCurrentUser().displayName,\n\t\tactorId: getCurrentUser().uid,\n\t\tactorType: 'users',\n\t\tcreationDateTime: (new Date()).toUTCString(),\n\t\tmessage,\n\t\tobjectType: resourceType,\n\t\tverb: 'comment',\n\t})\n\n\t// Retrieve comment id from resource location\n\tconst commentId = parseInt(response.headers['content-location'].split('/').pop())\n\tconst commentPath = resourcePath + '/' + commentId\n\n\t// Fetch newly created comment data\n\tconst comment = await client.stat(commentPath, {\n\t\tdetails: true,\n\t})\n\n\tconst props = comment.data.props\n\t// Decode twice to handle potentially double-encoded entities\n\t// FIXME Remove this once https://github.com/nextcloud/server/issues/29306\n\t// is resolved\n\tprops.actorDisplayName = decodeHtmlEntities(props.actorDisplayName, 2)\n\tprops.message = decodeHtmlEntities(props.message, 2)\n\n\treturn comment.data\n}\n","import { Layerr } from \"layerr\";\nimport { byteLength } from \"byte-length\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { ErrorCode } from \"../types.js\";\nexport function calculateDataLength(data) {\n if (isArrayBuffer(data)) {\n return data.byteLength;\n }\n else if (isBuffer(data)) {\n return data.length;\n }\n else if (typeof data === \"string\") {\n return byteLength(data);\n }\n throw new Layerr({\n info: {\n code: ErrorCode.DataTypeNoLength\n }\n }, \"Cannot calculate data length: Invalid type\");\n}\n","import pathPosix from \"path-posix\";\nimport { joinURL, normaliseHREF } from \"../tools/url.js\";\nimport { encodePath, makePathAbsolute, normalisePath } from \"../tools/path.js\";\nimport { parseXML, prepareFileFromProps } from \"../tools/dav.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processGlobFilter, processResponsePayload } from \"../response.js\";\nexport async function getDirectoryContents(context, remotePath, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(remotePath), \"/\"),\n method: \"PROPFIND\",\n headers: {\n Accept: \"text/plain,application/xml\",\n Depth: options.deep ? \"infinity\" : \"1\"\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n const responseData = await response.text();\n if (!responseData) {\n throw new Error(\"Failed parsing directory contents: Empty response\");\n }\n const davResp = await parseXML(responseData);\n const _remotePath = makePathAbsolute(remotePath);\n const remoteBasePath = makePathAbsolute(context.remoteBasePath || context.remotePath);\n let files = getDirectoryFiles(davResp, remoteBasePath, _remotePath, options.details, options.includeSelf);\n if (options.glob) {\n files = processGlobFilter(files, options.glob);\n }\n return processResponsePayload(response, files, options.details);\n}\nfunction getDirectoryFiles(result, serverremoteBasePath, requestPath, isDetailed = false, includeSelf = false) {\n const serverBase = pathPosix.join(serverremoteBasePath, \"/\");\n // Extract the response items (directory contents)\n const { multistatus: { response: responseItems } } = result;\n // Map all items to a consistent output structure (results)\n const nodes = responseItems.map(item => {\n // HREF is the file path (in full) - The href is already XML entities decoded (e.g. foo&bar is reverted to foo&bar)\n const href = normaliseHREF(item.href);\n // Each item should contain a stat object\n const { propstat: { prop: props } } = item;\n // Process the true full filename (minus the base server path)\n const filename = serverBase === \"/\"\n ? decodeURIComponent(normalisePath(href))\n : normalisePath(pathPosix.relative(decodeURIComponent(serverBase), decodeURIComponent(href)));\n return prepareFileFromProps(props, filename, isDetailed);\n });\n // If specified, also return the current directory\n if (includeSelf) {\n return nodes;\n }\n // Else, filter out the item pointing to the current directory (not needed)\n return nodes.filter(item => item.basename &&\n (item.type === \"file\" || item.filename !== requestPath.replace(/\\/$/, \"\")));\n}\n","import { getStat } from \"./stat.js\";\nexport async function exists(context, remotePath, options = {}) {\n try {\n await getStat(context, remotePath, options);\n return true;\n }\n catch (err) {\n if (err.status === 404) {\n return false;\n }\n throw err;\n }\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function customRequest(context, remotePath, requestOptions) {\n if (!requestOptions.url) {\n requestOptions.url = joinURL(context.remoteURL, encodePath(remotePath));\n }\n const finalOptions = prepareRequestOptions(requestOptions, context, {});\n const response = await request(finalOptions, context);\n handleResponseCode(context, response);\n return response;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function moveFile(context, filename, destination, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filename)),\n method: \"MOVE\",\n headers: {\n Destination: joinURL(context.remoteURL, encodePath(destination)),\n /**\n * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n *\n * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n */\n Overwrite: options.overwrite === false ? \"F\" : \"T\"\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function deleteFile(context, filename, options = {}) {\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filename)),\n method: \"DELETE\"\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n}\n","import { parseSearch, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getSearch(context, searchArbiter, options = {}) {\n const { details: isDetailed = false } = options;\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(searchArbiter)),\n method: \"SEARCH\",\n headers: {\n Accept: \"text/plain,application/xml\",\n // Ensure a Content-Type header is set was this is required by e.g. sabre/dav\n \"Content-Type\": context.headers[\"Content-Type\"] || \"application/xml; charset=utf-8\"\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n const responseText = await response.text();\n const responseData = await parseXML(responseText);\n const results = parseSearch(responseData, searchArbiter, isDetailed);\n return processResponsePayload(response, results, isDetailed);\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.js'\n\n/**\n * Delete a comment\n *\n * @param {string} resourceType the resource type\n * @param {number} resourceId the resource ID\n * @param {number} commentId the comment iD\n */\nexport default async function(resourceType, resourceId, commentId) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\t// Fetch newly created comment data\n\tawait client.deleteFile(commentPath)\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getDAVCompliance } from \"./getDAVCompliance.js\";\nimport { ErrorCode } from \"../types.js\";\nexport async function partialUpdateFileContents(context, filePath, start, end, data, options = {}) {\n const compliance = await getDAVCompliance(context, filePath, options);\n if (compliance.compliance.includes(\"sabredav-partialupdate\")) {\n return await partialUpdateFileContentsSabredav(context, filePath, start, end, data, options);\n }\n if (compliance.server.includes(\"Apache\") &&\n compliance.compliance.includes(\"\")) {\n return await partialUpdateFileContentsApache(context, filePath, start, end, data, options);\n }\n throw new Layerr({\n info: {\n code: ErrorCode.NotSupported\n }\n }, \"Not supported\");\n}\nasync function partialUpdateFileContentsSabredav(context, filePath, start, end, data, options = {}) {\n if (start > end || start < 0) {\n // Actually, SabreDAV support negative start value,\n // Do not support here for compatibility with Apache-style way\n throw new Layerr({\n info: {\n code: ErrorCode.InvalidUpdateRange\n }\n }, `Invalid update range ${start} for partial update`);\n }\n const headers = {\n \"Content-Type\": \"application/x-sabredav-partialupdate\",\n \"Content-Length\": `${end - start + 1}`,\n \"X-Update-Range\": `bytes=${start}-${end}`\n };\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"PATCH\",\n headers,\n data\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n}\nasync function partialUpdateFileContentsApache(context, filePath, start, end, data, options = {}) {\n if (start > end || start < 0) {\n throw new Layerr({\n info: {\n code: ErrorCode.InvalidUpdateRange\n }\n }, `Invalid update range ${start} for partial update`);\n }\n const headers = {\n \"Content-Type\": \"application/octet-stream\",\n \"Content-Length\": `${end - start + 1}`,\n \"Content-Range\": `bytes ${start}-${end}/*`\n };\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filePath)),\n method: \"PUT\",\n headers,\n data\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n}\n","import { parseStat, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getStat(context, filename, options = {}) {\n const { details: isDetailed = false } = options;\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, encodePath(filename)),\n method: \"PROPFIND\",\n headers: {\n Accept: \"text/plain,application/xml\",\n Depth: \"0\"\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n const responseData = await response.text();\n const result = await parseXML(responseData);\n const stat = parseStat(result, filename, isDetailed);\n return processResponsePayload(response, stat, isDetailed);\n}\n","import { extractURLPath } from \"./tools/url.js\";\nimport { setupAuth } from \"./auth/index.js\";\nimport { copyFile } from \"./operations/copyFile.js\";\nimport { createDirectory } from \"./operations/createDirectory.js\";\nimport { createReadStream, createWriteStream } from \"./operations/createStream.js\";\nimport { customRequest } from \"./operations/customRequest.js\";\nimport { deleteFile } from \"./operations/deleteFile.js\";\nimport { exists } from \"./operations/exists.js\";\nimport { getDirectoryContents } from \"./operations/directoryContents.js\";\nimport { getFileContents, getFileDownloadLink } from \"./operations/getFileContents.js\";\nimport { lock, unlock } from \"./operations/lock.js\";\nimport { getQuota } from \"./operations/getQuota.js\";\nimport { getStat } from \"./operations/stat.js\";\nimport { getSearch } from \"./operations/search.js\";\nimport { moveFile } from \"./operations/moveFile.js\";\nimport { getFileUploadLink, putFileContents } from \"./operations/putFileContents.js\";\nimport { partialUpdateFileContents } from \"./operations/partialUpdateFileContents.js\";\nimport { getDAVCompliance } from \"./operations/getDAVCompliance.js\";\nimport { AuthType } from \"./types.js\";\nconst DEFAULT_CONTACT_HREF = \"https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md\";\nexport function createClient(remoteURL, options = {}) {\n const { authType: authTypeRaw = null, remoteBasePath, contactHref = DEFAULT_CONTACT_HREF, ha1, headers = {}, httpAgent, httpsAgent, password, token, username, withCredentials } = options;\n let authType = authTypeRaw;\n if (!authType) {\n authType = username || password ? AuthType.Password : AuthType.None;\n }\n const context = {\n authType,\n remoteBasePath,\n contactHref,\n ha1,\n headers: Object.assign({}, headers),\n httpAgent,\n httpsAgent,\n password,\n remotePath: extractURLPath(remoteURL),\n remoteURL,\n token,\n username,\n withCredentials\n };\n setupAuth(context, username, password, token, ha1);\n return {\n copyFile: (filename, destination, options) => copyFile(context, filename, destination, options),\n createDirectory: (path, options) => createDirectory(context, path, options),\n createReadStream: (filename, options) => createReadStream(context, filename, options),\n createWriteStream: (filename, options, callback) => createWriteStream(context, filename, options, callback),\n customRequest: (path, requestOptions) => customRequest(context, path, requestOptions),\n deleteFile: (filename, options) => deleteFile(context, filename, options),\n exists: (path, options) => exists(context, path, options),\n getDirectoryContents: (path, options) => getDirectoryContents(context, path, options),\n getFileContents: (filename, options) => getFileContents(context, filename, options),\n getFileDownloadLink: (filename) => getFileDownloadLink(context, filename),\n getFileUploadLink: (filename) => getFileUploadLink(context, filename),\n getHeaders: () => Object.assign({}, context.headers),\n getQuota: (options) => getQuota(context, options),\n lock: (path, options) => lock(context, path, options),\n moveFile: (filename, destinationFilename, options) => moveFile(context, filename, destinationFilename, options),\n putFileContents: (filename, data, options) => putFileContents(context, filename, data, options),\n partialUpdateFileContents: (filePath, start, end, data, options) => partialUpdateFileContents(context, filePath, start, end, data, options),\n getDAVCompliance: (path) => getDAVCompliance(context, path),\n search: (path, options) => getSearch(context, path, options),\n setHeaders: (headers) => {\n context.headers = Object.assign({}, headers);\n },\n stat: (path, options) => getStat(context, path, options),\n unlock: (path, token, options) => unlock(context, path, token, options)\n };\n}\n","import URL from \"url-parse\";\nimport { Layerr } from \"layerr\";\nimport _joinURL from \"url-join\";\nimport { normalisePath } from \"./path.js\";\nexport function extractURLPath(fullURL) {\n const url = new URL(fullURL);\n let urlPath = url.pathname;\n if (urlPath.length <= 0) {\n urlPath = \"/\";\n }\n return normalisePath(urlPath);\n}\nexport function joinURL(...parts) {\n return _joinURL(parts.reduce((output, nextPart, partIndex) => {\n if (partIndex === 0 ||\n nextPart !== \"/\" ||\n (nextPart === \"/\" && output[output.length - 1] !== \"/\")) {\n output.push(nextPart);\n }\n return output;\n }, []));\n}\nexport function normaliseHREF(href) {\n try {\n const normalisedHref = href.replace(/^https?:\\/\\/[^\\/]+/, \"\");\n return normalisedHref;\n }\n catch (err) {\n throw new Layerr(err, \"Failed normalising HREF\");\n }\n}\n","/*! https://mths.be/base64 v1.0.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '1.0.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n","import { prepareRequestOptions, request } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { parseQuota } from \"../tools/quota.js\";\nexport async function getQuota(context, options = {}) {\n const path = options.path || \"/\";\n const requestOptions = prepareRequestOptions({\n url: joinURL(context.remoteURL, path),\n method: \"PROPFIND\",\n headers: {\n Accept: \"text/plain,application/xml\",\n Depth: \"0\"\n }\n }, context, options);\n const response = await request(requestOptions, context);\n handleResponseCode(context, response);\n const responseData = await response.text();\n const result = await parseXML(responseData);\n const quota = parseQuota(result);\n return processResponsePayload(response, quota, options.details);\n}\n","import { Agent as HTTPAgent } from \"http\";\nimport { Agent as HTTPSAgent } from \"https\";\nimport { fetch } from \"@buttercup/fetch\";\nimport { getPatcher } from \"./compat/patcher.js\";\nimport { isReactNative, isWeb } from \"./compat/env.js\";\nimport { generateDigestAuthHeader, parseDigestAuth, responseIndicatesDigestAuth } from \"./auth/digest.js\";\nimport { cloneShallow, merge } from \"./tools/merge.js\";\nimport { mergeHeaders } from \"./tools/headers.js\";\nimport { requestDataToFetchBody } from \"./tools/body.js\";\nimport { AuthType } from \"./types.js\";\nimport { setupAuth } from \"./auth/index.js\";\nfunction getFetchOptions(requestOptions) {\n let headers = {};\n // Handle standard options\n const opts = {\n method: requestOptions.method\n };\n if (requestOptions.headers) {\n headers = mergeHeaders(headers, requestOptions.headers);\n }\n if (typeof requestOptions.data !== \"undefined\") {\n const [body, newHeaders] = requestDataToFetchBody(requestOptions.data);\n opts.body = body;\n headers = mergeHeaders(headers, newHeaders);\n }\n if (requestOptions.signal) {\n opts.signal = requestOptions.signal;\n }\n if (requestOptions.withCredentials) {\n opts.credentials = \"include\";\n }\n // Check for node-specific options\n if (!isWeb() && !isReactNative()) {\n if (requestOptions.httpAgent || requestOptions.httpsAgent) {\n opts.agent = (parsedURL) => {\n if (parsedURL.protocol === \"http:\") {\n return requestOptions.httpAgent || new HTTPAgent();\n }\n return requestOptions.httpsAgent || new HTTPSAgent();\n };\n }\n }\n // Attach headers\n opts.headers = headers;\n return opts;\n}\nexport function prepareRequestOptions(requestOptions, context, userOptions) {\n const finalOptions = cloneShallow(requestOptions);\n finalOptions.headers = mergeHeaders(context.headers, finalOptions.headers || {}, userOptions.headers || {});\n if (typeof userOptions.data !== \"undefined\") {\n finalOptions.data = userOptions.data;\n }\n if (userOptions.signal) {\n finalOptions.signal = userOptions.signal;\n }\n if (context.httpAgent) {\n finalOptions.httpAgent = context.httpAgent;\n }\n if (context.httpsAgent) {\n finalOptions.httpsAgent = context.httpsAgent;\n }\n if (context.digest) {\n finalOptions._digest = context.digest;\n }\n if (typeof context.withCredentials === \"boolean\") {\n finalOptions.withCredentials = context.withCredentials;\n }\n return finalOptions;\n}\nexport async function request(requestOptions, context) {\n if (context.authType === AuthType.Auto) {\n return requestAuto(requestOptions, context);\n }\n if (requestOptions._digest) {\n return requestDigest(requestOptions);\n }\n return requestStandard(requestOptions);\n}\nasync function requestAuto(requestOptions, context) {\n const response = await requestStandard(requestOptions);\n if (response.ok) {\n context.authType = AuthType.Password;\n return response;\n }\n if (response.status == 401 && responseIndicatesDigestAuth(response)) {\n context.authType = AuthType.Digest;\n setupAuth(context, context.username, context.password, undefined, undefined);\n requestOptions._digest = context.digest;\n return requestDigest(requestOptions);\n }\n return response;\n}\nasync function requestDigest(requestOptions) {\n // Remove client's digest authentication object from request options\n const _digest = requestOptions._digest;\n delete requestOptions._digest;\n // If client is already using digest authentication, include the digest authorization header\n if (_digest.hasDigestAuth) {\n requestOptions = merge(requestOptions, {\n headers: {\n Authorization: generateDigestAuthHeader(requestOptions, _digest)\n }\n });\n }\n // Perform digest request + check\n const response = await requestStandard(requestOptions);\n if (response.status == 401) {\n _digest.hasDigestAuth = parseDigestAuth(response, _digest);\n if (_digest.hasDigestAuth) {\n requestOptions = merge(requestOptions, {\n headers: {\n Authorization: generateDigestAuthHeader(requestOptions, _digest)\n }\n });\n const response2 = await requestStandard(requestOptions);\n if (response2.status == 401) {\n _digest.hasDigestAuth = false;\n }\n else {\n _digest.nc++;\n }\n return response2;\n }\n }\n else {\n _digest.nc++;\n }\n return response;\n}\nfunction requestStandard(requestOptions) {\n const patcher = getPatcher();\n return patcher.patchInline(\"request\", (options) => patcher.patchInline(\"fetch\", fetch, options.url, getFetchOptions(options)), requestOptions);\n}\n","import md5 from \"md5\";\nimport { ha1Compute } from \"../tools/crypto.js\";\nconst NONCE_CHARS = \"abcdef0123456789\";\nconst NONCE_SIZE = 32;\nexport function createDigestContext(username, password, ha1) {\n return { username, password, ha1, nc: 0, algorithm: \"md5\", hasDigestAuth: false };\n}\nexport function generateDigestAuthHeader(options, digest) {\n const url = options.url.replace(\"//\", \"\");\n const uri = url.indexOf(\"/\") == -1 ? \"/\" : url.slice(url.indexOf(\"/\"));\n const method = options.method ? options.method.toUpperCase() : \"GET\";\n const qop = /(^|,)\\s*auth\\s*($|,)/.test(digest.qop) ? \"auth\" : false;\n const ncString = `00000000${digest.nc}`.slice(-8);\n const ha1 = ha1Compute(digest.algorithm, digest.username, digest.realm, digest.password, digest.nonce, digest.cnonce, digest.ha1);\n const ha2 = md5(`${method}:${uri}`);\n const digestResponse = qop\n ? md5(`${ha1}:${digest.nonce}:${ncString}:${digest.cnonce}:${qop}:${ha2}`)\n : md5(`${ha1}:${digest.nonce}:${ha2}`);\n const authValues = {\n username: digest.username,\n realm: digest.realm,\n nonce: digest.nonce,\n uri,\n qop,\n response: digestResponse,\n nc: ncString,\n cnonce: digest.cnonce,\n algorithm: digest.algorithm,\n opaque: digest.opaque\n };\n const authHeader = [];\n for (const k in authValues) {\n if (authValues[k]) {\n if (k === \"qop\" || k === \"nc\" || k === \"algorithm\") {\n authHeader.push(`${k}=${authValues[k]}`);\n }\n else {\n authHeader.push(`${k}=\"${authValues[k]}\"`);\n }\n }\n }\n return `Digest ${authHeader.join(\", \")}`;\n}\nfunction makeNonce() {\n let uid = \"\";\n for (let i = 0; i < NONCE_SIZE; ++i) {\n uid = `${uid}${NONCE_CHARS[Math.floor(Math.random() * NONCE_CHARS.length)]}`;\n }\n return uid;\n}\nexport function parseDigestAuth(response, _digest) {\n const isDigest = responseIndicatesDigestAuth(response);\n if (!isDigest) {\n return false;\n }\n const re = /([a-z0-9_-]+)=(?:\"([^\"]+)\"|([a-z0-9_-]+))/gi;\n for (;;) {\n const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n const match = re.exec(authHeader);\n if (!match) {\n break;\n }\n _digest[match[1]] = match[2] || match[3];\n }\n _digest.nc += 1;\n _digest.cnonce = makeNonce();\n return true;\n}\nexport function responseIndicatesDigestAuth(response) {\n const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n return authHeader.split(/\\s/)[0].toLowerCase() === \"digest\";\n}\n","import { l as logger, F as FileType } from \"./chunks/folder-Bf-tAYWu.mjs\";\nimport { a, b, N, c, P } from \"./chunks/folder-Bf-tAYWu.mjs\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nimport isSvg from \"is-svg\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"@nextcloud/paths\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get hotkey() {\n return this._action.hotkey;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n if (\"hotkey\" in action && action.hotkey !== void 0) {\n if (typeof action.hotkey !== \"object\") {\n throw new Error(\"Invalid hotkey configuration\");\n }\n if (typeof action.hotkey.key !== \"string\" || !action.hotkey.key) {\n throw new Error(\"Missing or invalid hotkey key\");\n }\n if (typeof action.hotkey.description !== \"string\" || !action.hotkey.description) {\n throw new Error(\"Missing or invalid hotkey description\");\n }\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n if (hasRequiredDebug) return debug_1;\n hasRequiredDebug = 1;\n const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n };\n debug_1 = debug;\n return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n if (hasRequiredConstants) return constants;\n hasRequiredConstants = 1;\n const SEMVER_SPEC_VERSION = \"2.0.0\";\n const MAX_LENGTH = 256;\n const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n 9007199254740991;\n const MAX_SAFE_COMPONENT_LENGTH = 16;\n const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n const RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n ];\n constants = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n };\n return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n if (hasRequiredRe) return re.exports;\n hasRequiredRe = 1;\n (function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = requireConstants();\n const debug = requireDebug();\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const safeSrc = exports.safeSrc = [];\n const t = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug(name, index, value);\n t[name] = index;\n src[index] = value;\n safeSrc[index] = safe;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t.NUMERICIDENTIFIER]})\\\\.(${src[t.NUMERICIDENTIFIER]})\\\\.(${src[t.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t.BUILDIDENTIFIER]}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`);\n createToken(\"FULL\", `^${src[t.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\\\.(${src[t.XRANGEIDENTIFIER]})(?:\\\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n createToken(\"COERCE\", `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n })(re, re.exports);\n return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n if (hasRequiredParseOptions) return parseOptions_1;\n hasRequiredParseOptions = 1;\n const looseOption = Object.freeze({ loose: true });\n const emptyOpts = Object.freeze({});\n const parseOptions = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n };\n parseOptions_1 = parseOptions;\n return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n if (hasRequiredIdentifiers) return identifiers;\n hasRequiredIdentifiers = 1;\n const numeric = /^[0-9]+$/;\n const compareIdentifiers = (a2, b2) => {\n if (typeof a2 === \"number\" && typeof b2 === \"number\") {\n return a2 === b2 ? 0 : a2 < b2 ? -1 : 1;\n }\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n };\n const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n identifiers = {\n compareIdentifiers,\n rcompareIdentifiers\n };\n return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n if (hasRequiredSemver) return semver;\n hasRequiredSemver = 1;\n const debug = requireDebug();\n const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n const { safeRe: re2, t } = requireRe();\n const parseOptions = requireParseOptions();\n const { compareIdentifiers } = requireIdentifiers();\n class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m = version.trim().match(options.loose ? re2[t.LOOSE] : re2[t.FULL]);\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m[1];\n this.minor = +m[2];\n this.patch = +m[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m[5] ? m[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.major < other.major) {\n return -1;\n }\n if (this.major > other.major) {\n return 1;\n }\n if (this.minor < other.minor) {\n return -1;\n }\n if (this.minor > other.minor) {\n return 1;\n }\n if (this.patch < other.patch) {\n return -1;\n }\n if (this.patch > other.patch) {\n return 1;\n }\n return 0;\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i = 0;\n do {\n const a2 = this.prerelease[i];\n const b2 = other.prerelease[i];\n debug(\"prerelease compare\", i, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i = 0;\n do {\n const a2 = this.build[i];\n const b2 = other.build[i];\n debug(\"build compare\", i, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n if (release.startsWith(\"pre\")) {\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re2[t.PRERELEASELOOSE] : re2[t.PRERELEASE]);\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`);\n }\n }\n }\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"release\":\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`);\n }\n this.prerelease.length = 0;\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i = this.prerelease.length;\n while (--i >= 0) {\n if (typeof this.prerelease[i] === \"number\") {\n this.prerelease[i]++;\n i = -2;\n }\n }\n if (i === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n }\n semver = SemVer;\n return semver;\n}\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n if (hasRequiredMajor) return major_1;\n hasRequiredMajor = 1;\n const SemVer = requireSemver();\n const major2 = (a2, loose) => new SemVer(a2, loose).major;\n major_1 = major2;\n return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n const SemVer = requireSemver();\n const parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n };\n parse_1 = parse;\n return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n if (hasRequiredValid) return valid_1;\n hasRequiredValid = 1;\n const parse = requireParse();\n const valid2 = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n };\n valid_1 = valid2;\n return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.3\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, ...event) {\n this.bus.emit(name, ...event);\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.3\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h) => h !== handler)\n );\n }\n emit(name, ...event) {\n const handlers = this.handlers.get(name) || [];\n handlers.forEach((h) => {\n try {\n ;\n h(event[0]);\n } catch (e) {\n console.error(\"could not invoke event listener\", e);\n }\n });\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, ...event) {\n getBus().emit(name, ...event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nfunction checkOptionalProperty(obj, property, type) {\n if (typeof obj[property] !== \"undefined\") {\n if (type === \"array\") {\n if (!Array.isArray(obj[property])) {\n throw new Error(`View ${property} must be an array`);\n }\n } else if (typeof obj[property] !== type) {\n throw new Error(`View ${property} must be a ${type}`);\n } else if (type === \"object\" && (obj[property] === null || Array.isArray(obj[property]))) {\n throw new Error(`View ${property} must be an object`);\n }\n }\n}\nclass Column {\n _column;\n constructor(column) {\n validateColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nfunction validateColumn(column) {\n if (typeof column !== \"object\" || column === null) {\n throw new Error(\"View column must be an object\");\n }\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n checkOptionalProperty(column, \"sort\", \"function\");\n checkOptionalProperty(column, \"summary\", \"function\");\n}\nclass View {\n _view;\n constructor(view) {\n validateView(view);\n this._view = view;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get hidden() {\n return this._view.hidden;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(icon) {\n this._view.icon = icon;\n }\n get order() {\n return this._view.order;\n }\n set order(order) {\n this._view.order = order;\n }\n get params() {\n return this._view.params;\n }\n set params(params) {\n this._view.params = params;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(expanded) {\n this._view.expanded = expanded;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n get loadChildViews() {\n return this._view.loadChildViews;\n }\n}\nfunction validateView(view) {\n if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n throw new Error(\"View icon is required and must be a valid svg string\");\n }\n if (!view.id || typeof view.id !== \"string\") {\n throw new Error(\"View id is required and must be a string\");\n }\n if (!view.getContents || typeof view.getContents !== \"function\") {\n throw new Error(\"View getContents is required and must be a function\");\n }\n if (!view.name || typeof view.name !== \"string\") {\n throw new Error(\"View name is required and must be a string\");\n }\n checkOptionalProperty(view, \"caption\", \"string\");\n checkOptionalProperty(view, \"columns\", \"array\");\n checkOptionalProperty(view, \"defaultSortKey\", \"string\");\n checkOptionalProperty(view, \"emptyCaption\", \"string\");\n checkOptionalProperty(view, \"emptyTitle\", \"string\");\n checkOptionalProperty(view, \"emptyView\", \"function\");\n checkOptionalProperty(view, \"expanded\", \"boolean\");\n checkOptionalProperty(view, \"hidden\", \"boolean\");\n checkOptionalProperty(view, \"loadChildViews\", \"function\");\n checkOptionalProperty(view, \"order\", \"number\");\n checkOptionalProperty(view, \"params\", \"object\");\n checkOptionalProperty(view, \"parent\", \"string\");\n checkOptionalProperty(view, \"sticky\", \"boolean\");\n if (view.columns) {\n view.columns.forEach(validateColumn);\n const columnIds = view.columns.reduce((set, column) => set.add(column.id), /* @__PURE__ */ new Set());\n if (columnIds.size !== view.columns.length) {\n throw new Error(\"View columns must have unique ids\");\n }\n }\n}\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws {Error} if a view with the same id is already registered\n * @throws {Error} if the registered view is invalid\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`IView id ${view.id} is already registered`);\n }\n validateView(view);\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n *\n * @param id - The id of the view to set as active\n * @throws {Error} If no view with the given id was registered\n * @fires UpdateActiveViewEvent\n */\n setActive(id) {\n if (id === null) {\n this._currentView = null;\n } else {\n const view = this._views.find(({ id: viewId }) => viewId === id);\n if (!view) {\n throw new Error(`No view with ${id} registered`);\n }\n this._currentView = view;\n }\n const event = new CustomEvent(\"updateActive\", { detail: this._currentView });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n entry.category = entry.category ?? 1;\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param context - The creation context. Usually the current folder\n */\n getEntries(context) {\n if (context) {\n return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex((entry) => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !entry.iconSvgInline || !entry.handler) {\n throw new Error(\"Invalid entry\");\n }\n if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n throw new Error(\"Invalid id or displayName property\");\n }\n if (entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n throw new Error(\"Invalid icon provided\");\n }\n if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (typeof entry.handler !== \"function\") {\n throw new Error(\"Invalid handler property\");\n }\n if (\"order\" in entry && typeof entry.order !== \"number\") {\n throw new Error(\"Invalid order property\");\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error(\"Duplicate entry\");\n }\n }\n}\nfunction getNewFileMenu() {\n if (typeof window._nc_newfilemenu === \"undefined\") {\n window._nc_newfilemenu = new NewMenu();\n logger.debug(\"NewFileMenu initialized\");\n }\n return window._nc_newfilemenu;\n}\nfunction addNewFileMenuEntry(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n}\nfunction removeNewFileMenuEntry(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n}\nfunction getNewFileMenuEntries(context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context).sort((a2, b2) => {\n if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n return a2.order - b2.order;\n }\n return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n });\n}\nfunction registerSidebarAction(action) {\n validateSidebarAction(action);\n window._nc_files_sidebar_actions ??= /* @__PURE__ */ new Map();\n if (window._nc_files_sidebar_actions.has(action.id)) {\n logger.warn(`Sidebar action with id \"${action.id}\" already registered. Skipping.`);\n return;\n }\n window._nc_files_sidebar_actions.set(action.id, action);\n logger.debug(`New sidebar action with id \"${action.id}\" registered.`);\n}\nfunction getSidebarActions() {\n if (window._nc_files_sidebar_actions) {\n return [...window._nc_files_sidebar_actions.values()];\n }\n return [];\n}\nfunction validateSidebarAction(action) {\n if (typeof action !== \"object\") {\n throw new Error(\"Sidebar action is not an object\");\n }\n if (!action.id || typeof action.id !== \"string\" || action.id !== CSS.escape(action.id)) {\n throw new Error(\"Sidebar actions need to have an id conforming to the HTML id attribute specifications\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Sidebar actions need to have a displayName function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Sidebar actions need to have a iconSvgInline function\");\n }\n if (!action.enabled || typeof action.enabled !== \"function\") {\n throw new Error(\"Sidebar actions need to have an enabled function\");\n }\n if (!action.onClick || typeof action.onClick !== \"function\") {\n throw new Error(\"Sidebar actions need to have an onClick function\");\n }\n}\nfunction registerSidebarTab(tab) {\n validateSidebarTab(tab);\n window._nc_files_sidebar_tabs ??= /* @__PURE__ */ new Map();\n if (window._nc_files_sidebar_tabs.has(tab.id)) {\n logger.warn(`Sidebar tab with id \"${tab.id}\" already registered. Skipping.`);\n return;\n }\n window._nc_files_sidebar_tabs.set(tab.id, tab);\n logger.debug(`New sidebar tab with id \"${tab.id}\" registered.`);\n}\nfunction getSidebarTabs() {\n if (window._nc_files_sidebar_tabs) {\n return [...window._nc_files_sidebar_tabs.values()];\n }\n return [];\n}\nfunction validateSidebarTab(tab) {\n if (typeof tab !== \"object\") {\n throw new Error(\"Sidebar tab is not an object\");\n }\n if (!tab.id || typeof tab.id !== \"string\" || tab.id !== CSS.escape(tab.id)) {\n throw new Error(\"Sidebar tabs need to have an id conforming to the HTML id attribute specifications\");\n }\n if (!tab.tagName || typeof tab.tagName !== \"string\") {\n throw new Error(\"Sidebar tabs need to have the tagName name set\");\n }\n if (!tab.tagName.match(/^[a-z][a-z0-9-_]+$/)) {\n throw new Error(\"Sidebar tabs tagName name is invalid\");\n }\n if (!tab.displayName || typeof tab.displayName !== \"string\") {\n throw new Error(\"Sidebar tabs need to have a name set\");\n }\n if (typeof tab.iconSvgInline !== \"string\" || !isSvg(tab.iconSvgInline)) {\n throw new Error(\"Sidebar tabs need to have an valid SVG icon\");\n }\n if (typeof tab.order !== \"number\") {\n throw new Error(\"Sidebar tabs need to have a numeric order set\");\n }\n if (typeof tab.enabled !== \"function\") {\n throw new Error('Sidebar tabs need to have an \"enabled\" method');\n }\n}\nclass SidebarProxy {\n get #impl() {\n return window.OCA?.Files?._sidebar?.();\n }\n get available() {\n return !!this.#impl;\n }\n get isOpen() {\n return this.#impl?.isOpen ?? false;\n }\n get activeTab() {\n return this.#impl?.activeTab;\n }\n get node() {\n return this.#impl?.node;\n }\n open(node, tab) {\n this.#impl?.open(node, tab);\n }\n close() {\n this.#impl?.close();\n }\n setActiveTab(tabId) {\n this.#impl?.setActiveTab(tabId);\n }\n registerTab(tab) {\n registerSidebarTab(tab);\n }\n getTabs(context) {\n return this.#impl?.getTabs(context) ?? [];\n }\n getActions(context) {\n return this.#impl?.getActions(context) ?? [];\n }\n registerAction(action) {\n registerSidebarAction(action);\n }\n}\nfunction getSidebar() {\n return new SidebarProxy();\n}\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n constructor(options) {\n super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n }\n /**\n * The filename that was validated\n */\n get filename() {\n return this.cause.filename;\n }\n /**\n * Reason why the validation failed\n */\n get reason() {\n return this.cause.reason;\n }\n /**\n * Part of the filename that caused this error\n */\n get segment() {\n return this.cause.segment;\n }\n}\nfunction validateFilename(filename) {\n const capabilities = getCapabilities().files;\n const forbiddenCharacters = capabilities.forbidden_filename_characters ?? [\"/\", \"\\\\\"];\n for (const character of forbiddenCharacters) {\n if (filename.includes(character)) {\n throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n }\n }\n filename = filename.toLocaleLowerCase();\n const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n if (forbiddenFilenames.includes(filename)) {\n throw new InvalidFilenameError({\n filename,\n segment: filename,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const endOfBasename = filename.indexOf(\".\", 1);\n const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n if (forbiddenFilenameBasenames.includes(basename2)) {\n throw new InvalidFilenameError({\n filename,\n segment: basename2,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [];\n for (const extension of forbiddenFilenameExtensions) {\n if (filename.length > extension.length && filename.endsWith(extension)) {\n throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n }\n }\n}\nfunction isFilenameValid(filename) {\n try {\n validateFilename(filename);\n return true;\n } catch (error) {\n if (error instanceof InvalidFilenameError) {\n return false;\n }\n throw error;\n }\n}\nfunction getUniqueName(name, otherNames, options) {\n const opts = {\n suffix: (n) => `(${n})`,\n ignoreFileExtension: false,\n ...options\n };\n let newName = name;\n let i = 1;\n while (otherNames.includes(newName)) {\n const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n const base = basename(name, ext);\n newName = `${base} ${opts.suffix(i++)}${ext}`;\n }\n return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n binaryPrefixes = binaryPrefixes && !base1000;\n if (typeof size === \"string\") {\n size = Number(size);\n }\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n } else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n try {\n value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch (e) {\n return null;\n }\n const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (match === null || match[1] === \".\" || match[1] === \"\") {\n return null;\n }\n const bytesArray = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n };\n const decimalString = `${match[1]}`;\n const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n identifiers2 = identifiers2 ?? [(value) => value];\n orders = orders ?? [];\n const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n const collator = Intl.Collator(\n [getLanguage(), getCanonicalLocale()],\n {\n // handle 10 as ten and not as one-zero\n numeric: true,\n usage: \"sort\"\n }\n );\n return [...collection].sort((a2, b2) => {\n for (const [index, identifier] of identifiers2.entries()) {\n const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n if (value !== 0) {\n return value * sorting[index];\n }\n }\n return 0;\n });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n FilesSortingMode2[\"Name\"] = \"basename\";\n FilesSortingMode2[\"Modified\"] = \"mtime\";\n FilesSortingMode2[\"Size\"] = \"size\";\n return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n const sortingOptions = {\n // Default to sort by name\n sortingMode: \"basename\",\n // Default to sort ascending\n sortingOrder: \"asc\",\n ...options\n };\n function basename2(node) {\n const name = node.displayname || node.attributes?.displayname || node.basename || \"\";\n if (node.type === FileType.Folder) {\n return name;\n }\n return name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n }\n const identifiers2 = [\n // 1: Sort favorites first if enabled\n ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n // 2: Sort folders first if sorting by name\n ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n // 3: Use sorting mode if NOT basename (to be able to use display name too)\n ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode] ?? v.attributes[sortingOptions.sortingMode]] : [],\n // 4: Use display name if available, fallback to name\n (v) => basename2(v),\n // 5: Finally, use basename if all previous sorting methods failed\n (v) => v.basename\n ];\n const orders = [\n // (for 1): always sort favorites before normal files\n ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n // (for 2): always sort folders before files\n ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n // (also for 3 so make sure not to conflict with 2 and 3)\n ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n // for 4: use configured sorting direction\n sortingOptions.sortingOrder,\n // for 5: use configured sorting direction\n sortingOptions.sortingOrder\n ];\n return orderBy(nodes, identifiers2, orders);\n}\nexport {\n Column,\n DefaultType,\n a as File,\n FileAction,\n FileListAction,\n FileListFilter,\n FileType,\n FilesSortingMode,\n b as Folder,\n Header,\n InvalidFilenameError,\n InvalidFilenameErrorReason,\n Navigation,\n NewMenuEntryCategory,\n N as Node,\n c as NodeStatus,\n P as Permission,\n View,\n addNewFileMenuEntry,\n formatFileSize,\n getFileActions,\n getFileListActions,\n getFileListFilters,\n getFileListHeaders,\n getNavigation,\n getNewFileMenu,\n getNewFileMenuEntries,\n getSidebar,\n getSidebarActions,\n getSidebarTabs,\n getUniqueName,\n isFilenameValid,\n orderBy,\n parseFileSize,\n registerFileAction,\n registerFileListAction,\n registerFileListFilter,\n registerFileListHeaders,\n registerSidebarAction,\n registerSidebarTab,\n removeNewFileMenuEntry,\n sortNodes,\n unregisterFileListFilter,\n validateColumn,\n validateFilename,\n validateView\n};\n//# sourceMappingURL=index.mjs.map\n","\n \n \n \n {{ title }}\n \n \n \n\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./MessageReplyTextOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./MessageReplyTextOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./MessageReplyTextOutline.vue?vue&type=template&id=5d6c4e92\"\nimport script from \"./MessageReplyTextOutline.vue?vue&type=script&lang=js\"\nexport * from \"./MessageReplyTextOutline.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 message-reply-text-outline-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\":\"M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { parseXML } from 'webdav';\nimport { processResponsePayload } from 'webdav/dist/node/response.js';\nimport { prepareFileFromProps } from 'webdav/dist/node/tools/dav.js';\nimport client from './DavClient.js';\nexport const DEFAULT_LIMIT = 20;\n/**\n * Retrieve the comments list\n *\n * @param data destructuring object\n * @param data.resourceType the resource type\n * @param data.resourceId the resource ID\n * @param [options] optional options for axios\n * @param [options.offset] the pagination offset\n * @param [options.limit] the pagination limit, defaults to 20\n * @param [options.datetime] optional date to query\n * @return the comments list\n */\nexport async function getComments({ resourceType, resourceId }, options) {\n const resourcePath = ['', resourceType, resourceId].join('/');\n const datetime = options.datetime ? `${options.datetime.toISOString()}` : '';\n const response = await client.customRequest(resourcePath, {\n method: 'REPORT',\n data: `\n\t\t\t\n\t\t\t\t${options.limit ?? DEFAULT_LIMIT}\n\t\t\t\t${options.offset || 0}\n\t\t\t\t${datetime}\n\t\t\t`,\n ...options,\n });\n const responseData = await response.text();\n const result = await parseXML(responseData);\n const stat = getDirectoryFiles(result, true);\n // https://github.com/perry-mitchell/webdav-client/issues/339\n return processResponsePayload(response, stat, true);\n}\n/**\n * https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/operations/directoryContents.ts\n *\n * @param result\n * @param isDetailed\n */\nfunction getDirectoryFiles(result, isDetailed = false) {\n // Extract the response items (directory contents)\n const { multistatus: { response: responseItems }, } = result;\n // Map all items to a consistent output structure (results)\n return responseItems.map((item) => {\n // Each item should contain a stat object\n const props = item.propstat.prop;\n return prepareFileFromProps(props, props.id.toString(), isDetailed);\n });\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param {Function} request the axios promise request\n * @return {object}\n */\nfunction cancelableRequest(request) {\n\tconst controller = new AbortController()\n\tconst signal = controller.signal\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param {string} url the url to send the request to\n\t * @param {object} [options] optional config for the request\n\t */\n\tconst fetch = async function(url, options) {\n\t\tconst response = await request(\n\t\t\turl,\n\t\t\t{ signal, ...options },\n\t\t)\n\t\treturn response\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tabort: () => controller.abort(),\n\t}\n}\n\nexport default cancelableRequest\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.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!./Comments.vue?vue&type=script&lang=js\"","\n\n\n\t\n\t\t\n\t\t\n\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t{{ t('comments', 'No more messages') }}\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{{ t('comments', 'Retry') }}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport client from './DavClient.js';\n/**\n * Mark comments older than the date timestamp as read\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param date the date object\n */\nexport function markCommentsAsRead(resourceType, resourceId, date) {\n const resourcePath = ['', resourceType, resourceId].join('/');\n const readMarker = date.toUTCString();\n return client.customRequest(resourcePath, {\n method: 'PROPPATCH',\n data: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${readMarker}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\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!./Comments.vue?vue&type=style&index=0&id=6c8c157a&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!./Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Comments.vue?vue&type=template&id=6c8c157a&scoped=true\"\nimport script from \"./Comments.vue?vue&type=script&lang=js\"\nexport * from \"./Comments.vue?vue&type=script&lang=js\"\nimport style0 from \"./Comments.vue?vue&type=style&index=0&id=6c8c157a&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 \"6c8c157a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"element-visibility\",rawName:\"v-element-visibility\",value:(_vm.onVisibilityChange),expression:\"onVisibilityChange\"}],staticClass:\"comments\",class:{ 'icon-loading': _vm.isFirstLoading }},[_c('Comment',_vm._b({staticClass:\"comments__writer\",attrs:{\"auto-complete\":_vm.autoComplete,\"resource-type\":_vm.resourceType,\"editor\":true,\"user-data\":_vm.userData,\"resource-id\":_vm.currentResourceId},on:{\"new\":_vm.onNewComment}},'Comment',_vm.editorData,false)),_vm._v(\" \"),(!_vm.isFirstLoading)?[(!_vm.hasComments && _vm.done)?_c('NcEmptyContent',{staticClass:\"comments__empty\",attrs:{\"name\":_vm.t('comments', 'No comments yet, start the conversation!')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconMessageReplyTextOutline')]},proxy:true}],null,false,326612300)}):_c('ul',_vm._l((_vm.comments),function(comment){return _c('Comment',_vm._b({key:comment.props.id,staticClass:\"comments__list\",attrs:{\"tag\":\"li\",\"auto-complete\":_vm.autoComplete,\"resource-type\":_vm.resourceType,\"message\":comment.props.message,\"resource-id\":_vm.currentResourceId,\"user-data\":_vm.genMentionsData(comment.props.mentions)},on:{\"update:message\":function($event){return _vm.$set(comment.props, \"message\", $event)},\"delete\":_vm.onDelete}},'Comment',comment.props,false))}),1),_vm._v(\" \"),(_vm.loading && !_vm.isFirstLoading)?_c('div',{staticClass:\"comments__info icon-loading\"}):(_vm.hasComments && _vm.done)?_c('div',{staticClass:\"comments__info\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('comments', 'No more messages'))+\"\\n\\t\\t\")]):(_vm.error)?[_c('NcEmptyContent',{staticClass:\"comments__error\",attrs:{\"name\":_vm.error},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconAlertCircleOutline')]},proxy:true}],null,false,3663249556)}),_vm._v(\" \"),_c('NcButton',{staticClass:\"comments__retry\",on:{\"click\":_vm.getComments},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconRefresh')]},proxy:true}],null,false,2997625269)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Retry'))+\"\\n\\t\\t\\t\")])]:_vm._e()]:_vm._e()],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-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarTab.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-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarTab.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.resourceId !== undefined)?_c(_setup.Comments,{key:_setup.resourceId,attrs:{\"resource-id\":_setup.resourceId,\"resource-type\":\"files\"}}):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesSidebarTab.vue?vue&type=template&id=60255b91\"\nimport script from \"./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesSidebarTab.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","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport moment from '@nextcloud/moment';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport Vue, {} from 'vue';\nimport logger from './logger.js';\nimport { getComments } from './services/GetComments.js';\nVue.use(PiniaVuePlugin);\nlet ActivityTabPluginView;\nlet ActivityTabPluginInstance;\n/**\n * Register the comments plugins for the Activity sidebar\n */\nexport function registerCommentsPlugins() {\n window.OCA.Activity.registerSidebarAction({\n mount: async (el, { node, reload }) => {\n const pinia = createPinia();\n if (!ActivityTabPluginView) {\n const { default: ActivityCommentAction } = await import('./views/ActivityCommentAction.vue');\n // @ts-expect-error Types are broken for Vue2\n ActivityTabPluginView = Vue.extend(ActivityCommentAction);\n }\n ActivityTabPluginInstance = new ActivityTabPluginView({\n el,\n pinia,\n propsData: {\n reloadCallback: reload,\n resourceId: node.fileid,\n },\n });\n logger.info('Comments plugin mounted in Activity sidebar action', { node });\n },\n unmount: () => {\n // destroy previous instance if available\n if (ActivityTabPluginInstance) {\n ActivityTabPluginInstance.$destroy();\n }\n },\n });\n window.OCA.Activity.registerSidebarEntries(async ({ node, limit, offset }) => {\n const { data: comments } = await getComments({ resourceType: 'files', resourceId: node.fileid }, {\n limit,\n offset: offset ?? 0,\n });\n logger.debug('Loaded comments', { node, comments });\n const { default: CommentView } = await import('./views/ActivityCommentEntry.vue');\n // @ts-expect-error Types are broken for Vue2\n const CommentsViewObject = Vue.extend(CommentView);\n return comments.map((comment) => ({\n _CommentsViewInstance: undefined,\n timestamp: moment(comment.props?.creationDateTime).toDate().getTime(),\n mount(element, { reload }) {\n this._CommentsViewInstance = new CommentsViewObject({\n el: element,\n propsData: {\n comment,\n resourceId: node.fileid,\n reloadCallback: reload,\n },\n });\n },\n unmount() {\n this._CommentsViewInstance?.$destroy();\n },\n }));\n });\n window.OCA.Activity.registerSidebarFilter((activity) => activity.type !== 'comments');\n logger.info('Comments plugin registered for Activity sidebar action');\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport MessageReplyText from '@mdi/svg/svg/message-reply-text.svg?raw';\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { registerSidebarTab } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport { t } from '@nextcloud/l10n';\nimport wrap from '@vue/web-component-wrapper';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport Vue from 'vue';\nimport FilesSidebarTab from './views/FilesSidebarTab.vue';\nimport { registerCommentsPlugins } from './comments-activity-tab.ts';\n__webpack_nonce__ = getCSPNonce();\nconst tagName = 'comments_files-sidebar-tab';\nif (loadState('comments', 'activityEnabled', false) && OCA?.Activity?.registerSidebarAction !== undefined) {\n // Do not mount own tab but mount into activity\n window.addEventListener('DOMContentLoaded', function () {\n registerCommentsPlugins();\n });\n}\nelse {\n registerSidebarTab({\n id: 'comments',\n displayName: t('comments', 'Comments'),\n iconSvgInline: MessageReplyText,\n order: 50,\n tagName,\n enabled() {\n if (!window.customElements.get(tagName)) {\n setupSidebarTab();\n }\n return true;\n },\n });\n}\n/**\n * Setup the sidebar tab as a web component\n */\nfunction setupSidebarTab() {\n Vue.use(PiniaVuePlugin);\n Vue.mixin({ pinia: createPinia() });\n const webComponent = wrap(Vue, FilesSidebarTab);\n // In Vue 2, wrap doesn't support disabling shadow. Disable with a hack\n Object.defineProperty(webComponent.prototype, 'attachShadow', {\n value() { return this; },\n });\n Object.defineProperty(webComponent.prototype, 'shadowRoot', {\n get() { return this; },\n });\n window.customElements.define(tagName, webComponent);\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, `.comments[data-v-6c8c157a]{min-height:100%;display:flex;flex-direction:column}.comments__empty[data-v-6c8c157a],.comments__error[data-v-6c8c157a]{flex:1 0}.comments__retry[data-v-6c8c157a]{margin:0 auto}.comments__info[data-v-6c8c157a]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/views/Comments.vue\"],\"names\":[],\"mappings\":\"AACA,2BACC,eAAA,CACA,YAAA,CACA,qBAAA,CAEA,oEAEC,QAAA,CAGD,kCACC,aAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA\",\"sourcesContent\":[\"\\n.comments {\\n\\tmin-height: 100%;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\t&__empty,\\n\\t&__error {\\n\\t\\tflex: 1 0;\\n\\t}\\n\\n\\t&__retry {\\n\\t\\tmargin: 0 auto;\\n\\t}\\n\\n\\t&__info {\\n\\t\\theight: 60px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\ttext-align: center;\\n\\t\\tline-height: 60px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('comments')\n\t.detectUser()\n\t.build()\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=\" + {\"594\":\"f5af3d132040859cb666\",\"620\":\"e5d77a046303aedd05c5\",\"2391\":\"6d29c12fea2fbb265756\",\"2880\":\"803b63f847e6d68bcf0d\",\"4325\":\"b597fcd1212503c968df\",\"4508\":\"b788d8e845a1709aacd5\",\"4818\":\"d7d676d61bc734e1307a\",\"4906\":\"494ff510a1379d42d106\",\"5258\":\"bf877d931968f112154d\",\"5862\":\"580b9c2e231a9169a12f\",\"7039\":\"9800c2c4f93af8d9465e\",\"7145\":\"1f907ab7a1c83e8a6617\",\"8339\":\"b2246be0f4c885a9d524\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2122;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2122: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\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__(93226)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","parseQuota","result","responseItem","multistatus","response","propstat","prop","quotaUsed","quotaAvail","used","parseInt","String","available","err","props","id","type","Number","default","message","resourceId","required","resourceType","data","deleted","editing","loading","computed","mapStores","useDeletedCommentLimbo","methods","onEdit","this","onEditCancel","updateLocalMessage","onEditComment","EditComment","logger","debug","$emit","error","showError","t","onDeleteWithUndo","deletedCommentLimboStore","addId","timeOutDelete","setTimeout","onDelete","TOAST_UNDO_TIMEOUT","showUndo","clearTimeout","removeId","DeleteComment","onNewComment","newComment","NewComment","localMessage","async","getDAVCompliance","context","filePath","options","requestOptions","url","remoteURL","method","compliance","headers","get","split","map","item","trim","server","commentId","commentPath","join","client","customRequest","http","https","module","exports","key","hasOwnProperty","validateParams","params","parse","protocol","Error","request","cb","call","ClientRequest","extend","statusCodes","opts","defaultProtocol","location","search","host","hostname","port","path","indexOf","toUpperCase","req","on","end","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","getRootPath","generateRemoteUrl","Layerr","constructor","errorOptionsOrMessage","messageText","args","arguments","shortMessage","cause","super","name","Object","defineProperty","value","info","assign","_info","captureStackTrace","ctor","constructorOpt","_cause","fullStack","stack","output","toString","prototype","TRANSFORM_RETAIN_FORMAT","v","getFileContents","format","code","InvalidOutputFormat","Accept","transformResponse","body","text","details","getFileContentsString","arrayBuffer","Buffer","from","getFileContentsBuffer","getFileDownloadLink","test","authType","None","Password","authPart","Authorization","replace","authContents","LinkUnsupportedAuthType","generateBasicAuthHeader","username","password","___CSS_LOADER_EXPORT___","push","generateLockXML","ownerHREF","XMLBuilder","attributeNamePrefix","ignoreAttributes","suppressEmptyNode","build","namespace","lockinfo","lockscope","exclusive","locktype","write","owner","href","obj","ns","copy","parseGenericResponse","xml","XMLParser","removeNSPrefix","parseAttributeValue","parseTagValue","createDirectory","dirPath","recursive","paths","sort","a","b","length","creating","testPath","status","createDirectoryRecursively","endsWith","components","IconArrowRight","IconClose","IconTrashCanOutline","IconPencilOutline","NcActionButton","NcActions","NcActionSeparator","NcAvatar","NcButton","NcDateTime","NcLoadingIcon","NcRichContenteditable","NcRichText","mixins","CommentMixin","inheritAttrs","actorDisplayName","actorId","creationDateTime","editor","Boolean","autoComplete","Function","userData","tag","expanded","submitted","isOwnComment","getCurrentUser","uid","richContent","mentions","keys","forEach","user","index","regex","RegExp","component","NcUserBubble","displayName","label","primary","isEmptyMessage","timestamp","Date","isLimbo","checkForId","watch","beforeMount","onSubmit","$nextTick","$refs","$el","focus","onExpand","putFileContents","contentLength","overwrite","Readable","getFileUploadLink","defineComponent","editorData","currentResourceId","callback","axios","generateOcsUrl","itemType","itemId","sorter","limit","loadState","ocs","values","genMentionsData","flat","mention","mentionId","icon","mentionDisplayName","source","createClient","setHeaders","token","requesttoken","onRequestTokenUpdate","getRequestToken","defineStore","state","idsInLimbo","actions","splice","includes","setupAuth","oauthToken","ha1","Auto","Digest","digest","Token","InvalidAuthType","requestDataToFetchBody","JSON","stringify","DEFAULT_TIMEOUT","lock","refreshToken","timeout","Timeout","If","contactHref","responseData","lockPayload","serverTimeout","unlock","hasArrayBuffer","ArrayBuffer","objToString","isArrayBuffer","copyFile","filename","destination","Destination","Overwrite","Depth","shallow","decodeHtmlEntities","passes","parser","DOMParser","decoded","i","parseFromString","documentElement","textContent","fromBase64","toBase64","qs","controlOrWhitespace","CRHTLF","slashes","protocolre","windowsDriveLetter","trimLeft","str","rules","address","isSpecial","NaN","undefined","ignore","hash","query","lolcation","loc","window","self","finaldestination","Url","unescape","pathname","scheme","extractProtocol","rest","match","exec","toLowerCase","forwardSlashes","otherSlashes","slashesCount","slice","relative","extracted","instruction","instructions","lastIndexOf","charAt","base","concat","last","unshift","up","resolve","auth","encodeURIComponent","decodeURIComponent","origin","set","part","fn","pop","char","ins","len","charCodeAt","NOOP","createReadStream","outStream","PassThroughStream","range","start","rangeHeader","Range","responseError","getFileStream","then","stream","pipe","catch","emit","createWriteStream","writeStream","maxRedirects","render","_vm","_c","_self","directives","rawName","expression","staticClass","class","attrs","_v","_s","scopedSlots","_u","proxy","_e","$event","preventDefault","ref","nativeOn","apply","staticRenderFns","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","resourcePath","post","actorType","toUTCString","objectType","verb","comment","stat","calculateDataLength","byteLength","DataTypeNoLength","getDirectoryContents","remotePath","deep","davResp","_remotePath","files","serverremoteBasePath","requestPath","isDetailed","includeSelf","serverBase","responseItems","nodes","filter","basename","getDirectoryFiles","remoteBasePath","glob","exists","finalOptions","moveFile","deleteFile","getSearch","searchArbiter","responseText","results","partialUpdateFileContents","InvalidUpdateRange","partialUpdateFileContentsSabredav","partialUpdateFileContentsApache","NotSupported","getStat","DEFAULT_CONTACT_HREF","authTypeRaw","httpAgent","httpsAgent","withCredentials","c","getHeaders","getQuota","destinationFilename","m","extractURLPath","fullURL","urlPath","joinURL","parts","reduce","nextPart","partIndex","normaliseHREF","freeGlobal","global","InvalidCharacterError","TABLE","REGEX_SPACE_CHARACTERS","base64","input","buffer","padding","position","bitStorage","bitCounter","fromCharCode","quota","prepareRequestOptions","userOptions","signal","_digest","requestStandard","ok","requestDigest","requestAuto","hasDigestAuth","response2","nc","patcher","patchInline","newHeaders","credentials","agent","parsedURL","getFetchOptions","createDigestContext","algorithm","generateDigestAuthHeader","uri","qop","ncString","realm","nonce","cnonce","ha2","digestResponse","authValues","opaque","authHeader","k","parseDigestAuth","responseIndicatesDigestAuth","re","Math","floor","NONCE_CHARS","random","makeNonce","debug_1","hasRequiredDebug","constants","hasRequiredConstants","requireDebug","process","env","NODE_DEBUG","console","requireConstants","MAX_SAFE_INTEGER","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","hasRequiredRe","parseOptions_1","hasRequiredParseOptions","identifiers","hasRequiredIdentifiers","semver","hasRequiredSemver","major_1","hasRequiredMajor","parse_1","hasRequiredParse","valid_1","hasRequiredValid","requireSemver","safeRe","re2","src","safeSrc","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","max","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","parseOptions","looseOption","freeze","loose","emptyOpts","requireParseOptions","compareIdentifiers","numeric","a2","b2","anum","bnum","rcompareIdentifiers","requireIdentifiers","SemVer","version","includePrerelease","TypeError","LOOSE","FULL","raw","major","minor","patch","prerelease","num","compare","other","compareMain","comparePre","compareBuild","inc","release","identifier","identifierBase","startsWith","isNaN","requireMajor","throwErrors","er","requireParse","requireValid","emits","title","fillColor","size","_b","$attrs","getComments","datetime","toISOString","offset","prepareFileFromProps","parseXML","processResponsePayload","Comment","NcEmptyContent","IconRefresh","IconMessageReplyTextOutline","IconAlertCircleOutline","elementVisibility","CommentView","done","comments","cancelRequest","hasComments","isFirstLoading","onVisibilityChange","isVisible","date","readMarker","markCommentsAsRead","e","update","resetState","onScrollBottomReached","abort","controller","AbortController","cancelableRequest","findIndex","_l","$set","_defineComponent","__name","node","folder","view","setup","__props","expose","setActive","fileid","active","__sfc","Comments","_setup","_setupProxy","ActivityTabPluginView","ActivityTabPluginInstance","Vue","use","PiniaVuePlugin","__webpack_nonce__","getCSPNonce","tagName","tab","OCA","Activity","registerSidebarAction","addEventListener","mount","el","reload","pinia","createPinia","ActivityCommentAction","propsData","reloadCallback","unmount","$destroy","registerSidebarEntries","CommentsViewObject","_CommentsViewInstance","moment","toDate","getTime","element","registerSidebarFilter","activity","CSS","escape","iconSvgInline","order","enabled","validateSidebarTab","customElements","mixin","webComponent","wrap","FilesSidebarTab","define","setupSidebarTab","_nc_files_sidebar_tabs","Map","has","l","warn","getLoggerBuilder","setApp","detectUser","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","every","r","n","getter","__esModule","d","definition","o","enumerable","f","chunkId","Promise","all","promises","u","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","setAttribute","onScriptComplete","prev","event","onerror","onload","doneFns","parentNode","removeChild","bind","target","head","appendChild","Symbol","toStringTag","nmd","children","scriptUrl","globalThis","importScripts","currentScript","p","baseURI","installedChunks","installedChunkData","promise","reject","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file