* refactor(blocks): Auto-migration of blocks/math.js to ts
This is just the result of running js2ts on this file.
* fix(blocks): Manually migrate & fix types in math.ts
* chore(blocks): clang-format math.ts
* fix(blocks): Corrections for comments on PR #6900
* refactor(blocks): Define types for mixin-ed blocks, etc.
Define types to represent the union of Block and each of the
*_MIXINs, and use these types for the type of this in mixin
methods.
* refactor(blocks): Misc minor changes
Make sure validator functions explicitly return undefined.
Field.prototype.setValidator takes a FieldValidator<T>, which
must be a non-void function. I'm not sure why tsc was not
objecting to the void implementation here, but it does in
other very similar situations so for consistency explicitly
return undefined to signal the value should be used unchanged.
Also undo previous change of !. to ?.: I think it wisest to
try to preserve the existing behaviour as exactly as possible
for now, and make behaviour changes (i.e., ones that affect
the generated code) separately.
* fix(blocks): Fix erroneous typing of mixins
It turns out that the previous types for these were completely
wrong, for two reasons:
- They should be intersection types (which have the union of the
properties), not union types (which have the interseciton of the
properties).
- The *_MIXIN types were already declared as having type
BlockDefinition, which is ultimately an alias for any.
TypeScript doesn't like (some) kinds of circularly defined types,
so fixing the above necessitates declaring a few auxiliary types
just to make the type checker happy - but the end result is
excellent and caught an actual type error in the code.
* fix: Don't clober event group when renaming vars
Also audit all existing event group commands and tweak a few of them where I think there's a potential issue.
* fix: early return from updateDisabled if it is noop
* chore: trigger connect and disconnect before hiding
* chore: remove disconnectInternal
* fix: skip setting parent when disconnecting before connecting
* chore: fixup docs
* chore: remove erroneous test
* fix: add delay to context menu callback.
Improve INP by allowing the browser to do a paint (closing the context
menu) before we trigger callbacks. This improves the user experience
for expensive callbacks (e.g. collapsing, or updating disabled).
* fix: rendering bug
When disconnecting the last block in the stack, the block would not be
rerendered correctly (the top-start corner would not be reshaped)
* fix: connecting bug
The order for applying connections was changed so that connections were
applied and then the insertion marker was hidden. This caused an error
because hiding the insertion marker expected there to be a child block
when there was not.
* chore: remove setParent param from public API
* chore: tsdoc
* Reduce usage of obsolete .keyCode property.
* Rename private properties/methods which violate eslint rules.
* Use arrays of bound events rather than individual properties.
* Improve typing info.
* Also fix O(n^2) recursive performance issue in theme's getComponentStyle function.
* And replace String(...) with '${...}' (smaller, faster).
* .toString() is considered harmful.
There are small typos in:
- closure/goog/base.js
- demos/minimap/minimap.js
- gulpfile.js
- scripts/gulpfiles/build_tasks.js
- scripts/gulpfiles/cleanup_tasks.js
- scripts/gulpfiles/license_tasks.js
Fixes:
- Should read `prerequisites` rather than `prequisites`.
- Should read `satisfies` rather than `satisifies`.
- Should read `regenerates` rather than `regenrates`.
- Should read `minimap` rather than `mimimap`.
- Should read `diagnostic` rather than `disagnostic`.
Signed-off-by: Tim Gates <tim.gates@iress.com>
* feat: add basic render queueing
* feat: change connecting and disconnecting to queue renders
* feat: delay bringToFront
* chore: format
* chore: fix build
* fix: stop updating connections when setting the parent.
This was causing erroneous block bumps because the connection locations
were changed before the blocks were actually rerendered.
* fix: connection highlight positioning
* refactor: Remove uses of AnyDuringMigration from xml.ts.
* refactor: Remove uses of AnyDuringMigration from block_svg.ts.
* refactor: Remove uses of AnyDuringMigration from theme_manager.ts.
* refactor: Remove uses of AnyDuringMigration from names.ts.
* refactor: Remove uses of AnyDuringMigration from field_angle.ts.
* refactor: Remove some uses of AnyDuringMigration from block.ts.
* refactor: Make safename construction more readable.
* fix: Use a default size for block comments.
* fix: Clarify test of shadow block disposal.
* fix: Update assert in workspace_svg_test to use isDeadOrDying().
* feat: added `tests/typescript` to test supported TS examples
* fix: update the test name, description, and output
* chore: remove unused imports in `test_tasks.js`
* fix: wrap README line at 80 characters
* fix: implemented `different_user_input.ts` feedback
* fix: correct mistaken comments
* chore: rename `./eslintrc.json` to `./eslintrc.js`
* feat: added linting for tests/typescript
* chore: cleanup eslintrc lines over 80 characters
* fix: updated `.eslintrc.js` to provide an override for linting itself
* fix: updated tests to build to the `build` directory
* feat: updated `gulp format` to handle formatting `.eslintrc.js`
* fix: updated `.eslintrc.js` to align with both formatter and linter
* fix: updated config comment wording
* fix: removed quotes for valid identifiers
* Revert "fix: removed quotes for valid identifiers"
This reverts commit 03eff91aea1468e503bc79a90fb139914d3f39d2.
* chore(tests): Remove circular import loading issue kludge
Prior to PR #6818, circular imports resulted in the debug module
loader (in closure/goog/base.js) failing to record the
goog.module ID of most modules that were
involved in the cycle, and in particular of the Blockly.Xml
module. This had secondary fallout that resulted
in library blocks modules being loaded in the wrong order.
A kludge was introduced in PR #6703 that worked around this
problem by making sure that window.Blockly was set, allowing
the modules loaded out-of-order to still work.
Now that we have removed all remaining circular dependencies
there is no need for the kludge, since all module IDs are
properly recorded and modules are loaded in the correct order.
* chore(build): Remove exclude for non-existent core/blockly.js
There was a transitional period where we had both
core/blockly.ts and core/blockly.js, and wished to exclude
the latter from tsc's input, but the latter file was deleted
(and inadvertently restored, then re-deleted) some time ago.