REUSE compliance of nextcloud/text

Unfortunately, github.com/nextcloud/text is not REUSE compliant and does not fully adopt the recommendations to make software licensing easy for humans and machines alike. Have a look at our tutorial to learn about the three simple steps to become REUSE compliant.

Badge

To add the badge to your project's README.md file, use the following snippet:

[![REUSE status](https://api.reuse.software/badge/github.com/nextcloud/text)](https://api.reuse.software/info/github.com/nextcloud/text)

Machine-readable information

The API provides machine-readable artifacts for automatic analysis.

  • All information about the latest compliance check can also be accessed via a machine-parsable JSON file.
  • You can gather the automatically generated SPDX SBOM in Tag:Value format, based on the reuse spdx command.

Last lint output

Commit 4ca7cbe2e24aaadb7db2c7c31bb85ca799e03a09 was checked on 17 Jul 2024 13:14:31 UTC with the following result:

/opt/venv/lib/python3.11/site-packages/reuse/project.py:332: PendingDeprecationWarning: '.reuse/dep5' is deprecated. You are recommended to instead use REUSE.toml. Use `reuse convert-dep5` to convert.
  warnings.warn(
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<BaseReader :content=\"content\" />\n</template>\n\n<script>\n/* eslint-disable import/no-named-as-default */\nimport CodeBlock from '@tiptap/extension-code-block'\nimport escapeHtml from 'escape-html'\nimport BaseReader from './BaseReader.vue'\nimport { PlainText } from './../extensions/index.js'\n\nexport default {\n\tname: 'PlainTextReader',\n\tcomponents: { BaseReader },\n\n\tprovide: {\n\t\trenderHtml(content) {\n\t\t\treturn '<pre>' + escapeHtml(content) + '</pre>'\n\t\t},\n\t\textensions: () => [PlainText, CodeBlock],\n\t},\n\n\tprops: {\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n}\n</script>\n"],"names":["_sfc_main","BaseReader","content","escapeHtml","PlainText","CodeBlock"],"mappings":";8MAgBA,MAAAA,EAAA,CACA,KAAA,kBACA,WAAA,CAAA,WAAAC,CAAA,EAEA,QAAA,CACA,WAAAC,EAAA,CACA,MAAA,QAAAC,EAAAD,CAAA,EAAA,QACA,EACA,WAAA,IAAA,CAAAE,EAAAC,CAAA,CACA,EAEA,MAAA,CACA,QAAA,CACA,KAAA,OACA,SAAA,EACA,CACA,CAEA"'
reuse._util - ERROR - 'js/PlainTextReader.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nimport { registerFileListHeaders, registerDavProperty } from '@nextcloud/files'\nimport { loadState } from '@nextcloud/initial-state'\nimport { addMenuRichWorkspace, FilesWorkspaceHeader } from './helpers/files.js'\n// eslint-disable-next-line import/no-unresolved, n/no-missing-import\nimport 'vite/modulepreload-polyfill'\n\nconst workspaceAvailable = loadState('text', 'workspace_available')\n\nregisterDavProperty('nc:rich-workspace', { nc: 'http://nextcloud.org/ns' })\nregisterDavProperty('nc:rich-workspace-file', { nc: 'http://nextcloud.org/ns' })\n\nif (workspaceAvailable) {\n\taddMenuRichWorkspace()\n\tregisterFileListHeaders(FilesWorkspaceHeader)\n}\n"],"names":["workspaceAvailable","loadState","registerDavProperty","addMenuRichWorkspace","registerFileListHeaders","FilesWorkspaceHeader"],"mappings":";ogBAWA,MAAMA,EAAqBC,EAAU,OAAQ,qBAAqB,EAElEC,EAAoB,oBAAqB,CAAE,GAAI,0BAA2B,EAC1EA,EAAoB,yBAA0B,CAAE,GAAI,0BAA2B,EAE3EF,IACHG,EAAsB,EACtBC,EAAwBC,CAAoB"'
reuse._util - ERROR - 'js/text-init.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcPopover class=\"session-list\" placement=\"bottom\">\n\t\t<template #trigger=\"{ attrs }\">\n\t\t\t<div>\n\t\t\t\t<button :title=\"label\"\n\t\t\t\t\t:aria-label=\"label\"\n\t\t\t\t\tclass=\"avatar-list\"\n\t\t\t\t\tv-bind=\"attrs\">\n\t\t\t\t\t<div class=\"avatardiv icon-group\" />\n\t\t\t\t\t<AvatarWrapper v-for=\"session in sessionsVisible\"\n\t\t\t\t\t\t:key=\"session.id\"\n\t\t\t\t\t\t:session=\"session\"\n\t\t\t\t\t\t:size=\"30\" />\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</template>\n\t\t<template #default>\n\t\t\t<div class=\"session-menu\">\n\t\t\t\t<slot name=\"lastSaved\" />\n\t\t\t\t<ul>\n\t\t\t\t\t<slot />\n\t\t\t\t\t<li v-for=\"session in participantsPopover\"\n\t\t\t\t\t\t:key=\"session.id\"\n\t\t\t\t\t\t:style=\"avatarStyle(session)\">\n\t\t\t\t\t\t<AvatarWrapper :session=\"session\" :size=\"36\" />\n\t\t\t\t\t\t<span class=\"session-label\">\n\t\t\t\t\t\t\t{{ session.userId ? session.displayName : (session.guestName ? session.guestName : t('text', 'Guest')) }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span v-if=\"session.userId === null\" class=\"guest-label\">({{ t('text', 'guest') }})</span>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</template>\n\t</NcPopover>\n</template>\n\n<script>\nimport { NcPopover } from '@nextcloud/vue'\nimport AvatarWrapper from './AvatarWrapper.vue'\nimport { COLLABORATOR_IDLE_TIME, COLLABORATOR_DISCONNECT_TIME } from '../../services/SyncService.js'\n\nexport default {\n\tname: 'SessionList',\n\tcomponents: {\n\t\tAvatarWrapper,\n\t\tNcPopover,\n\t},\n\tprops: {\n\t\tsessions: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tmyName: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\tlabel() {\n\t\t\treturn t('text', 'Active people')\n\t\t},\n\t\tparticipantsPopover() {\n\t\t\tif (this.currentSession?.guestName) {\n\t\t\t\treturn this.participantsWithoutCurrent\n\t\t\t}\n\t\t\treturn this.participants\n\t\t},\n\t\tparticipantsWithoutCurrent() {\n\t\t\treturn this.participants.filter((session) => !session.isCurrent)\n\t\t},\n\t\tparticipants() {\n\t\t\treturn Object.values(this.sessions).filter((session) =>\n\t\t\t\tsession.lastContact > Date.now() / 1000 - COLLABORATOR_DISCONNECT_TIME\n\t\t\t\t\t&& (session.userId !== null || session.guestName !== null),\n\t\t\t).sort((a, b) => a.lastContact < b.lastContact)\n\t\t},\n\t\tcurrentSession() {\n\t\t\treturn Object.values(this.sessions).find((session) => session.isCurrent)\n\t\t},\n\t\tavatarStyle() {\n\t\t\treturn (session) => {\n\t\t\t\treturn {\n\t\t\t\t\topacity: session.lastContact > Date.now() / 1000 - COLLABORATOR_IDLE_TIME ? 1 : 0.5,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsessionsVisible() {\n\t\t\treturn this.participantsWithoutCurrent.slice(0, 3)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.session-list {\n\t\theight: var(--default-clickable-area);\n\t}\n\t.avatar-list {\n\t\tborder: none;\n\t\tbackground-color: var(--color-main-background);\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\tpadding-left: 3px;\n\t\tdisplay: inline-flex;\n\t\tflex-direction: row-reverse;\n\n\t\t.avatar-wrapper {\n\t\t\tmargin: 0 -12px 0 0;\n\t\t\tz-index: 1;\n\t\t\tborder-radius: 50%;\n\t\t\toverflow: hidden;\n\t\t\tbox-sizing: content-box !important;\n\t\t\theight: calc(var(--default-clickable-area) - 4px);\n\t\t\twidth: calc(var(--default-clickable-area) - 4px);\n\t\t}\n\n\t\t.icon-more, .icon-group, .icon-settings-dark {\n\t\t\twidth: var(--default-clickable-area);\n\t\t\theight: var(--default-clickable-area);\n\t\t\tmargin: 0 3px 0 0;\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t}\n\t\t}\n\t}\n\n\t.session-menu {\n\t\tmax-width: 280px;\n\t\tpadding-top: 6px;\n\t\tpadding-bottom: 6px;\n\n\t\tul li {\n\t\t\talign-items: center;\n\t\t\tdisplay: flex;\n\t\t\tpadding: 6px;\n\n\t\t\t.avatar-wr'
reuse._util - ERROR - 'js/SessionList.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nconst getSharingToken = () => document.getElementById('sharingToken')\n\t? document.getElementById('sharingToken').value\n\t: null\n\nexport { getSharingToken }\n"],"names":["getSharingToken"],"mappings":";MAKMA,EAAkB,IAAM,SAAS,eAAe,cAAc,EACjE,SAAS,eAAe,cAAc,EAAE,MACxC"'
reuse._util - ERROR - 'js/token.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nimport { logger } from './helpers/logger.js'\nimport { openMimetypesMarkdown, openMimetypesPlainText } from './helpers/mime.js'\n// eslint-disable-next-line import/no-unresolved, n/no-missing-import\nimport 'vite/modulepreload-polyfill'\n\n/**\n * Wrapper for async registration of ViewerComponent.\n * Note: it should be named function - the name is used for component registration.\n *\n * @return {Promise<import('./components/ViewerComponent.vue')>} ViewerComponent\n */\nfunction AsyncTextViewerComponent() {\n\treturn import('./components/ViewerComponent.vue')\n}\n\nif (typeof OCA.Viewer === 'undefined') {\n\tlogger.error('Viewer app is not installed')\n} else {\n\tOCA.Viewer.registerHandler({\n\t\tid: 'text',\n\t\tmimes: [...openMimetypesMarkdown, ...openMimetypesPlainText],\n\t\tcomponent: AsyncTextViewerComponent,\n\t\tgroup: null,\n\t\ttheme: 'default',\n\t\tcanCompare: true,\n\t})\n}\n"],"file":"js/text-viewer.mjs"'
reuse._util - ERROR - 'js/text-viewer.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<form :title=\"t('text', 'Enter your name so other people can see who is editing')\" class=\"guest-name-dialog\" @submit.prevent=\"setGuestName()\">\n\t\t<label><AvatarWrapper :session=\"session\" :size=\"32\" /></label>\n\t\t<input v-model=\"guestName\"\n\t\t\ttype=\"text\"\n\t\t\t:aria-label=\"t('text', 'Edit guest name')\"\n\t\t\t:placeholder=\"t('text', 'Guest')\">\n\t\t<input type=\"submit\"\n\t\t\tclass=\"icon-confirm\"\n\t\t\t:aria-label=\"t('text', 'Save guest name')\"\n\t\t\tvalue=\"\">\n\t</form>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport AvatarWrapper from './AvatarWrapper.vue'\nimport { useSyncServiceMixin } from '../Editor.provider.js'\n\nexport default {\n\tname: 'GuestNameDialog',\n\tcomponents: {\n\t\tAvatarWrapper,\n\t},\n\tmixins: [\n\t\tuseSyncServiceMixin,\n\t],\n\tprops: {\n\t\tsession: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tguestName: '',\n\t\t\tguestNameBuffered: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\tavatarUrl() {\n\t\t\tconst size = 32\n\t\t\tconst avatarUrl = generateUrl(\n\t\t\t\t'/avatar/guest/{user}/{size}',\n\t\t\t\t{\n\t\t\t\t\tuser: this.guestNameBuffered,\n\t\t\t\t\tsize,\n\t\t\t\t})\n\t\t\treturn window.location.protocol + '//' + window.location.host + avatarUrl\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tthis.guestName = this.$syncService.guestName\n\t\tthis.updateBufferedGuestName()\n\t},\n\tmethods: {\n\t\tsetGuestName() {\n\t\t\tconst previousGuestName = this.$syncService.guestName\n\t\t\tthis.$syncService.updateSession(this.guestName).then(() => {\n\t\t\t\tlocalStorage.setItem('nick', this.guestName)\n\t\t\t\tthis.updateBufferedGuestName()\n\t\t\t}).catch((e) => {\n\t\t\t\tthis.guestName = previousGuestName\n\t\t\t})\n\t\t},\n\t\tupdateBufferedGuestName() {\n\t\t\tthis.guestNameBuffered = this.guestName\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\tform.guest-name-dialog {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tpadding: 6px;\n\n\t\t&:deep(img) {\n\t\t\tmargin: 0 !important;\n\t\t}\n\n\t\tinput[type=text] {\n\t\t\tflex-grow: 1;\n\t\t}\n\t\tlabel {\n\t\t\tpadding-right: 3px;\n\t\t\theight: 32px;\n\t\t}\n\t}\n</style>\n"],"names":["_sfc_main","AvatarWrapper","useSyncServiceMixin","avatarUrl","generateUrl","previousGuestName","e"],"mappings":";2gBAwBA,MAAAA,EAAA,CACA,KAAA,kBACA,WAAA,CACA,cAAAC,CACA,EACA,OAAA,CACAC,CACA,EACA,MAAA,CACA,QAAA,CACA,KAAA,OACA,SAAA,EACA,CACA,EACA,MAAA,CACA,MAAA,CACA,UAAA,GACA,kBAAA,EACA,CACA,EACA,SAAA,CACA,WAAA,CAEA,MAAAC,EAAAC,EACA,8BACA,CACA,KAAA,KAAA,kBACA,OACA,CAAA,EACA,OAAA,OAAA,SAAA,SAAA,KAAA,OAAA,SAAA,KAAAD,CACA,CACA,EACA,aAAA,CACA,KAAA,UAAA,KAAA,aAAA,UACA,KAAA,wBAAA,CACA,EACA,QAAA,CACA,cAAA,CACA,MAAAE,EAAA,KAAA,aAAA,UACA,KAAA,aAAA,cAAA,KAAA,SAAA,EAAA,KAAA,IAAA,CACA,aAAA,QAAA,OAAA,KAAA,SAAA,EACA,KAAA,wBAAA,CACA,CAAA,EAAA,MAAAC,GAAA,CACA,KAAA,UAAAD,CACA,CAAA,CACA,EACA,yBAAA,CACA,KAAA,kBAAA,KAAA,SACA,CACA,CACA"'
reuse._util - ERROR - 'js/GuestNameDialog.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n<template>\n\t<div id=\"files-setting-richworkspace\">\n\t\t<input id=\"showRichWorkspacesToggle\"\n\t\t\tv-model=\"showWorkspace\"\n\t\t\tclass=\"checkbox\"\n\t\t\ttype=\"checkbox\"\n\t\t\t@change=\"toggle\">\n\t\t<label for=\"showRichWorkspacesToggle\">{{ t('text', 'Show folder description') }}</label>\n\t</div>\n</template>\n\n<script>\nimport { emit } from '@nextcloud/event-bus'\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'FilesSettings',\n\tdata() {\n\t\treturn {\n\t\t\tshowWorkspace: OCA.Text.RichWorkspaceEnabled,\n\t\t}\n\t},\n\tmethods: {\n\t\ttoggle() {\n\t\t\t// FIXME: save to app config\n\t\t\tif (this.showWorkspace) {\n\t\t\t\temit('Text::showRichWorkspace')\n\t\t\t\taxios.post(generateUrl('/apps/text/settings'), {\n\t\t\t\t\tkey: 'workspace_enabled',\n\t\t\t\t\tvalue: '1',\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\temit('Text::hideRichWorkspace')\n\t\t\t\taxios.post(generateUrl('/apps/text/settings'), {\n\t\t\t\t\tkey: 'workspace_enabled',\n\t\t\t\t\tvalue: '0',\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n"],"names":["_sfc_main","emit","axios","generateUrl"],"mappings":";yNAoBA,MAAAA,EAAA,CACA,KAAA,gBACA,MAAA,CACA,MAAA,CACA,cAAA,IAAA,KAAA,oBACA,CACA,EACA,QAAA,CACA,QAAA,CAEA,KAAA,eACAC,EAAA,yBAAA,EACAC,EAAA,KAAAC,EAAA,qBAAA,EAAA,CACA,IAAA,oBACA,MAAA,GACA,CAAA,IAEAF,EAAA,yBAAA,EACAC,EAAA,KAAAC,EAAA,qBAAA,EAAA,CACA,IAAA,oBACA,MAAA,GACA,CAAA,EAEA,CACA,CACA"'
reuse._util - ERROR - 'js/FilesSettings.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\n/**\n * Get instance of Editor component\n * Using singleton approach here to avoid duplicate yjs import error\n * @return {Promise<*>}\n */\nexport default async function getEditorInstance() {\n\tif (!window._nc_text_editor_instance) {\n\t\tif (window._nc_text_editor_importing) {\n\t\t\treturn await new Promise((resolve) => {\n\t\t\t\tconst intervalId = setInterval(() => {\n\t\t\t\t\tif (!window._nc_text_editor_instance) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tresolve(window._nc_text_editor_instance)\n\t\t\t\t\tclearInterval(intervalId)\n\t\t\t\t}, 200)\n\t\t\t})\n\t\t} else {\n\t\t\twindow._nc_text_editor_importing = true\n\t\t}\n\t\tconst Editor = await import(/* webpackChunkName: \"editor\" */'./Editor.vue')\n\t\tconst { default: Vue } = await import('vue')\n\t\tVue.prototype.t = window.t\n\t\tVue.prototype.OCA = window.OCA\n\t\tconst EditorConstructor = Vue.extend(Editor.default)\n\t\twindow._nc_text_editor_instance = EditorConstructor\n\t}\n\treturn window._nc_text_editor_instance\n}\n"],"file":"js/Editor.singleton.chunk.mjs"'
reuse._util - ERROR - 'js/Editor.singleton.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nimport Vue from 'vue'\nimport store from'
reuse._util - ERROR - 'js/text-editors.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<div v-if=\"enabled && localHasRichWorkspace\"\n\t\tid=\"rich-workspace\"\n\t\t:class=\"{'focus': focus, 'dark': darkTheme }\">\n\t\t<RichTextReader v-if=\"!loaded || !ready\" :content=\"content\" class=\"rich-workspace--preview\" />\n\t\t<Editor v-if=\"file\"\n\t\t\tv-show=\"ready\"\n\t\t\t:key=\"file.path\"\n\t\t\t:file-id=\"file.id\"\n\t\t\t:relative-path=\"file.path\"\n\t\t\t:share-token=\"shareToken\"\n\t\t\t:mime=\"file.mimetype\"\n\t\t\t:autofocus=\"autofocus\"\n\t\t\t:hide-menu=\"hideMenu\"\n\t\t\tactive\n\t\t\trich-workspace\n\t\t\t@ready=\"ready=true\"\n\t\t\t@focus=\"onFocus\"\n\t\t\t@error=\"reset\" />\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport getEditorInstance from '../components/Editor.singleton.js'\nimport RichTextReader from '../components/RichTextReader.vue'\n\nconst IS_PUBLIC = !!(document.getElementById('isPublic'))\nconst WORKSPACE_URL = generateOcsUrl('apps/text' + (IS_PUBLIC ? '/public' : '') + '/workspace', 2)\nconst SUPPORTED_STATIC_FILENAMES = ['Readme.md', 'README.md', 'readme.md']\n\nexport default {\n\tname: 'RichWorkspace',\n\tcomponents: {\n\t\tRichTextReader,\n\t\tEditor: getEditorInstance,\n\t},\n\tprops: {\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tpath: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\thasRichWorkspace: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\t// Keep track of a local copy of the hasRichWorkspace state as it might change after initial rendering (e.g. when adding/removing the readme)\n\t\t\tlocalHasRichWorkspace: false,\n\t\t\tfocus: false,\n\t\t\tfolder: null,\n\t\t\tfile: null,\n\t\t\tloaded: false,\n\t\t\tready: false,\n\t\t\tautofocus: false,\n\t\t\thideMenu: true,\n\t\t\tdarkTheme: OCA.Accessibility && OCA.Accessibility.theme === 'dark',\n\t\t\tenabled: OCA.Text.RichWorkspaceEnabled,\n\t\t}\n\t},\n\tcomputed: {\n\t\tshareToken() {\n\t\t\treturn document.getElementById('sharingToken')?.value\n\t\t},\n\t},\n\twatch: {\n\t\tpath() {\n\t\t\tthis.getFileInfo()\n\t\t},\n\t\tfocus(newValue) {\n\t\t\tif (!newValue) {\n\t\t\t\tdocument.querySelector('#rich-workspace .text-editor__main').scrollTo(0, 0)\n\t\t\t}\n\t\t},\n\t\thasRichWorkspace(value) {\n\t\t\tthis.localHasRichWorkspace = value\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.localHasRichWorkspace = this.hasRichWorkspace\n\t\tif (this.enabled && this.hasRichWorkspace) {\n\t\t\tthis.getFileInfo()\n\t\t}\n\t\tsubscribe('Text::showRichWorkspace', this.showRichWorkspace)\n\t\tsubscribe('Text::hideRichWorkspace', this.hideRichWorkspace)\n\t\tsubscribe('files:node:created', this.onFileCreated)\n\t\tsubscribe('files:node:deleted', this.onFileDeleted)\n\t\tsubscribe('files:node:renamed', this.onFileRenamed)\n\n\t\tthis.listenKeydownEvents()\n\n\t},\n\tbeforeDestroy() {\n\t\tunsubscribe('Text::showRichWorkspace', this.showRichWorkspace)\n\t\tunsubscribe('Text::hideRichWorkspace', this.hideRichWorkspace)\n\t\tunsubscribe('files:node:created', this.onFileCreated)\n\t\tunsubscribe('files:node:deleted', this.onFileDeleted)\n\t\tunsubscribe('files:node:renamed', this.onFileRenamed)\n\n\t\tthis.unlistenKeydownEvents()\n\t},\n\tmethods: {\n\t\tonFocus() {\n\t\t\tthis.focus = true\n\t\t\tthis.hideMenu = false\n\t\t\tthis.unlistenKeydownEvents()\n\t\t},\n\t\treset() {\n\t\t\tthis.localHasRichWorkspace = false\n\t\t\tthis.file = null\n\t\t\tthis.focus = false\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.creating = false\n\t\t\t\tthis.getFileInfo()\n\t\t\t})\n\t\t},\n\t\tgetFileInfo(autofocus) {\n\t\t\tif (!this.enabled) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.file = null\n\t\t\tthis.r'
reuse._util - ERROR - 'js/RichWorkspace.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"avatar-wrapper\" :style=\"sessionAvatarStyle\">\n\t\t<NcAvatar v-if=\"session.userId\"\n\t\t\t:user=\"session.userId ? session.userId : session.guestName\"\n\t\t\t:is-guest=\"session.userId === null\"\n\t\t\t:disable-menu=\"true\"\n\t\t\t:show-user-status=\"false\"\n\t\t\t:disable-tooltip=\"true\"\n\t\t\t:size=\"size\" />\n\t\t<div v-else class=\"avatar\" :style=\"sessionBackgroundStyle\">\n\t\t\t{{ guestInitial }}\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { NcAvatar } from '@nextcloud/vue'\nexport default {\n\tname: 'AvatarWrapper',\n\tcomponents: {\n\t\tNcAvatar,\n\t},\n\tprops: {\n\t\tsession: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tsize: {\n\t\t\ttype: Number,\n\t\t\tdefault: () => 32,\n\t\t},\n\t},\n\tcomputed: {\n\t\tsessionAvatarStyle() {\n\t\t\treturn {\n\t\t\t\t...this.sessionBackgroundStyle,\n\t\t\t\t'border-color': this.session.color,\n\t\t\t\t'border-width': '2px',\n\t\t\t\t'border-style': 'solid',\n\t\t\t\t'--size': this.size + 'px',\n\t\t\t\t'--font-size': this.size / 2 + 'px',\n\t\t\t}\n\t\t},\n\t\tsessionBackgroundStyle() {\n\t\t\treturn {\n\t\t\t\t'background-color': this.session.userId ? this.session.color + ' !important' : '#b9b9b9',\n\t\t\t}\n\t\t},\n\t\tguestInitial() {\n\t\t\treturn this.session.guestName === '' ? '?' : this.session.guestName.slice(0, 1).toUpperCase()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n.avatar, .avatar-wrapper {\n\tborder-radius: 50%;\n\twidth: var(--size);\n\theight: var(--size);\n\ttext-align: center;\n\tcolor: #ffffff;\n\tline-height: var(--size);\n\tfont-size: var(--font-size);\n\tfont-weight: normal;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n}\n</style>\n"],"names":["_sfc_main","NcAvatar"],"mappings":";4NAsBA,MAAAA,EAAA,CACA,KAAA,gBACA,WAAA,CACA,SAAAC,CACA,EACA,MAAA,CACA,QAAA,CACA,KAAA,OACA,SAAA,EACA,EACA,KAAA,CACA,KAAA,OACA,QAAA,IAAA,EACA,CACA,EACA,SAAA,CACA,oBAAA,CACA,MAAA,CACA,GAAA,KAAA,uBACA,eAAA,KAAA,QAAA,MACA,eAAA,MACA,eAAA,QACA,SAAA,KAAA,KAAA,KACA,cAAA,KAAA,KAAA,EAAA,IACA,CACA,EACA,wBAAA,CACA,MAAA,CACA,mBAAA,KAAA,QAAA,OAAA,KAAA,QAAA,MAAA,cAAA,SACA,CACA,EACA,cAAA,CACA,OAAA,KAAA,QAAA,YAAA,GAAA,IAAA,KAAA,QAAA,UAAA,MAAA,EAAA,CAAA,EAAA,YAAA,CACA,CACA,CACA"'
reuse._util - ERROR - 'js/AvatarWrapper.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nimport { logger } from '../helpers/logger.js'\n\nexport const EDITOR = Symbol('tiptap:editor')\nexport const FILE = Symbol('editor:file')\nexport const ATTACHMENT_RESOLVER = Symbol('attachment:resolver')\nexport const IS_MOBILE = Symbol('editor:is-mobile')\nexport const IS_PUBLIC = Symbol('editor:is-public')\nexport const IS_RICH_EDITOR = Symbol('editor:is-rich-editor')\nexport const IS_RICH_WORKSPACE = Symbol('editor:is-rich-woskapace')\nexport const SYNC_SERVICE = Symbol('sync:service')\nexport const EDITOR_UPLOAD = Symbol('editor:upload')\nexport const HOOK_MENTION_SEARCH = Symbol('hook:mention-search')\nexport const HOOK_MENTION_INSERT = Symbol('hook:mention-insert')\n\nexport const useEditorMixin = {\n\tinject: {\n\t\t$editor: { from: EDITOR, default: null },\n\t},\n}\n\nexport const useSyncServiceMixin = {\n\tinject: {\n\t\t$syncService: { from: SYNC_SERVICE, default: null },\n\t},\n}\n\nexport const useIsPublicMixin = {\n\tinject: {\n\t\t$isPublic: { from: IS_PUBLIC, default: false },\n\t},\n}\n\nexport const useIsRichWorkspaceMixin = {\n\tinject: {\n\t\t$isRichWorkspace: { from: IS_RICH_WORKSPACE, default: false },\n\t},\n}\n\nexport const useIsRichEditorMixin = {\n\tinject: {\n\t\t$isRichEditor: { from: IS_RICH_EDITOR, default: false },\n\t},\n}\n\nexport const useIsMobileMixin = {\n\tinject: {\n\t\t$isMobile: { from: IS_MOBILE, default: false },\n\t},\n}\n\nexport const useFileMixin = {\n\tinject: {\n\t\t$file: {\n\t\t\tfrom: FILE,\n\t\t\tdefault: () => ({\n\t\t\t\tfileId: 0,\n\t\t\t\trelativePath: null,\n\t\t\t\tdocument: null,\n\t\t\t}),\n\t\t},\n\t},\n}\n\nexport const useAttachmentResolver = {\n\tinject: {\n\t\t$attachmentResolver: {\n\t\t\tfrom: ATTACHMENT_RESOLVER,\n\t\t\tdefault: {\n\t\t\t\tresolve(src) {\n\t\t\t\t\tlogger.warn('No attachment resolver provided. Some attachment sources cannot be resolved.')\n\t\t\t\t\treturn [src]\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n}\nexport const useEditorUpload = {\n\tinject: {\n\t\t$editorUpload: {\n\t\t\tfrom: EDITOR_UPLOAD,\n\t\t\tdefault: true,\n\t\t},\n\t},\n}\nexport const useMentionHook = {\n\tinject: {\n\t\t$mentionHookInsert: {\n\t\t\tfrom: HOOK_MENTION_INSERT,\n\t\t\tdefault: true,\n\t\t},\n\t\t$mentionHookSearch: {\n\t\t\tfrom: HOOK_MENTION_SEARCH,\n\t\t\tdefault: true,\n\t\t},\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const STATE_UPLOADING = Symbol('state:uploading-state')\nexport const ACTION_ATTACHMENT_PROMPT = Symbol('editor:action:attachment-prompt')\nexport const ACTION_CHOOSE_LOCAL_ATTACHMENT = Symbol('editor:action:upload-attachment')\n\nexport const useUploadingStateMixin = {\n\tinject: {\n\t\t$uploadingState: {\n\t\t\tfrom: STATE_UPLOADING,\n\t\t\tdefault: {\n\t\t\t\tisUploadingAttachments: false,\n\t\t\t},\n\t\t},\n\t},\n}\n\nexport const useActionAttachmentPromptMixin = {\n\tinject: {\n\t\t$callAttachmentPrompt: { from: ACTION_ATTACHMENT_PROMPT, default: () => {} },\n\t},\n}\n\nexport const useActionChooseLocalAttachmentMixin = {\n\tinject: {\n\t\t$callChooseLocalAttachment: { from: ACTION_CHOOSE_LOCAL_ATTACHMENT, default: () => {} },\n\t},\n}\n"],"names":["EDITOR","FILE","ATTACHMENT_RESOLVER","IS_MOBILE","IS_PUBLIC","IS_RICH_EDITOR","IS_RICH_WORKSPACE","SYNC_SERVICE","EDITOR_UPLOAD","HOOK_MENTION_SEARCH","HOOK_MENTION_INSERT","useEditorMixin","useSyncServiceMixin","useIsPublicMixin","useIsRichWorkspaceMixin","useIsRichEditorMixin","useIsMobileMixin","useFileMixin","useAttachmentResolver","src","logger","useEditorUpload","STATE_UPLOADING","ACTION_ATTACHMENT_PROMPT","ACTION_CHOOSE_LOCAL_ATTACHMENT","useUploadingStateMixin","useActionAttachmentPromptMixin","useActionChooseLocalAttachmentMixin"],"mappings":";uCAOY,MAACA,EAAS,OAAO,eAAe'
reuse._util - ERROR - 'js/MediaHandler.provider.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcModal v-if=\"active\" :name=\"fileName\" @close=\"close\">\n\t\t<Editor :file-id=\"fileId\"\n\t\t\t:relative-path=\"relativePath\"\n\t\t\t:active=\"active\"\n\t\t\t:share-token=\"shareToken\"\n\t\t\t:mime=\"mimeType\" />\n\t</NcModal>\n</template>\n\n<script>\nimport { NcModal } from '@nextcloud/vue'\n\nexport default {\n\tname: 'PublicFilesEditor',\n\tcomponents: {\n\t\tNcModal,\n\t\tEditor: () => import(/* webpackChunkName: \"editor\" */'./Editor.vue'),\n\t},\n\tprops: {\n\t\tfileId: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\trelativePath: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tshareToken: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tmimeType: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tcomputed: {\n\t\tfileName() {\n\t\t\treturn this.relativePath.substring(this.relativePath.lastIndexOf('/') + 1)\n\t\t},\n\t},\n\tmethods: {\n\t\tclose() {\n\t\t\tthis.$emit('close')\n\t\t},\n\t},\n}\n</script>\n"],"file":"js/PublicFilesEditor.chunk.mjs"'
reuse._util - ERROR - 'js/PublicFilesEditor.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\n/**\n * Callback that should be executed after the document is ready\n *\n * @param callback\n */\n\nconst documentReady = function(callback) {\n\tconst fn = () => setTimeout(callback, 0)\n\tif (document.attachEvent ? document.readyState === 'complete' : document.readyState !== 'loading') {\n\t\tfn()\n\t} else {\n\t\tdocument.addEventListener('DOMContentLoaded', callback)\n\t}\n}\n\nexport {\n\tdocumentReady,\n}\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n// eslint-disable-next-line import/no-unresolved, n/no-missing-import\nimport 'vite/modulepreload-polyfill'\n\nimport {\n\tregisterFileActionFallback,\n\tregisterFileCreate,\n} from './helpers/files.js'\nimport'
reuse._util - ERROR - 'js/text-public.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'EPL-2.0\n *******************************************************************************/\nvar ELK = function () {\n  function ELK() {\n    var _this = this;\n\n    var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n        _ref$defaultLayoutOpt = _ref.defaultLayoutOptions,\n        defaultLayoutOptions = _ref$defaultLayoutOpt === undefined ? {} : _ref$defaultLayoutOpt,\n        _ref$algorithms = _ref.algorithms,\n        algorithms = _ref$algorithms === undefined ? ['layered', 'stress', 'mrtree', 'radial', 'force', 'disco', 'sporeOverlap', 'sporeCompaction', 'rectpacking'] : _ref$algorithms,\n        workerFactory = _ref.workerFactory,\n        workerUrl = _ref.workerUrl;\n\n    _classCallCheck(this, ELK);\n\n    this.defaultLayoutOptions = defaultLayoutOptions;\n    this.initialized = false;\n\n    // check valid worker construction possible\n    if (typeof workerUrl === 'undefined' && typeof workerFactory === 'undefined') {\n      throw new Error(\"Cannot construct an ELK without both 'workerUrl' and 'workerFactory'.\");\n    }\n    var factory = workerFactory;\n    if (typeof workerUrl !== 'undefined' && typeof workerFactory === 'undefined') {\n      // use default Web Worker\n      factory = function factory(url) {\n        return new Worker(url);\n      };\n    }\n\n    // create the worker\n    var worker = factory(workerUrl);\n    if (typeof worker.postMessage !== 'function') {\n      throw new TypeError(\"Created worker does not provide\" + \" the required 'postMessage' function.\");\n    }\n\n    // wrap the worker to return promises\n    this.worker = new PromisedWorker(worker);\n\n    // initially register algorithms\n    this.worker.postMessage({\n      cmd: 'register',\n      algorithms: algorithms\n    }).then(function (r) {\n      return _this.in'
reuse._util - ERROR - 'js/flowchart-elk-definition-ae0efee6.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst logger = getLoggerBuilder()\n\t.setApp('text')\n\t.detectUser()\n\t.build()\n\nexport {\n\tlogger,\n}\n"],"names":["logger","getLoggerBuilder"],"mappings":";uCAOK,MAACA,EAASC,EAAkB,EAC/B,OAAO,MAAM,EACb,WAAY,EACZ,MAAK"'
reuse._util - ERROR - 'js/logger.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<div id=\"direct-editor\" :class=\"{'icon-loading': saving}\">\n\t\t<Editor ref=\"editor\"\n\t\t\t:initial-session=\"initialSession\"\n\t\t\t:file-id=\"initial.fileId\"\n\t\t\t:active=\"true\"\n\t\t\t:mime=\"initial.mimetype\"\n\t\t\t:is-direct-editing=\"true\"\n\t\t\t@ready=\"loaded\">\n\t\t\t<template v-if=\"isMobile\" #header>\n\t\t\t\t<button class=\"icon-share\" @click=\"share\" />\n\t\t\t\t<button class=\"icon-close\" @click=\"close\" />\n\t\t\t</template>\n\t\t</Editor>\n\t</div>\n</template>\n\n<script>\nimport Vue from 'vue'\nimport Editor from '../components/Editor.vue'\n\nimport { logger } from '../helpers/logger.js'\n\nconst log = Vue.observable({\n\tmessages: [],\n\tmtime: 0,\n})\n\nconst callMobileMessage = (messageName, attributes) => {\n\tlogger.debug(`callMobileMessage ${messageName}`, { attributes })\n\tlet message = messageName\n\tif (typeof attributes !== 'undefined') {\n\t\tmessage = {\n\t\t\tMessageName: messageName,\n\t\t\tValues: attributes,\n\t\t}\n\t}\n\tlet attributesString = null\n\ttry {\n\t\tattributesString = JSON.stringify(attributes)\n\t} catch (e) {\n\t\tattributesString = null\n\t}\n\n\t// Forward to mobile handler\n\tif (window.DirectEditingMobileInterface && typeof window.DirectEditingMobileInterface[messageName] === 'function') {\n\t\tif (attributesString === null || typeof attributesString === 'undefined') {\n\t\t\twindow.DirectEditingMobileInterface[messageName]()\n\t\t} else {\n\t\t\twindow.DirectEditingMobileInterface[messageName](attributesString)\n\t\t}\n\t}\n\n\t// iOS webkit fallback\n\tif (window.webkit\n\t\t&& window.webkit.messageHandlers\n\t\t&& window.webkit.messageHandlers.DirectEditingMobileInterface) {\n\t\twindow.webkit.messageHandlers.DirectEditingMobileInterface.postMessage(message)\n\t}\n\n\twindow.postMessage(message)\n}\n\nwindow.addEventListener('message', function(message) {\n\tlog.messages.push(message.data)\n\tlogger.debug('postMessage', { message })\n})\n\nexport default {\n\tname: 'DirectEditing',\n\tcomponents: { Editor },\n\tdata() {\n\t\treturn {\n\t\t\tinitial: OCP.InitialState.loadState('text', 'file'),\n\t\t\tmessages: log.messages,\n\t\t\tlog,\n\t\t\tsaving: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tinitialSession() {\n\t\t\treturn JSON.parse(this.initial.session) || null\n\t\t},\n\t\tisMobile() {\n\t\t\treturn (window.DirectEditingMobileInterface || (window.webkit\n\t\t\t\t&& window.webkit.messageHandlers\n\t\t\t\t&& window.webkit.messageHandlers.DirectEditingMobileInterface))\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tcallMobileMessage('loading')\n\t},\n\tmounted() {\n\t\tdocument.querySelector('meta[name=\"viewport\"]').setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0')\n\n\t\tthis.$refs.editor.$on('push:forbidden', () => {\n\t\t\tlogger.warn('push was forbidden due to invalidated session')\n\t\t\tthis.reload()\n\t\t})\n\t},\n\tmethods: {\n\t\tasync close() {\n\t\t\tthis.saving = true\n\t\t\tsetTimeout(async () => {\n\t\t\t\tawait this.$refs.editor.$destroy()\n\t\t\t\tcallMobileMessage('close')\n\t\t\t}, 0)\n\t\t},\n\t\tshare() {\n\t\t\tcallMobileMessage('share')\n\t\t},\n\t\tloaded() {\n\t\t\tcallMobileMessage('loaded')\n\t\t},\n\t\treload() {\n\t\t\tcallMobileMessage('reload')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n\tbody {\n\t\tposition: fixed;\n\t\tbackground-color: var(--color-main-background);\n\t}\n\n\t#content[class=app-public] {\n\t\tmargin: 0;\n\t\tmargin-top: 0;\n\t}\n</style>\n\n<style scoped lang=\"scss\">\n\t#direct-editor {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: fixed;\n\t\toverflow: auto;\n\n\t\t&:deep(.text-editor) {\n\t\t\theight: 100%;\n\t\t\ttop: 0;\n\t\t}\n\t\t&:deep(.text-editor__wrapper div.ProseMirror) {\n\t\t\tmargin-top: 0;\n\t\t}\n\t}\n\n\tpre {\n\t\twidth: 100%;\n\t\tmax-width: 700px;\n\t\tmar'
reuse._util - ERROR - 'js/DirectEditing.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nconst openMimetypesMarkdown = [\n\t'text/markdown',\n]\n\nconst openMimetypesPlainText = [\n\t'text/plain',\n\t'application/cmd',\n\t'application/x-empty',\n\t'application/x-msdos-program',\n\t'application/javascript',\n\t'application/json',\n\t'application/x-perl',\n\t'application/x-php',\n\t'application/x-tex',\n\t'application/xml',\n\t'application/yaml',\n\t'text/asciidoc',\n\t'text/css',\n\t'text/html',\n\t'text/org',\n\t'text/x-c',\n\t'text/x-c++src',\n\t'text/x-h',\n\t'text/x-java-source',\n\t'text/x-ldif',\n\t'text/x-python',\n\t'text/x-shellscript',\n]\n\nif (!OC.appswebroots?.richdocuments && !OC.appswebroots?.onlyoffice) {\n\topenMimetypesPlainText.push('text/csv')\n}\n\nconst openMimetypes = [...openMimetypesMarkdown, ...openMimetypesPlainText]\n\nexport {\n\topenMimetypes,\n\topenMimetypesMarkdown,\n\topenMimetypesPlainText,\n}\n"],"names":["openMimetypesMarkdown","openMimetypesPlainText","_a","_b","openMimetypes"],"mappings":";MAKMA,EAAwB,CAC7B,eACD,EAEMC,EAAyB,CAC9B,aACA,kBACA,sBACA,8BACA,yBACA,mBACA,qBACA,oBACA,oBACA,kBACA,mBACA,gBACA,WACA,YACA,WACA,WACA,gBACA,WACA,qBACA,cACA,gBACA,oBACD,UAEI,GAACC,EAAA,GAAG,eAAH,MAAAA,EAAiB,gBAAiB,GAACC,EAAA,GAAG,eAAH,MAAAA,EAAiB,aACxDF,EAAuB,KAAK,UAAU,EAGlC,MAACG,EAAgB,CAAC,GAAGJ,EAAuB,GAAGC,CAAsB"'
reuse._util - ERROR - 'js/mime.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<div data-text-el=\"editor-content-wrapper\"\n\t\tclass=\"content-wrapper text-editor__content-wrapper\"\n\t\t:class=\"{\n\t\t\t'--show-outline': showOutline\n\t\t}\">\n\t\t<div v-if=\"showOutline\" class=\"text-editor__content-wrapper__left\">\n\t\t\t<EditorOutline />\n\t\t</div>\n\t\t<EditorContent v-if=\"$editor\"\n\t\t\tid=\"read-only-editor\"\n\t\t\tclass=\"editor__content text-editor__content\"\n\t\t\t:editor=\"$editor\" />\n\t\t<div class=\"text-editor__content-wrapper__right\" />\n\t</div>\n</template>\n\n<script>\nimport { Editor } from '@tiptap/core'\nimport { EditorContent } from '@tiptap/vue-2'\nimport { EDITOR } from './Editor.provider.js'\nimport { useOutlineStateMixin, useOutlineActions } from './Editor/Wrapper.provider.js'\nimport EditorOutline from './Editor/EditorOutline.vue'\n\nexport default {\n\tname: 'BaseReader',\n\tcomponents: {\n\t\tEditorContent,\n\t\tEditorOutline,\n\t},\n\n\tmixins: [useOutlineStateMixin, useOutlineActions],\n\n\tprovide() {\n\t\tconst val = {}\n\n\t\tObject.defineProperties(val, {\n\t\t\t[EDITOR]: {\n\t\t\t\tget: () => this.$editor,\n\t\t\t},\n\t\t})\n\n\t\treturn val\n\t},\n\n\t// extensions is a factory building a list of extensions for the editor\n\tinject: ['renderHtml', 'extensions'],\n\n\tprops: {\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\thtmlContent() {\n\t\t\treturn this.renderHtml(this.content)\n\t\t},\n\t\tshowOutline() {\n\t\t\treturn this.$outlineState.visible\n\t\t},\n\t},\n\n\twatch: {\n\t\tcontent() {\n\t\t\tthis.updateContent()\n\t\t},\n\t},\n\n\tcreated() {\n\t\tthis.$editor = this.createEditor()\n\t\tthis.$editor.setEditable(false)\n\t},\n\n\tbeforeDestroy() {\n\t\tthis.$editor.destroy()\n\t},\n\n\tmethods: {\n\t\tcreateEditor() {\n\t\t\treturn new Editor({\n\t\t\t\tcontent: this.htmlContent,\n\t\t\t\textensions: this.extensions(),\n\t\t\t})\n\t\t},\n\n\t\tupdateContent() {\n\t\t\tthis.$editor.commands.setContent(this.htmlContent, true)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.editor__content {\n\tmax-width: var(--text-editor-max-width);\n\tmargin: auto;\n\tposition: relative;\n\twidth: 100%;\n}\n\n.text-editor__content-wrapper {\n\t--side-width: calc((100% - var(--text-editor-max-width)) / 2);\n\tdisplay: grid;\n\tgrid-template-columns: 1fr auto;\n\t&.--show-outline {\n\t\tgrid-template-columns: var(--side-width) auto var(--side-width);\n\t}\n\t.text-editor__content-wrapper__left,\n\t.text-editor__content-wrapper__right {\n\t\theight: 100%;\n\t\tposition: relative;\n\t}\n}\n</style>\n","<!--\n  - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<BaseReader :content=\"content\" @click-link=\"(e, a) => $emit('click-link', e, a)\" />\n</template>\n\n<script>\nimport BaseReader from './BaseReader.vue'\nimport { RichText } from './../extensions/index.js'\nimport markdownit from './../markdownit/index.js'\n\nexport default {\n\tname: 'RichTextReader',\n\tcomponents: { BaseReader },\n\n\tprovide: {\n\t\trenderHtml(content) {\n\t\t\treturn markdownit.render(content)\n\t\t},\n\t\textensions() {\n\t\t\treturn [\n\t\t\t\tRichText.configure({\n\t\t\t\t\tediting: false,\n\t\t\t\t}),\n\t\t\t]\n\t\t},\n\t},\n\n\tprops: {\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n\t@import './../css/prosemirror';\n\t@import './../css/print';\n</style>\n"],"names":["_sfc_main","EditorContent","EditorOutline","useOutlineStateMixin","useOutlineActions","val","EDITOR","Editor","BaseReader","content","markdownit","RichText"],"mappings":";+LA6BA,MAAAA,EAAA,CACA,KAAA,aACA,WAAA,CACA,cAAAC,EACA,cAAAC,CACA,EAEA,OAAA,CAAAC,EAAAC,CAAA,EAEA,SAAA,CACA,MAAAC,EAAA,CAAA,EAEA'
reuse._util - ERROR - 'js/RichTextReader.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<Editor v-if=\"!useSourceView\"\n\t\t:file-id=\"fileid\"\n\t\t:relative-path=\"filename\"\n\t\t:active=\"active || isEmbedded\"\n\t\t:autofocus=\"autofocus\"\n\t\t:share-token=\"shareToken\"\n\t\t:class=\"{ 'text-editor--embedding': isEmbedded }\"\n\t\t:mime=\"mime\"\n\t\t:show-outline-outside=\"showOutlineOutside\" />\n\t<div v-else\n\t\tid=\"editor-container\"\n\t\tdata-text-el=\"editor-container\"\n\t\tclass=\"text-editor source-viewer\">\n\t\t<Component :is=\"readerComponent\" :content=\"content\" />\n\t\t<NcButton v-if=\"isEmbedded\" class=\"toggle-interactive\" @click=\"toggleEdit\">\n\t\t\t{{ t('text', 'Edit') }}\n\t\t\t<template #icon>\n\t\t\t\t<PencilIcon />\n\t\t\t</template>\n\t\t</NcButton>\n\t</div>\n</template>\n\n<script>\nimport Vue from 'vue'\nimport axios from '@nextcloud/axios'\nimport PencilIcon from 'vue-material-design-icons/Pencil.vue'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport PlainTextReader from './PlainTextReader.vue'\nimport RichTextReader from './RichTextReader.vue'\nimport { translate, translatePlural } from '@nextcloud/l10n'\n\nimport { getSharingToken } from '../helpers/token.js'\nimport getEditorInstance from './Editor.singleton.js'\n\nVue.prototype.t = translate\nVue.prototype.n = translatePlural\n\nexport default {\n\tname: 'ViewerComponent',\n\tcomponents: {\n\t\tNcButton: Vue.extend(NcButton),\n\t\tPencilIcon: Vue.extend(PencilIcon),\n\t\tRichTextReader: Vue.extend(RichTextReader),\n\t\tPlainTextReader: Vue.extend(PlainTextReader),\n\t\tEditor: getEditorInstance,\n\t},\n\tprovide() {\n\t\treturn {\n\t\t\tisEmbedded: this.isEmbedded,\n\t\t}\n\t},\n\tprops: {\n\t\tfilename: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tfileid: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tautofocus: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tshareToken: {\n\t\t\ttype: String,\n\t\t\tdefault: () => getSharingToken(),\n\t\t},\n\t\tmime: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tshowOutlineOutside: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tpermissions: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tsource: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\tisEmbedded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tcontent: '',\n\t\t\thasToggledInteractiveEmbedding: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\t/** @return {boolean} */\n\t\tuseSourceView() {\n\t\t\treturn this.source && (this.fileVersion || !this.fileid || this.isEmbedded) && !this.hasToggledInteractiveEmbedding\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\treaderComponent() {\n\t\t\treturn this.mime === 'text/markdown' ? RichTextReader : PlainTextReader\n\t\t},\n\t},\n\n\twatch: {\n\t\tsource() {\n\t\t\tthis.loadFileContent()\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.loadFileContent()\n\t},\n\n\tmethods: {\n\t\tt: translate,\n\t\tasync loadFileContent() {\n\t\t\tif (this.useSourceView) {\n\t\t\t\tconst response = await axios.get(this.source)\n\t\t\t\tthis.content = response.data\n\t\t\t\tthis.contentLoaded = true\n\t\t\t}\n\t\t\tthis.$emit('update:loaded', true)\n\t\t},\n\t\ttoggleEdit() {\n\t\t\tthis.hasToggledInteractiveEmbedding = true\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.text-editor:not(.viewer__file--hidden) {\n\toverflow: scroll;\n\ttop: 0;\n\twidth: 100%;\n\tmax-width: 100%;\n\theight: 100%;\n\tleft: 0;\n\tmargin: 0 auto;\n\tposition: relative;\n\tbackground-color: var(--color-main-background);\n\n\t&.source-viewer {\n\t\tdisplay: block;\n\n\t\t.text-editor__content-wrapper {\n\t\t\tmargin-top: var(--header-height);\n\t\t}\n\n\t\t.toggle-interactive {\n\t\t\tposition: sticky;\n\t\t\tbottom: 0;\n\t\t\tright: 0;\n\t\t'
reuse._util - ERROR - 'js/ViewerComponent.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<RichTextReader v-if=\"isRichEditor\"\n\t\t:content=\"content\" />\n\t<PlainTextReader v-else\n\t\t:content=\"content\" />\n</template>\n\n<script>\nimport PlainTextReader from './PlainTextReader.vue'\nimport RichTextReader from './RichTextReader.vue'\n\nexport default {\n\tname: 'Reader',\n\tcomponents: { PlainTextReader, RichTextReader },\n\tprops: {\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tisRichEditor: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n\n\t#read-only-editor {\n\t\toverflow: scroll;\n\t}\n\n\t.thumbnailContainer #read-only-editor  {\n\t\twidth: 100%;\n\n\t\t.ProseMirror {\n\t\t\theight: auto;\n\t\t\tmargin: 0 0 0 0;\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\n</style>\n"],"names":["_sfc_main","PlainTextReader","RichTextReader"],"mappings":";ikBAgBA,MAAAA,EAAA,CACA,KAAA,SACA,WAAA,CAAA,gBAAAC,EAAA,eAAAC,CAAA,EACA,MAAA,CACA,QAAA,CACA,KAAA,OACA,SAAA,EACA,EACA,aAAA,CACA,KAAA,QACA,QAAA,EACA,CACA,CACA"'
reuse._util - ERROR - 'js/Reader.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nimport store from './store/index.js'\n// eslint-disable-next-line import/no-unresolved, n/no-missing-import\nimport 'vite/modulepreload-polyfill'\n\nif (document.getElementById('app-content')) {\n\tPromise.all([\n\t\timport(/* webpackChunkName: \"editor\" */'vue'),\n\t\timport(/* webpackChunkName: \"editor\" */'./views/DirectEditing.vue'),\n\t]).then((imports) => {\n\t\tconst Vue = imports[0].default\n\t\tVue.prototype.t = window.t\n\t\tVue.prototype.OCA = window.OCA\n\t\tconst DirectEditing = imports[1].default\n\t\tconst vm = new Vue({\n\t\t\trender: h => h(DirectEditing),\n\t\t\tstore,\n\t\t})\n\t\tvm.$mount(document.getElementById('app-content'))\n\t})\n}\n"],"file":"js/text-text.mjs"'
reuse._util - ERROR - 'js/text-text.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\nimport { loadState } from '@nextcloud/initial-state'\n\nimport { logger } from './helpers/logger.js'\n// eslint-disable-next-line import/no-unresolved, n/no-missing-import\nimport 'vite/modulepreload-polyfill'\n\nconst workspaceAvailable = loadState('text', 'workspace_available')\nconst workspaceEnabled = loadState('text', 'workspace_enabled')\n\ndocument.addEventListener('DOMContentLoaded', async () => {\n\tif (typeof OCA.Viewer === 'undefined') {\n\t\tconst { registerFileActionFallback } = await import('./helpers/files.js')\n\t\tlogger.error('Viewer app is not installed')\n\t\tregisterFileActionFallback()\n\t}\n\n\tif (workspaceAvailable && OCA && OCA?.Files?.Settings) {\n\t\tconst { default: Vue } = await import('vue')\n\t\tconst { default: FilesSettings } = await import('./views/FilesSettings.vue')\n\t\tconst { default: store } = await import('./store/index.js')\n\n\t\tVue.prototype.t = window.t\n\t\tVue.prototype.n = window.n\n\t\tVue.prototype.OCA = window.OCA\n\t\tconst vm = new Vue({\n\t\t\trender: h => h(FilesSettings, {}),\n\t\t\tstore,\n\t\t})\n\t\tconst el = vm.$mount().$el\n\t\tOCA.Files.Settings.register(new OCA.Files.Settings.Setting('text', {\n\t\t\tel: () => { return el },\n\t\t}))\n\t}\n})\n\nOCA.Text = {\n\tRichWorkspaceEnabled: workspaceEnabled,\n}\n"],"file":"js/text-files.mjs"'
reuse._util - ERROR - 'js/text-files.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
/opt/venv/lib/python3.11/site-packages/reuse/project.py:332: PendingDeprecationWarning: '.reuse/dep5' is deprecated. You are recommended to instead use REUSE.toml. Use `reuse convert-dep5` to convert.
  warnings.warn(
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<BaseReader :content=\"content\" />\n</template>\n\n<script>\n/* eslint-disable import/no-named-as-default */\nimport CodeBlock from '@tiptap/extension-code-block'\nimport escapeHtml from 'escape-html'\nimport BaseReader from './BaseReader.vue'\nimport { PlainText } from './../extensions/index.js'\n\nexport default {\n\tname: 'PlainTextReader',\n\tcomponents: { BaseReader },\n\n\tprovide: {\n\t\trenderHtml(content) {\n\t\t\treturn '<pre>' + escapeHtml(content) + '</pre>'\n\t\t},\n\t\textensions: () => [PlainText, CodeBlock],\n\t},\n\n\tprops: {\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n}\n</script>\n"],"names":["_sfc_main","BaseReader","content","escapeHtml","PlainText","CodeBlock"],"mappings":";8MAgBA,MAAAA,EAAA,CACA,KAAA,kBACA,WAAA,CAAA,WAAAC,CAAA,EAEA,QAAA,CACA,WAAAC,EAAA,CACA,MAAA,QAAAC,EAAAD,CAAA,EAAA,QACA,EACA,WAAA,IAAA,CAAAE,EAAAC,CAAA,CACA,EAEA,MAAA,CACA,QAAA,CACA,KAAA,OACA,SAAA,EACA,CACA,CAEA"'
reuse._util - ERROR - 'js/PlainTextReader.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nimport { registerFileListHeaders, registerDavProperty } from '@nextcloud/files'\nimport { loadState } from '@nextcloud/initial-state'\nimport { addMenuRichWorkspace, FilesWorkspaceHeader } from './helpers/files.js'\n// eslint-disable-next-line import/no-unresolved, n/no-missing-import\nimport 'vite/modulepreload-polyfill'\n\nconst workspaceAvailable = loadState('text', 'workspace_available')\n\nregisterDavProperty('nc:rich-workspace', { nc: 'http://nextcloud.org/ns' })\nregisterDavProperty('nc:rich-workspace-file', { nc: 'http://nextcloud.org/ns' })\n\nif (workspaceAvailable) {\n\taddMenuRichWorkspace()\n\tregisterFileListHeaders(FilesWorkspaceHeader)\n}\n"],"names":["workspaceAvailable","loadState","registerDavProperty","addMenuRichWorkspace","registerFileListHeaders","FilesWorkspaceHeader"],"mappings":";ogBAWA,MAAMA,EAAqBC,EAAU,OAAQ,qBAAqB,EAElEC,EAAoB,oBAAqB,CAAE,GAAI,0BAA2B,EAC1EA,EAAoB,yBAA0B,CAAE,GAAI,0BAA2B,EAE3EF,IACHG,EAAsB,EACtBC,EAAwBC,CAAoB"'
reuse._util - ERROR - 'js/text-init.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcPopover class=\"session-list\" placement=\"bottom\">\n\t\t<template #trigger=\"{ attrs }\">\n\t\t\t<div>\n\t\t\t\t<button :title=\"label\"\n\t\t\t\t\t:aria-label=\"label\"\n\t\t\t\t\tclass=\"avatar-list\"\n\t\t\t\t\tv-bind=\"attrs\">\n\t\t\t\t\t<div class=\"avatardiv icon-group\" />\n\t\t\t\t\t<AvatarWrapper v-for=\"session in sessionsVisible\"\n\t\t\t\t\t\t:key=\"session.id\"\n\t\t\t\t\t\t:session=\"session\"\n\t\t\t\t\t\t:size=\"30\" />\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</template>\n\t\t<template #default>\n\t\t\t<div class=\"session-menu\">\n\t\t\t\t<slot name=\"lastSaved\" />\n\t\t\t\t<ul>\n\t\t\t\t\t<slot />\n\t\t\t\t\t<li v-for=\"session in participantsPopover\"\n\t\t\t\t\t\t:key=\"session.id\"\n\t\t\t\t\t\t:style=\"avatarStyle(session)\">\n\t\t\t\t\t\t<AvatarWrapper :session=\"session\" :size=\"36\" />\n\t\t\t\t\t\t<span class=\"session-label\">\n\t\t\t\t\t\t\t{{ session.userId ? session.displayName : (session.guestName ? session.guestName : t('text', 'Guest')) }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span v-if=\"session.userId === null\" class=\"guest-label\">({{ t('text', 'guest') }})</span>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</template>\n\t</NcPopover>\n</template>\n\n<script>\nimport { NcPopover } from '@nextcloud/vue'\nimport AvatarWrapper from './AvatarWrapper.vue'\nimport { COLLABORATOR_IDLE_TIME, COLLABORATOR_DISCONNECT_TIME } from '../../services/SyncService.js'\n\nexport default {\n\tname: 'SessionList',\n\tcomponents: {\n\t\tAvatarWrapper,\n\t\tNcPopover,\n\t},\n\tprops: {\n\t\tsessions: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tmyName: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\tlabel() {\n\t\t\treturn t('text', 'Active people')\n\t\t},\n\t\tparticipantsPopover() {\n\t\t\tif (this.currentSession?.guestName) {\n\t\t\t\treturn this.participantsWithoutCurrent\n\t\t\t}\n\t\t\treturn this.participants\n\t\t},\n\t\tparticipantsWithoutCurrent() {\n\t\t\treturn this.participants.filter((session) => !session.isCurrent)\n\t\t},\n\t\tparticipants() {\n\t\t\treturn Object.values(this.sessions).filter((session) =>\n\t\t\t\tsession.lastContact > Date.now() / 1000 - COLLABORATOR_DISCONNECT_TIME\n\t\t\t\t\t&& (session.userId !== null || session.guestName !== null),\n\t\t\t).sort((a, b) => a.lastContact < b.lastContact)\n\t\t},\n\t\tcurrentSession() {\n\t\t\treturn Object.values(this.sessions).find((session) => session.isCurrent)\n\t\t},\n\t\tavatarStyle() {\n\t\t\treturn (session) => {\n\t\t\t\treturn {\n\t\t\t\t\topacity: session.lastContact > Date.now() / 1000 - COLLABORATOR_IDLE_TIME ? 1 : 0.5,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsessionsVisible() {\n\t\t\treturn this.participantsWithoutCurrent.slice(0, 3)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.session-list {\n\t\theight: var(--default-clickable-area);\n\t}\n\t.avatar-list {\n\t\tborder: none;\n\t\tbackground-color: var(--color-main-background);\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\tpadding-left: 3px;\n\t\tdisplay: inline-flex;\n\t\tflex-direction: row-reverse;\n\n\t\t.avatar-wrapper {\n\t\t\tmargin: 0 -12px 0 0;\n\t\t\tz-index: 1;\n\t\t\tborder-radius: 50%;\n\t\t\toverflow: hidden;\n\t\t\tbox-sizing: content-box !important;\n\t\t\theight: calc(var(--default-clickable-area) - 4px);\n\t\t\twidth: calc(var(--default-clickable-area) - 4px);\n\t\t}\n\n\t\t.icon-more, .icon-group, .icon-settings-dark {\n\t\t\twidth: var(--default-clickable-area);\n\t\t\theight: var(--default-clickable-area);\n\t\t\tmargin: 0 3px 0 0;\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t}\n\t\t}\n\t}\n\n\t.session-menu {\n\t\tmax-width: 280px;\n\t\tpadding-top: 6px;\n\t\tpadding-bottom: 6px;\n\n\t\tul li {\n\t\t\talign-items: center;\n\t\t\tdisplay: flex;\n\t\t\tpadding: 6px;\n\n\t\t\t.avatar-wr'
reuse._util - ERROR - 'js/SessionList.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nconst getSharingToken = () => document.getElementById('sharingToken')\n\t? document.getElementById('sharingToken').value\n\t: null\n\nexport { getSharingToken }\n"],"names":["getSharingToken"],"mappings":";MAKMA,EAAkB,IAAM,SAAS,eAAe,cAAc,EACjE,SAAS,eAAe,cAAc,EAAE,MACxC"'
reuse._util - ERROR - 'js/token.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nimport { logger } from './helpers/logger.js'\nimport { openMimetypesMarkdown, openMimetypesPlainText } from './helpers/mime.js'\n// eslint-disable-next-line import/no-unresolved, n/no-missing-import\nimport 'vite/modulepreload-polyfill'\n\n/**\n * Wrapper for async registration of ViewerComponent.\n * Note: it should be named function - the name is used for component registration.\n *\n * @return {Promise<import('./components/ViewerComponent.vue')>} ViewerComponent\n */\nfunction AsyncTextViewerComponent() {\n\treturn import('./components/ViewerComponent.vue')\n}\n\nif (typeof OCA.Viewer === 'undefined') {\n\tlogger.error('Viewer app is not installed')\n} else {\n\tOCA.Viewer.registerHandler({\n\t\tid: 'text',\n\t\tmimes: [...openMimetypesMarkdown, ...openMimetypesPlainText],\n\t\tcomponent: AsyncTextViewerComponent,\n\t\tgroup: null,\n\t\ttheme: 'default',\n\t\tcanCompare: true,\n\t})\n}\n"],"file":"js/text-viewer.mjs"'
reuse._util - ERROR - 'js/text-viewer.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<form :title=\"t('text', 'Enter your name so other people can see who is editing')\" class=\"guest-name-dialog\" @submit.prevent=\"setGuestName()\">\n\t\t<label><AvatarWrapper :session=\"session\" :size=\"32\" /></label>\n\t\t<input v-model=\"guestName\"\n\t\t\ttype=\"text\"\n\t\t\t:aria-label=\"t('text', 'Edit guest name')\"\n\t\t\t:placeholder=\"t('text', 'Guest')\">\n\t\t<input type=\"submit\"\n\t\t\tclass=\"icon-confirm\"\n\t\t\t:aria-label=\"t('text', 'Save guest name')\"\n\t\t\tvalue=\"\">\n\t</form>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport AvatarWrapper from './AvatarWrapper.vue'\nimport { useSyncServiceMixin } from '../Editor.provider.js'\n\nexport default {\n\tname: 'GuestNameDialog',\n\tcomponents: {\n\t\tAvatarWrapper,\n\t},\n\tmixins: [\n\t\tuseSyncServiceMixin,\n\t],\n\tprops: {\n\t\tsession: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tguestName: '',\n\t\t\tguestNameBuffered: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\tavatarUrl() {\n\t\t\tconst size = 32\n\t\t\tconst avatarUrl = generateUrl(\n\t\t\t\t'/avatar/guest/{user}/{size}',\n\t\t\t\t{\n\t\t\t\t\tuser: this.guestNameBuffered,\n\t\t\t\t\tsize,\n\t\t\t\t})\n\t\t\treturn window.location.protocol + '//' + window.location.host + avatarUrl\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tthis.guestName = this.$syncService.guestName\n\t\tthis.updateBufferedGuestName()\n\t},\n\tmethods: {\n\t\tsetGuestName() {\n\t\t\tconst previousGuestName = this.$syncService.guestName\n\t\t\tthis.$syncService.updateSession(this.guestName).then(() => {\n\t\t\t\tlocalStorage.setItem('nick', this.guestName)\n\t\t\t\tthis.updateBufferedGuestName()\n\t\t\t}).catch((e) => {\n\t\t\t\tthis.guestName = previousGuestName\n\t\t\t})\n\t\t},\n\t\tupdateBufferedGuestName() {\n\t\t\tthis.guestNameBuffered = this.guestName\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\tform.guest-name-dialog {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tpadding: 6px;\n\n\t\t&:deep(img) {\n\t\t\tmargin: 0 !important;\n\t\t}\n\n\t\tinput[type=text] {\n\t\t\tflex-grow: 1;\n\t\t}\n\t\tlabel {\n\t\t\tpadding-right: 3px;\n\t\t\theight: 32px;\n\t\t}\n\t}\n</style>\n"],"names":["_sfc_main","AvatarWrapper","useSyncServiceMixin","avatarUrl","generateUrl","previousGuestName","e"],"mappings":";2gBAwBA,MAAAA,EAAA,CACA,KAAA,kBACA,WAAA,CACA,cAAAC,CACA,EACA,OAAA,CACAC,CACA,EACA,MAAA,CACA,QAAA,CACA,KAAA,OACA,SAAA,EACA,CACA,EACA,MAAA,CACA,MAAA,CACA,UAAA,GACA,kBAAA,EACA,CACA,EACA,SAAA,CACA,WAAA,CAEA,MAAAC,EAAAC,EACA,8BACA,CACA,KAAA,KAAA,kBACA,OACA,CAAA,EACA,OAAA,OAAA,SAAA,SAAA,KAAA,OAAA,SAAA,KAAAD,CACA,CACA,EACA,aAAA,CACA,KAAA,UAAA,KAAA,aAAA,UACA,KAAA,wBAAA,CACA,EACA,QAAA,CACA,cAAA,CACA,MAAAE,EAAA,KAAA,aAAA,UACA,KAAA,aAAA,cAAA,KAAA,SAAA,EAAA,KAAA,IAAA,CACA,aAAA,QAAA,OAAA,KAAA,SAAA,EACA,KAAA,wBAAA,CACA,CAAA,EAAA,MAAAC,GAAA,CACA,KAAA,UAAAD,CACA,CAAA,CACA,EACA,yBAAA,CACA,KAAA,kBAAA,KAAA,SACA,CACA,CACA"'
reuse._util - ERROR - 'js/GuestNameDialog.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n<template>\n\t<div id=\"files-setting-richworkspace\">\n\t\t<input id=\"showRichWorkspacesToggle\"\n\t\t\tv-model=\"showWorkspace\"\n\t\t\tclass=\"checkbox\"\n\t\t\ttype=\"checkbox\"\n\t\t\t@change=\"toggle\">\n\t\t<label for=\"showRichWorkspacesToggle\">{{ t('text', 'Show folder description') }}</label>\n\t</div>\n</template>\n\n<script>\nimport { emit } from '@nextcloud/event-bus'\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'FilesSettings',\n\tdata() {\n\t\treturn {\n\t\t\tshowWorkspace: OCA.Text.RichWorkspaceEnabled,\n\t\t}\n\t},\n\tmethods: {\n\t\ttoggle() {\n\t\t\t// FIXME: save to app config\n\t\t\tif (this.showWorkspace) {\n\t\t\t\temit('Text::showRichWorkspace')\n\t\t\t\taxios.post(generateUrl('/apps/text/settings'), {\n\t\t\t\t\tkey: 'workspace_enabled',\n\t\t\t\t\tvalue: '1',\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\temit('Text::hideRichWorkspace')\n\t\t\t\taxios.post(generateUrl('/apps/text/settings'), {\n\t\t\t\t\tkey: 'workspace_enabled',\n\t\t\t\t\tvalue: '0',\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n"],"names":["_sfc_main","emit","axios","generateUrl"],"mappings":";yNAoBA,MAAAA,EAAA,CACA,KAAA,gBACA,MAAA,CACA,MAAA,CACA,cAAA,IAAA,KAAA,oBACA,CACA,EACA,QAAA,CACA,QAAA,CAEA,KAAA,eACAC,EAAA,yBAAA,EACAC,EAAA,KAAAC,EAAA,qBAAA,EAAA,CACA,IAAA,oBACA,MAAA,GACA,CAAA,IAEAF,EAAA,yBAAA,EACAC,EAAA,KAAAC,EAAA,qBAAA,EAAA,CACA,IAAA,oBACA,MAAA,GACA,CAAA,EAEA,CACA,CACA"'
reuse._util - ERROR - 'js/FilesSettings.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\n/**\n * Get instance of Editor component\n * Using singleton approach here to avoid duplicate yjs import error\n * @return {Promise<*>}\n */\nexport default async function getEditorInstance() {\n\tif (!window._nc_text_editor_instance) {\n\t\tif (window._nc_text_editor_importing) {\n\t\t\treturn await new Promise((resolve) => {\n\t\t\t\tconst intervalId = setInterval(() => {\n\t\t\t\t\tif (!window._nc_text_editor_instance) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tresolve(window._nc_text_editor_instance)\n\t\t\t\t\tclearInterval(intervalId)\n\t\t\t\t}, 200)\n\t\t\t})\n\t\t} else {\n\t\t\twindow._nc_text_editor_importing = true\n\t\t}\n\t\tconst Editor = await import(/* webpackChunkName: \"editor\" */'./Editor.vue')\n\t\tconst { default: Vue } = await import('vue')\n\t\tVue.prototype.t = window.t\n\t\tVue.prototype.OCA = window.OCA\n\t\tconst EditorConstructor = Vue.extend(Editor.default)\n\t\twindow._nc_text_editor_instance = EditorConstructor\n\t}\n\treturn window._nc_text_editor_instance\n}\n"],"file":"js/Editor.singleton.chunk.mjs"'
reuse._util - ERROR - 'js/Editor.singleton.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nimport Vue from 'vue'\nimport store from'
reuse._util - ERROR - 'js/text-editors.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<div v-if=\"enabled && localHasRichWorkspace\"\n\t\tid=\"rich-workspace\"\n\t\t:class=\"{'focus': focus, 'dark': darkTheme }\">\n\t\t<RichTextReader v-if=\"!loaded || !ready\" :content=\"content\" class=\"rich-workspace--preview\" />\n\t\t<Editor v-if=\"file\"\n\t\t\tv-show=\"ready\"\n\t\t\t:key=\"file.path\"\n\t\t\t:file-id=\"file.id\"\n\t\t\t:relative-path=\"file.path\"\n\t\t\t:share-token=\"shareToken\"\n\t\t\t:mime=\"file.mimetype\"\n\t\t\t:autofocus=\"autofocus\"\n\t\t\t:hide-menu=\"hideMenu\"\n\t\t\tactive\n\t\t\trich-workspace\n\t\t\t@ready=\"ready=true\"\n\t\t\t@focus=\"onFocus\"\n\t\t\t@error=\"reset\" />\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport getEditorInstance from '../components/Editor.singleton.js'\nimport RichTextReader from '../components/RichTextReader.vue'\n\nconst IS_PUBLIC = !!(document.getElementById('isPublic'))\nconst WORKSPACE_URL = generateOcsUrl('apps/text' + (IS_PUBLIC ? '/public' : '') + '/workspace', 2)\nconst SUPPORTED_STATIC_FILENAMES = ['Readme.md', 'README.md', 'readme.md']\n\nexport default {\n\tname: 'RichWorkspace',\n\tcomponents: {\n\t\tRichTextReader,\n\t\tEditor: getEditorInstance,\n\t},\n\tprops: {\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tpath: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\thasRichWorkspace: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\t// Keep track of a local copy of the hasRichWorkspace state as it might change after initial rendering (e.g. when adding/removing the readme)\n\t\t\tlocalHasRichWorkspace: false,\n\t\t\tfocus: false,\n\t\t\tfolder: null,\n\t\t\tfile: null,\n\t\t\tloaded: false,\n\t\t\tready: false,\n\t\t\tautofocus: false,\n\t\t\thideMenu: true,\n\t\t\tdarkTheme: OCA.Accessibility && OCA.Accessibility.theme === 'dark',\n\t\t\tenabled: OCA.Text.RichWorkspaceEnabled,\n\t\t}\n\t},\n\tcomputed: {\n\t\tshareToken() {\n\t\t\treturn document.getElementById('sharingToken')?.value\n\t\t},\n\t},\n\twatch: {\n\t\tpath() {\n\t\t\tthis.getFileInfo()\n\t\t},\n\t\tfocus(newValue) {\n\t\t\tif (!newValue) {\n\t\t\t\tdocument.querySelector('#rich-workspace .text-editor__main').scrollTo(0, 0)\n\t\t\t}\n\t\t},\n\t\thasRichWorkspace(value) {\n\t\t\tthis.localHasRichWorkspace = value\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.localHasRichWorkspace = this.hasRichWorkspace\n\t\tif (this.enabled && this.hasRichWorkspace) {\n\t\t\tthis.getFileInfo()\n\t\t}\n\t\tsubscribe('Text::showRichWorkspace', this.showRichWorkspace)\n\t\tsubscribe('Text::hideRichWorkspace', this.hideRichWorkspace)\n\t\tsubscribe('files:node:created', this.onFileCreated)\n\t\tsubscribe('files:node:deleted', this.onFileDeleted)\n\t\tsubscribe('files:node:renamed', this.onFileRenamed)\n\n\t\tthis.listenKeydownEvents()\n\n\t},\n\tbeforeDestroy() {\n\t\tunsubscribe('Text::showRichWorkspace', this.showRichWorkspace)\n\t\tunsubscribe('Text::hideRichWorkspace', this.hideRichWorkspace)\n\t\tunsubscribe('files:node:created', this.onFileCreated)\n\t\tunsubscribe('files:node:deleted', this.onFileDeleted)\n\t\tunsubscribe('files:node:renamed', this.onFileRenamed)\n\n\t\tthis.unlistenKeydownEvents()\n\t},\n\tmethods: {\n\t\tonFocus() {\n\t\t\tthis.focus = true\n\t\t\tthis.hideMenu = false\n\t\t\tthis.unlistenKeydownEvents()\n\t\t},\n\t\treset() {\n\t\t\tthis.localHasRichWorkspace = false\n\t\t\tthis.file = null\n\t\t\tthis.focus = false\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.creating = false\n\t\t\t\tthis.getFileInfo()\n\t\t\t})\n\t\t},\n\t\tgetFileInfo(autofocus) {\n\t\t\tif (!this.enabled) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.file = null\n\t\t\tthis.r'
reuse._util - ERROR - 'js/RichWorkspace.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nimport { logger } from '../helpers/logger.js'\n\nexport const EDITOR = Symbol('tiptap:editor')\nexport const FILE = Symbol('editor:file')\nexport const ATTACHMENT_RESOLVER = Symbol('attachment:resolver')\nexport const IS_MOBILE = Symbol('editor:is-mobile')\nexport const IS_PUBLIC = Symbol('editor:is-public')\nexport const IS_RICH_EDITOR = Symbol('editor:is-rich-editor')\nexport const IS_RICH_WORKSPACE = Symbol('editor:is-rich-woskapace')\nexport const SYNC_SERVICE = Symbol('sync:service')\nexport const EDITOR_UPLOAD = Symbol('editor:upload')\nexport const HOOK_MENTION_SEARCH = Symbol('hook:mention-search')\nexport const HOOK_MENTION_INSERT = Symbol('hook:mention-insert')\n\nexport const useEditorMixin = {\n\tinject: {\n\t\t$editor: { from: EDITOR, default: null },\n\t},\n}\n\nexport const useSyncServiceMixin = {\n\tinject: {\n\t\t$syncService: { from: SYNC_SERVICE, default: null },\n\t},\n}\n\nexport const useIsPublicMixin = {\n\tinject: {\n\t\t$isPublic: { from: IS_PUBLIC, default: false },\n\t},\n}\n\nexport const useIsRichWorkspaceMixin = {\n\tinject: {\n\t\t$isRichWorkspace: { from: IS_RICH_WORKSPACE, default: false },\n\t},\n}\n\nexport const useIsRichEditorMixin = {\n\tinject: {\n\t\t$isRichEditor: { from: IS_RICH_EDITOR, default: false },\n\t},\n}\n\nexport const useIsMobileMixin = {\n\tinject: {\n\t\t$isMobile: { from: IS_MOBILE, default: false },\n\t},\n}\n\nexport const useFileMixin = {\n\tinject: {\n\t\t$file: {\n\t\t\tfrom: FILE,\n\t\t\tdefault: () => ({\n\t\t\t\tfileId: 0,\n\t\t\t\trelativePath: null,\n\t\t\t\tdocument: null,\n\t\t\t}),\n\t\t},\n\t},\n}\n\nexport const useAttachmentResolver = {\n\tinject: {\n\t\t$attachmentResolver: {\n\t\t\tfrom: ATTACHMENT_RESOLVER,\n\t\t\tdefault: {\n\t\t\t\tresolve(src) {\n\t\t\t\t\tlogger.warn('No attachment resolver provided. Some attachment sources cannot be resolved.')\n\t\t\t\t\treturn [src]\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n}\nexport const useEditorUpload = {\n\tinject: {\n\t\t$editorUpload: {\n\t\t\tfrom: EDITOR_UPLOAD,\n\t\t\tdefault: true,\n\t\t},\n\t},\n}\nexport const useMentionHook = {\n\tinject: {\n\t\t$mentionHookInsert: {\n\t\t\tfrom: HOOK_MENTION_INSERT,\n\t\t\tdefault: true,\n\t\t},\n\t\t$mentionHookSearch: {\n\t\t\tfrom: HOOK_MENTION_SEARCH,\n\t\t\tdefault: true,\n\t\t},\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const STATE_UPLOADING = Symbol('state:uploading-state')\nexport const ACTION_ATTACHMENT_PROMPT = Symbol('editor:action:attachment-prompt')\nexport const ACTION_CHOOSE_LOCAL_ATTACHMENT = Symbol('editor:action:upload-attachment')\n\nexport const useUploadingStateMixin = {\n\tinject: {\n\t\t$uploadingState: {\n\t\t\tfrom: STATE_UPLOADING,\n\t\t\tdefault: {\n\t\t\t\tisUploadingAttachments: false,\n\t\t\t},\n\t\t},\n\t},\n}\n\nexport const useActionAttachmentPromptMixin = {\n\tinject: {\n\t\t$callAttachmentPrompt: { from: ACTION_ATTACHMENT_PROMPT, default: () => {} },\n\t},\n}\n\nexport const useActionChooseLocalAttachmentMixin = {\n\tinject: {\n\t\t$callChooseLocalAttachment: { from: ACTION_CHOOSE_LOCAL_ATTACHMENT, default: () => {} },\n\t},\n}\n"],"names":["EDITOR","FILE","ATTACHMENT_RESOLVER","IS_MOBILE","IS_PUBLIC","IS_RICH_EDITOR","IS_RICH_WORKSPACE","SYNC_SERVICE","EDITOR_UPLOAD","HOOK_MENTION_SEARCH","HOOK_MENTION_INSERT","useEditorMixin","useSyncServiceMixin","useIsPublicMixin","useIsRichWorkspaceMixin","useIsRichEditorMixin","useIsMobileMixin","useFileMixin","useAttachmentResolver","src","logger","useEditorUpload","STATE_UPLOADING","ACTION_ATTACHMENT_PROMPT","ACTION_CHOOSE_LOCAL_ATTACHMENT","useUploadingStateMixin","useActionAttachmentPromptMixin","useActionChooseLocalAttachmentMixin"],"mappings":";uCAOY,MAACA,EAAS,OAAO,eAAe'
reuse._util - ERROR - 'js/MediaHandler.provider.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\n/**\n * Callback that should be executed after the document is ready\n *\n * @param callback\n */\n\nconst documentReady = function(callback) {\n\tconst fn = () => setTimeout(callback, 0)\n\tif (document.attachEvent ? document.readyState === 'complete' : document.readyState !== 'loading') {\n\t\tfn()\n\t} else {\n\t\tdocument.addEventListener('DOMContentLoaded', callback)\n\t}\n}\n\nexport {\n\tdocumentReady,\n}\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n// eslint-disable-next-line import/no-unresolved, n/no-missing-import\nimport 'vite/modulepreload-polyfill'\n\nimport {\n\tregisterFileActionFallback,\n\tregisterFileCreate,\n} from './helpers/files.js'\nimport'
reuse._util - ERROR - 'js/text-public.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"avatar-wrapper\" :style=\"sessionAvatarStyle\">\n\t\t<NcAvatar v-if=\"session.userId\"\n\t\t\t:user=\"session.userId ? session.userId : session.guestName\"\n\t\t\t:is-guest=\"session.userId === null\"\n\t\t\t:disable-menu=\"true\"\n\t\t\t:show-user-status=\"false\"\n\t\t\t:disable-tooltip=\"true\"\n\t\t\t:size=\"size\" />\n\t\t<div v-else class=\"avatar\" :style=\"sessionBackgroundStyle\">\n\t\t\t{{ guestInitial }}\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { NcAvatar } from '@nextcloud/vue'\nexport default {\n\tname: 'AvatarWrapper',\n\tcomponents: {\n\t\tNcAvatar,\n\t},\n\tprops: {\n\t\tsession: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tsize: {\n\t\t\ttype: Number,\n\t\t\tdefault: () => 32,\n\t\t},\n\t},\n\tcomputed: {\n\t\tsessionAvatarStyle() {\n\t\t\treturn {\n\t\t\t\t...this.sessionBackgroundStyle,\n\t\t\t\t'border-color': this.session.color,\n\t\t\t\t'border-width': '2px',\n\t\t\t\t'border-style': 'solid',\n\t\t\t\t'--size': this.size + 'px',\n\t\t\t\t'--font-size': this.size / 2 + 'px',\n\t\t\t}\n\t\t},\n\t\tsessionBackgroundStyle() {\n\t\t\treturn {\n\t\t\t\t'background-color': this.session.userId ? this.session.color + ' !important' : '#b9b9b9',\n\t\t\t}\n\t\t},\n\t\tguestInitial() {\n\t\t\treturn this.session.guestName === '' ? '?' : this.session.guestName.slice(0, 1).toUpperCase()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n.avatar, .avatar-wrapper {\n\tborder-radius: 50%;\n\twidth: var(--size);\n\theight: var(--size);\n\ttext-align: center;\n\tcolor: #ffffff;\n\tline-height: var(--size);\n\tfont-size: var(--font-size);\n\tfont-weight: normal;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n}\n</style>\n"],"names":["_sfc_main","NcAvatar"],"mappings":";4NAsBA,MAAAA,EAAA,CACA,KAAA,gBACA,WAAA,CACA,SAAAC,CACA,EACA,MAAA,CACA,QAAA,CACA,KAAA,OACA,SAAA,EACA,EACA,KAAA,CACA,KAAA,OACA,QAAA,IAAA,EACA,CACA,EACA,SAAA,CACA,oBAAA,CACA,MAAA,CACA,GAAA,KAAA,uBACA,eAAA,KAAA,QAAA,MACA,eAAA,MACA,eAAA,QACA,SAAA,KAAA,KAAA,KACA,cAAA,KAAA,KAAA,EAAA,IACA,CACA,EACA,wBAAA,CACA,MAAA,CACA,mBAAA,KAAA,QAAA,OAAA,KAAA,QAAA,MAAA,cAAA,SACA,CACA,EACA,cAAA,CACA,OAAA,KAAA,QAAA,YAAA,GAAA,IAAA,KAAA,QAAA,UAAA,MAAA,EAAA,CAAA,EAAA,YAAA,CACA,CACA,CACA"'
reuse._util - ERROR - 'js/AvatarWrapper.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst logger = getLoggerBuilder()\n\t.setApp('text')\n\t.detectUser()\n\t.build()\n\nexport {\n\tlogger,\n}\n"],"names":["logger","getLoggerBuilder"],"mappings":";uCAOK,MAACA,EAASC,EAAkB,EAC/B,OAAO,MAAM,EACb,WAAY,EACZ,MAAK"'
reuse._util - ERROR - 'js/logger.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcModal v-if=\"active\" :name=\"fileName\" @close=\"close\">\n\t\t<Editor :file-id=\"fileId\"\n\t\t\t:relative-path=\"relativePath\"\n\t\t\t:active=\"active\"\n\t\t\t:share-token=\"shareToken\"\n\t\t\t:mime=\"mimeType\" />\n\t</NcModal>\n</template>\n\n<script>\nimport { NcModal } from '@nextcloud/vue'\n\nexport default {\n\tname: 'PublicFilesEditor',\n\tcomponents: {\n\t\tNcModal,\n\t\tEditor: () => import(/* webpackChunkName: \"editor\" */'./Editor.vue'),\n\t},\n\tprops: {\n\t\tfileId: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\trelativePath: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tshareToken: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tmimeType: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tcomputed: {\n\t\tfileName() {\n\t\t\treturn this.relativePath.substring(this.relativePath.lastIndexOf('/') + 1)\n\t\t},\n\t},\n\tmethods: {\n\t\tclose() {\n\t\t\tthis.$emit('close')\n\t\t},\n\t},\n}\n</script>\n"],"file":"js/PublicFilesEditor.chunk.mjs"'
reuse._util - ERROR - 'js/PublicFilesEditor.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'EPL-2.0\n *******************************************************************************/\nvar ELK = function () {\n  function ELK() {\n    var _this = this;\n\n    var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n        _ref$defaultLayoutOpt = _ref.defaultLayoutOptions,\n        defaultLayoutOptions = _ref$defaultLayoutOpt === undefined ? {} : _ref$defaultLayoutOpt,\n        _ref$algorithms = _ref.algorithms,\n        algorithms = _ref$algorithms === undefined ? ['layered', 'stress', 'mrtree', 'radial', 'force', 'disco', 'sporeOverlap', 'sporeCompaction', 'rectpacking'] : _ref$algorithms,\n        workerFactory = _ref.workerFactory,\n        workerUrl = _ref.workerUrl;\n\n    _classCallCheck(this, ELK);\n\n    this.defaultLayoutOptions = defaultLayoutOptions;\n    this.initialized = false;\n\n    // check valid worker construction possible\n    if (typeof workerUrl === 'undefined' && typeof workerFactory === 'undefined') {\n      throw new Error(\"Cannot construct an ELK without both 'workerUrl' and 'workerFactory'.\");\n    }\n    var factory = workerFactory;\n    if (typeof workerUrl !== 'undefined' && typeof workerFactory === 'undefined') {\n      // use default Web Worker\n      factory = function factory(url) {\n        return new Worker(url);\n      };\n    }\n\n    // create the worker\n    var worker = factory(workerUrl);\n    if (typeof worker.postMessage !== 'function') {\n      throw new TypeError(\"Created worker does not provide\" + \" the required 'postMessage' function.\");\n    }\n\n    // wrap the worker to return promises\n    this.worker = new PromisedWorker(worker);\n\n    // initially register algorithms\n    this.worker.postMessage({\n      cmd: 'register',\n      algorithms: algorithms\n    }).then(function (r) {\n      return _this.in'
reuse._util - ERROR - 'js/flowchart-elk-definition-ae0efee6.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<div id=\"direct-editor\" :class=\"{'icon-loading': saving}\">\n\t\t<Editor ref=\"editor\"\n\t\t\t:initial-session=\"initialSession\"\n\t\t\t:file-id=\"initial.fileId\"\n\t\t\t:active=\"true\"\n\t\t\t:mime=\"initial.mimetype\"\n\t\t\t:is-direct-editing=\"true\"\n\t\t\t@ready=\"loaded\">\n\t\t\t<template v-if=\"isMobile\" #header>\n\t\t\t\t<button class=\"icon-share\" @click=\"share\" />\n\t\t\t\t<button class=\"icon-close\" @click=\"close\" />\n\t\t\t</template>\n\t\t</Editor>\n\t</div>\n</template>\n\n<script>\nimport Vue from 'vue'\nimport Editor from '../components/Editor.vue'\n\nimport { logger } from '../helpers/logger.js'\n\nconst log = Vue.observable({\n\tmessages: [],\n\tmtime: 0,\n})\n\nconst callMobileMessage = (messageName, attributes) => {\n\tlogger.debug(`callMobileMessage ${messageName}`, { attributes })\n\tlet message = messageName\n\tif (typeof attributes !== 'undefined') {\n\t\tmessage = {\n\t\t\tMessageName: messageName,\n\t\t\tValues: attributes,\n\t\t}\n\t}\n\tlet attributesString = null\n\ttry {\n\t\tattributesString = JSON.stringify(attributes)\n\t} catch (e) {\n\t\tattributesString = null\n\t}\n\n\t// Forward to mobile handler\n\tif (window.DirectEditingMobileInterface && typeof window.DirectEditingMobileInterface[messageName] === 'function') {\n\t\tif (attributesString === null || typeof attributesString === 'undefined') {\n\t\t\twindow.DirectEditingMobileInterface[messageName]()\n\t\t} else {\n\t\t\twindow.DirectEditingMobileInterface[messageName](attributesString)\n\t\t}\n\t}\n\n\t// iOS webkit fallback\n\tif (window.webkit\n\t\t&& window.webkit.messageHandlers\n\t\t&& window.webkit.messageHandlers.DirectEditingMobileInterface) {\n\t\twindow.webkit.messageHandlers.DirectEditingMobileInterface.postMessage(message)\n\t}\n\n\twindow.postMessage(message)\n}\n\nwindow.addEventListener('message', function(message) {\n\tlog.messages.push(message.data)\n\tlogger.debug('postMessage', { message })\n})\n\nexport default {\n\tname: 'DirectEditing',\n\tcomponents: { Editor },\n\tdata() {\n\t\treturn {\n\t\t\tinitial: OCP.InitialState.loadState('text', 'file'),\n\t\t\tmessages: log.messages,\n\t\t\tlog,\n\t\t\tsaving: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tinitialSession() {\n\t\t\treturn JSON.parse(this.initial.session) || null\n\t\t},\n\t\tisMobile() {\n\t\t\treturn (window.DirectEditingMobileInterface || (window.webkit\n\t\t\t\t&& window.webkit.messageHandlers\n\t\t\t\t&& window.webkit.messageHandlers.DirectEditingMobileInterface))\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tcallMobileMessage('loading')\n\t},\n\tmounted() {\n\t\tdocument.querySelector('meta[name=\"viewport\"]').setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0')\n\n\t\tthis.$refs.editor.$on('push:forbidden', () => {\n\t\t\tlogger.warn('push was forbidden due to invalidated session')\n\t\t\tthis.reload()\n\t\t})\n\t},\n\tmethods: {\n\t\tasync close() {\n\t\t\tthis.saving = true\n\t\t\tsetTimeout(async () => {\n\t\t\t\tawait this.$refs.editor.$destroy()\n\t\t\t\tcallMobileMessage('close')\n\t\t\t}, 0)\n\t\t},\n\t\tshare() {\n\t\t\tcallMobileMessage('share')\n\t\t},\n\t\tloaded() {\n\t\t\tcallMobileMessage('loaded')\n\t\t},\n\t\treload() {\n\t\t\tcallMobileMessage('reload')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n\tbody {\n\t\tposition: fixed;\n\t\tbackground-color: var(--color-main-background);\n\t}\n\n\t#content[class=app-public] {\n\t\tmargin: 0;\n\t\tmargin-top: 0;\n\t}\n</style>\n\n<style scoped lang=\"scss\">\n\t#direct-editor {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tposition: fixed;\n\t\toverflow: auto;\n\n\t\t&:deep(.text-editor) {\n\t\t\theight: 100%;\n\t\t\ttop: 0;\n\t\t}\n\t\t&:deep(.text-editor__wrapper div.ProseMirror) {\n\t\t\tmargin-top: 0;\n\t\t}\n\t}\n\n\tpre {\n\t\twidth: 100%;\n\t\tmax-width: 700px;\n\t\tmar'
reuse._util - ERROR - 'js/DirectEditing.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nconst openMimetypesMarkdown = [\n\t'text/markdown',\n]\n\nconst openMimetypesPlainText = [\n\t'text/plain',\n\t'application/cmd',\n\t'application/x-empty',\n\t'application/x-msdos-program',\n\t'application/javascript',\n\t'application/json',\n\t'application/x-perl',\n\t'application/x-php',\n\t'application/x-tex',\n\t'application/xml',\n\t'application/yaml',\n\t'text/asciidoc',\n\t'text/css',\n\t'text/html',\n\t'text/org',\n\t'text/x-c',\n\t'text/x-c++src',\n\t'text/x-h',\n\t'text/x-java-source',\n\t'text/x-ldif',\n\t'text/x-python',\n\t'text/x-shellscript',\n]\n\nif (!OC.appswebroots?.richdocuments && !OC.appswebroots?.onlyoffice) {\n\topenMimetypesPlainText.push('text/csv')\n}\n\nconst openMimetypes = [...openMimetypesMarkdown, ...openMimetypesPlainText]\n\nexport {\n\topenMimetypes,\n\topenMimetypesMarkdown,\n\topenMimetypesPlainText,\n}\n"],"names":["openMimetypesMarkdown","openMimetypesPlainText","_a","_b","openMimetypes"],"mappings":";MAKMA,EAAwB,CAC7B,eACD,EAEMC,EAAyB,CAC9B,aACA,kBACA,sBACA,8BACA,yBACA,mBACA,qBACA,oBACA,oBACA,kBACA,mBACA,gBACA,WACA,YACA,WACA,WACA,gBACA,WACA,qBACA,cACA,gBACA,oBACD,UAEI,GAACC,EAAA,GAAG,eAAH,MAAAA,EAAiB,gBAAiB,GAACC,EAAA,GAAG,eAAH,MAAAA,EAAiB,aACxDF,EAAuB,KAAK,UAAU,EAGlC,MAACG,EAAgB,CAAC,GAAGJ,EAAuB,GAAGC,CAAsB"'
reuse._util - ERROR - 'js/mime.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<div data-text-el=\"editor-content-wrapper\"\n\t\tclass=\"content-wrapper text-editor__content-wrapper\"\n\t\t:class=\"{\n\t\t\t'--show-outline': showOutline\n\t\t}\">\n\t\t<div v-if=\"showOutline\" class=\"text-editor__content-wrapper__left\">\n\t\t\t<EditorOutline />\n\t\t</div>\n\t\t<EditorContent v-if=\"$editor\"\n\t\t\tid=\"read-only-editor\"\n\t\t\tclass=\"editor__content text-editor__content\"\n\t\t\t:editor=\"$editor\" />\n\t\t<div class=\"text-editor__content-wrapper__right\" />\n\t</div>\n</template>\n\n<script>\nimport { Editor } from '@tiptap/core'\nimport { EditorContent } from '@tiptap/vue-2'\nimport { EDITOR } from './Editor.provider.js'\nimport { useOutlineStateMixin, useOutlineActions } from './Editor/Wrapper.provider.js'\nimport EditorOutline from './Editor/EditorOutline.vue'\n\nexport default {\n\tname: 'BaseReader',\n\tcomponents: {\n\t\tEditorContent,\n\t\tEditorOutline,\n\t},\n\n\tmixins: [useOutlineStateMixin, useOutlineActions],\n\n\tprovide() {\n\t\tconst val = {}\n\n\t\tObject.defineProperties(val, {\n\t\t\t[EDITOR]: {\n\t\t\t\tget: () => this.$editor,\n\t\t\t},\n\t\t})\n\n\t\treturn val\n\t},\n\n\t// extensions is a factory building a list of extensions for the editor\n\tinject: ['renderHtml', 'extensions'],\n\n\tprops: {\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\thtmlContent() {\n\t\t\treturn this.renderHtml(this.content)\n\t\t},\n\t\tshowOutline() {\n\t\t\treturn this.$outlineState.visible\n\t\t},\n\t},\n\n\twatch: {\n\t\tcontent() {\n\t\t\tthis.updateContent()\n\t\t},\n\t},\n\n\tcreated() {\n\t\tthis.$editor = this.createEditor()\n\t\tthis.$editor.setEditable(false)\n\t},\n\n\tbeforeDestroy() {\n\t\tthis.$editor.destroy()\n\t},\n\n\tmethods: {\n\t\tcreateEditor() {\n\t\t\treturn new Editor({\n\t\t\t\tcontent: this.htmlContent,\n\t\t\t\textensions: this.extensions(),\n\t\t\t})\n\t\t},\n\n\t\tupdateContent() {\n\t\t\tthis.$editor.commands.setContent(this.htmlContent, true)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.editor__content {\n\tmax-width: var(--text-editor-max-width);\n\tmargin: auto;\n\tposition: relative;\n\twidth: 100%;\n}\n\n.text-editor__content-wrapper {\n\t--side-width: calc((100% - var(--text-editor-max-width)) / 2);\n\tdisplay: grid;\n\tgrid-template-columns: 1fr auto;\n\t&.--show-outline {\n\t\tgrid-template-columns: var(--side-width) auto var(--side-width);\n\t}\n\t.text-editor__content-wrapper__left,\n\t.text-editor__content-wrapper__right {\n\t\theight: 100%;\n\t\tposition: relative;\n\t}\n}\n</style>\n","<!--\n  - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<BaseReader :content=\"content\" @click-link=\"(e, a) => $emit('click-link', e, a)\" />\n</template>\n\n<script>\nimport BaseReader from './BaseReader.vue'\nimport { RichText } from './../extensions/index.js'\nimport markdownit from './../markdownit/index.js'\n\nexport default {\n\tname: 'RichTextReader',\n\tcomponents: { BaseReader },\n\n\tprovide: {\n\t\trenderHtml(content) {\n\t\t\treturn markdownit.render(content)\n\t\t},\n\t\textensions() {\n\t\t\treturn [\n\t\t\t\tRichText.configure({\n\t\t\t\t\tediting: false,\n\t\t\t\t}),\n\t\t\t]\n\t\t},\n\t},\n\n\tprops: {\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n\t@import './../css/prosemirror';\n\t@import './../css/print';\n</style>\n"],"names":["_sfc_main","EditorContent","EditorOutline","useOutlineStateMixin","useOutlineActions","val","EDITOR","Editor","BaseReader","content","markdownit","RichText"],"mappings":";+LA6BA,MAAAA,EAAA,CACA,KAAA,aACA,WAAA,CACA,cAAAC,EACA,cAAAC,CACA,EAEA,OAAA,CAAAC,EAAAC,CAAA,EAEA,SAAA,CACA,MAAAC,EAAA,CAAA,EAEA'
reuse._util - ERROR - 'js/RichTextReader.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<Editor v-if=\"!useSourceView\"\n\t\t:file-id=\"fileid\"\n\t\t:relative-path=\"filename\"\n\t\t:active=\"active || isEmbedded\"\n\t\t:autofocus=\"autofocus\"\n\t\t:share-token=\"shareToken\"\n\t\t:class=\"{ 'text-editor--embedding': isEmbedded }\"\n\t\t:mime=\"mime\"\n\t\t:show-outline-outside=\"showOutlineOutside\" />\n\t<div v-else\n\t\tid=\"editor-container\"\n\t\tdata-text-el=\"editor-container\"\n\t\tclass=\"text-editor source-viewer\">\n\t\t<Component :is=\"readerComponent\" :content=\"content\" />\n\t\t<NcButton v-if=\"isEmbedded\" class=\"toggle-interactive\" @click=\"toggleEdit\">\n\t\t\t{{ t('text', 'Edit') }}\n\t\t\t<template #icon>\n\t\t\t\t<PencilIcon />\n\t\t\t</template>\n\t\t</NcButton>\n\t</div>\n</template>\n\n<script>\nimport Vue from 'vue'\nimport axios from '@nextcloud/axios'\nimport PencilIcon from 'vue-material-design-icons/Pencil.vue'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport PlainTextReader from './PlainTextReader.vue'\nimport RichTextReader from './RichTextReader.vue'\nimport { translate, translatePlural } from '@nextcloud/l10n'\n\nimport { getSharingToken } from '../helpers/token.js'\nimport getEditorInstance from './Editor.singleton.js'\n\nVue.prototype.t = translate\nVue.prototype.n = translatePlural\n\nexport default {\n\tname: 'ViewerComponent',\n\tcomponents: {\n\t\tNcButton: Vue.extend(NcButton),\n\t\tPencilIcon: Vue.extend(PencilIcon),\n\t\tRichTextReader: Vue.extend(RichTextReader),\n\t\tPlainTextReader: Vue.extend(PlainTextReader),\n\t\tEditor: getEditorInstance,\n\t},\n\tprovide() {\n\t\treturn {\n\t\t\tisEmbedded: this.isEmbedded,\n\t\t}\n\t},\n\tprops: {\n\t\tfilename: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tfileid: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tautofocus: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tshareToken: {\n\t\t\ttype: String,\n\t\t\tdefault: () => getSharingToken(),\n\t\t},\n\t\tmime: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tshowOutlineOutside: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tpermissions: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tsource: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\tisEmbedded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tcontent: '',\n\t\t\thasToggledInteractiveEmbedding: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\t/** @return {boolean} */\n\t\tuseSourceView() {\n\t\t\treturn this.source && (this.fileVersion || !this.fileid || this.isEmbedded) && !this.hasToggledInteractiveEmbedding\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\treaderComponent() {\n\t\t\treturn this.mime === 'text/markdown' ? RichTextReader : PlainTextReader\n\t\t},\n\t},\n\n\twatch: {\n\t\tsource() {\n\t\t\tthis.loadFileContent()\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.loadFileContent()\n\t},\n\n\tmethods: {\n\t\tt: translate,\n\t\tasync loadFileContent() {\n\t\t\tif (this.useSourceView) {\n\t\t\t\tconst response = await axios.get(this.source)\n\t\t\t\tthis.content = response.data\n\t\t\t\tthis.contentLoaded = true\n\t\t\t}\n\t\t\tthis.$emit('update:loaded', true)\n\t\t},\n\t\ttoggleEdit() {\n\t\t\tthis.hasToggledInteractiveEmbedding = true\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.text-editor:not(.viewer__file--hidden) {\n\toverflow: scroll;\n\ttop: 0;\n\twidth: 100%;\n\tmax-width: 100%;\n\theight: 100%;\n\tleft: 0;\n\tmargin: 0 auto;\n\tposition: relative;\n\tbackground-color: var(--color-main-background);\n\n\t&.source-viewer {\n\t\tdisplay: block;\n\n\t\t.text-editor__content-wrapper {\n\t\t\tmargin-top: var(--header-height);\n\t\t}\n\n\t\t.toggle-interactive {\n\t\t\tposition: sticky;\n\t\t\tbottom: 0;\n\t\t\tright: 0;\n\t\t'
reuse._util - ERROR - 'js/ViewerComponent.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n-->\n\n<template>\n\t<RichTextReader v-if=\"isRichEditor\"\n\t\t:content=\"content\" />\n\t<PlainTextReader v-else\n\t\t:content=\"content\" />\n</template>\n\n<script>\nimport PlainTextReader from './PlainTextReader.vue'\nimport RichTextReader from './RichTextReader.vue'\n\nexport default {\n\tname: 'Reader',\n\tcomponents: { PlainTextReader, RichTextReader },\n\tprops: {\n\t\tcontent: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tisRichEditor: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n\n\t#read-only-editor {\n\t\toverflow: scroll;\n\t}\n\n\t.thumbnailContainer #read-only-editor  {\n\t\twidth: 100%;\n\n\t\t.ProseMirror {\n\t\t\theight: auto;\n\t\t\tmargin: 0 0 0 0;\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\n</style>\n"],"names":["_sfc_main","PlainTextReader","RichTextReader"],"mappings":";ikBAgBA,MAAAA,EAAA,CACA,KAAA,SACA,WAAA,CAAA,gBAAAC,EAAA,eAAAC,CAAA,EACA,MAAA,CACA,QAAA,CACA,KAAA,OACA,SAAA,EACA,EACA,aAAA,CACA,KAAA,QACA,QAAA,EACA,CACA,CACA"'
reuse._util - ERROR - 'js/Reader.chunk.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\nimport { loadState } from '@nextcloud/initial-state'\n\nimport { logger } from './helpers/logger.js'\n// eslint-disable-next-line import/no-unresolved, n/no-missing-import\nimport 'vite/modulepreload-polyfill'\n\nconst workspaceAvailable = loadState('text', 'workspace_available')\nconst workspaceEnabled = loadState('text', 'workspace_enabled')\n\ndocument.addEventListener('DOMContentLoaded', async () => {\n\tif (typeof OCA.Viewer === 'undefined') {\n\t\tconst { registerFileActionFallback } = await import('./helpers/files.js')\n\t\tlogger.error('Viewer app is not installed')\n\t\tregisterFileActionFallback()\n\t}\n\n\tif (workspaceAvailable && OCA && OCA?.Files?.Settings) {\n\t\tconst { default: Vue } = await import('vue')\n\t\tconst { default: FilesSettings } = await import('./views/FilesSettings.vue')\n\t\tconst { default: store } = await import('./store/index.js')\n\n\t\tVue.prototype.t = window.t\n\t\tVue.prototype.n = window.n\n\t\tVue.prototype.OCA = window.OCA\n\t\tconst vm = new Vue({\n\t\t\trender: h => h(FilesSettings, {}),\n\t\t\tstore,\n\t\t})\n\t\tconst el = vm.$mount().$el\n\t\tOCA.Files.Settings.register(new OCA.Files.Settings.Setting('text', {\n\t\t\tel: () => { return el },\n\t\t}))\n\t}\n})\n\nOCA.Text = {\n\tRichWorkspaceEnabled: workspaceEnabled,\n}\n"],"file":"js/text-files.mjs"'
reuse._util - ERROR - 'js/text-files.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
reuse._util - ERROR - Could not parse 'AGPL-3.0-or-later\n */\n\nimport store from './store/index.js'\n// eslint-disable-next-line import/no-unresolved, n/no-missing-import\nimport 'vite/modulepreload-polyfill'\n\nif (document.getElementById('app-content')) {\n\tPromise.all([\n\t\timport(/* webpackChunkName: \"editor\" */'vue'),\n\t\timport(/* webpackChunkName: \"editor\" */'./views/DirectEditing.vue'),\n\t]).then((imports) => {\n\t\tconst Vue = imports[0].default\n\t\tVue.prototype.t = window.t\n\t\tVue.prototype.OCA = window.OCA\n\t\tconst DirectEditing = imports[1].default\n\t\tconst vm = new Vue({\n\t\t\trender: h => h(DirectEditing),\n\t\t\tstore,\n\t\t})\n\t\tvm.$mount(document.getElementById('app-content'))\n\t})\n}\n"],"file":"js/text-text.mjs"'
reuse._util - ERROR - 'js/text-text.mjs.map' holds an SPDX expression that cannot be parsed, skipping the file
# MISSING COPYRIGHT AND LICENSING INFORMATION

The following files have no copyright and licensing information:
* css/text-AvatarWrapper.chunk.css
* css/text-DirectEditing.chunk.css
* css/text-Editor.chunk.css
* css/text-GuestNameDialog.chunk.css
* css/text-NcNoteCard-BLPU1den.chunk.css
* css/text-NcUserBubble-DMjZyrGY.chunk.css
* css/text-Reader.chunk.css
* css/text-RichText.chunk.css
* css/text-RichTextReader.chunk.css
* css/text-RichWorkspace.chunk.css
* css/text-SessionList.chunk.css
* css/text-ViewerComponent.chunk.css
* css/text-Wrapper.chunk.css
* css/text-editors.css
* css/text-files.css
* css/text-init.css
* css/text-public.css
* css/text-text.css
* css/text-viewer.css


# SUMMARY

* Bad licenses: 0
* Deprecated licenses: 0
* Licenses without file extension: 0
* Missing licenses: 0
* Unused licenses: 0
* Used licenses: CC0-1.0, Apache-2.0, AGPL-3.0-or-later, MIT
* Read errors: 0
* Files with copyright information: 1564 / 1583
* Files with license information: 1564 / 1583

Unfortunately, your project is not compliant with version 3.2 of the REUSE Specification :-(


# RECOMMENDATIONS

* Fix missing copyright/licensing information: For one or more files, the tool
  cannot find copyright and/or licensing information. You typically do this by
  adding 'SPDX-FileCopyrightText' and 'SPDX-License-Identifier' tags to each
  file. The tutorial explains additional ways to do this:
  <https://reuse.software/tutorial/>