Merge pull request #16579 from calixteman/issue16577
[Editor] Don't make editable an empty freetext annotation
This commit is contained in:
		
						commit
						b8f5a14925
					
				| @ -999,6 +999,9 @@ class Annotation { | |||||||
| 
 | 
 | ||||||
|       enqueue(chunk, size) { |       enqueue(chunk, size) { | ||||||
|         for (const item of chunk.items) { |         for (const item of chunk.items) { | ||||||
|  |           if (item.str === undefined) { | ||||||
|  |             continue; | ||||||
|  |           } | ||||||
|           buffer.push(item.str); |           buffer.push(item.str); | ||||||
|           if (item.hasEOL) { |           if (item.hasEOL) { | ||||||
|             text.push(buffer.join("")); |             text.push(buffer.join("")); | ||||||
| @ -1022,7 +1025,7 @@ class Annotation { | |||||||
|       text.push(buffer.join("")); |       text.push(buffer.join("")); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (text.length > 0) { |     if (text.length > 1 || text[0]) { | ||||||
|       this.data.textContent = text; |       this.data.textContent = text; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -541,6 +541,8 @@ class FreeTextEditor extends AnnotationEditor { | |||||||
|           page: { pageNumber }, |           page: { pageNumber }, | ||||||
|         }, |         }, | ||||||
|       } = data; |       } = data; | ||||||
|  |       // textContent is supposed to be an array of strings containing each line
 | ||||||
|  |       // of text. However, it can be null or empty.
 | ||||||
|       if (!textContent || textContent.length === 0) { |       if (!textContent || textContent.length === 0) { | ||||||
|         // Empty annotation.
 |         // Empty annotation.
 | ||||||
|         return null; |         return null; | ||||||
|  | |||||||
| @ -1116,4 +1116,42 @@ describe("FreeText Editor", () => { | |||||||
|       } |       } | ||||||
|     }); |     }); | ||||||
|   }); |   }); | ||||||
|  | 
 | ||||||
|  |   describe("FreeText with popup", () => { | ||||||
|  |     let pages; | ||||||
|  | 
 | ||||||
|  |     beforeAll(async () => { | ||||||
|  |       pages = await loadAndWait( | ||||||
|  |         "annotation-freetext.pdf", | ||||||
|  |         ".annotationEditorLayer" | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     afterAll(async () => { | ||||||
|  |       await closePages(pages); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     it("must not remove an empty annotation", async () => { | ||||||
|  |       await Promise.all( | ||||||
|  |         pages.map(async ([browserName, page]) => { | ||||||
|  |           await page.hover("[data-annotation-id='23R']"); | ||||||
|  |           // Wait for the popup to be displayed.
 | ||||||
|  |           await page.waitForFunction( | ||||||
|  |             `document.querySelector("[data-annotation-id='popup_23R']").hidden === false` | ||||||
|  |           ); | ||||||
|  | 
 | ||||||
|  |           // Enter in editing mode.
 | ||||||
|  |           await page.click("#editorFreeText"); | ||||||
|  |           await page.waitForTimeout(10); | ||||||
|  |           await page.click("#editorFreeText"); | ||||||
|  | 
 | ||||||
|  |           await page.hover("[data-annotation-id='23R']"); | ||||||
|  |           // Wait for the popup to be displayed.
 | ||||||
|  |           await page.waitForFunction( | ||||||
|  |             `document.querySelector("[data-annotation-id='popup_23R']").hidden === false` | ||||||
|  |           ); | ||||||
|  |         }) | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  |   }); | ||||||
| }); | }); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user