From 0535a95efbf5e23bf9fcb1226779dd07004890fa Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Wed, 31 Jul 2024 16:52:24 +0200 Subject: [PATCH] fix(systemtags): Correctly set the display name for the Nextcloud node Signed-off-by: Ferdinand Thiessen Signed-off-by: nextcloud-command Signed-off-by: nextcloud-command --- apps/systemtags/src/services/systemtags.ts | 33 ++++++++++++---------- dist/systemtags-init.js | 4 +-- dist/systemtags-init.js.LICENSE.txt | 22 --------------- dist/systemtags-init.js.map | 2 +- 4 files changed, 21 insertions(+), 40 deletions(-) diff --git a/apps/systemtags/src/services/systemtags.ts b/apps/systemtags/src/services/systemtags.ts index 4e81ec7dce035..27a8b1c6874bf 100644 --- a/apps/systemtags/src/services/systemtags.ts +++ b/apps/systemtags/src/services/systemtags.ts @@ -19,33 +19,36 @@ * along with this program. If not, see . * */ +import type { ContentsWithRoot } from '@nextcloud/files' import type { FileStat, ResponseDataDetailed } from 'webdav' import type { TagWithId } from '../types' -import { Folder, type ContentsWithRoot, Permission, getDavNameSpaces, getDavProperties } from '@nextcloud/files' -import { generateRemoteUrl } from '@nextcloud/router' import { getCurrentUser } from '@nextcloud/auth' - +import { Folder, Permission, getDavNameSpaces, getDavProperties, davGetClient, davResultToNode, davRemoteURL, davRootPath } from '@nextcloud/files' import { fetchTags } from './api' -import { getClient } from '../../../files/src/services/WebdavClient' -import { resultToNode } from '../../../files/src/services/Files' + +const rootPath = '/systemtags' + +const client = davGetClient() +const resultToNode = (node: FileStat) => davResultToNode(node) const formatReportPayload = (tagId: number) => ` ${getDavProperties()} - - ${tagId} - + + ${tagId} + ` const tagToNode = function(tag: TagWithId): Folder { return new Folder({ id: tag.id, - source: generateRemoteUrl('dav/systemtags/' + tag.id), - owner: getCurrentUser()?.uid as string, - root: '/systemtags', + source: `${davRemoteURL}${rootPath}/${tag.id}`, + owner: String(getCurrentUser()?.uid ?? 'anonymous'), + root: rootPath, + displayname: tag.displayName, permissions: Permission.READ, attributes: { ...tag, @@ -62,16 +65,16 @@ export const getContents = async (path = '/'): Promise => { return { folder: new Folder({ id: 0, - source: generateRemoteUrl('dav/systemtags'), + source: `${davRemoteURL}${rootPath}`, owner: getCurrentUser()?.uid as string, - root: '/systemtags', + root: rootPath, permissions: Permission.NONE, }), contents: tagsCache.map(tagToNode), } } - const tagId = parseInt(path.replace('/', ''), 10) + const tagId = parseInt(path.split('/', 2)[0]) const tag = tagsCache.find(tag => tag.id === tagId) if (!tag) { @@ -79,7 +82,7 @@ export const getContents = async (path = '/'): Promise => { } const folder = tagToNode(tag) - const contentsResponse = await getClient().getDirectoryContents('/', { + const contentsResponse = await client.getDirectoryContents(davRootPath, { details: true, // Only filter favorites if we're at the root data: formatReportPayload(tagId), diff --git a/dist/systemtags-init.js b/dist/systemtags-init.js index 3d755656fcd81..f9e0306be0db5 100644 --- a/dist/systemtags-init.js +++ b/dist/systemtags-init.js @@ -1,3 +1,3 @@ /*! For license information please see systemtags-init.js.LICENSE.txt */ -(()=>{"use strict";var e,t={93562:(e,t,n)=>{var s=n(92320),i=n(53334),r=n(85072),o=n.n(r),a=n(97825),l=n.n(a),d=n(77659),c=n.n(d),A=n(55056),u=n.n(A),p=n(10540),m=n.n(p),f=n(41113),g=n.n(f),h=n(73911),v={};v.styleTagTransform=g(),v.setAttributes=u(),v.insert=c().bind(null,"head"),v.domAPI=l(),v.insertStyleElement=m(),o()(h.A,v),h.A&&h.A.locals&&h.A.locals;const y=function(e){var t;const n=null===(t=e.attributes)||void 0===t||null===(t=t["system-tags"])||void 0===t?void 0:t["system-tag"];return void 0===n?[]:[n].flat()},C=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=document.createElement("li");return n.classList.add("files-list__system-tag"),n.textContent=e,t&&n.classList.add("files-list__system-tag--more"),n},w=new s.hY({id:"system-tags",displayName:()=>"",iconSvgInline:()=>"",enabled(e){if(1!==e.length)return!1;const t=e[0];return 0!==y(t).length},exec:async()=>null,async renderInline(e){const t=y(e);if(0===t.length)return null;const n=document.createElement("ul");if(n.classList.add("files-list__system-tags"),1===t.length)n.setAttribute("aria-label",(0,i.Tl)("files","This file has the tag {tag}",{tag:t[0]}));else{const e=t.slice(0,-1).join(", "),s=t[t.length-1];n.setAttribute("aria-label",(0,i.Tl)("files","This file has the tags {firstTags} and {lastTag}",{firstTags:e,lastTag:s}))}if(n.append(C(t[0])),t.length>1){const e=C("+"+(t.length-1),!0);e.setAttribute("title",t.slice(1).join(", ")),n.append(e)}return n},order:0});(0,s.Yc)("nc:system-tags"),(0,s.Gg)(w);var b=n(63814),x=n(21777),T=(n(26287),n(44719));const _=(0,b.dC)("dav"),L=(0,T.UU)(_),B=e=>{L.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:null!=e?e:""})};(0,x.zo)(B),B((0,x.do)());var O=n(71654),P=n(53529);const S=(0,P.YK)().setApp("systemtags").detectUser().build();var E;const R="/files/".concat(null===(E=(0,x.HW)())||void 0===E?void 0:E.uid),j=(0,b.dC)("dav"+R),z=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:j;const t=(0,T.UU)(e),n=e=>{null==t||t.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:null!=e?e:""})};return(0,x.zo)(n),n((0,x.do)()),(0,T.Gu)().patch("fetch",((e,t)=>{const n=t.headers;return null!=n&&n.method&&(t.method=n.method,delete n.method),fetch(e,t)})),t};n(36117),(0,P.YK)().setApp("files").detectUser().build(),z();const I=function(e){var t;const n=null===(t=(0,x.HW)())||void 0===t?void 0:t.uid;if(!n)throw new Error("No user id found");const i=e.props,r=(0,s.vb)(null==i?void 0:i.permissions),o=String(i["owner-id"]||n),a=(0,b.dC)("dav"+R+e.filename),l={id:(null==i?void 0:i.fileid)<0?function(e){let t=0;for(let n=0;n>>0}(a):(null==i?void 0:i.fileid)||0,source:a,mtime:new Date(e.lastmod),mime:e.mime||"application/octet-stream",size:(null==i?void 0:i.size)||0,permissions:r,owner:o,root:R,attributes:{...e,...i,"owner-id":o,"owner-display-name":String(i["owner-display-name"]),hasPreview:!(null==i||!i["has-preview"]),failed:(null==i?void 0:i.fileid)<0}};return delete l.attributes.props,"file"===e.type?new s.ZH(l):new s.vd(l)},N=e=>'\n\n\t\n\t\t").concat((0,s.VX)(),"\n\t\n \n ").concat(e,"\n \n"),U=function(e){var t;return new s.vd({id:e.id,source:(0,b.dC)("dav/systemtags/"+e.id),owner:null===(t=(0,x.HW)())||void 0===t?void 0:t.uid,root:"/systemtags",permissions:s.aX.READ,attributes:{...e,"is-tag":!0}})};(0,s.bh)().register(new s.Ss({id:"tags",name:(0,i.Tl)("systemtags","Tags"),caption:(0,i.Tl)("systemtags","List of tags and their associated files and folders."),emptyTitle:(0,i.Tl)("systemtags","No tags found"),emptyCaption:(0,i.Tl)("systemtags","Tags you have created will show up here."),icon:'',order:25,getContents:async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/";const t=(await(async()=>{try{const{data:e}=await L.getDirectoryContents("/systemtags",{data:'\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n',details:!0,glob:"/systemtags/*"});return(e=>e.map((e=>{let{props:t}=e;return Object.fromEntries(Object.entries(t).map((e=>{let[t,n]=e;return[(0,O.A)(t),"displayName"===(0,O.A)(t)?String(n):n]})))})))(e)}catch(e){throw S.error((0,i.Tl)("systemtags","Failed to load tags"),{error:e}),new Error((0,i.Tl)("systemtags","Failed to load tags"))}})()).filter((e=>e.userVisible));var n;if("/"===e)return{folder:new s.vd({id:0,source:(0,b.dC)("dav/systemtags"),owner:null===(n=(0,x.HW)())||void 0===n?void 0:n.uid,root:"/systemtags",permissions:s.aX.NONE}),contents:t.map(U)};const r=parseInt(e.replace("/",""),10),o=t.find((e=>e.id===r));if(!o)throw new Error("Tag not found");return{folder:U(o),contents:(await z().getDirectoryContents("/",{details:!0,data:N(r),headers:{method:"REPORT"}})).data.map(I)}}}))},73911:(e,t,n)=>{n.d(t,{A:()=>a});var s=n(71354),i=n.n(s),r=n(76314),o=n.n(r)()(i());o.push([e.id,".files-list__system-tags{--min-size: 32px;display:none;justify-content:center;align-items:center;min-width:calc(var(--min-size)*2);max-width:300px}.files-list__system-tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}.files-list__system-tag--more{overflow:visible;text-overflow:initial}.files-list__system-tag+.files-list__system-tag{margin-left:5px}@media(min-width: 512px){.files-list__system-tags{display:flex}}","",{version:3,sources:["webpack://./apps/systemtags/src/css/fileEntryInlineSystemTags.scss"],names:[],mappings:"AAsBA,yBACC,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,iCAAA,CACA,eAAA,CAGD,wBACC,gBAAA,CACA,gBAAA,CACA,uCAAA,CACA,gCAAA,CACA,mCAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,gBAAA,CACA,iBAAA,CAEA,8BACC,gBAAA,CACA,qBAAA,CAID,gDACC,eAAA,CAIF,yBACC,yBACC,YAAA,CAAA",sourcesContent:["/**\n * @copyright Copyright (c) 2023 Lucas Azevedo \n *\n * @author Lucas Azevedo \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n.files-list__system-tags {\n\t--min-size: 32px;\n\tdisplay: none;\n\tjustify-content: center;\n\talign-items: center;\n\tmin-width: calc(var(--min-size) * 2);\n\tmax-width: 300px;\n}\n\n.files-list__system-tag {\n\tpadding: 5px 10px;\n\tborder: 1px solid;\n\tborder-radius: var(--border-radius-pill);\n\tborder-color: var(--color-border);\n\tcolor: var(--color-text-maxcontrast);\n\theight: var(--min-size);\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tline-height: 22px; // min-size - 2 * 5px padding\n\ttext-align: center;\n\n\t&--more {\n\t\toverflow: visible;\n\t\ttext-overflow: initial;\n\t}\n\n\t// Proper spacing if multiple shown\n\t& + .files-list__system-tag {\n\t\tmargin-left: 5px;\n\t}\n}\n\n@media (min-width: 512px) {\n\t.files-list__system-tags {\n\t\tdisplay: flex;\n\t}\n}\n"],sourceRoot:""}]);const a=o}},n={};function s(e){var i=n[e];if(void 0!==i)return i.exports;var r=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(r.exports,r,r.exports,s),r.loaded=!0,r.exports}s.m=t,e=[],s.O=(t,n,i,r)=>{if(!n){var o=1/0;for(c=0;c=r)&&Object.keys(s.O).every((e=>s.O[e](n[l])))?n.splice(l--,1):(a=!1,r0&&e[c-1][2]>r;c--)e[c]=e[c-1];e[c]=[n,i,r]},s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.e=()=>Promise.resolve(),s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),s.j=2766,(()=>{s.b=document.baseURI||self.location.href;var e={2766:0};s.O.j=t=>0===e[t];var t=(t,n)=>{var i,r,o=n[0],a=n[1],l=n[2],d=0;if(o.some((t=>0!==e[t]))){for(i in a)s.o(a,i)&&(s.m[i]=a[i]);if(l)var c=l(s)}for(t&&t(n);ds(93562)));i=s.O(i)})(); -//# sourceMappingURL=systemtags-init.js.map?v=6bbc06778b6f02105ba8 \ No newline at end of file +(()=>{"use strict";var t,e={49611:(t,e,n)=>{var s=n(92320),i=n(53334),r=n(85072),o=n.n(r),a=n(97825),l=n.n(a),d=n(77659),c=n.n(d),A=n(55056),g=n.n(A),p=n(10540),u=n.n(p),m=n(41113),f=n.n(m),h=n(73911),v={};v.styleTagTransform=f(),v.setAttributes=g(),v.insert=c().bind(null,"head"),v.domAPI=l(),v.insertStyleElement=u(),o()(h.A,v),h.A&&h.A.locals&&h.A.locals;const y=function(t){var e;const n=null===(e=t.attributes)||void 0===e||null===(e=e["system-tags"])||void 0===e?void 0:e["system-tag"];return void 0===n?[]:[n].flat()},C=function(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=document.createElement("li");return n.classList.add("files-list__system-tag"),n.textContent=t,e&&n.classList.add("files-list__system-tag--more"),n},b=new s.hY({id:"system-tags",displayName:()=>"",iconSvgInline:()=>"",enabled(t){if(1!==t.length)return!1;const e=t[0];return 0!==y(e).length},exec:async()=>null,async renderInline(t){const e=y(t);if(0===e.length)return null;const n=document.createElement("ul");if(n.classList.add("files-list__system-tags"),1===e.length)n.setAttribute("aria-label",(0,i.Tl)("files","This file has the tag {tag}",{tag:e[0]}));else{const t=e.slice(0,-1).join(", "),s=e[e.length-1];n.setAttribute("aria-label",(0,i.Tl)("files","This file has the tags {firstTags} and {lastTag}",{firstTags:t,lastTag:s}))}if(n.append(C(e[0])),e.length>1){const t=C("+"+(e.length-1),!0);t.setAttribute("title",e.slice(1).join(", ")),n.append(t)}return n},order:0});(0,s.Yc)("nc:system-tags"),(0,s.Gg)(b);var w=n(21777),x=(n(26287),n(44719));const T=(0,n(63814).dC)("dav"),_=(0,x.UU)(T),L=t=>{_.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:null!=t?t:""})};(0,w.zo)(L),L((0,w.do)());var B=n(71654);const O=(0,n(53529).YK)().setApp("systemtags").detectUser().build(),P="/systemtags",S=(0,s.H4)(),j=t=>(0,s.Al)(t),E=t=>'\n\n\t\n\t\t").concat((0,s.VX)(),"\n\t\n\t\n\t\t").concat(t,"\n\t\n"),I=function(t){var e,n;return new s.vd({id:t.id,source:"".concat(s.PY).concat(P,"/").concat(t.id),owner:String(null!==(e=null===(n=(0,w.HW)())||void 0===n?void 0:n.uid)&&void 0!==e?e:"anonymous"),root:P,displayname:t.displayName,permissions:s.aX.READ,attributes:{...t,"is-tag":!0}})};(0,s.bh)().register(new s.Ss({id:"tags",name:(0,i.Tl)("systemtags","Tags"),caption:(0,i.Tl)("systemtags","List of tags and their associated files and folders."),emptyTitle:(0,i.Tl)("systemtags","No tags found"),emptyCaption:(0,i.Tl)("systemtags","Tags you have created will show up here."),icon:'',order:25,getContents:async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/";const e=(await(async()=>{try{const{data:t}=await _.getDirectoryContents("/systemtags",{data:'\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n',details:!0,glob:"/systemtags/*"});return(t=>t.map((t=>{let{props:e}=t;return Object.fromEntries(Object.entries(e).map((t=>{let[e,n]=t;return[(0,B.A)(e),"displayName"===(0,B.A)(e)?String(n):n]})))})))(t)}catch(t){throw O.error((0,i.Tl)("systemtags","Failed to load tags"),{error:t}),new Error((0,i.Tl)("systemtags","Failed to load tags"))}})()).filter((t=>t.userVisible));var n;if("/"===t)return{folder:new s.vd({id:0,source:"".concat(s.PY).concat(P),owner:null===(n=(0,w.HW)())||void 0===n?void 0:n.uid,root:P,permissions:s.aX.NONE}),contents:e.map(I)};const r=parseInt(t.split("/",2)[0]),o=e.find((t=>t.id===r));if(!o)throw new Error("Tag not found");return{folder:I(o),contents:(await S.getDirectoryContents(s.lJ,{details:!0,data:E(r),headers:{method:"REPORT"}})).data.map(j)}}}))},73911:(t,e,n)=>{n.d(e,{A:()=>a});var s=n(71354),i=n.n(s),r=n(76314),o=n.n(r)()(i());o.push([t.id,".files-list__system-tags{--min-size: 32px;display:none;justify-content:center;align-items:center;min-width:calc(var(--min-size)*2);max-width:300px}.files-list__system-tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}.files-list__system-tag--more{overflow:visible;text-overflow:initial}.files-list__system-tag+.files-list__system-tag{margin-left:5px}@media(min-width: 512px){.files-list__system-tags{display:flex}}","",{version:3,sources:["webpack://./apps/systemtags/src/css/fileEntryInlineSystemTags.scss"],names:[],mappings:"AAsBA,yBACC,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,iCAAA,CACA,eAAA,CAGD,wBACC,gBAAA,CACA,gBAAA,CACA,uCAAA,CACA,gCAAA,CACA,mCAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,gBAAA,CACA,iBAAA,CAEA,8BACC,gBAAA,CACA,qBAAA,CAID,gDACC,eAAA,CAIF,yBACC,yBACC,YAAA,CAAA",sourcesContent:["/**\n * @copyright Copyright (c) 2023 Lucas Azevedo \n *\n * @author Lucas Azevedo \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\n.files-list__system-tags {\n\t--min-size: 32px;\n\tdisplay: none;\n\tjustify-content: center;\n\talign-items: center;\n\tmin-width: calc(var(--min-size) * 2);\n\tmax-width: 300px;\n}\n\n.files-list__system-tag {\n\tpadding: 5px 10px;\n\tborder: 1px solid;\n\tborder-radius: var(--border-radius-pill);\n\tborder-color: var(--color-border);\n\tcolor: var(--color-text-maxcontrast);\n\theight: var(--min-size);\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tline-height: 22px; // min-size - 2 * 5px padding\n\ttext-align: center;\n\n\t&--more {\n\t\toverflow: visible;\n\t\ttext-overflow: initial;\n\t}\n\n\t// Proper spacing if multiple shown\n\t& + .files-list__system-tag {\n\t\tmargin-left: 5px;\n\t}\n}\n\n@media (min-width: 512px) {\n\t.files-list__system-tags {\n\t\tdisplay: flex;\n\t}\n}\n"],sourceRoot:""}]);const a=o}},n={};function s(t){var i=n[t];if(void 0!==i)return i.exports;var r=n[t]={id:t,loaded:!1,exports:{}};return e[t].call(r.exports,r,r.exports,s),r.loaded=!0,r.exports}s.m=e,t=[],s.O=(e,n,i,r)=>{if(!n){var o=1/0;for(c=0;c=r)&&Object.keys(s.O).every((t=>s.O[t](n[l])))?n.splice(l--,1):(a=!1,r0&&t[c-1][2]>r;c--)t[c]=t[c-1];t[c]=[n,i,r]},s.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},s.d=(t,e)=>{for(var n in e)s.o(e,n)&&!s.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},s.e=()=>Promise.resolve(),s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},s.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),s.j=2766,(()=>{s.b=document.baseURI||self.location.href;var t={2766:0};s.O.j=e=>0===t[e];var e=(e,n)=>{var i,r,o=n[0],a=n[1],l=n[2],d=0;if(o.some((e=>0!==t[e]))){for(i in a)s.o(a,i)&&(s.m[i]=a[i]);if(l)var c=l(s)}for(e&&e(n);ds(49611)));i=s.O(i)})(); +//# sourceMappingURL=systemtags-init.js.map?v=5a1e047867ad9b4b5e93 \ No newline at end of file diff --git a/dist/systemtags-init.js.LICENSE.txt b/dist/systemtags-init.js.LICENSE.txt index 94216e469b4cc..e8e4083ede246 100644 --- a/dist/systemtags-init.js.LICENSE.txt +++ b/dist/systemtags-init.js.LICENSE.txt @@ -19,25 +19,3 @@ * along with this program. If not, see . * */ - -/** - * @copyright Copyright (c) 2023 John Molakvoæ - * - * @author John Molakvoæ - * - * @license AGPL-3.0-or-later - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ diff --git a/dist/systemtags-init.js.map b/dist/systemtags-init.js.map index 72e78171e8f89..cf95aa32d1492 100644 --- a/dist/systemtags-init.js.map +++ b/dist/systemtags-init.js.map @@ -1 +1 @@ -{"version":3,"file":"systemtags-init.js?v=6bbc06778b6f02105ba8","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack://nextcloud/./apps/systemtags/src/css/fileEntryInlineSystemTags.scss?0a01","webpack:///nextcloud/apps/systemtags/src/actions/inlineSystemTagsAction.ts","webpack:///nextcloud/apps/systemtags/src/services/davClient.ts","webpack:///nextcloud/apps/systemtags/src/logger.ts","webpack:///nextcloud/apps/files/src/services/WebdavClient.ts","webpack:///nextcloud/apps/files/src/logger.js","webpack:///nextcloud/apps/files/src/services/Files.ts","webpack:///nextcloud/apps/files/src/utils/hashUtils.ts","webpack:///nextcloud/apps/systemtags/src/services/systemtags.ts","webpack:///nextcloud/apps/systemtags/src/init.ts","webpack:///nextcloud/apps/systemtags/src/services/api.ts","webpack:///nextcloud/apps/systemtags/src/utils.ts","webpack:///nextcloud/apps/systemtags/src/css/fileEntryInlineSystemTags.scss","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./fileEntryInlineSystemTags.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./fileEntryInlineSystemTags.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2023 Lucas Azevedo \n *\n * @author Lucas Azevedo \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { FileAction, Node, registerDavProperty, registerFileAction } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport '../css/fileEntryInlineSystemTags.scss';\nconst getNodeSystemTags = function (node) {\n const tags = node.attributes?.['system-tags']?.['system-tag'];\n if (tags === undefined) {\n return [];\n }\n return [tags].flat();\n};\nconst renderTag = function (tag, isMore = false) {\n const tagElement = document.createElement('li');\n tagElement.classList.add('files-list__system-tag');\n tagElement.textContent = tag;\n if (isMore) {\n tagElement.classList.add('files-list__system-tag--more');\n }\n return tagElement;\n};\nexport const action = new FileAction({\n id: 'system-tags',\n displayName: () => '',\n iconSvgInline: () => '',\n enabled(nodes) {\n // Only show the action on single nodes\n if (nodes.length !== 1) {\n return false;\n }\n const node = nodes[0];\n const tags = getNodeSystemTags(node);\n // Only show the action if the node has system tags\n if (tags.length === 0) {\n return false;\n }\n return true;\n },\n exec: async () => null,\n async renderInline(node) {\n // Ensure we have the system tags as an array\n const tags = getNodeSystemTags(node);\n if (tags.length === 0) {\n return null;\n }\n const systemTagsElement = document.createElement('ul');\n systemTagsElement.classList.add('files-list__system-tags');\n if (tags.length === 1) {\n systemTagsElement.setAttribute('aria-label', t('files', 'This file has the tag {tag}', { tag: tags[0] }));\n }\n else {\n const firstTags = tags.slice(0, -1).join(', ');\n const lastTag = tags[tags.length - 1];\n systemTagsElement.setAttribute('aria-label', t('files', 'This file has the tags {firstTags} and {lastTag}', { firstTags, lastTag }));\n }\n systemTagsElement.append(renderTag(tags[0]));\n // More tags than the one we're showing\n if (tags.length > 1) {\n const moreTagElement = renderTag('+' + (tags.length - 1), true);\n moreTagElement.setAttribute('title', tags.slice(1).join(', '));\n systemTagsElement.append(moreTagElement);\n }\n return systemTagsElement;\n },\n order: 0,\n});\nregisterDavProperty('nc:system-tags');\nregisterFileAction(action);\n","/**\n * @copyright 2023 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { createClient } from 'webdav';\nimport { generateRemoteUrl } from '@nextcloud/router';\nimport { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth';\n// init webdav client\nconst rootUrl = generateRemoteUrl('dav');\nexport const davClient = createClient(rootUrl);\n// set CSRF token header\nconst setHeaders = (token) => {\n davClient.setHeaders({\n // Add this so the server knows it is an request from the browser\n 'X-Requested-With': 'XMLHttpRequest',\n // Inject user auth\n requesttoken: token ?? '',\n });\n};\n// refresh headers when request token changes\nonRequestTokenUpdate(setHeaders);\nsetHeaders(getRequestToken());\n","/**\n * @copyright 2023 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport const logger = getLoggerBuilder()\n .setApp('systemtags')\n .detectUser()\n .build();\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { createClient, getPatcher } from 'webdav';\nimport { generateRemoteUrl } from '@nextcloud/router';\nimport { getCurrentUser, getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth';\nexport const rootPath = `/files/${getCurrentUser()?.uid}`;\nexport const defaultRootUrl = generateRemoteUrl('dav' + rootPath);\nexport const getClient = (rootUrl = defaultRootUrl) => {\n const client = createClient(rootUrl);\n // set CSRF token header\n const setHeaders = (token) => {\n client?.setHeaders({\n // Add this so the server knows it is an request from the browser\n 'X-Requested-With': 'XMLHttpRequest',\n // Inject user auth\n requesttoken: token ?? '',\n });\n };\n // refresh headers when request token changes\n onRequestTokenUpdate(setHeaders);\n setHeaders(getRequestToken());\n /**\n * Allow to override the METHOD to support dav REPORT\n *\n * @see https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/request.ts\n */\n const patcher = getPatcher();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // https://github.com/perry-mitchell/hot-patcher/issues/6\n patcher.patch('fetch', (url, options) => {\n const headers = options.headers;\n if (headers?.method) {\n options.method = headers.method;\n delete headers.method;\n }\n return fetch(url, options);\n });\n return client;\n};\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n","import { CancelablePromise } from 'cancelable-promise';\nimport { File, Folder, davParsePermissions, davGetDefaultPropfind } from '@nextcloud/files';\nimport { generateRemoteUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { getClient, rootPath } from './WebdavClient.ts';\nimport { hashCode } from '../utils/hashUtils';\nimport logger from '../logger';\nconst client = getClient();\nexport const resultToNode = function (node) {\n const userId = getCurrentUser()?.uid;\n if (!userId) {\n throw new Error('No user id found');\n }\n const props = node.props;\n const permissions = davParsePermissions(props?.permissions);\n const owner = String(props['owner-id'] || userId);\n const source = generateRemoteUrl('dav' + rootPath + node.filename);\n const id = props?.fileid < 0\n ? hashCode(source)\n : props?.fileid || 0;\n const nodeData = {\n id,\n source,\n mtime: new Date(node.lastmod),\n mime: node.mime || 'application/octet-stream',\n size: props?.size || 0,\n permissions,\n owner,\n root: rootPath,\n attributes: {\n ...node,\n ...props,\n 'owner-id': owner,\n 'owner-display-name': String(props['owner-display-name']),\n hasPreview: !!props?.['has-preview'],\n failed: props?.fileid < 0,\n },\n };\n delete nodeData.attributes.props;\n return node.type === 'file'\n ? new File(nodeData)\n : new Folder(nodeData);\n};\nexport const getContents = (path = '/') => {\n const controller = new AbortController();\n const propfindPayload = davGetDefaultPropfind();\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n onCancel(() => controller.abort());\n try {\n const contentsResponse = await client.getDirectoryContents(path, {\n details: true,\n data: propfindPayload,\n includeSelf: true,\n signal: controller.signal,\n });\n const root = contentsResponse.data[0];\n const contents = contentsResponse.data.slice(1);\n if (root.filename !== path) {\n throw new Error('Root node does not match requested path');\n }\n resolve({\n folder: resultToNode(root),\n contents: contents.map(result => {\n try {\n return resultToNode(result);\n }\n catch (error) {\n logger.error(`Invalid node detected '${result.basename}'`, { error });\n return null;\n }\n }).filter(Boolean),\n });\n }\n catch (error) {\n reject(error);\n }\n });\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nexport const hashCode = function (str) {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash = ((hash << 5) - hash + str.charCodeAt(i)) | 0;\n }\n return (hash >>> 0);\n};\n","import { Folder, Permission, getDavNameSpaces, getDavProperties } from '@nextcloud/files';\nimport { generateRemoteUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { fetchTags } from './api';\nimport { getClient } from '../../../files/src/services/WebdavClient';\nimport { resultToNode } from '../../../files/src/services/Files';\nconst formatReportPayload = (tagId) => `\n\n\t\n\t\t${getDavProperties()}\n\t\n \n ${tagId}\n \n`;\nconst tagToNode = function (tag) {\n return new Folder({\n id: tag.id,\n source: generateRemoteUrl('dav/systemtags/' + tag.id),\n owner: getCurrentUser()?.uid,\n root: '/systemtags',\n permissions: Permission.READ,\n attributes: {\n ...tag,\n 'is-tag': true,\n },\n });\n};\nexport const getContents = async (path = '/') => {\n // List tags in the root\n const tagsCache = (await fetchTags()).filter(tag => tag.userVisible);\n if (path === '/') {\n return {\n folder: new Folder({\n id: 0,\n source: generateRemoteUrl('dav/systemtags'),\n owner: getCurrentUser()?.uid,\n root: '/systemtags',\n permissions: Permission.NONE,\n }),\n contents: tagsCache.map(tagToNode),\n };\n }\n const tagId = parseInt(path.replace('/', ''), 10);\n const tag = tagsCache.find(tag => tag.id === tagId);\n if (!tag) {\n throw new Error('Tag not found');\n }\n const folder = tagToNode(tag);\n const contentsResponse = await getClient().getDirectoryContents('/', {\n details: true,\n // Only filter favorites if we're at the root\n data: formatReportPayload(tagId),\n headers: {\n // Patched in WebdavClient.ts\n method: 'REPORT',\n },\n });\n return {\n folder,\n contents: contentsResponse.data.map(resultToNode),\n };\n};\n","/**\n * @copyright Copyright (c) 2016 Roeland Jago Douma \n *\n * @author John Molakvoæ \n * @author Roeland Jago Douma \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport './actions/inlineSystemTagsAction.js';\nimport { translate as t } from '@nextcloud/l10n';\nimport { View, getNavigation } from '@nextcloud/files';\nimport TagMultipleSvg from '@mdi/svg/svg/tag-multiple.svg?raw';\nimport { getContents } from './services/systemtags.js';\nconst Navigation = getNavigation();\nNavigation.register(new View({\n id: 'tags',\n name: t('systemtags', 'Tags'),\n caption: t('systemtags', 'List of tags and their associated files and folders.'),\n emptyTitle: t('systemtags', 'No tags found'),\n emptyCaption: t('systemtags', 'Tags you have created will show up here.'),\n icon: TagMultipleSvg,\n order: 25,\n getContents,\n}));\n","/**\n * @copyright 2023 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport axios from '@nextcloud/axios';\nimport { generateUrl } from '@nextcloud/router';\nimport { translate as t } from '@nextcloud/l10n';\nimport { davClient } from './davClient.js';\nimport { formatTag, parseIdFromLocation, parseTags } from '../utils';\nimport { logger } from '../logger.js';\nexport const fetchTagsPayload = `\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n`;\nexport const fetchTags = async () => {\n const path = '/systemtags';\n try {\n const { data: tags } = await davClient.getDirectoryContents(path, {\n data: fetchTagsPayload,\n details: true,\n glob: '/systemtags/*', // Filter out first empty tag\n });\n return parseTags(tags);\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to load tags'), { error });\n throw new Error(t('systemtags', 'Failed to load tags'));\n }\n};\nexport const fetchLastUsedTagIds = async () => {\n const url = generateUrl('/apps/systemtags/lastused');\n try {\n const { data: lastUsedTagIds } = await axios.get(url);\n return lastUsedTagIds.map(Number);\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to load last used tags'), { error });\n throw new Error(t('systemtags', 'Failed to load last used tags'));\n }\n};\n/**\n * @return created tag id\n */\nexport const createTag = async (tag) => {\n const path = '/systemtags';\n const tagToPost = formatTag(tag);\n try {\n const { headers } = await davClient.customRequest(path, {\n method: 'POST',\n data: tagToPost,\n });\n const contentLocation = headers.get('content-location');\n if (contentLocation) {\n return parseIdFromLocation(contentLocation);\n }\n logger.error(t('systemtags', 'Missing \"Content-Location\" header'));\n throw new Error(t('systemtags', 'Missing \"Content-Location\" header'));\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to create tag'), { error });\n throw new Error(t('systemtags', 'Failed to create tag'));\n }\n};\nexport const updateTag = async (tag) => {\n const path = '/systemtags/' + tag.id;\n const data = `\n\t\n\t\t\n\t\t\t\n\t\t\t\t${tag.displayName}\n\t\t\t\t${tag.userVisible}\n\t\t\t\t${tag.userAssignable}\n\t\t\t\n\t\t\n\t`;\n try {\n await davClient.customRequest(path, {\n method: 'PROPPATCH',\n data,\n });\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to update tag'), { error });\n throw new Error(t('systemtags', 'Failed to update tag'));\n }\n};\nexport const deleteTag = async (tag) => {\n const path = '/systemtags/' + tag.id;\n try {\n await davClient.deleteFile(path);\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to delete tag'), { error });\n throw new Error(t('systemtags', 'Failed to delete tag'));\n }\n};\n","/**\n * @copyright 2023 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport camelCase from 'camelcase';\nexport const defaultBaseTag = {\n userVisible: true,\n userAssignable: true,\n canAssign: true,\n};\nexport const parseTags = (tags) => {\n return tags.map(({ props }) => Object.fromEntries(Object.entries(props)\n .map(([key, value]) => [camelCase(key), camelCase(key) === 'displayName' ? String(value) : value])));\n};\n/**\n * Parse id from `Content-Location` header\n * @param url URL to parse\n */\nexport const parseIdFromLocation = (url) => {\n const queryPos = url.indexOf('?');\n if (queryPos > 0) {\n url = url.substring(0, queryPos);\n }\n const parts = url.split('/');\n let result;\n do {\n result = parts[parts.length - 1];\n parts.pop();\n // note: first result can be empty when there is a trailing slash,\n // so we take the part before that\n } while (!result && parts.length > 0);\n return Number(result);\n};\nexport const formatTag = (initialTag) => {\n const tag = { ...initialTag };\n if (tag.name && !tag.displayName) {\n return tag;\n }\n tag.name = tag.displayName;\n delete tag.displayName;\n return tag;\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, `.files-list__system-tags{--min-size: 32px;display:none;justify-content:center;align-items:center;min-width:calc(var(--min-size)*2);max-width:300px}.files-list__system-tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}.files-list__system-tag--more{overflow:visible;text-overflow:initial}.files-list__system-tag+.files-list__system-tag{margin-left:5px}@media(min-width: 512px){.files-list__system-tags{display:flex}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/systemtags/src/css/fileEntryInlineSystemTags.scss\"],\"names\":[],\"mappings\":\"AAsBA,yBACC,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,iCAAA,CACA,eAAA,CAGD,wBACC,gBAAA,CACA,gBAAA,CACA,uCAAA,CACA,gCAAA,CACA,mCAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,gBAAA,CACA,iBAAA,CAEA,8BACC,gBAAA,CACA,qBAAA,CAID,gDACC,eAAA,CAIF,yBACC,yBACC,YAAA,CAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2023 Lucas Azevedo \\n *\\n * @author Lucas Azevedo \\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n.files-list__system-tags {\\n\\t--min-size: 32px;\\n\\tdisplay: none;\\n\\tjustify-content: center;\\n\\talign-items: center;\\n\\tmin-width: calc(var(--min-size) * 2);\\n\\tmax-width: 300px;\\n}\\n\\n.files-list__system-tag {\\n\\tpadding: 5px 10px;\\n\\tborder: 1px solid;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tborder-color: var(--color-border);\\n\\tcolor: var(--color-text-maxcontrast);\\n\\theight: var(--min-size);\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n\\tline-height: 22px; // min-size - 2 * 5px padding\\n\\ttext-align: center;\\n\\n\\t&--more {\\n\\t\\toverflow: visible;\\n\\t\\ttext-overflow: initial;\\n\\t}\\n\\n\\t// Proper spacing if multiple shown\\n\\t& + .files-list__system-tag {\\n\\t\\tmargin-left: 5px;\\n\\t}\\n}\\n\\n@media (min-width: 512px) {\\n\\t.files-list__system-tags {\\n\\t\\tdisplay: flex;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2766;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2766: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(93562)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","getNodeSystemTags","node","_node$attributes","tags","attributes","undefined","flat","renderTag","tag","isMore","arguments","length","tagElement","document","createElement","classList","add","textContent","action","FileAction","id","displayName","iconSvgInline","enabled","nodes","exec","async","renderInline","systemTagsElement","setAttribute","t","firstTags","slice","join","lastTag","append","moreTagElement","order","registerDavProperty","registerFileAction","rootUrl","generateRemoteUrl","davClient","createClient","setHeaders","token","requesttoken","onRequestTokenUpdate","getRequestToken","logger","getLoggerBuilder","setApp","detectUser","build","rootPath","concat","_getCurrentUser","getCurrentUser","uid","defaultRootUrl","getClient","client","getPatcher","patch","url","headers","method","fetch","resultToNode","userId","Error","props","permissions","davParsePermissions","owner","String","source","filename","nodeData","fileid","str","hash","i","charCodeAt","hashCode","mtime","Date","lastmod","mime","size","root","hasPreview","failed","type","File","Folder","formatReportPayload","tagId","getDavNameSpaces","getDavProperties","tagToNode","Permission","READ","getNavigation","register","View","name","caption","emptyTitle","emptyCaption","icon","getContents","path","tagsCache","data","getDirectoryContents","details","glob","map","_ref","Object","fromEntries","entries","_ref2","key","value","camelCase","parseTags","error","fetchTags","filter","userVisible","_getCurrentUser2","folder","NONE","contents","parseInt","replace","find","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","e","Promise","resolve","g","globalThis","this","Function","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"systemtags-init.js?v=5a1e047867ad9b4b5e93","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack://nextcloud/./apps/systemtags/src/css/fileEntryInlineSystemTags.scss?0a01","webpack:///nextcloud/apps/systemtags/src/actions/inlineSystemTagsAction.ts","webpack:///nextcloud/apps/systemtags/src/services/davClient.ts","webpack:///nextcloud/apps/systemtags/src/logger.ts","webpack:///nextcloud/apps/systemtags/src/services/systemtags.ts","webpack:///nextcloud/apps/systemtags/src/init.ts","webpack:///nextcloud/apps/systemtags/src/services/api.ts","webpack:///nextcloud/apps/systemtags/src/utils.ts","webpack:///nextcloud/apps/systemtags/src/css/fileEntryInlineSystemTags.scss","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./fileEntryInlineSystemTags.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./fileEntryInlineSystemTags.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2023 Lucas Azevedo \n *\n * @author Lucas Azevedo \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { FileAction, Node, registerDavProperty, registerFileAction } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport '../css/fileEntryInlineSystemTags.scss';\nconst getNodeSystemTags = function (node) {\n const tags = node.attributes?.['system-tags']?.['system-tag'];\n if (tags === undefined) {\n return [];\n }\n return [tags].flat();\n};\nconst renderTag = function (tag, isMore = false) {\n const tagElement = document.createElement('li');\n tagElement.classList.add('files-list__system-tag');\n tagElement.textContent = tag;\n if (isMore) {\n tagElement.classList.add('files-list__system-tag--more');\n }\n return tagElement;\n};\nexport const action = new FileAction({\n id: 'system-tags',\n displayName: () => '',\n iconSvgInline: () => '',\n enabled(nodes) {\n // Only show the action on single nodes\n if (nodes.length !== 1) {\n return false;\n }\n const node = nodes[0];\n const tags = getNodeSystemTags(node);\n // Only show the action if the node has system tags\n if (tags.length === 0) {\n return false;\n }\n return true;\n },\n exec: async () => null,\n async renderInline(node) {\n // Ensure we have the system tags as an array\n const tags = getNodeSystemTags(node);\n if (tags.length === 0) {\n return null;\n }\n const systemTagsElement = document.createElement('ul');\n systemTagsElement.classList.add('files-list__system-tags');\n if (tags.length === 1) {\n systemTagsElement.setAttribute('aria-label', t('files', 'This file has the tag {tag}', { tag: tags[0] }));\n }\n else {\n const firstTags = tags.slice(0, -1).join(', ');\n const lastTag = tags[tags.length - 1];\n systemTagsElement.setAttribute('aria-label', t('files', 'This file has the tags {firstTags} and {lastTag}', { firstTags, lastTag }));\n }\n systemTagsElement.append(renderTag(tags[0]));\n // More tags than the one we're showing\n if (tags.length > 1) {\n const moreTagElement = renderTag('+' + (tags.length - 1), true);\n moreTagElement.setAttribute('title', tags.slice(1).join(', '));\n systemTagsElement.append(moreTagElement);\n }\n return systemTagsElement;\n },\n order: 0,\n});\nregisterDavProperty('nc:system-tags');\nregisterFileAction(action);\n","/**\n * @copyright 2023 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { createClient } from 'webdav';\nimport { generateRemoteUrl } from '@nextcloud/router';\nimport { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth';\n// init webdav client\nconst rootUrl = generateRemoteUrl('dav');\nexport const davClient = createClient(rootUrl);\n// set CSRF token header\nconst setHeaders = (token) => {\n davClient.setHeaders({\n // Add this so the server knows it is an request from the browser\n 'X-Requested-With': 'XMLHttpRequest',\n // Inject user auth\n requesttoken: token ?? '',\n });\n};\n// refresh headers when request token changes\nonRequestTokenUpdate(setHeaders);\nsetHeaders(getRequestToken());\n","/**\n * @copyright 2023 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport const logger = getLoggerBuilder()\n .setApp('systemtags')\n .detectUser()\n .build();\n","import { getCurrentUser } from '@nextcloud/auth';\nimport { Folder, Permission, getDavNameSpaces, getDavProperties, davGetClient, davResultToNode, davRemoteURL, davRootPath } from '@nextcloud/files';\nimport { fetchTags } from './api';\nconst rootPath = '/systemtags';\nconst client = davGetClient();\nconst resultToNode = (node) => davResultToNode(node);\nconst formatReportPayload = (tagId) => `\n\n\t\n\t\t${getDavProperties()}\n\t\n\t\n\t\t${tagId}\n\t\n`;\nconst tagToNode = function (tag) {\n return new Folder({\n id: tag.id,\n source: `${davRemoteURL}${rootPath}/${tag.id}`,\n owner: String(getCurrentUser()?.uid ?? 'anonymous'),\n root: rootPath,\n displayname: tag.displayName,\n permissions: Permission.READ,\n attributes: {\n ...tag,\n 'is-tag': true,\n },\n });\n};\nexport const getContents = async (path = '/') => {\n // List tags in the root\n const tagsCache = (await fetchTags()).filter(tag => tag.userVisible);\n if (path === '/') {\n return {\n folder: new Folder({\n id: 0,\n source: `${davRemoteURL}${rootPath}`,\n owner: getCurrentUser()?.uid,\n root: rootPath,\n permissions: Permission.NONE,\n }),\n contents: tagsCache.map(tagToNode),\n };\n }\n const tagId = parseInt(path.split('/', 2)[0]);\n const tag = tagsCache.find(tag => tag.id === tagId);\n if (!tag) {\n throw new Error('Tag not found');\n }\n const folder = tagToNode(tag);\n const contentsResponse = await client.getDirectoryContents(davRootPath, {\n details: true,\n // Only filter favorites if we're at the root\n data: formatReportPayload(tagId),\n headers: {\n // Patched in WebdavClient.ts\n method: 'REPORT',\n },\n });\n return {\n folder,\n contents: contentsResponse.data.map(resultToNode),\n };\n};\n","/**\n * @copyright Copyright (c) 2016 Roeland Jago Douma \n *\n * @author John Molakvoæ \n * @author Roeland Jago Douma \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport './actions/inlineSystemTagsAction.js';\nimport { translate as t } from '@nextcloud/l10n';\nimport { View, getNavigation } from '@nextcloud/files';\nimport TagMultipleSvg from '@mdi/svg/svg/tag-multiple.svg?raw';\nimport { getContents } from './services/systemtags.js';\nconst Navigation = getNavigation();\nNavigation.register(new View({\n id: 'tags',\n name: t('systemtags', 'Tags'),\n caption: t('systemtags', 'List of tags and their associated files and folders.'),\n emptyTitle: t('systemtags', 'No tags found'),\n emptyCaption: t('systemtags', 'Tags you have created will show up here.'),\n icon: TagMultipleSvg,\n order: 25,\n getContents,\n}));\n","/**\n * @copyright 2023 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport axios from '@nextcloud/axios';\nimport { generateUrl } from '@nextcloud/router';\nimport { translate as t } from '@nextcloud/l10n';\nimport { davClient } from './davClient.js';\nimport { formatTag, parseIdFromLocation, parseTags } from '../utils';\nimport { logger } from '../logger.js';\nexport const fetchTagsPayload = `\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n`;\nexport const fetchTags = async () => {\n const path = '/systemtags';\n try {\n const { data: tags } = await davClient.getDirectoryContents(path, {\n data: fetchTagsPayload,\n details: true,\n glob: '/systemtags/*', // Filter out first empty tag\n });\n return parseTags(tags);\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to load tags'), { error });\n throw new Error(t('systemtags', 'Failed to load tags'));\n }\n};\nexport const fetchLastUsedTagIds = async () => {\n const url = generateUrl('/apps/systemtags/lastused');\n try {\n const { data: lastUsedTagIds } = await axios.get(url);\n return lastUsedTagIds.map(Number);\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to load last used tags'), { error });\n throw new Error(t('systemtags', 'Failed to load last used tags'));\n }\n};\n/**\n * @return created tag id\n */\nexport const createTag = async (tag) => {\n const path = '/systemtags';\n const tagToPost = formatTag(tag);\n try {\n const { headers } = await davClient.customRequest(path, {\n method: 'POST',\n data: tagToPost,\n });\n const contentLocation = headers.get('content-location');\n if (contentLocation) {\n return parseIdFromLocation(contentLocation);\n }\n logger.error(t('systemtags', 'Missing \"Content-Location\" header'));\n throw new Error(t('systemtags', 'Missing \"Content-Location\" header'));\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to create tag'), { error });\n throw new Error(t('systemtags', 'Failed to create tag'));\n }\n};\nexport const updateTag = async (tag) => {\n const path = '/systemtags/' + tag.id;\n const data = `\n\t\n\t\t\n\t\t\t\n\t\t\t\t${tag.displayName}\n\t\t\t\t${tag.userVisible}\n\t\t\t\t${tag.userAssignable}\n\t\t\t\n\t\t\n\t`;\n try {\n await davClient.customRequest(path, {\n method: 'PROPPATCH',\n data,\n });\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to update tag'), { error });\n throw new Error(t('systemtags', 'Failed to update tag'));\n }\n};\nexport const deleteTag = async (tag) => {\n const path = '/systemtags/' + tag.id;\n try {\n await davClient.deleteFile(path);\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to delete tag'), { error });\n throw new Error(t('systemtags', 'Failed to delete tag'));\n }\n};\n","/**\n * @copyright 2023 Christopher Ng \n *\n * @author Christopher Ng \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport camelCase from 'camelcase';\nexport const defaultBaseTag = {\n userVisible: true,\n userAssignable: true,\n canAssign: true,\n};\nexport const parseTags = (tags) => {\n return tags.map(({ props }) => Object.fromEntries(Object.entries(props)\n .map(([key, value]) => [camelCase(key), camelCase(key) === 'displayName' ? String(value) : value])));\n};\n/**\n * Parse id from `Content-Location` header\n * @param url URL to parse\n */\nexport const parseIdFromLocation = (url) => {\n const queryPos = url.indexOf('?');\n if (queryPos > 0) {\n url = url.substring(0, queryPos);\n }\n const parts = url.split('/');\n let result;\n do {\n result = parts[parts.length - 1];\n parts.pop();\n // note: first result can be empty when there is a trailing slash,\n // so we take the part before that\n } while (!result && parts.length > 0);\n return Number(result);\n};\nexport const formatTag = (initialTag) => {\n const tag = { ...initialTag };\n if (tag.name && !tag.displayName) {\n return tag;\n }\n tag.name = tag.displayName;\n delete tag.displayName;\n return tag;\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, `.files-list__system-tags{--min-size: 32px;display:none;justify-content:center;align-items:center;min-width:calc(var(--min-size)*2);max-width:300px}.files-list__system-tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}.files-list__system-tag--more{overflow:visible;text-overflow:initial}.files-list__system-tag+.files-list__system-tag{margin-left:5px}@media(min-width: 512px){.files-list__system-tags{display:flex}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/systemtags/src/css/fileEntryInlineSystemTags.scss\"],\"names\":[],\"mappings\":\"AAsBA,yBACC,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,iCAAA,CACA,eAAA,CAGD,wBACC,gBAAA,CACA,gBAAA,CACA,uCAAA,CACA,gCAAA,CACA,mCAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,gBAAA,CACA,iBAAA,CAEA,8BACC,gBAAA,CACA,qBAAA,CAID,gDACC,eAAA,CAIF,yBACC,yBACC,YAAA,CAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2023 Lucas Azevedo \\n *\\n * @author Lucas Azevedo \\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n\\n.files-list__system-tags {\\n\\t--min-size: 32px;\\n\\tdisplay: none;\\n\\tjustify-content: center;\\n\\talign-items: center;\\n\\tmin-width: calc(var(--min-size) * 2);\\n\\tmax-width: 300px;\\n}\\n\\n.files-list__system-tag {\\n\\tpadding: 5px 10px;\\n\\tborder: 1px solid;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tborder-color: var(--color-border);\\n\\tcolor: var(--color-text-maxcontrast);\\n\\theight: var(--min-size);\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n\\tline-height: 22px; // min-size - 2 * 5px padding\\n\\ttext-align: center;\\n\\n\\t&--more {\\n\\t\\toverflow: visible;\\n\\t\\ttext-overflow: initial;\\n\\t}\\n\\n\\t// Proper spacing if multiple shown\\n\\t& + .files-list__system-tag {\\n\\t\\tmargin-left: 5px;\\n\\t}\\n}\\n\\n@media (min-width: 512px) {\\n\\t.files-list__system-tags {\\n\\t\\tdisplay: flex;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2766;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2766: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(49611)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","getNodeSystemTags","node","_node$attributes","tags","attributes","undefined","flat","renderTag","tag","isMore","arguments","length","tagElement","document","createElement","classList","add","textContent","action","FileAction","id","displayName","iconSvgInline","enabled","nodes","exec","async","renderInline","systemTagsElement","setAttribute","t","firstTags","slice","join","lastTag","append","moreTagElement","order","registerDavProperty","registerFileAction","rootUrl","generateRemoteUrl","davClient","createClient","setHeaders","token","requesttoken","onRequestTokenUpdate","getRequestToken","logger","getLoggerBuilder","setApp","detectUser","build","rootPath","client","davGetClient","resultToNode","davResultToNode","formatReportPayload","tagId","concat","getDavNameSpaces","getDavProperties","tagToNode","_getCurrentUser$uid","_getCurrentUser","Folder","source","davRemoteURL","owner","String","getCurrentUser","uid","root","displayname","permissions","Permission","READ","getNavigation","register","View","name","caption","emptyTitle","emptyCaption","icon","getContents","path","tagsCache","data","getDirectoryContents","details","glob","map","_ref","props","Object","fromEntries","entries","_ref2","key","value","camelCase","parseTags","error","Error","fetchTags","filter","userVisible","_getCurrentUser2","folder","NONE","contents","parseInt","split","find","davRootPath","headers","method","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","e","Promise","resolve","g","globalThis","this","Function","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file