More than one replacement with searchResults.replaceAll and browser freezes

I have a document with multiple variables (plain text like {ID} or {Requester}) and I want to replace variables programmatically.  Below code works fine if there is one placeholder ( {ID} ). For 2 or 2 more placeholders,browser freezes. Any solution?


if (documentEditorContainer && documentEditorContainer.current) {
         
          const placeholders: { [key: string]: string } = ({
            ID: '12345',
            Requester: 'John Doe'
           
          });

          const replacePlaceholders = () => {
            if (documentEditorContainer.current && placeholders) {
              for (const [key, value] of Object.entries(placeholders)) {

               
                documentEditorContainer.current.documentEditor.search.findAll(`{${key}}`);
                if (documentEditorContainer.current?.documentEditor.search.searchResults.length > 0) {
                    documentEditorContainer.current?.documentEditor.search.searchResults.replaceAll(value);
                }  
                documentEditorContainer.current?.documentEditor.search.searchResults.clear();
               
               
              }
            }
          };
 
            const loadDocument = async () => {
              documentEditorContainer.current.documentEditor.open(JSON.parse(requestTemplate.DocumentJSON));
              replacePlaceholders();
            };

                       
       
           
       
            loadDocument();
           
           
          }

     
       
      });

1 Reply

KD Kesavan D Syncfusion Team June 28, 2024 01:54 AM UTC

Hi Marek,

Thank you for reaching out. We are unable to reproduce the freezing issue in our side. For further reference we have attached sample which we tried in our end. Could you please check it in end and provide us issue reproducing sample. We suspect the issue could be related to a particular document.

Code snippet we tried

        let placeholders = ({
            ID: '12345',
            Requester: 'John Doe',
            Engineer: 'John Wick'
          });
          for (const [keyvalueof Object.entries(placeholders)) {
              console.log('key->'+`{${key}}`);
              console.log('key->'+value);

              this.documentEditor.search.findAll(`{${key}}`);
                if (this.documentEditor.search.searchResults.length > 0) {
                    this.documentEditor.search.searchResults.replaceAll(value);
                }  
                this.documentEditor.search.searchResults.clear();
          }

Sample link: https://stackblitz.com/edit/react-5xwa5m-9dfscc?file=title-bar.js,index.js

Regards,

Kesavan.


Loader.
Up arrow icon