Commit Graph

5925 Commits

Author SHA1 Message Date
Beka Westberg db09cbf6e4 feat: add serialization and deserialization of comments (#5216)
* Add tests for (de)seralizing icons

* Add logic for (de)serializing icons

* fix: add docs for saveIcons

* fix: add timeout for setting comment visible
2021-08-18 06:51:34 -07:00
Beka Westberg acbfb5af57 Add throwing exceptions during deserialization (#5200)
* Add exception definitions

* Add tests for throwing errors during deserialization

* Add actually throwing exceptions

* Cleanup

* Cleanup

* Fix tests

* fix: PR Comments
2021-08-17 06:55:25 -07:00
Beka Westberg 39826e4b33 feat: upgrade block defs to have JSO serialization hooks (#5329)
* Respect nulls from blocks.save

* Upgrade list blocks to use JSO serialization

* Upgrade logic blocks to use JSO serialization

* Upgrade math blocks to use JSO serialization

* Upgrade text blocks to use JSO serialization

* Upgrade procedure blocks to use JSO serialization

* Add more mutator tests

* Fix firing enabled events

* PR Comments
2021-08-12 08:53:28 -07:00
Beka Westberg 5631d4a490 fix: touch up some deserialization behavior (#5181)
* Add parameter for recording undo.

This sets up the most common default behavior, but also makes it clear
to people that it is happening, because it might not be expected.

* Add grouping of events

* Add text width caching

* Add disabling workspace resizing

* Add performance optimizations

* Respect nulls from blocks.save

* Cleanup from rebase

* PR Comments

* Cleanup from rebase
2021-08-11 08:01:24 -07:00
Beka Westberg cc26417e7e feat: add initialization of blocks and event firing (#5166)
* Change playground to use JSO system

* Add tests for initialization and events

* Add initialization of blocks

* PR Comments
2021-08-10 13:14:37 -07:00
Beka Westberg ea8eb52c00 feat: add deserialization of JSO block state (#5137)
* Fixup tests

* Add deserialization of blocks

* Cleanup

* PR commnts
2021-08-06 11:39:39 -07:00
Beka Westberg c59d0616c6 feat: add top level save and load functions for JSO serialization (#5132)
* Add top-level serialization API

* Add using JSO system in serializer tests

* Make compiler happy
2021-08-06 09:19:23 -07:00
Beka Westberg f9285e269a feat: add JSO serialization and deserialization of variables (#5131)
* Add variable serialization tests

* Fix requires for new file

* Add serialization and deserialization of variables

* Remove only in tests

* Cleanup
2021-08-06 08:45:47 -07:00
Beka Westberg 3fb09af387 feat: add serialization of child blocks (#5120)
* Add tests for serializing connected blocks

* Add serialization of child blocks

* Add tests for not serializing children

* Add options for not serializing children

* Fix types

* Change addNextBlocks to default to true

* Cleanup

* Fix types
2021-08-06 07:55:04 -07:00
Beka Westberg 8eff8e8fdb feat: upgrade fields to use new JSO hooks (#5077)
* Upgrade field angle to use new serialization

* Upgrade field checkbox to use new serialization

* Upgrade field colour to use new serialization

* Upgrade field dropdown to use new serialization

* Upgrade serializable label field to use new serialization

* Upgrade field multiline input to use new serialization

* Upgrade field number to use new serialization

* Upgrade field text input to use new serialization

* Upgrade variable field to use new serialization

* Fix type casts

* Feedback from PR

* Switch to use getValue()
2021-08-06 06:54:54 -07:00
Beka Westberg 95c88094d6 Add serialization of field values (#5072)
* Add tests for field serialization

* Add field serialization

* Fixup types and tests
2021-07-30 08:38:00 -07:00
Beka Westberg 8f1f67062d Add serialization of mutators (#5054)
* Add tests for saving extra state

* Add serializing extra state

* Fix backwards compatibility

* Switch to other function declarations

* Handle null returns from hooks

* Remove backwards compatibility

* Remove XML require, and fix type

* Fix JSDoc formatting
2021-07-30 08:06:38 -07:00
Beka Westberg d03f5254ab Add serialization of basic block attributes to JSOs (#5053)
* Add basic attribute tests

* Add basic block serialization

* Add more attribute tests

* Change save to use options dictionary

* Add obeying save options

* Add test for data attribute

* Add saving data tag

* Move to ES6 syntax

* Fixup move to es6 syntax

* Declare module

* Format and lint

* Add docs

* Add returning null on insertion markers

* Fixup for move to module

* Switch to other function declarations

* Cleanup for finalized style

* Fix lint and types

* Export State def

* Switch disabled=true to enabled=false
2021-07-23 15:03:11 -07:00
Beka Westberg 9631efb3eb Add JSO hooks for blocks and fields. (#5052)
* Add JSON serialiation hooks for fields

* Add checking for JSON hooks

* Fix other checks and move checks to function

* Remove error for both serialization hooks being defined

* Fixup comments and errors

* Add tests

* Add json hooks to block properties

* Cleanup

* Rip out fragile backwards compatibility
2021-07-20 13:28:30 -07:00
Beka Westberg 9a9988ff3b Adds a serializer test suite - project cereal (#5034)
* Setup basic architecture for tests

* Attribute tests

* Easy field tests added

* Work on tests

* Work on tests

* Work on tests

* Add mutation tests

* Fixup ID tests

* Add more mutator tests

* Fixup lint and typos

* Uncomment tests

* Use test helpers

* Small PR comments

* Use test helpers for setup and teardown

* Add TODOs and fixup types

* Fix types

* Actually fix types
2021-07-16 13:33:45 -07:00
Monica Kozbial 937c0e5bd7 Merge pull request #5046 from cpcallen/allow-es6
Configure eslint and Closure Compiler to accept ES6
2021-07-13 18:21:06 -07:00
Christopher Allen 2bdf2627af Configure eslint and Closure Compiler to accept ES6 2021-07-13 23:54:36 +01:00
Christopher Allen 8b81043a54 Merge pull request #5019 from cpcallen/goog.module-prep
Preparation for goog.module transition: base.js, deps.js
2021-07-13 22:21:34 +01:00
Christopher Allen d313ec804a Merge branch 'develop' into goog.module-prep
This resolves a conflict in `blockly_uncompressed.js`, and missing
updates to `test/deps.js`, caused by PR #5041.
2021-07-13 22:16:35 +01:00
jschanker de1b3214be Enforce connection preconditions for setParent (#4999)
* Fix error conditions for setParent #4989

* Error now thrown when calling `a.setParent(b)` on non-null b if the output/previous connection of a is not connected to an input/next connection of b without removing block from old parent's child list.
* Commented out error for when calling `a.setParent(null)` if a is connected to superior block.
* Adjusted comment to reflect that blocks were no longer being disconnected in this method.
* Also changed == to === per #4924 (`newParent` and `this.parentBlock_` must both be instances of `Blockly.Block`).

* Fix error conditions for setParent #4989

* Error now thrown when calling `a.setParent(b)` on non-null b if the output/previous connection of a is not connected to an input/next connection of b without removing block from old parent's child list.
* Error now thrown when calling `a.setParent(null)` if a is connected to a superior block.
* Adjusted comment to reflect that blocks were no longer being disconnected in this method.
* Also changed == to === per #4924 (`newParent` and `this.parentBlock_` must both be instances of `Blockly.Block`).

* Fix error conditions for setParent #4989

* Error now thrown when calling `a.setParent(b)` on non-null b if the output/previous connection of a is not connected to an input/next connection of b without removing block from old parent's child list.
* Commented out error for when calling `a.setParent(null)` if a is connected to superior block.
* Adjusted comment to reflect that blocks were no longer being disconnected in this method.
* Also changed == to === per google#4924 (`newParent` and `this.parentBlock_` must both be instances of `Blockly.Block`).
* Fixed lint errors.

* Fix error conditions for setParent google#4989

* Error now thrown when calling `a.setParent(b)` on non-null b if the output/previous connection of a is not connected to an input/next connection of b without removing block from old parent's child list.
* Commented out error for when calling `a.setParent(null)` if a is connected to superior block.
* Adjusted comment to reflect that blocks were no longer being disconnected in this method.
* Also changed == to === per google#4924 (`newParent` and `this.parentBlock_` must both be instances of `Blockly.Block`).
* Fixed lint errors.
* Adjusted comment.

* Removed unnecessary set to null/added tests

* One is failing (commented out), will investigate later

* Lint fix

* Removed failing test that correctly fails

* Update comments to conform to style guide

Capitalize first letter, period at end
2021-07-13 13:56:42 -07:00
alschmiedt 2b6b89dc54 Remove themes that were moved to blockly samples (#5041) 2021-07-13 13:31:27 -07:00
Monica Kozbial 0af6bc4b01 Remove unused parameters from test helpers (#5032) 2021-07-13 13:13:06 -07:00
Christopher Allen ec3da1e415 Update package-lock.json to lockfileVersion 2 2021-07-13 21:08:47 +01:00
Monica Kozbial e2d0498db2 Add flag to webdriverio options (#5035)
* Add flag to webdriverio options

* update indentation of code
2021-07-13 09:31:21 -07:00
Christopher Allen c42c5e72b4 Remove obsolete TODO
No more `execSync('mkdir -p')` so no more need to check if it works on
Windows.
2021-07-13 16:11:54 +01:00
Christopher Allen ebd6559822 Fix incorrectly-reverted change to mkdirSync call
An intermediate version of this code read:

    fs.mkdir(demoStaticTmpDir, {recursive: true}), done);

but apparently `fs.mkdir` doesn't honour the recursive option, so I
tried to revert the change but munged it instead.

This commit cleans up the mess I made.
2021-07-13 16:11:54 +01:00
Christopher Allen 7d306f4089 Don't lint build output
npm test has been failing if previous build output was present,
because the generated build/msg/??.msg files are missing a trailing
newline and the line to exclude build/* from being linted was
inadvertently omitted from commit 9e72378.

(Much of the rest of the build output would also fail lint checks but
was already excluded by the *_compressed*.js exclusion.)
2021-07-13 16:11:54 +01:00
Christopher Allen 85b50fcb73 Use fs.mkdirSync instead of execSync('mkdir -p ...')
Also consistently use {recursive: true} in case directory is nested
in an also-not-yet-existent directory.
2021-07-13 16:11:54 +01:00
Christopher Allen 948fade7c5 Only disable eslint indent check on one line
For whatever reason eslint was rejecting the (styleguide-correct)
indentation of the line beginning with "/** @type ...", and in my
naïvete I got a little more zealous than I intended in suppressing
the error.
2021-07-13 12:08:35 +01:00
Monica Kozbial 2c83652733 Add missing whitespace to test files (#5031)
* Add missing spaces

* undo incorrect replaces in utils tests
2021-07-12 15:11:33 -07:00
Neil Fraser 783956d4cd Remove undesirable \n from sv.json
Resolves #5017
2021-07-12 10:12:31 -07:00
dependabot[bot] 6484a7e735 Bump @blockly/dev-tools from 2.4.0 to 2.5.1 (#5023)
Bumps [@blockly/dev-tools](https://github.com/google/blockly-samples/tree/HEAD/plugins/dev-tools) from 2.4.0 to 2.5.1.
- [Release notes](https://github.com/google/blockly-samples/releases)
- [Commits](https://github.com/google/blockly-samples/commits/@blockly/dev-tools@2.5.1/plugins/dev-tools)

---
updated-dependencies:
- dependency-name: "@blockly/dev-tools"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-12 09:43:38 -07:00
dependabot[bot] 26d2920fb6 Bump @blockly/theme-modern from 2.1.18 to 2.1.19 (#5024)
Bumps [@blockly/theme-modern](https://github.com/google/blockly-samples/tree/HEAD/plugins/theme-modern) from 2.1.18 to 2.1.19.
- [Release notes](https://github.com/google/blockly-samples/releases)
- [Commits](https://github.com/google/blockly-samples/commits/@blockly/theme-modern@2.1.19/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] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-12 09:41:43 -07:00
Neil Fraser b3c94db951 Revert "Revert "Group field edits together for undo/redo""
This reverts commit 344ebcfd02.
2021-07-12 09:38:04 -07:00
dependabot[bot] 34ed6bc9ca Bump concurrently from 6.1.0 to 6.2.0 (#4867)
Bumps [concurrently](https://github.com/kimmobrunfeldt/concurrently) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/kimmobrunfeldt/concurrently/releases)
- [Commits](https://github.com/kimmobrunfeldt/concurrently/compare/v6.1.0...v6.2.0)

---
updated-dependencies:
- dependency-name: concurrently
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-12 09:10:35 -07:00
Monica Kozbial afa051ac18 update turtle mask placing and remove s (#4962) 2021-07-12 09:09:32 -07:00
Aaron Dodson 0b66af2e84 Merge pull request #5020 from hpnrep6/flyout-button
Fix vertical button padding in horizontal flyout
2021-07-12 08:28:28 -07:00
Neil Fraser 8a3c701026 Enable static method inheritance. 2021-07-11 23:20:20 -07:00
Neil Fraser 2c6d044c40 Review updates 2021-07-11 23:19:01 -07:00
Neil Fraser 02fd8cf7a4 Linting 2021-07-11 23:19:01 -07:00
Neil Fraser cba7a68207 Allow inheriting of fromJson in fields 2021-07-11 23:19:01 -07:00
hpnrep6 048e77dc9a Include button heights in flyout height calculation 2021-07-12 01:26:03 -04:00
Christopher Allen 603755f250 Suppress spurious eslint error
eslint appears to be confused by the leading JSDoc comment on the
continuation line and suggests it should be indented only 4 rather
than 8 spaces.
2021-07-12 03:51:17 +01:00
Christopher Allen 1197afcee7 Fix JSDoc type annotations causing closure-make-deps warnings
Some type annotations were missing curly brackets, which makes
closure-make-deps emit uninteresting warnings.  Now any output
from the command will be informative and related to whatever
one is presently working on.
2021-07-12 03:17:14 +01:00
Christopher Allen 173ea2bc79 Have eslint ignore undefined variable "exports"
Modules defined using goog.module declare their exported functions
by assigning them to properties on an object which is the value of
the variable "exports" (e.g., "exports.MyClass = class { ... };").

Normally eslint would complain about this variable being undefined,
but this commit suppresses these errors.
2021-07-12 02:54:59 +01:00
Christopher Allen f5a9f2cf2b Load dependency graph from tests/deps.js in uncompiled mode
* New gulp task buildDeps (npm run build:deps) to create tests/deps.js.
* Old gulp task buildUncompressed is deleted.
* blockly_uncompressed.js is now handwritten.
  * And simplified; in particular, BLOCKLY_BOOT is gone.
  * And linted!
* For consistency with the Closure documentation and base.js,
  consistently refer to what blockly_uncompressed.js is used for as
  "uncompiled mode" rather than "uncompressed mode" (but don't yet
  rename it to blockly_uncompiled.js)
2021-07-12 02:28:09 +01:00
Christopher Allen 214492cd08 Use the current standard Closure base.js
The version of base.js we have been using is a cut-down copy of an older
version, stripped of everything that wasn't strictly needed for Blockly.

We now need things that were previously stripped out, so restore the
current version from
https://github.com/google/closure-library/blob/master/closure/goog/base.js
as of commit 5cb5e81 (2021-06-04).

We can always strip out unused sections again in future - once we know
which sections those are.
2021-07-10 13:04:19 +01:00
Christopher Allen 6ccff4431d Fix line lengths
Including by using the node_modules/.bin/closure2ts wrapper provided by
typescript-closure-tools instead of running the source .js directly.
2021-07-10 13:02:47 +01:00
Sam El-Husseini 6136d93cdf Fix msg typings script and move to typings build directory 2021-07-10 13:02:47 +01:00
Rachel Fenichel 89cf049e74 Merge pull request #4995 from BeksOmega/fix/jsdoc
Updates JSDoc in Block and BlockSvg
2021-07-09 15:57:38 -07:00