From f5c35844b08f116107b5d6128e951c2ad2702b51 Mon Sep 17 00:00:00 2001 From: Jonas Date: Tue, 9 Jun 2026 11:42:05 +0200 Subject: [PATCH 1/2] chore(autofocus): migrate Autofocus extension to TypeScript Signed-off-by: Jonas --- src/components/Editor.vue | 2 +- src/extensions/{Autofocus.js => Autofocus.ts} | 20 +++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) rename src/extensions/{Autofocus.js => Autofocus.ts} (72%) 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 72% rename from src/extensions/Autofocus.js rename to src/extensions/Autofocus.ts index 0542501aae2..7535feaa4c8 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) + sessionStorage.setItem('text-lastPos-' + this.options.fileId, String(pos)) }, addCommands() { return { autofocus: () => - ({ commands, editor }) => { + ({ commands }) => { const pos = sessionStorage.getItem( 'text-lastPos-' + this.options.fileId, ) if (pos) { - return commands.focus(pos) + return commands.focus(Number(pos)) } return commands.focus('start') From 7527472d3ef80eb6bae6f0664c683c9dbbdbee75 Mon Sep 17 00:00:00 2001 From: Jonas Date: Tue, 9 Jun 2026 11:42:44 +0200 Subject: [PATCH 2/2] fix(autofocus): persist cursor positions in localStorage Fixes: #8699 Signed-off-by: Jonas --- src/extensions/Autofocus.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/extensions/Autofocus.ts b/src/extensions/Autofocus.ts index 7535feaa4c8..bac250559fd 100644 --- a/src/extensions/Autofocus.ts +++ b/src/extensions/Autofocus.ts @@ -40,14 +40,14 @@ export default Extension.create({ } const pos = editor.state.selection.$anchor.pos - sessionStorage.setItem('text-lastPos-' + this.options.fileId, String(pos)) + localStorage.setItem('text-lastPos-' + this.options.fileId, String(pos)) }, addCommands() { return { autofocus: () => ({ commands }) => { - const pos = sessionStorage.getItem( + const pos = localStorage.getItem( 'text-lastPos-' + this.options.fileId, ) if (pos) {