-
Notifications
You must be signed in to change notification settings - Fork 3.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: change getCandidate_ and showInsertionMarker_ to be more dynamic #5722
fix: change getCandidate_ and showInsertionMarker_ to be more dynamic #5722
Conversation
Just a note that this PR and #5702 are somewhat of a team in that they are both necessary for my goal of creating a dynamic "chameleon" block. That said, strictly speaking they are independent. |
core/insertion_marker_manager.js
Outdated
// It's possible that the number of connections on the local block has | ||
// changed since the insertion marker was originally created. Let's recreate | ||
// the insertion marker and try again. | ||
// In theory we could probably recreate the marker block (e.g. in getCandidate_), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1 to only recreating the insertion marker if something has actually changed, since building a block can be slow.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@rachel-fenichel Just to be clear, I think that you're responding to my comment in the code and saying that you're ok with the way that I did it, as opposed to the option that I mentioned in the comment. Do I have that right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the PR! I was playing around with this a bit and think I found a bug. The steps to reproduce are:
- Stack two blocks on top of each other.
- Try to connect the bottom of the stack to the top of another block.
Uncaught TypeError: Cannot read properties of null (reading 'unplug')
at InsertionMarkerManager.hideInsertionMarker_
I haven't had a chance to dig into this, but I double checked that it wasn't happening in core. If you have an idea what is happening or time to debug feel free, otherwise I will dig a bit deeper later today or tomorrow morning : )
I see what's happening. I'll investigate further and try to fix. |
* From PR comment
@alschmiedt PTAL |
Thanks for the fix! So looking at this more, I think we are going to want to do some more performance testing before merging. Specifically we want to make sure the frames during a drag has not grown significantly. Unfortunately, we won't have time to do this before our release next Thursday. So we will come back to it the week after next and it will go into the March/April release. |
Thanks. I agree with you about doing some performance testing. If it turns
out to be an issue let me know. I can probably do some work to mitigate it.
…On Wed, Dec 1, 2021, 5:06 PM alschmiedt ***@***.***> wrote:
Thanks for the fix!
So looking at this more, I think we are going to want to do some more
performance testing before merging. Specifically we want to make sure the
frames during a drag has not grown significantly.
Unfortunately, we won't have time to do this before our release next
Thursday. So we will come back to it the week after next and it will go
into the March/April release.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#5722 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AANJWSRZUSJDPRO3R57QAT3UO3BCBANCNFSM5IPQI7UQ>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Okay, I took a harder look at this, and I also pulled it down, dragged around in various scenarios, and took at look at the performance tab in chrome dev tools to look for significant shifts. My conclusions:
- Reinitializing the list of connections is relatively cheap since it's just accessing properties on blocks, so doing that regularly is fine.
- Reinitializing the marker at this location in the code is reasonable from a performance perspective. As you said in the comments, it strikes a balance between updating on every move and tracking exactly when changes are made to the block.
- It's still going to be possible to get into a bad state if the list of connections is the same length but something else has changed. But that was true already.
- A try/catch around
getMatchingConnection
is okay, but if you're going to flesh this code out further, we'll want to have an actual return value that indicates a problem (instead of relying on a try/catch).
Thanks for the careful review @rachel-fenichel! |
* chore(build): Update compiler & linter input language to ES2020 (#5745) Also: - Ensure that the `comma-dangle` rule will not be applied to function parameter lists (even when multi-line). - Update tests/node/.eslintrc.json to make the environment node-specific and not pinned to es6. * refactor: Migrate `blocks/procedures.js` to goog.module syntax (#5736) * 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. * refactor: Migrate `blocks/lists.js` to `goog.module` syntax (#5746) * Migrate blocks/lists.js to goog.module * Migrate blocks/lists.js named requires * clang-format blocks/lists.js * chore: fix missing requires in generators (#5744) * 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 * feat: clarify variable and procedure constants (#5743) * chore: move dynamic category names into their respective files * feat: create NameType enum on Names * chore: use NameType enum for Names helper functions * docs: update comments for category names * refactor: Migrate `blocks/logic.js` to `goog.module` syntax (#5748) * refactor: Migrate blocks/logic.js to goog.module * refactor: Migrate blocks/logic.js named requires * chore: clang-format blocks/logic.js * fix: Prevent error when maxTrashcanContents is 0 (#5739) * fix: Prevent error when maxTrashcanContents is 0 Resolves #5729. * Eliminate ’smart’ quotes. * refactor: migrate `generators/dart.js` to `goog.module` syntax (#5749) * 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 <[email protected]> Co-authored-by: Christopher Allen <[email protected]> * chore: revert #5730 (#5740) * 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. * refactor: convert some js block generators to goog.module (#5750) * 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 * refactor: Migrate `blocks/loops.js` to `goog.module` syntax (#5755) * 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 * fix: procedure callers now remove inputs properly (#5751) * refactor: convert generators/javascript/procedures.js to goog.module (#5754) * refactor: convert generators/javascript/procedures.js to goog.module * refactor: convert generators/javascript/procedures.js to named requires * chore: run clang-format * refactor: convert some js block generators to goog.module (#5756) * 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/loops.js to goog.module (#5758) * refactor: convert generators/javascript/loops.js to goog.module * refactor: convert generators/javascript/loops.js to named requires * chore: run clang-format * chore: rebuild deps.js * refactor: convert some block generators to goog.module (#5762) * 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: Migrate `blocks/math.js` to `goog.module` syntax (#5765) * refactor: Migrate blocks/math.js to goog.module * refactor: Migrate blocks/math.js named requires * chore: clang-format blocks/math.js * refactor: convert some block generators to goog.module (#5769) * 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 some block generators to goog.module (#5770) * 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 python block generators to goog.module (#5771) * 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: Migrate `blocks/text.js` to `goog.module` syntax (#5766) * refactor: Migrate blocks/text.js to goog.module * refactor: Migrate blocks/text.js named requires * refactor: Factor out common properties of text_prompt* blocks * clang-format blocks/text.js * fix: Fix lint warnings for PR #5766 * chore: correctly updates the compiled flag (#5767) * refactor: msg.js: use named export, remove declareLegacyNamespace (#5768) * chore: Remove declareLegacyNamespace from serialization folder (#5757) * refactor: Migrate `blocks/variables.js` to `goog.module` syntax (#5774) * refactor: Migrate blocks/variables.js to goog.module * refactor: Migrate blocks/variables.js named requires * chore: clang-format blocks/variables.js * chore: JSDoc grammar correction * feat: make checkAndDelete a public API (#5772) * fix: the advanced playground to work with dec 2021 release (#5775) * chore: updates the names for parsing (#5778) * chore: Simplify NPM package wrappers, improve chunk wrapper generator (#5777) * chore: Clean up NPM package module wrappers - Slightly improve documentation for each file based on helpful explanations given by @samelhusseini. - Removed redundant code---e.g., loading `javascript_compressed.js` creates and sets Blockly.JavaScript as a side effect, so there is no need to set `Blockly.JavaScript = BlocklyJavaScript` in `dist/javascript.js` (generated from `scripts/package/javascript.js`). - Remove possibly harmful code---e.g., `Blockly.Msg` is initialised with a null-prototype object in `blockly_compressed.js` and that initial object should under no circumstances be replaced. - Remvoe downright misleading code---e.g., `dist/blocks.js` previously _appeared_ to replace Blockly.Blocks with an empty object, but in fact the `Blockly` name referred at that point to the exports object from `blocks_compressed.js`, which would randomly get a useless `{}`-valued `.Blocks` property tacked on to it; similarly, code in `dist/browser.js` (generated from `scripts/package/browser/index.js`) appeared to copy definitions from `BlocklyBlocks` to `Blockly.Blocks`, but the former would always be (the aforementioned) empty object, making this code ineffective. * chore: Improve chunk definition / UMD generation Make several improvements to the chunks global and chunkWrapper function: - Document chunk definition format (and improve the names of of the documented properties). - Replace the chunk `.namespace` property with two others: - `.exports` names the variable/property to be returned by the factory function, and which will be set on the global object if the module is loaded in a browser. - `.importAs` names the parameter that this chunk's exports value is to be passed to the factory function of other chunks which depend on this one. (This needs to be different because e.g. `Blockly.blocks` is not a valid parameter name.) - Change the definition for the blocks chunk to export Blockly.Blocks (i.e., the block definition dictionary) as blocks_compressed.js did previous to PR #5721 (chunked compilation), rather than the (empty and soon to vanish) Blockly.blocks namespace object. This is a win for backwards compatibility, though it does mean that if we want to expose the `loopTypes` export from `blocks/loops.js` we will need to find a different way to do so. * deprecate!: removes deprecated connection functions (#5713) * refactor: Migrate `blocks/variables_dynamic.js` to `goog.module` syntax (#5779) * refactor: Migrate blocks/variables_dynamic.js to goog.module * refactor: Migrate blocks/variables_dynamic.js named requires * chore: clang-format blocks/variables_dynamic.js * chore: Fix inadvertent block migration inconsistencies (#5780) * 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 * fix(tests): Fix & reenable the advanced compilation test (#5781) * 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(test): Add playground that uses compressed files (#5782) * chore(deps): remove dependency on typescript-closure-tools (#5776) * build: remove typings tasks from build and test * chore(deps): remove typescript-closure-tools * chore(deps): update package-lock.json * chore(test): add version of multi_playground with compressed files (#5785) * chore: Remove `core/requires.js` (#5718) * 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`). * release: merge master into develop (#5792) * Bump ws from 7.4.4 to 7.5.1 Bumps [ws](https://github.com/websockets/ws) from 7.4.4 to 7.5.1. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/7.4.4...7.5.1) --- updated-dependencies: - dependency-name: ws dependency-type: indirect ... Signed-off-by: dependabot[bot] <[email protected]> * Bump lodash from 4.17.19 to 4.17.21 Bumps [lodash](https://github.com/lodash/lodash) from 4.17.19 to 4.17.21. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.19...4.17.21) --- updated-dependencies: - dependency-name: lodash dependency-type: indirect ... Signed-off-by: dependabot[bot] <[email protected]> * Initial commit for appengine deploy action * Update comments to be more descriptive * Get deploy files from the correct directory Previous path was `_deploy/`. New path is `../_deploy`. * Create Github Action to comment on PR while develop is frozen (#5006) * Create develop_freeze_comment.yml * Update comments * Fix typo and update uses * Add test message * Revert "Create Github Action to comment on PR while develop is frozen (#5006)" (#5013) This reverts commit 8c635b5fbc576f5f8e72189bc679437fafd75cb9. * Revert "Get deploy files from the correct directory" * Bump hosted-git-info from 2.8.4 to 2.8.9 (#4980) Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.4 to 2.8.9. - [Release notes](https://github.com/npm/hosted-git-info/releases) - [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md) - [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.4...v2.8.9) --- updated-dependencies: - dependency-name: hosted-git-info dependency-type: indirect ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Pull Request template for goog.module PRs Provide a standard pull request template more suited to PRs doing goog.module conversions. There's no way to pick a non-default template when creating a PR manually, but this one can be used by adding "&?template=goog_module.md" to the https://github.com/cpcallen/bugs/compare/ URL. * Update goog_module.md with suggested fixes * Fix typos. * Reinstate "Proposed Changes" section. * Mark text that should be edit with ALL CAPS. * Bump normalize-url from 4.5.0 to 4.5.1 Bumps [normalize-url](https://github.com/sindresorhus/normalize-url) from 4.5.0 to 4.5.1. - [Release notes](https://github.com/sindresorhus/normalize-url/releases) - [Commits](https://github.com/sindresorhus/normalize-url/commits) --- updated-dependencies: - dependency-name: normalize-url dependency-type: indirect ... Signed-off-by: dependabot[bot] <[email protected]> * Bump trim-newlines from 3.0.0 to 3.0.1 Bumps [trim-newlines](https://github.com/sindresorhus/trim-newlines) from 3.0.0 to 3.0.1. - [Release notes](https://github.com/sindresorhus/trim-newlines/releases) - [Commits](https://github.com/sindresorhus/trim-newlines/commits) --- updated-dependencies: - dependency-name: trim-newlines dependency-type: indirect ... Signed-off-by: dependabot[bot] <[email protected]> * Bump path-parse from 1.0.6 to 1.0.7 Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7. - [Release notes](https://github.com/jbgutierrez/path-parse/releases) - [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7) --- updated-dependencies: - dependency-name: path-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] <[email protected]> * Bump postcss from 7.0.35 to 7.0.36 (#4928) Bumps [postcss](https://github.com/postcss/postcss) from 7.0.35 to 7.0.36. - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/7.0.35...7.0.36) --- updated-dependencies: - dependency-name: postcss dependency-type: indirect ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Rollup of all Q3 message changes (#5565) Courtesy of Translatewiki * Add Croatian to Code demo (#5583) (#5611) Contributed courtesy of Lidija Kralj. * chore: create release.yml (#5588) * Create release.yml * chore: update release.yml * chore: update dependabot messages and labels (#5653) The same as #5618, but against master because dependabot ignores changes on develop. * chore: Create separate report_clang_format workflow in master branch (#5670) The initial version of this workflow just uses `console.log` to report the context of the `context` object. It is hoped that there will be enough information in this context to identify the PR to comment on, without the `check_clang_format` workflow having to upload a 'build artefact' of some kind - see example of what I hoe to avoid starting at `ReceivePR.yml` here: https://securitylab.github.com/research/github-actions-preventing-pwn-requests/ A follow-up PR will (if possible) add the code to create comments when `check_clang_format` fails. Part of #5659. * chore: Remove spurious extra `on` clause in report_clang_format.yml (#5671) Removes an unwanted `on` clause that was overlooked in #5670 by author and reviewer. * chore: More spelunking in GitHub Action data (#5673) Looking for information about PR that triggered original check_clang_format run. * chore: revert github action (#5675) * fix: Don't try to set text fields to null on cancel (#5692) Mobile users get a window.prompt as an input, if they press the cancel button the return value is null. Don't attempt to set the value of the field to null. Caused errors in the custom note field which inherits from FieldTextInput. Detected in Blockly Games Music. This PR is for the master branch and includes a recompile. The develop branch has changed enough that a cherrypick from develop to master won't work. The bug in question represents a significant number of the errors being reported from Blockly Games. * Update dependabot.yml (#5705) * chore: run clang-format Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Monica Kozbial <[email protected]> Co-authored-by: Christopher Allen <[email protected]> Co-authored-by: Neil Fraser <[email protected]> Co-authored-by: alschmiedt <[email protected]> * fix: multi-playground should use goog.require to get blocks. (#5797) * chore!: Add deprecation notices to values in blockly.js (#5555) * 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. * fix: allow undefined color in toolbox definition (#5801) * fix: don't use fully qualified namespace in aria (#5804) * fix: Upload new TypeScript typings for Q4 release (#5802) * fix: Run intial typings script for q4 release * fix: manually fix errors with types * fix: update core module * Rebuild * chore(deps): Update package-lock.json * chore: Update metadata for December 2021 (#5811) * chore(deps): Remove dependency on `babel-eslint`; simplify eslintrc for mocha tests (#5794) * 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. * chore(deps): bump eslint from 7.32.0 to 8.4.1 (#5807) Bumps [eslint](https://github.com/eslint/eslint) from 7.32.0 to 8.4.1. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v7.32.0...v8.4.1) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump typescript from 4.4.4 to 4.5.2 (#5725) Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.4.4 to 4.5.2. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Commits](https://github.com/Microsoft/TypeScript/compare/v4.4.4...v4.5.2) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix: fix keycodes type (#5805) * fix: Use correct namespace for svgMath functions (#5813) * docs: Update README to reflect next release date (#5820) * fix: re-expose HSV_VALUE and HSV_SATURATION as settable properties on Blockly (#5821) * chore: update the dev-tools version (#5823) * fix: Use correct namespace for svgMath functions (#5813) * fix: re-expose HSV_VALUE and HSV_SATURATION as settable properties on Blockly (#5821) * chore: update the dev-tools version (#5823) * chore: update build files for patch release * chore: update to the correct version * chore: cleanup * chore: update the package-lock * chore: clean up issue templates and pull request templates (#5827) * fix: change getCandidate_ and showInsertionMarker_ to be more dynamic (#5722) * Change getCandidate_ and showInsertionMarker_ to be more dynamic * Ran clang formatter * Fix typos * Fix issue with dragging stacks * From PR comment * fix: Fixed the label closure on demo/blockfactory (#5833) * fix: Fixed the label closure on demo/blockfactory * fix: remove </input> on demo/blockfactory * chore(deps): bump typescript from 4.5.2 to 4.5.4 (#5825) Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.5.2 to 4.5.4. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Commits](https://github.com/Microsoft/TypeScript/compare/v4.5.2...v4.5.4) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump google-closure-compiler (#5810) Bumps [google-closure-compiler](https://github.com/google/closure-compiler-npm) from 20211107.0.0 to 20211201.0.0. - [Release notes](https://github.com/google/closure-compiler-npm/releases) - [Commits](https://github.com/google/closure-compiler-npm/compare/v20211107.0.0...v20211201.0.0) --- updated-dependencies: - dependency-name: google-closure-compiler dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump @blockly/block-test from 1.1.5 to 2.0.1 (#5836) Bumps [@blockly/block-test](https://github.com/google/blockly-samples/tree/HEAD/plugins/block-test) from 1.1.5 to 2.0.1. - [Release notes](https://github.com/google/blockly-samples/releases) - [Commits](https://github.com/google/blockly-samples/commits/@blockly/[email protected]/plugins/block-test) --- updated-dependencies: - dependency-name: "@blockly/block-test" dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(release): add release-please config (#5848) * fix: setting null for a font style on a theme (#5831) * fix: procedure param edits breaking undo (#5845) * fix: bumping a block after duplicate breaking undo (#5844) * fix: bumping a block after duplicate breaking undo * fix: fixup dependencies * chore(deps): bump @blockly/theme-modern from 2.1.24 to 2.1.25 (#5837) Bumps [@blockly/theme-modern](https://github.com/google/blockly-samples/tree/HEAD/plugins/theme-modern) from 2.1.24 to 2.1.25. - [Release notes](https://github.com/google/blockly-samples/releases) - [Commits](https://github.com/google/blockly-samples/commits/@blockly/[email protected]/plugins/theme-modern) --- updated-dependencies: - dependency-name: "@blockly/theme-modern" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump closure-calculate-chunks from 3.0.2 to 3.0.3 (#5815) Bumps [closure-calculate-chunks](https://github.com/chadkillingsworth/closure-calculate-chunks) from 3.0.2 to 3.0.3. - [Release notes](https://github.com/chadkillingsworth/closure-calculate-chunks/releases) - [Commits](https://github.com/chadkillingsworth/closure-calculate-chunks/compare/v3.0.2...v3.0.3) --- updated-dependencies: - dependency-name: closure-calculate-chunks dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix: Don't throw if drag surface is empty. (#5695) Observed this error in Blockly Games Bird 6 (Chrome OS): Uncaught TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'. It has only shown up once, and I can't reproduce, but it looks like the drag surface was being cleared while empty. Maybe some weird multi-touch operation? Open question: Leave the code as is so that the error is thown and visible, or supress it? * chore(deps): bump webdriverio from 7.16.10 to 7.16.12 (#5824) Bumps [webdriverio](https://github.com/webdriverio/webdriverio) from 7.16.10 to 7.16.12. - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/compare/v7.16.10...v7.16.12) --- updated-dependencies: - dependency-name: webdriverio dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump concurrently from 6.4.0 to 7.0.0 (#5847) Bumps [concurrently](https://github.com/open-cli-tools/concurrently) from 6.4.0 to 7.0.0. - [Release notes](https://github.com/open-cli-tools/concurrently/releases) - [Commits](https://github.com/open-cli-tools/concurrently/compare/v6.4.0...v7.0.0) --- updated-dependencies: - dependency-name: concurrently dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump eslint from 8.4.1 to 8.6.0 (#5850) Bumps [eslint](https://github.com/eslint/eslint) from 8.4.1 to 8.6.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.4.1...v8.6.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix: update the playground to load compressed when hosted (#5835) * chore(deps): bump google-closure-deps from 20211107.0.0 to 20211201.0.0 (#5852) Bumps [google-closure-deps](https://github.com/google/closure-library) from 20211107.0.0 to 20211201.0.0. - [Release notes](https://github.com/google/closure-library/releases) - [Commits](https://github.com/google/closure-library/compare/v20211107...v20211201) --- updated-dependencies: - dependency-name: google-closure-deps dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * refactor: move properties into constructors and convert to classes (#5822) * refactor: move properties to constructor in block_drag_surface.js * refactor: move properties to constructor in block_svg.js * refactor: move properties to constructor in block.js * refactor: move properties to constructor in bubble.js * refactor: move properties to constructor in connection.js * refactor: move properties to constructor in flyout_base.js * refactor: move properties to constructor in flyout_button.js * refactor: move properties to constructor in generator.js * refactor: move properties to constructor in grid.js * refactor: move properties to constructor in input.js * refactor: move properties to constructor in mutator.js * refactor: move properties to constructor in scrollbar.js * refactor: move properties to constructor in trashcan.js * refactor: move properties to constructor in warning.js * refactor: move properties to constructor in workspace_audio.js * refactor: move properties to constructor in workspace_drag_surface_svg.js * refactor: move properties to constructor in workspace_svg.js * refactor: move properties to constructor in workspace.js * refactor: move properties to constructor in zoom_controls.js * chore: rebuild * refactor: convert zoom_controls.js to es6 class and format * refactor: convert workspace_audio.js to es6 class and format * refactor: convert workspace_dragger.js to es6 class and format * refactor: convert workspace_drag_surface_svg.js to es6 class and format * refactor: convert variable_model.js to es6 class and format * refactor: convert variable_map.js to es6 class and format * refactor: convert theme.js to es6 class and format * chore: remove bad comment * fix: msg imports in type definitions (#5858) This is a copy of https://github.com/google/blockly/pull/5846/files against master, which will fix https://github.com/google/blockly/issues/5841 in the next patch release. When we released v7 we committed to making patch releases for typescript definition errors, since our pipeline for typings was convoluted this quarter. * chore(deps): bump @blockly/block-test from 1.1.5 to 2.0.1 (#5836) (#5856) Bumps [@blockly/block-test](https://github.com/google/blockly-samples/tree/HEAD/plugins/block-test) from 1.1.5 to 2.0.1. - [Release notes](https://github.com/google/blockly-samples/releases) - [Commits](https://github.com/google/blockly-samples/commits/@blockly/[email protected]/plugins/block-test) --- updated-dependencies: - dependency-name: "@blockly/block-test" dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * release: update files for Q4 2021 patch release (#5859) * refactor: convert some files to es6 classes (#5861) * refactor: convert utils/coordinate.js to ES6 class * refactor: convert utils/rect.js to ES6 class * refactor: convert utils/size.js to ES6 class * refactor: convert block_drag_surface.js to ES6 class * refactor: convert block_dragger.js to ES6 class * refactor: convert bubble_dragger.js to ES6 class * chore: declare bubble property in the constructor * refactor: convert bubble.js to ES6 class * chore: clang-format * chore(lint): lint and format * chore: declare properties in the constructor instead of at first use (#5862) * refactor: convert some files to es6 classes (#5863) * refactor: convert menu.js to ES6 class * refactor: convert menuitem.js to ES6 class * refactor: convert scrollbar_pair.js to ES6 class * chore: define properties in the constructor in names.js * refactor: convert names.js to ES6 class * chore: run clang-format * refactor: convert leaf event classes to es6 classes (#5870) * 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 * refactor: convert renderer classes to es6 classes (#5874) * refactor: convert zelos renderer classes to es6 classes * refactor: convert zelos measurables to es6 classes * refactor: convert thrasos classes to es6 classes * refactor: convert minimalist classes to es6 classes * refactor: update geras classes to es6 classes * chore: rebuild and format * chore: fix indentation in comments * chore(deps): bump @blockly/dev-tools from 3.0.1 to 3.0.3 (#5877) Bumps [@blockly/dev-tools](https://github.com/google/blockly-samples/tree/HEAD/plugins/dev-tools) from 3.0.1 to 3.0.3. - [Release notes](https://github.com/google/blockly-samples/releases) - [Commits](https://github.com/google/blockly-samples/commits/@blockly/[email protected]/plugins/dev-tools) --- updated-dependencies: - dependency-name: "@blockly/dev-tools" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump google-closure-compiler (#5865) Bumps [google-closure-compiler](https://github.com/google/closure-compiler-npm) from 20211201.0.0 to 20220104.0.0. - [Release notes](https://github.com/google/closure-compiler-npm/releases) - [Commits](https://github.com/google/closure-compiler-npm/compare/v20211201.0.0...v20220104.0.0) --- updated-dependencies: - dependency-name: google-closure-compiler dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump yargs from 17.3.0 to 17.3.1 (#5851) Bumps [yargs](https://github.com/yargs/yargs) from 17.3.0 to 17.3.1. - [Release notes](https://github.com/yargs/yargs/releases) - [Changelog](https://github.com/yargs/yargs/blob/main/CHANGELOG.md) - [Commits](https://github.com/yargs/yargs/compare/v17.3.0...v17.3.1) --- updated-dependencies: - dependency-name: yargs dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump mocha from 9.1.3 to 9.1.4 (#5882) Bumps [mocha](https://github.com/mochajs/mocha) from 9.1.3 to 9.1.4. - [Release notes](https://github.com/mochajs/mocha/releases) - [Changelog](https://github.com/mochajs/mocha/blob/master/CHANGELOG.md) - [Commits](https://github.com/mochajs/mocha/compare/v9.1.3...v9.1.4) --- updated-dependencies: - dependency-name: mocha dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chores(deps): Update follow-redirects to 1.14.7 to fix CVE-2022-0155. (#5879) * chore(deps): Update follow-redirects to 1.14.7 to fix CVE-2022-0155 (#5880) * chore(deps): bump http-server from 14.0.0 to 14.1.0 (#5881) Bumps [http-server](https://github.com/http-party/http-server) from 14.0.0 to 14.1.0. - [Release notes](https://github.com/http-party/http-server/releases) - [Commits](https://github.com/http-party/http-server/compare/v14.0.0...v14.1.0) --- updated-dependencies: - dependency-name: http-server dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore: configure release-please as a bot, not an action (#5886) * chore(deps): bump @wdio/selenium-standalone-service (#5878) Bumps [@wdio/selenium-standalone-service](https://github.com/webdriverio/webdriverio) from 7.16.6 to 7.16.13. - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/compare/v7.16.6...v7.16.13) --- updated-dependencies: - dependency-name: "@wdio/selenium-standalone-service" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore: add release-please config on master (#5887) * chore(deps): bump eslint from 8.6.0 to 8.7.0 (#5884) Bumps [eslint](https://github.com/eslint/eslint) from 8.6.0 to 8.7.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.6.0...v8.7.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * refactor!: remove unused constants from internalConstants (#5889) * chore(deps): bump typescript from 4.5.4 to 4.5.5 (#5895) Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.5.4 to 4.5.5. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Commits](https://github.com/Microsoft/TypeScript/compare/v4.5.4...v4.5.5) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump webdriverio from 7.16.12 to 7.16.13 (#5883) Bumps [webdriverio](https://github.com/webdriverio/webdriverio) from 7.16.12 to 7.16.13. - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/compare/v7.16.12...v7.16.13) --- updated-dependencies: - dependency-name: webdriverio dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix: TypeScript exporting of the serialization functions (#5890) * Relocates serialization typing to be adjacent * Gathers serialization imports and exports from Blockly * fix: Adds check for changedTouches (#5869) * refactor: convert some classes to es6 classes (#5873) * 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(build): add a script to run the ts compiler and send the new files to closure compiler (#5894) * chore(build): add a script to run the ts compiler and send the new files to closure compiler * chore(build): clean up tsconfig * chore: apply suggestions from code review Cleanup from Chris Co-authored-by: Christopher Allen <[email protected]> Co-authored-by: Christopher Allen <[email protected]> * fix(generators): Fix an operator precedence issue in the math_number_property generators to remove extra parentheses (#5685) * Fixed issue where the mathIsPrime function inserted extra parenthesis around certain blocks. * Added tests to generated JS * Updated generated code in Lua * Updated Generated code for tests in Dart * Updated generated code for tests in PHP * Updated generated code for tests in Python * Also changed var to const and let. Co-authored-by: jeremyjacob123 <[email protected]> Co-authored-by: LouisCatala <[email protected]> Co-authored-by: jeremyjacob123 <[email protected]> * chore: Use ES6 template strings in CSS and code generators (#5902) * Unindent CSS, save 3 kb of code. * Convert generator functions to template strings. This resolves #5761. * chore(deps): bump eslint from 8.7.0 to 8.8.0 (#5905) Bumps [eslint](https://github.com/eslint/eslint) from 8.7.0 to 8.8.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.7.0...v8.8.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix!: Export loopTypes from Blockly.blocks.loops (#5900) * 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. * feature(blocks): Export block definitions (#5908) * 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 * chore(deps): bump @blockly/theme-modern from 2.1.25 to 2.1.27 (#5906) Bumps [@blockly/theme-modern](https://github.com/google/blockly-samples/tree/HEAD/plugins/theme-modern) from 2.1.25 to 2.1.27. - [Release notes](https://github.com/google/blockly-samples/releases) - [Commits](https://github.com/google/blockly-samples/commits/@blockly/[email protected]/plugins/theme-modern) --- updated-dependencies: - dependency-name: "@blockly/theme-modern" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump @blockly/block-test from 2.0.1 to 2.0.3 (#5907) Bumps [@blockly/block-test](https://github.com/google/blockly-samples/tree/HEAD/plugins/block-test) from 2.0.1 to 2.0.3. - [Release notes](https://github.com/google/blockly-samples/releases) - [Commits](https://github.com/google/blockly-samples/commits/@blockly/[email protected]/plugins/block-test) --- updated-dependencies: - dependency-name: "@blockly/block-test" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump selenium-standalone from 8.0.8 to 8.0.9 (#5885) Bumps [selenium-standalone](https://github.com/webdriverio/selenium-standalone) from 8.0.8 to 8.0.9. - [Release notes](https://github.com/webdriverio/selenium-standalone/releases) - [Changelog](https://github.com/webdriverio/selenium-standalone/blob/main/HISTORY.md) - [Commits](https://github.com/webdriverio/selenium-standalone/compare/v8.0.8...v8.0.9) --- updated-dependencies: - dependency-name: selenium-standalone dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * refactor: convert renderer measurables to es6 classes (#5899) * 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 * chore(deps): bump mocha from 9.1.4 to 9.2.0 (#5910) Bumps [mocha](https://github.com/mochajs/mocha) from 9.1.4 to 9.2.0. - [Release notes](https://github.com/mochajs/mocha/releases) - [Changelog](https://github.com/mochajs/mocha/blob/master/CHANGELOG.md) - [Commits](https://github.com/mochajs/mocha/compare/v9.1.4...v9.2.0) --- updated-dependencies: - dependency-name: mocha dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump @blockly/dev-tools from 3.0.3 to 3.0.5 (#5911) Bumps [@blockly/dev-tools](https://github.com/google/blockly-samples/tree/HEAD/plugins/dev-tools) from 3.0.3 to 3.0.5. - [Release notes](https://github.com/google/blockly-samples/releases) - [Commits](https://github.com/google/blockly-samples/commits/@blockly/[email protected]/plugins/dev-tools) --- updated-dependencies: - dependency-name: "@blockly/dev-tools" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * refactor: convert some files to es classes (#5913) * 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 * refactor: Migrate Blockly.Events.Abstract to named exports (#5916) * refactor(build): Stop flattening Blockly sources during compilation in preparation for move to ES modules (#5918) * refactor: Stop flattening Blockly sources during compilation in preparation for move to ES modules * fix: Remove obsolete accessControls and add comment about visibility changes * refactor: convert some files to es classes (#5917) * 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!: allows previously internal constants to be configurable (#5897) * chore(deps): bump @wdio/selenium-standalone-service (#5912) Bumps [@wdio/selenium-standalone-service](https://github.com/webdriverio/webdriverio) from 7.16.13 to 7.16.14. - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/compare/v7.16.13...v7.16.14) --- updated-dependencies: - dependency-name: "@wdio/selenium-standalone-service" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump webdriverio from 7.16.13 to 7.16.14 (#5909) Bumps [webdriverio](https://github.com/webdriverio/webdriverio) from 7.16.13 to 7.16.14. - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/compare/v7.16.13...v7.16.14) --- updated-dependencies: - dependency-name: webdriverio dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump @blockly/block-test from 2.0.3 to 2.0.4 (#5920) Bumps [@blockly/block-test](https://github.com/google/blockly-samples/tree/HEAD/plugins/block-test) from 2.0.3 to 2.0.4. - [Release notes](https://github.com/google/blockly-samples/releases) - [Commits](https://github.com/google/blockly-samples/commits/@blockly/[email protected]/plugins/block-test) --- updated-dependencies: - dependency-name: "@blockly/block-test" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump @blockly/theme-modern from 2.1.27 to 2.1.28 (#5921) Bumps [@blockly/theme-modern](https://github.com/google/blockly-samples/tree/HEAD/plugins/theme-modern) from 2.1.27 to 2.1.28. - [Release notes](https://github.com/google/blockly-samples/releases) - [Commits](https://github.com/google/blockly-samples/commits/@blockly/[email protected]/plugins/theme-modern) --- updated-dependencies: - dependency-name: "@blockly/theme-modern" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump @blockly/dev-tools from 3.0.5 to 3.0.6 (#5922) Bumps [@blockly/dev-tools](https://github.com/google/blockly-samples/tree/HEAD/plugins/dev-tools) from 3.0.5 to 3.0.6. - [Release notes](https://github.com/google/blockly-samples/releases) - [Commits](https://github.com/google/blockly-samples/commits/@blockly/[email protected]/plugins/dev-tools) --- updated-dependencies: - dependency-name: "@blockly/dev-tools" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump chai from 4.3.4 to 4.3.6 (#5915) Bumps [chai](https://github.com/chaijs/chai) from 4.3.4 to 4.3.6. - [Release notes](https://github.com/chaijs/chai/releases) - [Changelog](https://github.com/chaijs/chai/blob/4.x.x/History.md) - [Commits](https://github.com/chaijs/chai/compare/v4.3.4...v4.3.6) --- updated-dependencies: - dependency-name: chai dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix!: Export loopTypes from Blockly.blocks.loops (#5900) * 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. * release: bump version and rebuild * chore(deps): bump google-closure-deps from 20211201.0.0 to 20220104.0.0 (#5896) Bumps [google-closure-deps](https://github.com/google/closure-library) from 20211201.0.0 to 20220104.0.0. - [Release notes](https://github.com/google/closure-library/releases) - [Commits](https://github.com/google/closure-library/compare/v20211201...v20220104) --- updated-dependencies: - dependency-name: google-closure-deps dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump google-closure-compiler (#5923) Bumps [google-closure-compiler](https://github.com/google/closure-compiler-npm) from 20220104.0.0 to 20220202.0.0. - [Release notes](https://github.com/google/closure-compiler-npm/releases) - [Commits](https://github.com/google/closure-compiler-npm/compare/v20220104.0.0...v20220202.0.0) --- updated-dependencies: - dependency-name: google-closure-compiler dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Delete events should animate when played (#5919) 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). * Revert "release: Patch #3 for Q4 2021 release" * release: update version number in preparation for release (#5942) * chore(deps): bump eslint from 8.8.0 to 8.9.0 (#5934) Bumps [eslint](https://github.com/eslint/eslint) from 8.8.0 to 8.9.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.8.0...v8.9.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * refactor: convert some classes to ES6 classes (#5928) * refactor: move optional function declarations into the constructor * refactor: convert options.js to es6 class * refactor: convert generator…
The basics
The details
Resolves
Resolves #5720
Proposed Changes
It allows changes the insertion marker manager to handle a block which changes its connections while it is being dragged (e.g. by a drag/move event handler).
Behavior Before Change
The insertion marker manager would throw an error due to mismatched connections when dragging a block which has changed its connectors during a drag.
Behavior After Change
The insertion marker manager no longer throws an error due to mismatched connections when dragging a block which has changed its connectors during a drag. More specifically, it updates its set of available connections and its marker block more dynamically.
Reason for Changes
I would like to be able to create a "chameleon" block which would have previous, next and output connections when
created, so that it could be used as either a value or a statement. Once it is actually connected it would change to an appropriate shape depending on its context. When it is dragged out of its connection I would like it to be able to change back to a state where it has all the connectors again. This requires that the insertion marker manager be able to handle the changed block.
Test Coverage
I did a bunch of manual testing in a playground whereby I created a "chameleon" block and dragged in and out of a variety of other blocks.
I also ensured that the existing Blockly tests passed.
I would like to create some new tests for this behavior, but it is unclear to me how and where to do that. I would appreciate some guidance on that, if you deem such test necessary.
Documentation
There are no documentation changes required that I know of.
Additional Information
I realize that there are some performance implications to these changes. I've tried to minimize them, but if there is more that I can do, please let me know.