From a1503481f388c0aad82d7d1e33e97869fe2e3f17 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Mon, 5 Jan 2026 23:06:46 +0100 Subject: [PATCH 1/2] fix(comments): adjust Activity integration for changed Node API The activity app integration was changed to use the files Node API instead of the legacy FileInfo API. So the comments app needs to be adjusted for it. Signed-off-by: Ferdinand Thiessen --- apps/comments/src/comments-activity-tab.ts | 24 ++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) 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, }, }) From 9e2058d1991b38a1bd935351dcfcfd7d0929cc80 Mon Sep 17 00:00:00 2001 From: nextcloud-command Date: Mon, 12 Jan 2026 08:38:06 +0000 Subject: [PATCH 2/2] chore(assets): Recompile assets Signed-off-by: nextcloud-command --- dist/comments-comments-tab.js | 4 ++-- dist/comments-comments-tab.js.map | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) 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\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","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\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\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","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\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