refactor!: Use JSON instead of XML for defining dynamic toolbox categories. #8658
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.
The basics
The details
Resolves
Fixes #5580
Proposed Changes
This PR updates the variable, dynamic variable, and procedure toolbox category definitions to use the newer JSON schema in place of the older XML-based format.
Reason for Changes
Support for XML will eventually be removed, and this serves as both eating our own dogfood and a practical example of implementing a dynamic category definition with JSON which third party developers may benefit from as a reference.
Breaking Changes
flyoutCategory()
method for each category is nowFlyoutItemInfo[]
instead ofElement[]
Variables.flyoutCategoryBlocks()
has changed, in order to allow for greater code reuse. Callers must specify the set of variables it should operate on, whether or not to include the "change x by y" blocks, and the types of the variable setter and getter blocks, if other than those included in core Blockly.VariablesDynamic.flyoutCategoryBlocks()
has been removed;Variables.flyoutCategoryBlocks()
should be used instead.Variables.generateVariableFieldDom()
has been removed. Users should manually specify variable field definitions, ideally in JSON.