diff --git a/src/display/editor/freetext.js b/src/display/editor/freetext.js index 3e15e741a..2eecb6080 100644 --- a/src/display/editor/freetext.js +++ b/src/display/editor/freetext.js @@ -539,6 +539,10 @@ class FreeTextEditor extends AnnotationEditor { textContent, page: { pageNumber }, } = data; + if (!textContent || textContent.length === 0) { + // Empty annotation. + return null; + } initialData = data = { annotationType: AnnotationEditorType.FREETEXT, color: Array.from(fontColor), diff --git a/test/integration/freetext_editor_spec.js b/test/integration/freetext_editor_spec.js index f4b0624f9..373bd203c 100644 --- a/test/integration/freetext_editor_spec.js +++ b/test/integration/freetext_editor_spec.js @@ -993,6 +993,29 @@ describe("FreeText Editor", () => { }); }); + describe("FreeText (update existing but not empty ones)", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("issue14438.pdf", ".annotationEditorLayer"); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must update an existing annotation but not an empty one", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await page.click("#editorFreeText"); + + const editorIds = await getEditors(page, "freeText"); + expect(editorIds.length).withContext(`In ${browserName}`).toEqual(1); + }) + ); + }); + }); + describe("FreeText (delete existing)", () => { let pages;