Repository navigation
Conversation
Co-authored-by: generaltony007 <144252170+GeneralTony007@users.noreply.github.com>
Co-authored-by: generaltony007 <144252170+GeneralTony007@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Problem
Replacing a local plugin object with a different object that uses the same ID skips both lifecycle hooks: the old object never receives
stop, and the replacement receives update hooks withoutstart. The same happens for anonymous inline plugins because their IDs are bothundefined.For a plugin that attaches a DOM listener in
startand removes it instop, the old listener remains attached while the replacement's listener is never installed. Destroy then callsstopon the unstarted replacement instead of the old object.Change
Compare plugin objects, rather than their option IDs, when determining which descriptors have started or stopped. The ID still selects the plugin's options. Rebuilding descriptors for the same object does not restart it.
This follows the existing per-chart
start/stoplifecycle; no new hooks or public API. It does not change the chart-initialization-onlyinstall/uninstallbehavior.Tests
10 new native tests cover same-ID and anonymous replacement, different-ID controls, disabled replacement/re-enable, registry unregister/register with the same ID, adding/removing anonymous plugins, repeated updates, and actual DOM listener transfer/cleanup. Six fail against unmodified master; four are controls.
--noEmitand changed-file ESLint pass.Firefox and downstream package integration tests were not run.