@@ -10,7 +10,7 @@ export default defineContentScript({
1010 main ( ) {
1111 const textAreasOnPageLoad = document . querySelectorAll < HTMLTextAreaElement > ( `textarea` )
1212 for ( const textarea of textAreasOnPageLoad ) {
13- initializeMaybeIsPageload ( textarea , true )
13+ initializeMaybeIsPageload ( textarea )
1414 }
1515 const observer = new MutationObserver ( handleMutations )
1616 observer . observe ( document . body , {
@@ -25,25 +25,43 @@ export default defineContentScript({
2525
2626function handleMutations ( mutations : MutationRecord [ ] ) : void {
2727 for ( const mutation of mutations ) {
28+ // Handle added nodes
2829 for ( const node of mutation . addedNodes ) {
2930 if ( node . nodeType === Node . ELEMENT_NODE ) {
3031 const element = node as Element
3132 if ( element . tagName === 'TEXTAREA' ) {
32- initializeMaybeIsPageload ( element as HTMLTextAreaElement , false )
33+ initializeMaybeIsPageload ( element as HTMLTextAreaElement )
3334 }
3435 // Also check for textareas within added subtrees
3536 const textareas = element . querySelectorAll ?.( 'textarea' )
3637 if ( textareas ) {
3738 for ( const textarea of textareas ) {
38- initializeMaybeIsPageload ( textarea , false )
39+ initializeMaybeIsPageload ( textarea )
40+ }
41+ }
42+ }
43+ }
44+
45+ // Handle removed nodes
46+ for ( const node of mutation . removedNodes ) {
47+ if ( node . nodeType === Node . ELEMENT_NODE ) {
48+ const element = node as Element
49+ if ( element . tagName === 'TEXTAREA' ) {
50+ textareaRegistry . unregisterDueToModification ( element as HTMLTextAreaElement )
51+ }
52+ // Also check for textareas within removed subtrees
53+ const textareas = element . querySelectorAll ?.( 'textarea' )
54+ if ( textareas ) {
55+ for ( const textarea of textareas ) {
56+ textareaRegistry . unregisterDueToModification ( textarea )
3957 }
4058 }
4159 }
4260 }
4361 }
4462}
4563
46- function initializeMaybeIsPageload ( textarea : HTMLTextAreaElement , isPageload : boolean ) {
64+ function initializeMaybeIsPageload ( textarea : HTMLTextAreaElement ) {
4765 // Check if this textarea is already registered
4866 if ( textareaRegistry . get ( textarea ) ) {
4967 logger . debug ( 'textarea already registered {}' , textarea )
0 commit comments