Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
These static methods were storing the event listener callbacks on
this
, which refers to the (singleton) class itself. This meant that if multiple plugin instances existed at the same time (multiple editors on the same page), the second one would overwrite the stored event listeners for the first one, preventing the first one from actually removing the event listeners (and making it remove the second plugin's event listeners, potentially breaking its functionality).So instead, associate the event listeners with their target via a
Map
so multiple plugin instances can coexist.Also, at least in the CKEditor5 plugin,
Util.addElementEvents
was getting called twice during initialization, so make sureUtil.addElementEvents
removes any existing event handlers before adding the "new" ones.Type of Change
Checklist
yarn lint
to check)How should be tested? (Manual or Automated Tests)