* refactor: move optional function declarations into the constructor
* refactor: convert options.js to es6 class
* refactor: convert generator.js to es6 class
* refactor: convert workspace_events.js to es6 class
* refactor: convert events_abstract.js to an es6 class
* chore: format
* chore: fix lint
* chore: rebuild
* chore: respond to PR feedback
Same as PR #5640, except for the addition of a parameter in the JSON to turn this on or off. While one would normally want animations/sounds on (e.g. undo/redo stack) sometimes they'd be annoying (e.g. events from realtime collaborators).
* refactor: update several files to es6 classes
* refactor: update several files to es6 classes
* chore: add some type casts for specificity about event types
* chore: run formatter
* chore: rebuild
* refactor: update workspace_comment and _svg to es classes
* refactor: update classes that extend icon to es classes
* refactor: update icon to es6 class
* refactor: update connection classes to es6 classes and add casts as needed
* refactor: update scrollbar to es6 class and add casts as needed
* refactor: update workspace_svg to es6 class
* refactor: update several files to es6 classes
* refactor: update several files to es6 classes
* refactor: update renderers/common/info.js to es6 class
* refactor: update several files to es6 classes
* chore: rebuild deps.js
* chore: run format
* chore: use casts to narrow types in renderers
* chore: add @struct and type information on common measurables
* refactor: update some renderer measurables to es6 classes
* refactor: convert many measurables to es6 classes
* chore: format
* chore: rebuild
* refactor: Provide a BlockDefinition type
* refactor: Split defineBlocksWithJsonArray
Split defineBlocksWithJsonArray into:
- createBlockDefinitionsFromJsonArray, which creates BlockDefinitions
from a (possibly JSON-originated) POJsO array, having no side-effects
except possibly issuing warnings to the console.
- defineBlocks, which add any dictionary of BlockDefinitions to
the Blocks dictionary.
* feat(blocks): Export block definitions per-module
- Define all blocks in a local blocks dictionary, often using
createBlockDefinitionFromJsonArray, without registering them.
- Separately, use defineBlocks to register the exported
BlockDefinitions at the end of each Blockly.blocks.*
module.
- In Blockly.blocks.all, create a blocks export that combines all
of the blocks exports from the individual blocks modules.
* chore: have format script run clang-format on blocks/ too
* refactor(blocks): Make loopTypes a Set
This is likely to slightly improve performance, especially if there
are many entries.
* refactor(blocks): Re-export individual block modules from Blockly.blocks.all
* fix!(blocks): Have blocks_compressed.js export Blockly.blocks.all
Previously the value obtained by
const blocks = require('blockly/blocks'); // Node.js
or
import blocks from 'blockly/blocks.js'; // ES Modules
would be the block definitions dictionary (Blockly.Blocks).
Change this so that it is instead the export object from
Blockly.blocks.all.
This means you can now access loopTypes via:
import blocks from 'blockly/blocks.js';
blocks.loops.loopTypes.add('my_loop_blocktype');
This is a breaking change for any code which depended on the value
that was exported by blocks_compressed.js.
BREAKING CHANGE: the exports provided by blocks_compressed.js (and
therefore by `import ... from 'blockly/blocks'`) have changed; see above.
* refactor: convert flyout_button.js to ES6 class
* chore: move some properties into constructor and add annotations for flyout base
* refactor: convert flyout_horizontal.js to ES6 class
* refactor: convert flyout_vertical.js to ES6 class
* refactor: convert flyout_base.js to ES6 class
* refactor: convert flyout_metrics_manager.js to ES6 class
* refactor: convert insertion_marker_manager.js to ES6 class
* refactor: convert metrics_manager.js to ES6 class
* refactor: convert grid.js to ES6 class
* refactor: convert input.js to ES6 class
* refactor: convert touch_gesture.js to ES6 class
* refactor: convert gesture.js to ES6 class
* refactor: convert trashcan.js to ES6 class
* chore: rebuild and run format
* chore: fix review comments
* chore: respond to PR comments
* chore(tests): update event assert functions to pass in types directly
* refactor: move event types from prototypes to constructors
* refactor: convert events/events_block_change.js to ES6 class
* refactor: convert events/events_block_create.js to ES6 class
* refactor: convert events/events_block_delete.js to ES6 class
* refactor: convert events/events_block_drag.js to ES6 class
* refactor: convert events/events_block_move.js to ES6 class
* refactor: convert events/events_click.js to ES6 class
* refactor: convert events/events_comment_change.js to ES6 class
* refactor: convert events/events_comment_create.js to ES6 class
* refactor: convert events/events_comment_delete.js to ES6 class
* refactor: convert events/events_comment_move.js to ES6 class
* refactor: convert events/events_marker_move.js to ES6 class
* refactor: convert events/events_selected.js to ES6 class
* refactor: convert events/events_theme_change.js to ES6 class
* refactor: convert events/events_toolbox_item_select.js to ES6 class
* refactor: convert events/events_trashcan_open.js to ES6 class
* refactor: convert events/events_ui.js to ES6 class
* refactor: convert events/events_var_create.js to ES6 class
* refactor: convert events/events_var_delete.js to ES6 class
* refactor: convert events/events_var_rename.js to ES6 class
* refactor: convert events/events_viewport.js to ES6 class
* chore: rebuild
* chore: run clang-format
* chore(deps): Remove deprecated babel-lint package
When dependabot submitted PR #5791, it became apparent that eslint
version >= 8 is incompatible with babel-eslint v10.1.0 despite the
latter not having a version restriction against it. This is probably
because v10.1.0 is the last version of the package before it was
deprecated and renamed @babel/eslint-parser.
A little more investigation determined that there is no longer any
need to have eslint use a non-default parser for tests/mocha/**/*.js,
so the most straight forward solution is just to remove the dependency
entirely.
* refactor(tests): Simplify tests/mocha/.eslintrc.json
Remove all rules that seem to be redundant with our top-level
.eslintrc.json.
This finishes reverting most of the changes made in PR #4062.
* Add deprecation warnings and reorganize blockly.js
* Update usages of deprecated properties
* chore: make dates consistent, remove extra function
* chore: run clang-format and fix lint
* chore: add more tags
* chore: fix updated location of Align types
* chore: fix deprecated usages in tests
* chore: rebuild deps
* chore: fix moved Align types in demos and tests
* chore: update which properties are actually deprecated
* chore: don't deprecate Blockly.selected.
* chore: Remove requires that duplicate those in blockly.js
* refactor: Remove core/requires.js, make blockly.js be entry point
It sort of makes sense, doesn't it?
The only remaining require not duplicated in `blockly.js` was that for
`Blockly.themes.Classic`, but it is already required by
`Blockly.themes` (itself required by `Blockly`).
* fix(test): Fix advanced compilation test
- Fix loading of blocks in `tests/compile/main.js` caused by
recent `goog.module`-ification work.
- Fix problem caused by ADVANCED_OPTIMISATIONS renaming the Msg
property on the fake Blockly object created by the
translation-loading hack in `blockly.js`.
* chore(build): Reenable advanced compilation test
Fixes#5602.
* chore: Fix inadvertent block migration inconsistencies
- Reinstate `goog.require`s-for-side-effects that were inadvertently
removed.
- Always use a destructuring import for `defineBlocksWithJsonArray`.
- Consistently use `CONSTANT_CASE` names for block-common objects.
(We could alternatively always use `camelCase` names, but since
all the `MIXIN`s and `EXTENSIONS` remain all-uppercase this seems
the more consistent.)
* chore: Fix import ordering
* refactor: convert generators/python/colour.js to goog.module
* refactor: convert generators/python/colour.js to named requires
* chore: run clang-format
* refactor: convert generators/python/lists.js to goog.module
* refactor: convert generators/python/lists.js to named requires
* chore: run clang-format
* refactor: convert generators/python/logic.js to goog.module
* refactor: convert generators/python/logic.js to named requires
* chore: run clang-format
* refactor: convert generators/python/loops.js to goog.module
* refactor: convert generators/python/loops.js to named requires
* chore: run clang-format
* refactor: convert generators/python/math.js to goog.module
* refactor: convert generators/python/math.js to named requires
* chore: run clang-format
* refactor: convert generators/python/procedures.js to goog.module
* refactor: convert generators/python/procedures.js to named requires
* chore: run clang-format
* refactor: convert generators/python/text.js to goog.module
* refactor: convert generators/python/text.js to named requires
* chore: run clang-format
* refactor: convert generators/python/variables_dynamic.js to named requires
* refactor: convert generators/python/variables.js to named requires
* chore: run clang-format
* refactor: convert generators/python.js to goog.module
* refactor: convert generators/python.js to named requires
* chore: run clang-format
* chore: remove spurious @private annotations
* chore: rebuild
* refactor: convert generators/lua.js to goog.module
* refactor: convert generator/lua.js to named requires
* chore: run clang-format
* refactor: convert generators/php/colour.js to goog.module
* refactor: convert generators/php/colour.js to named requires
* chore: run clang-format
* refactor: convert generators/php/lists.js to goog.module
* refactor: convert generators/php/lists.js to named requires
* chore: run clang-format
* refactor: convert generators/php/logic.js to goog.module
* refactor: convert generators/php/logic.js to named requires
* chore: run clang-format
* refactor: convert generators/php/loops.js to goog.module
* refactor: convert generators/php/loops.js to named requires
* chore: run clang-format
* refactor: convert generators/php/math.js to goog.module
* refactor: convert generators/php/math.js to named requires
* chore: run clang-format
* refactor: convert generators/php/procedures.js to goog.module
* refactor: convert generators/php/procedures.js to named requires
* chore: run clang-format
* refactor: convert generators/php/text.js to goog.module
* refactor: convert generators/php/text.js to named requires
* chore: run clang-format
* refactor: convert generators/php/variables.js to goog.module
* refactor: convert generators/php/variables.js to named requires
* chore: run clang-format
* refactor: convert generators/php/variables_dynamic.js to goog.module
* refactor: convert generators/php/variables_dynamic.js to named requires
* refactor: convert generators/php.js to goog.module
* refactor: convert generators/php.js to named requires
* chore: run clang-format
* chore: rebuild deps.js
* refactor: convert generators/lua/colour.js to goog.module
* refactor: convert generators/lua/colour.js to named requires
* chore: run clang-format
* refactor: convert generators/lua/lists.js to goog.module
* refactor: convert generators/lua/lists.js to named requires
* chore: run clang-format
* fix: use getListIndex helper function in lua list generators
* refactor: convert generators/lua/logic.js to goog.module
* refactor: convert generators/lua/logic.js to named requires
* chore: run clang-format
* refactor: convert generators/lua/loops.js to goog.module
* refactor: convert generators/lua/loops.js to named requires
* chore: run clang-format
* refactor: convert generators/lua/math.js to goog.module
* refactor: convert generators/lua/math.js to named requires
* chore: run clang-format
* refcator: convert generators/lua/procedures.js to goog.module
* refactor: convert generators/lua/procedures.js to named requires
* chore: run clang-format
* chore: rebuild deps.js
* refactor: convert generators/lua/text.js to goog.module
* refactor: convert generators/lua/text.js to named requires
* refactor: convert generators/lua/variables_dynamic.js to goog.module
* refactor: convert generators/lua/variables_dynamic.js to named requires
* chore: run clang-format on text.js
* refactor: convert generators/lua/variables.js to goog.module
* refactor: convert generators/lua/variables.js to named requires
* chore: run clang-format
* chore: make a lua generator function internal
* chore: rebuild deps.js
* refactor: convert generators/javascript.js to goog.module
* refactor: convert generators/javascript.js to named requires
* chore: run clang-format
* refactor: convert generators/dart/variables.js to goog.module
* refactor: convert generators/dart/variables.js to named requires
* chore: run clang-format
* refactor: convert generators/dart/variables_dynamic.js to goog.module
* refactor: convert generators/dart/variables_dynamic.js to named requires
* refactor: convert generators/dart/text.js to goog.module
* refactor: convert generators/dart/text.js to named requires
* chore: run clang-format
* refactor: convert generators/dart/procedures.js to goog.module
* refactor: convert generators/dart/procedures.js to named requires
* chore: run clang-format
* refactor: convert generators/dart/math.js to goog.module
* refactor: convert generators/dart/math.js to named requires
* chore: run clang-format
* refactor: convert generators/dart/loops.js to goog.module
* refactor: convert generators/dart/loops.js to named requires
* chore: run clang-format
* refactor: convert generators/dart/logic.js to goog.module
* refactor: convert generators/dart/logic.js to named requires
* chore: run clang-format
* refactor: convert generators/dart/lists.js to goog.module
* refactor: convert generators/dart/lists.js to named requires
* chore: run clang-format
* refactor: convert generators/dart/colour.js to goog.module
* refactor: convert generators/dart/colour.js to named requires
* chore: rebuild deps.js
* chore: lint
* refactor: convert generators/javascript/colour.js to goog.module
* refactor: convert generators/javascript/colour.js to named requires
* chore: run clang-format
* refactor: convert generators/javascript/lists.js to goog.module
* refactor: convert generators/javascript/lists.js to named requires
* chore: run clang-format
* refactor: convert generators/javascript/logic.js to goog.module
* refactor: convert generators/javascript/logic.js to named requires
* chore: run clang-format
* refactor: convert genereators/javascript/math.js to goog.module
* refactor: convert generators/javascript/math.js to named requires
* chore: rebuild deps.js
* refactor: convert generators/javascript/procedures.js to goog.module
* refactor: convert generators/javascript/procedures.js to named requires
* chore: run clang-format
* refactor: Turn .getSurroundLoop into a (Block) method
This considerably simplifies the code in the genrators, obviating
the need for generators to import Blockly.Constants.Loops, and
allowing the compiler to remove blocks/loops.js from the first
(Blockly) chunk of the compilation.
(The latter could and should have been arranged by making the
generator chunks depend on the blocks chunk, but that is no longer
necessary.)
* refactor: Migrate blocks/loops.js to goog.module
* refactor: Migrate blocks/loops.js named requires
* chore: clang-format blocks/loops.js
* chore: migrate generators/javascript/text.js to goog.module
* chore: convert generators/javascript/text.js to named requires
* refactor: convert generators/javascript/variables.js to goog.module
* refactor: convert generators/javascript/variables_dynamic to goog.module
* chore: revert #5730
* fix: Fix compile failure due to incorrect visibility
The CONTROL_FLOW_IN_LOOP_CHECK_MIXIN is intended to be used outside of
blocks/ (it is, in particular, used in generators/) so it should have
been marked @public from the beginning.
* chore: migrate generators/dart.js to goog.module
* chore: migrate generators/dart.js to named requires
* chore: Update generators/dart.js to alphabetize imports
Co-authored-by: Christopher Allen <cpcallen+github@gmail.com>
Co-authored-by: Christopher Allen <cpcallen+github@gmail.com>
* chore: fix some missing requires in generators
* chore: fix missing requires in dart block generators
* chore: replace Blockly.isNumber with Blockly.utils.string.isNumber in generators
* chore: fix more missing requires in block generators
* Migrate blocks/procedures.js to goog.module
* Migrate blocks/procedures.js named requires
* clang-format blocks/procedures.js
* chore: Factor common methods out of block definitions
Addressing comments on PR #5736.