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
The return type of the flyoutCategory() method for each category is now FlyoutItemInfo[] instead of Element[]
The signature of 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.
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.