Skip to content
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

Merged
merged 4 commits into from
Dec 15, 2021

Conversation

mark-friedman
Copy link
Contributor

The basics

  • I branched from develop
  • My pull request is against develop
  • My code follows the style guide

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.

  • Desktop Chrome

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.

@mark-friedman mark-friedman requested a review from a team as a code owner November 21, 2021 19:57
@google-cla google-cla bot added the cla: yes Used by Google's CLA checker. label Nov 21, 2021
@mark-friedman
Copy link
Contributor Author

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.

// 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_),
Copy link
Collaborator

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.

Copy link
Contributor Author

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?

Copy link
Contributor

@alschmiedt alschmiedt left a 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 : )

core/insertion_marker_manager.js Outdated Show resolved Hide resolved
core/insertion_marker_manager.js Outdated Show resolved Hide resolved
@mark-friedman
Copy link
Contributor Author

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.

@mark-friedman
Copy link
Contributor Author

@alschmiedt PTAL

@alschmiedt
Copy link
Contributor

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.

@mark-friedman
Copy link
Contributor Author

mark-friedman commented Dec 2, 2021 via email

Copy link
Collaborator

@rachel-fenichel rachel-fenichel left a 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).

@rachel-fenichel rachel-fenichel changed the title Change getCandidate_ and showInsertionMarker_ to be more dynamic fix: change getCandidate_ and showInsertionMarker_ to be more dynamic Dec 15, 2021
@rachel-fenichel rachel-fenichel merged commit 68d8113 into google:develop Dec 15, 2021
@mark-friedman
Copy link
Contributor Author

Thanks for the careful review @rachel-fenichel!

@alschmiedt alschmiedt linked an issue Dec 23, 2021 that may be closed by this pull request
LionKenedi95 added a commit to varwin/blockly that referenced this pull request Jul 19, 2022
* 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…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cla: yes Used by Google's CLA checker.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Enable a block to change connectors while dragging
3 participants