diff --git a/src/components/Editor.vue b/src/components/Editor.vue index a17d25aa5c9..6e663626ffa 100644 --- a/src/components/Editor.vue +++ b/src/components/Editor.vue @@ -85,7 +85,7 @@ import { Collaboration } from '@tiptap/extension-collaboration' import { useElementSize } from '@vueuse/core' import { defineComponent, inject, ref, shallowRef, watch } from 'vue' import { Doc, logUpdate } from 'yjs' -import Autofocus from '../extensions/Autofocus.js' +import Autofocus from '../extensions/Autofocus.ts' import { provideEditor } from '../composables/useEditor.ts' import { provideEditorFlags } from '../composables/useEditorFlags.ts' diff --git a/src/extensions/Autofocus.js b/src/extensions/Autofocus.ts similarity index 63% rename from src/extensions/Autofocus.js rename to src/extensions/Autofocus.ts index 0542501aae2..bac250559fd 100644 --- a/src/extensions/Autofocus.js +++ b/src/extensions/Autofocus.ts @@ -5,7 +5,19 @@ import { Extension } from '@tiptap/core' -export default Extension.create({ +export interface AutofocusOptions { + fileId: number | null +} + +declare module '@tiptap/core' { + interface Commands { + autofocus: { + autofocus: () => ReturnType + } + } +} + +export default Extension.create({ addOptions() { return { fileId: null, @@ -28,18 +40,18 @@ export default Extension.create({ } const pos = editor.state.selection.$anchor.pos - sessionStorage.setItem('text-lastPos-' + this.options.fileId, pos) + localStorage.setItem('text-lastPos-' + this.options.fileId, String(pos)) }, addCommands() { return { autofocus: () => - ({ commands, editor }) => { - const pos = sessionStorage.getItem( + ({ commands }) => { + const pos = localStorage.getItem( 'text-lastPos-' + this.options.fileId, ) if (pos) { - return commands.focus(pos) + return commands.focus(Number(pos)) } return commands.focus('start')