diff --git a/src/components/Assistant.vue b/src/components/Assistant.vue
index bcf94371d8a..b997e99c71a 100644
--- a/src/components/Assistant.vue
+++ b/src/components/Assistant.vue
@@ -169,6 +169,7 @@ import { FloatingMenu } from '@tiptap/vue-2'
import { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'
import markdownit from '../markdownit/index.js'
import shouldInterpretAsMarkdown from '../markdownit/shouldInterpretAsMarkdown.js'
+import { t } from '@nextcloud/l10n'
const limitInRange = (num, min, max) => {
return Math.min(Math.max(parseInt(num), parseInt(min)), parseInt(max))
@@ -436,6 +437,7 @@ export default {
floatingShow() {
return true
},
+ t,
},
}
diff --git a/src/components/CollisionResolveDialog.vue b/src/components/CollisionResolveDialog.vue
index 73e4bd978ac..b236ab4f41b 100644
--- a/src/components/CollisionResolveDialog.vue
+++ b/src/components/CollisionResolveDialog.vue
@@ -34,6 +34,7 @@ import NcButton from '@nextcloud/vue/components/NcButton'
import { useEditorMethods } from '../composables/useEditorMethods.ts'
import { useSyncService } from '../composables/useSyncService.ts'
import { useSaveService } from '../composables/useSaveService.ts'
+import { t } from '@nextcloud/l10n'
export default {
name: 'CollisionResolveDialog',
components: {
@@ -55,6 +56,7 @@ export default {
setEditable,
saveService,
syncService,
+ t,
}
},
data() {
diff --git a/src/components/Editor.singleton.js b/src/components/Editor.singleton.js
index a62197f9656..458898fde31 100644
--- a/src/components/Editor.singleton.js
+++ b/src/components/Editor.singleton.js
@@ -25,8 +25,6 @@ export default async function getEditorInstance() {
}
const Editor = await import(/* webpackChunkName: "editor" */ './Editor.vue')
const { default: Vue } = await import('vue')
- Vue.prototype.t = window.t
- Vue.prototype.OCA = window.OCA
const EditorConstructor = Vue.extend(Editor.default)
window._nc_text_editor_instance = EditorConstructor
}
diff --git a/src/components/Editor.vue b/src/components/Editor.vue
index 1019354d84d..e5c7939c371 100644
--- a/src/components/Editor.vue
+++ b/src/components/Editor.vue
@@ -131,6 +131,7 @@ import { provideConnection } from '../composables/useConnection.ts'
import { Awareness } from 'y-protocols/awareness.js'
import { provideSyncService } from '../composables/useSyncService.ts'
import { provideSaveService } from '../composables/useSaveService.ts'
+import { t } from '@nextcloud/l10n'
export default defineComponent({
name: 'Editor',
diff --git a/src/components/Editor/DocumentStatus.vue b/src/components/Editor/DocumentStatus.vue
index 5404b9552be..458f5aaf175 100644
--- a/src/components/Editor/DocumentStatus.vue
+++ b/src/components/Editor/DocumentStatus.vue
@@ -25,6 +25,7 @@ import NcNoteCard from '@nextcloud/vue/components/NcNoteCard'
import Lock from 'vue-material-design-icons/Lock.vue'
import isMobile from '../../mixins/isMobile.js'
import SyncStatus from './DocumentStatus/SyncStatus.vue'
+import { t } from '@nextcloud/l10n'
export default {
name: 'DocumentStatus',
diff --git a/src/components/Editor/DocumentStatus/SyncStatus.vue b/src/components/Editor/DocumentStatus/SyncStatus.vue
index 55216b26bb4..27815accc92 100644
--- a/src/components/Editor/DocumentStatus/SyncStatus.vue
+++ b/src/components/Editor/DocumentStatus/SyncStatus.vue
@@ -16,6 +16,7 @@
import { ERROR_TYPE } from '../../../services/SyncService.ts'
import NcNoteCard from '@nextcloud/vue/components/NcNoteCard'
+import { t } from '@nextcloud/l10n'
export default {
name: 'SyncStatus',
diff --git a/src/components/Editor/EditorOutline.vue b/src/components/Editor/EditorOutline.vue
index 9897a5352f2..f992364c240 100644
--- a/src/components/Editor/EditorOutline.vue
+++ b/src/components/Editor/EditorOutline.vue
@@ -26,6 +26,7 @@ import TableOfContents from './TableOfContents.vue'
import { useOutlineStateMixin, useOutlineActions } from './Wrapper.provider.js'
import { Close } from './../icons.js'
import { useIsMobileMixin } from '../Editor.provider.ts'
+import { t } from '@nextcloud/l10n'
export default {
name: 'EditorOutline',
@@ -39,6 +40,9 @@ export default {
useOutlineStateMixin,
useOutlineActions,
],
+ methods: {
+ t,
+ },
}
diff --git a/src/components/Editor/GuestNameDialog.vue b/src/components/Editor/GuestNameDialog.vue
index e959fb38ae2..1056b8c230c 100644
--- a/src/components/Editor/GuestNameDialog.vue
+++ b/src/components/Editor/GuestNameDialog.vue
@@ -21,6 +21,7 @@
import { generateUrl } from '@nextcloud/router'
import AvatarWrapper from './AvatarWrapper.vue'
import { useSyncService } from '../../composables/useSyncService.ts'
+import { t } from '@nextcloud/l10n'
export default {
name: 'GuestNameDialog',
@@ -72,6 +73,7 @@ export default {
updateBufferedGuestName() {
this.guestNameBuffered = this.guestName
},
+ t,
},
}
diff --git a/src/components/Editor/PreviewOptions.vue b/src/components/Editor/PreviewOptions.vue
index f15a03be6df..0331fc1df3f 100644
--- a/src/components/Editor/PreviewOptions.vue
+++ b/src/components/Editor/PreviewOptions.vue
@@ -54,6 +54,7 @@ import NcActionSeparator from '@nextcloud/vue/components/NcActionSeparator'
import DotsVerticalIcon from 'vue-material-design-icons/DotsVertical.vue'
import DeleteIcon from 'vue-material-design-icons/Delete.vue'
import OpenIcon from 'vue-material-design-icons/OpenInNew.vue'
+import { t } from '@nextcloud/l10n'
export default {
name: 'PreviewOptions',
@@ -102,6 +103,7 @@ export default {
if (!this.href) return
window.open(this.href, '_blank').focus()
},
+ t,
},
}
diff --git a/src/components/Editor/SessionList.vue b/src/components/Editor/SessionList.vue
index 5bfce425e5a..75a628634d3 100644
--- a/src/components/Editor/SessionList.vue
+++ b/src/components/Editor/SessionList.vue
@@ -59,6 +59,7 @@ import { COLLABORATOR_DISCONNECT_TIME, COLLABORATOR_IDLE_TIME } from '../../serv
import { loadState } from '@nextcloud/initial-state'
import axios from '@nextcloud/axios'
import { generateUrl } from '@nextcloud/router'
+import { t } from '@nextcloud/l10n'
export default {
name: 'SessionList',
@@ -127,6 +128,7 @@ export default {
value: checked ? '1' : '0',
})
},
+ t,
},
}
diff --git a/src/components/Editor/SmartPickerMenu.vue b/src/components/Editor/SmartPickerMenu.vue
index e73f5d2f64a..a8f4e20351a 100644
--- a/src/components/Editor/SmartPickerMenu.vue
+++ b/src/components/Editor/SmartPickerMenu.vue
@@ -16,6 +16,7 @@
diff --git a/src/components/Editor/Status.vue b/src/components/Editor/Status.vue
index edb2cd59326..ddf7e70757d 100644
--- a/src/components/Editor/Status.vue
+++ b/src/components/Editor/Status.vue
@@ -37,6 +37,7 @@ import {
import { useEditorFlags } from '../../composables/useEditorFlags.ts'
import refreshMoment from '../../mixins/refreshMoment.js'
import { useSaveService } from '../../composables/useSaveService.ts'
+import { t } from '@nextcloud/l10n'
export default {
name: 'Status',
@@ -136,6 +137,7 @@ export default {
onEditorWidthChange(newWidth) {
this.$emit('editor-width-change', newWidth)
},
+ t,
},
}
diff --git a/src/components/HelpModal.vue b/src/components/HelpModal.vue
index bb51313d1cf..2704da04e86 100644
--- a/src/components/HelpModal.vue
+++ b/src/components/HelpModal.vue
@@ -271,6 +271,7 @@
import NcDialog from '@nextcloud/vue/components/NcDialog'
import { isMobilePlatform } from '../helpers/platform.js'
import { TRANSLATIONS, MODIFIERS } from './Menu/keys.js'
+import { t } from '@nextcloud/l10n'
export default {
name: 'HelpModal',
@@ -304,6 +305,7 @@ export default {
},
},
methods: {
+ t,
toggleFormatted(style) {
this.formatted[style] = !this.formatted[style]
},
diff --git a/src/components/Link/LinkBubbleView.vue b/src/components/Link/LinkBubbleView.vue
index 9d980280a34..2454d0e89e7 100644
--- a/src/components/Link/LinkBubbleView.vue
+++ b/src/components/Link/LinkBubbleView.vue
@@ -91,12 +91,12 @@ import NcButton from '@nextcloud/vue/components/NcButton'
import NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'
import NcTextField from '@nextcloud/vue/components/NcTextField'
import { NcReferenceList } from '@nextcloud/vue/dist/Components/NcRichText.js'
-import { translate as t } from '@nextcloud/l10n'
import CheckIcon from 'vue-material-design-icons/Check.vue'
import CloseIcon from 'vue-material-design-icons/Close.vue'
import ContentCopyIcon from 'vue-material-design-icons/ContentCopy.vue'
import LinkOffIcon from 'vue-material-design-icons/LinkOff.vue'
import PencilIcon from 'vue-material-design-icons/Pencil.vue'
+import { t } from '@nextcloud/l10n'
import CopyToClipboardMixin from '../../mixins/CopyToClipboardMixin.js'
@@ -193,8 +193,6 @@ export default {
},
methods: {
- t,
-
resetBubble() {
this.edit = false
this.newHref = null
@@ -260,6 +258,7 @@ export default {
.run()
this.stopEdit()
},
+ t,
},
}
diff --git a/src/components/Menu/ActionAttachmentUpload.vue b/src/components/Menu/ActionAttachmentUpload.vue
index 1a90baf4c3b..1a3cdff410d 100644
--- a/src/components/Menu/ActionAttachmentUpload.vue
+++ b/src/components/Menu/ActionAttachmentUpload.vue
@@ -71,6 +71,7 @@ import {
useActionCreateAttachmentMixin,
} from '../Editor/MediaHandler.provider.js'
import { useSyncService } from '../../composables/useSyncService.ts'
+import { t } from '@nextcloud/l10n'
export default {
name: 'ActionAttachmentUpload',
@@ -126,6 +127,7 @@ export default {
createAttachment(template) {
this.$callCreateAttachment(template)
},
+ t,
},
}
diff --git a/src/components/Menu/ActionFormattingHelp.vue b/src/components/Menu/ActionFormattingHelp.vue
index 540d833ef7e..46a7e1af769 100644
--- a/src/components/Menu/ActionFormattingHelp.vue
+++ b/src/components/Menu/ActionFormattingHelp.vue
@@ -17,6 +17,7 @@
import { defineComponent } from 'vue'
import NextcloudVueNcActionButton from '@nextcloud/vue/components/NcActionButton'
import { Help } from '../icons.js'
+import { t } from '@nextcloud/l10n'
export default defineComponent({
// This component is used as a direct child of NcActions.
@@ -29,5 +30,8 @@ export default defineComponent({
NextcloudVueNcActionButton,
Help,
},
+ methods: {
+ t,
+ }
})
diff --git a/src/components/Menu/ActionInsertLink.vue b/src/components/Menu/ActionInsertLink.vue
index 745cbb304fd..7a83c208f3b 100644
--- a/src/components/Menu/ActionInsertLink.vue
+++ b/src/components/Menu/ActionInsertLink.vue
@@ -78,6 +78,7 @@ import { BaseActionEntry } from './BaseActionEntry.js'
import { useFileMixin } from '../Editor.provider.ts'
import { useMenuIDMixin } from './MenuBar.provider.js'
import { buildFilePicker } from '../../helpers/filePicker.js'
+import { t } from '@nextcloud/l10n'
export default {
name: 'ActionInsertLink',
@@ -211,6 +212,7 @@ export default {
console.error('Smart picker promise rejected', error)
})
},
+ t,
},
}
diff --git a/src/components/Menu/ActionList.vue b/src/components/Menu/ActionList.vue
index de14c4b12e9..c472e9dfa22 100644
--- a/src/components/Menu/ActionList.vue
+++ b/src/components/Menu/ActionList.vue
@@ -41,6 +41,7 @@ import { getActionState, getIsActive } from './utils.js'
import { useOutlineStateMixin } from '../Editor/Wrapper.provider.js'
import { useMenuIDMixin } from './MenuBar.provider.js'
import debounce from 'debounce'
+import { t } from '@nextcloud/l10n'
export default {
name: 'ActionList',
diff --git a/src/components/Menu/MenuBar.vue b/src/components/Menu/MenuBar.vue
index f562759f3c2..2b65574b5ef 100644
--- a/src/components/Menu/MenuBar.vue
+++ b/src/components/Menu/MenuBar.vue
@@ -81,6 +81,7 @@ import {
} from '../Editor.provider.ts'
import { useEditorFlags } from '../../composables/useEditorFlags.ts'
import { useEditor } from '../../composables/useEditor.ts'
+import { t } from '@nextcloud/l10n'
export default {
name: 'MenuBar',
@@ -219,6 +220,7 @@ export default {
console.debug('translation click', state.selection, selectedText)
emit('text:translate-modal:show', { content: selectedText })
},
+ t,
},
}
diff --git a/src/components/Menu/ReadonlyBar.vue b/src/components/Menu/ReadonlyBar.vue
index 1445da071a5..65390f22fa2 100644
--- a/src/components/Menu/ReadonlyBar.vue
+++ b/src/components/Menu/ReadonlyBar.vue
@@ -30,6 +30,7 @@ import { ReadOnlyEditEntries, OutlineEntries } from './entries.js'
import ActionList from './ActionList.vue'
import ActionSingle from './ActionSingle.vue'
import ToolBarLogic from './ToolBarLogic.js'
+import { t } from '@nextcloud/l10n'
export default defineComponent({
name: 'ReadonlyBar',
@@ -49,6 +50,9 @@ export default defineComponent({
entries: this.openReadOnly ? [...ReadOnlyEditEntries, ...OutlineEntries] : [...OutlineEntries],
}
},
+ methods: {
+ t,
+ }
})
diff --git a/src/components/Menu/entries.js b/src/components/Menu/entries.js
index 3715a6fb5c2..0626d32c599 100644
--- a/src/components/Menu/entries.js
+++ b/src/components/Menu/entries.js
@@ -43,6 +43,7 @@ import ActionInsertLink from './ActionInsertLink.vue'
import { MODIFIERS } from './keys.js'
import { isMobileDevice } from '../../helpers/isMobileDevice.js'
+import { t } from '@nextcloud/l10n'
export const OutlineEntries = [{
key: 'outline',
diff --git a/src/components/Menu/keys.js b/src/components/Menu/keys.js
index 17412be7ced..0b8c0f81972 100644
--- a/src/components/Menu/keys.js
+++ b/src/components/Menu/keys.js
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
-const t = window.t
+import { t } from '@nextcloud/l10n'
const isMac = (navigator.userAgent.includes('Mac'))
const MODIFIERS = {
diff --git a/src/components/Modal/Translate.vue b/src/components/Modal/Translate.vue
index 84688355d8a..5e7a340b462 100644
--- a/src/components/Modal/Translate.vue
+++ b/src/components/Modal/Translate.vue
@@ -81,6 +81,7 @@ import NcSelect from '@nextcloud/vue/components/NcSelect'
import NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'
import NcTextArea from '@nextcloud/vue/components/NcTextArea'
import { useIsMobileMixin } from '../Editor.provider.ts'
+import { t } from '@nextcloud/l10n'
export default {
name: 'Translate',
@@ -220,6 +221,7 @@ export default {
this.disableFromLanguageSelect = false
this.autosize()
},
+ t,
},
}
diff --git a/src/components/Suggestion/Emoji/EmojiList.vue b/src/components/Suggestion/Emoji/EmojiList.vue
index 0402c3f249a..5b1c579b251 100644
--- a/src/components/Suggestion/Emoji/EmojiList.vue
+++ b/src/components/Suggestion/Emoji/EmojiList.vue
@@ -24,7 +24,7 @@
diff --git a/src/editor.js b/src/editor.js
index 3742b0b5359..bafcfc5804e 100644
--- a/src/editor.js
+++ b/src/editor.js
@@ -12,10 +12,6 @@ import 'vite/modulepreload-polyfill'
const apiVersion = '1.2'
-Vue.prototype.t = window.t
-Vue.prototype.n = window.n
-Vue.prototype.OCA = window.OCA
-
window.OCA.Text = {
...window.OCA.Text,
}
diff --git a/src/files.js b/src/files.js
index 54053b47280..3e6e78cefe6 100644
--- a/src/files.js
+++ b/src/files.js
@@ -23,9 +23,6 @@ document.addEventListener('DOMContentLoaded', async () => {
const { default: Vue } = await import('vue')
const { default: FilesSettings } = await import('./views/FilesSettings.vue')
- Vue.prototype.t = window.t
- Vue.prototype.n = window.n
- Vue.prototype.OCA = window.OCA
const vm = new Vue({
render: h => h(FilesSettings, {}),
})
diff --git a/src/helpers/filePicker.js b/src/helpers/filePicker.js
index db866b91b85..18c7942dced 100644
--- a/src/helpers/filePicker.js
+++ b/src/helpers/filePicker.js
@@ -4,6 +4,7 @@
*/
import { getFilePickerBuilder } from '@nextcloud/dialogs'
+import { t } from '@nextcloud/l10n'
export const buildFilePicker = (startPath) => {
return getFilePickerBuilder(t('text', 'Select file or folder to link to'))
diff --git a/src/helpers/files.js b/src/helpers/files.js
index b4d83f11833..a2fd91d64f0 100644
--- a/src/helpers/files.js
+++ b/src/helpers/files.js
@@ -22,6 +22,7 @@ import TextSvg from '@mdi/svg/svg/text.svg?raw'
import { openMimetypes } from './mime.js'
import Vue from 'vue'
+import { t } from '@nextcloud/l10n'
const FILE_ACTION_IDENTIFIER = 'Edit with text app'
@@ -94,9 +95,6 @@ const registerFileActionFallback = () => {
const path =
window.FileList.getCurrentDirectory() + '/' + filename
const Vue = imports[0].default
- Vue.prototype.t = window.t
- Vue.prototype.n = window.n
- Vue.prototype.OCA = window.OCA
const Editor = imports[1].default
const vm = new Vue({
render: (h) => {
diff --git a/src/main.js b/src/main.js
index 47b0dd4e604..c54b51a8436 100644
--- a/src/main.js
+++ b/src/main.js
@@ -8,8 +8,5 @@ import 'vite/modulepreload-polyfill'
import Vue from 'vue'
import DirectEditing from './views/DirectEditing.vue'
-Vue.prototype.t = window.t
-Vue.prototype.OCA = window.OCA
-
const DirectView = Vue.extend(DirectEditing)
new DirectView().$mount('#app-content')
diff --git a/src/mixins/CopyToClipboardMixin.js b/src/mixins/CopyToClipboardMixin.js
index 9375c5b3f6d..3cd7e91764c 100644
--- a/src/mixins/CopyToClipboardMixin.js
+++ b/src/mixins/CopyToClipboardMixin.js
@@ -4,6 +4,7 @@
*/
import { showError, showSuccess } from '@nextcloud/dialogs'
+import { t } from '@nextcloud/l10n'
export default {
data() {
diff --git a/src/nodes/CodeBlock/CodeBlockView.vue b/src/nodes/CodeBlock/CodeBlockView.vue
index a41c6f7c932..48bd83ea32d 100644
--- a/src/nodes/CodeBlock/CodeBlockView.vue
+++ b/src/nodes/CodeBlock/CodeBlockView.vue
@@ -106,6 +106,7 @@ import NcActionLink from '@nextcloud/vue/components/NcActionLink'
import NcActionSeparator from '@nextcloud/vue/components/NcActionSeparator'
import NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'
+import { t } from '@nextcloud/l10n'
import { v4 as uuidv4 } from 'uuid'
import ViewSplitVertical from 'vue-material-design-icons/ViewSplitVertical.vue'
@@ -152,6 +153,7 @@ export default {
return {
/** The lazy loaded mermaid js module */
mermaid: null,
+ t,
}
},
data() {
diff --git a/src/nodes/FrontMatter.js b/src/nodes/FrontMatter.js
index fdd0f09c41d..03e85cbe19d 100644
--- a/src/nodes/FrontMatter.js
+++ b/src/nodes/FrontMatter.js
@@ -5,6 +5,7 @@
import { mergeAttributes } from '@tiptap/core'
import TiptapCodeBlock from '@tiptap/extension-code-block'
+import { t } from '@nextcloud/l10n'
const FrontMatter = TiptapCodeBlock.extend({
name: 'frontMatter',
diff --git a/src/nodes/ImageView.vue b/src/nodes/ImageView.vue
index 80b7a8d3f91..32bdd391635 100644
--- a/src/nodes/ImageView.vue
+++ b/src/nodes/ImageView.vue
@@ -143,6 +143,7 @@ import { useAttachmentResolver } from '../components/Editor.provider.ts'
import { emit } from '@nextcloud/event-bus'
import { NodeViewWrapper } from '@tiptap/vue-2'
import { Image as ImageIcon, Delete as DeleteIcon } from '../components/icons.js'
+import { t } from '@nextcloud/l10n'
class LoadImageError extends Error {
constructor(reason, imageUrl) {
@@ -436,6 +437,7 @@ export default {
emit('text:image-node:delete', this.imageUrl)
this.deleteNode()
},
+ t,
},
}
diff --git a/src/nodes/Table/TableCellView.vue b/src/nodes/Table/TableCellView.vue
index 2293dd5d31a..13af93d151f 100644
--- a/src/nodes/Table/TableCellView.vue
+++ b/src/nodes/Table/TableCellView.vue
@@ -43,6 +43,7 @@ import { NodeViewWrapper, NodeViewContent } from '@tiptap/vue-2'
import NcActions from '@nextcloud/vue/components/NcActions'
import NcActionButton from '@nextcloud/vue/components/NcActionButton'
import { TableAddRowBefore, TableAddRowAfter, Delete } from '../../components/icons.js'
+import { t } from '@nextcloud/l10n'
export default {
name: 'TableCellView',
@@ -103,6 +104,7 @@ export default {
.addRowAfter()
.run()
},
+ t,
},
}
diff --git a/src/nodes/Table/TableHeaderView.vue b/src/nodes/Table/TableHeaderView.vue
index d006ba946f7..dc46a01d2d1 100644
--- a/src/nodes/Table/TableHeaderView.vue
+++ b/src/nodes/Table/TableHeaderView.vue
@@ -85,6 +85,7 @@ import {
TableAddColumnBefore,
TableAddColumnAfter,
} from '../../components/icons.js'
+import { t } from '@nextcloud/l10n'
export default {
name: 'TableHeaderView',
@@ -178,6 +179,7 @@ export default {
.addColumnAfter()
.run()
},
+ t,
},
}
diff --git a/src/nodes/Table/TableView.vue b/src/nodes/Table/TableView.vue
index 7ea2af06d02..19221dc2a54 100644
--- a/src/nodes/Table/TableView.vue
+++ b/src/nodes/Table/TableView.vue
@@ -50,6 +50,7 @@ import NcActions from '@nextcloud/vue/components/NcActions'
import NcActionButton from '@nextcloud/vue/components/NcActionButton'
import NcButton from '@nextcloud/vue/components/NcButton'
import { TableSettings, Delete, TableAddColumnAfter, TableAddRowAfter } from '../../components/icons.js'
+import { t } from '@nextcloud/l10n'
export default {
name: 'TableView',
@@ -115,6 +116,7 @@ export default {
.setTextSelection(this.getPos() + this.node.nodeSize + 1)
.run()
},
+ t,
},
}
diff --git a/src/plugins/headingAnchor.js b/src/plugins/headingAnchor.js
index 26a1520dfb3..3226c8b867f 100644
--- a/src/plugins/headingAnchor.js
+++ b/src/plugins/headingAnchor.js
@@ -6,6 +6,7 @@
import { Plugin, PluginKey } from '@tiptap/pm/state'
import { Decoration, DecorationSet } from '@tiptap/pm/view'
import extractHeadings from './extractHeadings.js'
+import { t } from '@nextcloud/l10n'
export const headingAnchorPluginKey = new PluginKey('headingAnchor')
@@ -132,7 +133,7 @@ function anchorForHeading(heading) {
el.setAttribute('aria-hidden', 'true')
el.className = 'heading-anchor'
el.setAttribute('href', `#${heading.id}`)
- el.setAttribute('title', window.t('text', 'Link to this section'))
+ el.setAttribute('title', t('text', 'Link to this section'))
el.setAttribute('contenteditable', 'false')
el.addEventListener('click', handleClick)
return el
diff --git a/src/tests/setup.mjs b/src/tests/setup.mjs
index 0aa6b8b08be..6ae399700b1 100644
--- a/src/tests/setup.mjs
+++ b/src/tests/setup.mjs
@@ -6,11 +6,6 @@
import './testHelpers/jsdomMocks.js'
import './testHelpers/nextcloudMocks.js'
import './testHelpers/vueMocks.js'
-import Vue from 'vue'
-Vue.prototype.t = global.t
-Vue.prototype.n = global.n
-Vue.prototype.OC = global.OC
-Vue.prototype.OCA = global.OCA
// suppress errors from not-explicitly-imported @nc-vue component
global.appName = 'text'
diff --git a/src/views/FilesSettings.vue b/src/views/FilesSettings.vue
index d5fe7d34d46..729b1ed3259 100644
--- a/src/views/FilesSettings.vue
+++ b/src/views/FilesSettings.vue
@@ -17,6 +17,7 @@ import { emit } from '@nextcloud/event-bus'
import axios from '@nextcloud/axios'
import NcCheckboxRadioSwitch from '@nextcloud/vue/components/NcCheckboxRadioSwitch'
import { generateUrl } from '@nextcloud/router'
+import { t } from '@nextcloud/l10n'
export default {
name: 'FilesSettings',
@@ -45,6 +46,7 @@ export default {
})
}
},
+ t,
},
}
diff --git a/src/views/RichWorkspace.vue b/src/views/RichWorkspace.vue
index 1029327424e..0264584026a 100644
--- a/src/views/RichWorkspace.vue
+++ b/src/views/RichWorkspace.vue
@@ -36,6 +36,7 @@ import { getSharingToken, isPublicShare } from '@nextcloud/sharing/public'
import { loadState } from '@nextcloud/initial-state'
import { subscribe, unsubscribe } from '@nextcloud/event-bus'
import axios from '@nextcloud/axios'
+import { t } from '@nextcloud/l10n'
import getEditorInstance from '../components/Editor.singleton.js'
import RichTextReader from '../components/RichTextReader.vue'
@@ -111,6 +112,9 @@ export default {
},
hasRichWorkspace(value) {
this.localHasRichWorkspace = value
+ if (value) {
+ this.getFileInfo()
+ }
},
},
mounted() {
@@ -229,6 +233,7 @@ export default {
this.localHasRichWorkspace = false
}
},
+ t,
},
}