{"version":3,"mappings":"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","names":["_sfc_main","_hoisted_1","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","NcActionSeparator","_export_sfc","_hoisted_3","_createElementBlock","_mergeProps","$event","_createElementVNode","_openBlock","DeleteComment","resourceType","resourceId","commentId","commentPath","client","EditComment","message","decodeHtmlEntities","value","passes","parser","decoded","i","NewComment","resourcePath","response","axios","getRootPath","getCurrentUser","comment","props","useDeletedCommentLimbo","defineStore","id","index","CommentMixin","mapStores","logger","error","showError","timeOutDelete","TOAST_UNDO_TIMEOUT","showUndo","newComment","NcRichContenteditable","defineAsyncComponent","NcRichText","n","IconArrowRight","IconClose","IconTrashCanOutline","IconPencilOutline","NcActionButton","NcActions","NcAvatar","NcButton","NcDateTime","NcLoadingIcon","mentions","user","key","regex","NcUserBubble","t","_hoisted_2","_hoisted_4","_hoisted_6","_hoisted_7","_withDirectives","_createBlock","_resolveDynamicComponent","_normalizeClass","_createVNode","_component_NcAvatar","_toDisplayString","_component_NcActions","_component_NcActionButton","_component_IconClose","_createTextVNode","_Fragment","_component_IconPencilOutline","_component_NcActionSeparator","_component_IconTrashCanOutline","_hoisted_5","_component_NcDateTime","_component_NcRichContenteditable","_component_NcButton","_component_NcLoadingIcon","_component_IconArrowRight","_hoisted_8","_component_NcRichText","_vShow","CommentView","defineComponent","search","callback","data","generateOcsUrl","loadState","mention"],"ignoreList":[0,1],"sources":["../node_modules/@nextcloud/vue/dist/chunks/NcActionSeparator-B9pNQaji.mjs","../node_modules/vue-material-design-icons/Close.vue","../build/frontend/apps/comments/src/services/DeleteComment.ts","../build/frontend/apps/comments/src/services/EditComment.ts","../build/frontend/apps/comments/src/utils/decodeHtmlEntities.ts","../build/frontend/apps/comments/src/services/NewComment.ts","../build/frontend/apps/comments/src/store/deletedCommentLimbo.ts","../build/frontend/apps/comments/src/mixins/CommentMixin.ts","../build/frontend/apps/comments/src/components/Comment.vue","../build/frontend/apps/comments/src/mixins/CommentView.ts"],"sourcesContent":["import '../assets/NcActionSeparator-Ct2RnclR.css';\nimport { openBlock, createElementBlock } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcActionSeparator\"\n};\nconst _hoisted_1 = {\n class: \"action action-separator action--disabled\",\n role: \"separator\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"li\", _hoisted_1);\n}\nconst NcActionSeparator = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-3e2324b7\"]]);\nexport {\n NcActionSeparator as N\n};\n//# sourceMappingURL=NcActionSeparator-B9pNQaji.mjs.map\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.ts'\n\n/**\n * Delete a comment\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param commentId the comment iD\n */\nexport default async function(resourceType: string, resourceId: number, commentId: number) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\t// Fetch newly created comment data\n\tawait client.deleteFile(commentPath)\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.ts'\n\n/**\n * Edit an existing comment\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param commentId the comment iD\n * @param message the message content\n */\nexport default async function(resourceType: string, resourceId: number, commentId: number, message: string) {\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","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * @param value - the string to decode\n * @param passes - the number of times to decode the string, default is 1\n */\nexport function decodeHtmlEntities(value: string, 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","/**\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.ts'\nimport { decodeHtmlEntities } from '../utils/decodeHtmlEntities.ts'\nimport client from './DavClient.ts'\n\n/**\n * Retrieve the comments list\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param message the message\n * @return The new comment\n */\nexport default async function(resourceType: string, resourceId: number, message: string) {\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","/**\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","/**\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.ts'\nimport DeleteComment from '../services/DeleteComment.ts'\nimport EditComment from '../services/EditComment.ts'\nimport NewComment from '../services/NewComment.ts'\nimport { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.ts'\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","\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 */\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'\n\nexport default defineComponent({\n\tprops: {\n\t\tresourceId: {\n\t\t\ttype: 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\tdata() {\n\t\treturn {\n\t\t\teditorData: {\n\t\t\t\tactorDisplayName: getCurrentUser()!.displayName as string,\n\t\t\t\tactorId: getCurrentUser()!.uid as string,\n\t\t\t\tkey: 'editor',\n\t\t\t},\n\t\t\tuserData: {},\n\t\t\tcurrentResourceId: this.resourceId,\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Autocomplete `@mentions`\n\t\t *\n\t\t * @param search the query\n\t\t * @param callback the callback to process the results with\n\t\t */\n\t\tasync autoComplete(search, callback) {\n\t\t\tconst { data } = await axios.get(generateOcsUrl('core/autocomplete/get'), {\n\t\t\t\tparams: {\n\t\t\t\t\tsearch,\n\t\t\t\t\titemType: this.resourceType,\n\t\t\t\t\titemId: this.currentResourceId,\n\t\t\t\t\tsorter: 'commenters|share-recipients',\n\t\t\t\t\tlimit: loadState('comments', 'maxAutoCompleteResults'),\n\t\t\t\t},\n\t\t\t})\n\t\t\t// Save user data so it can be used by the editor to replace mentions\n\t\t\tdata.ocs.data.forEach((user) => {\n\t\t\t\tthis.userData[user.id] = user\n\t\t\t})\n\t\t\treturn callback(Object.values(this.userData))\n\t\t},\n\n\t\t/**\n\t\t * Make sure we have all mentions as Array of objects\n\t\t *\n\t\t * @param mentions the mentions list\n\t\t */\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tgenMentionsData(mentions: any[]): Record {\n\t\t\tObject.values(mentions)\n\t\t\t\t.flat()\n\t\t\t\t.forEach((mention) => {\n\t\t\t\t\tthis.userData[mention.mentionId] = {\n\t\t\t\t\t\t// TODO: support groups\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: mention.mentionId,\n\t\t\t\t\t\tlabel: mention.mentionDisplayName,\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tprimary: getCurrentUser()?.uid === mention.mentionId,\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\treturn this.userData\n\t\t},\n\t},\n})\n"],"file":"CommentView-BWs00COP.chunk.mjs"}