Commit Graph

4431 Commits

Author SHA1 Message Date
Christopher Allen 032b5ed9ea refactor(events): Introduce and use event type predicates (#8538)
* refactor(events): Introduce type predicates for event classes

  Introduce predicates for testing Abstract event subclasses based on
  their .type properties.  These are useful because there are places
  where it is not possible to use instanceof <ClassConstructor> tests
  for type narrowing due to load ordering issues that would be caused
  by the need to import (rather than just import type) the class
  constructors in question.

* refactor(events): Use event type predicates

  Simplify several sections of code by using type predicates for
  type narrowing and thereby avoiding the need for explicit casts.

* chore(events): Fix copyright date of recently-added files

* chore: Remove unused import
2024-08-20 19:50:29 +01:00
Christopher Allen bde216d120 refactor(events): Don't filter events before undo (#8537)
Use of the filter function in Workspace.prototype.undo has caused
problems with repeated undo/redo (see issue #7026), the
originally-chosen fix for which was the addition (in PR #7069) of
code to fireNow to post-filter the .undoStack_ and .redoStack_ of
any workspace that had just been involved in dispatching events.

This apparently resolved the issue but added considerable
additional complexity and made it difficult to reason about how
events are processed for undo/redo.

Instead, since this filtering typically does nothing (at least
nothing desirable), simply don't re-filter events on the undo
stack before replaying them.
2024-08-20 08:39:37 +01:00
Christopher Allen 7ccdcc5cef refactor(events): introduce EventType enum in separate module (#8530)
* refactor(events): Use "export ... from" where applicable

* refactor(events): Introduce EventType enum

  Introduce an enum for the event .type values.  We can't actually
  use it as the type of the .type property on Abstract events,
  because we want to allow developers to add their own custom
  event types inheriting from this type, but at least this way we
  can be reasonably sure that all of our own event subclasses have
  distinct .type values—plus consistent use of enum syntax
  (EventType.TYPE_NAME) is probably good for readability overall.

  Put it in a separate module from the rest of events/utils.ts
  because it would be helpful if event utils could use

      event instanceof SomeEventType

  for type narrowing but but at the moment most events are in
  modules that depend on events/utils.ts for their .type
  constant, and although circular ESM dependencies should work
  in principle there are various restrictions and this
  particular circularity causes issues at the moment.

  A few of the event classes also depend on utils.ts for fire()
  or other functions, which will be harder to deal with, but at
  least this commit is win in terms of reducing the complexity
  of our dependencies, making most of the Abstract event subclass
  module dependent on type.ts, which has no imports, rather than
  on utils.ts which has multiple imports.
2024-08-20 08:36:33 +01:00
John Nesky 17e4f1c966 Fix: let workspace comment have delete cursor over trash. (#8477) 2024-08-15 11:41:22 -07:00
Christopher Allen ce22f42868 chore: Organise imports (#8527)
* chore(deps): Add pretter-plugin-organize-imports

* chore: Remove insignificant blank lines in import sections

  Since prettier-plugin-organize-imports sorts imports within
  sections separated by blank lines, but preserves the section
  divisions, remove any blank lines that are not dividing imports
  into meaningful sections.

  Do not remove blank lines separating side-effect-only imports
  from main imports.

* chore: Remove unneded eslint-disable directives

* chore: Organise imports
2024-08-15 03:16:14 +01:00
dependabot[bot] f57ef73aaf chore(deps): bump @typescript-eslint/eslint-plugin from 7.17.0 to 8.0.1 (#8479)
* chore(deps): bump @typescript-eslint/eslint-plugin from 7.17.0 to 8.0.1

Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 7.17.0 to 8.0.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.0.1/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

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

* fix: lint plugin versions

* chore: fix linting

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Beka Westberg <bwestberg@google.com>
2024-08-14 09:10:34 -07:00
AbhinavKRNarayan 6b3f9a6723 fix(touch): prevent infinite loop on multi-touch drag (#8470)
* Change in gesture.ts

* prettier
2024-08-08 15:17:34 -07:00
Jeremiah Saunders 23e901120b feat: expose bringToFront() method (#8472)
* Remove internal from bringToFront JSDoc

* Add a note about the cost of this method

* Remove unnecessary colon
2024-08-07 09:07:48 -07:00
Jeremiah Saunders f020b54fd0 fix: bring comments and bubbles to the front on click (#8451)
* Bring comment to the block layer when clicked

* Bring bubbles to front when clicked
2024-08-02 13:09:30 -07:00
John Nesky e2310a4fed fix: Codify component weights with toolbox in front of flyouts. (#8432) 2024-07-29 10:30:29 -07:00
ℍ𝕠𝕝𝕝𝕠𝕨 𝕄𝕒𝕟 504de6a98c fix: drag strategy only clear group id set by us (#8355)
Add a condition check so that we don't unset
the group ID that is not set by us. Otherwise the
multi-select plugin undo/redo will be broken (apply
individually instead of all together)

Signed-off-by: Hollow Man <hollowman@opensuse.org>
2024-07-25 22:09:10 +01:00
Christopher Allen ebb56b2ce8 docs(blocks): block.ts and blocks/* JSDoc / formatting / etc. cleanup (#8431)
* docs(block): Improve documentation for well-known block methods

  Improve the JSDocs for the declarations of well-known block
  methods:

  - getDeveloperVariables
  - compose
  - decompose
  - saveConnections

* docs(blocks): Improve block comments

  Fix JSDoc formatting in both core/block.ts and blocks/*, as well as
  making various other minor improvments.

* chore(blocks): Remove one unexported const
2024-07-25 17:25:24 +01:00
John Nesky 40c6d9c490 fix: Enable blocks if user can't manually enable them. (#8354)
* fix: Enable blocks if user can't manually enable them.

* Only change the affected test method.
2024-07-22 09:21:51 -07:00
Chang Min Bark 4cdca28fe5 fix: added id to rendered ws comments; made getCommentById public; added blocklyDraggable class to ws comments (#8358) 2024-07-15 18:39:39 -07:00
Aaron Dodson b0169ab724 fix: use the correct with in getBoundingRectangleWithoutChildren(). 2024-07-10 15:54:56 -07:00
Aaron Dodson fa15cda950 feat: allow fetching block bounds not including children. (#8284)
* feat: allow fetching block bounds not including children.

* chore: run formatter.

* chore: run the other formatter.

* fix: don't include subsequent blocks in the childless bounding rect.

* chore: remove logging.
2024-07-10 14:52:07 -07:00
Aaron Dodson 8323642d0e fix: export the layer constants. (#8256)
* fix: export the layer constants.

* refactor: remove @internal annotations from layer constants.
2024-07-09 15:25:20 -07:00
Aaron Dodson a6361fbd81 chore: make getEventWorkspace_() public (#8241) 2024-07-02 14:48:16 -07:00
Aaron Dodson 21a73c463f fix: correctly report the pre-resize-drag size to workspace comment size change listeners (#8240)
* fix: correctly report the pre-resize-drag size to workspace comment size change listeners

* chore: run formatter

* refactor: implicitly use the presence of preResizeSize to identify a drag.
2024-07-02 14:42:47 -07:00
John Nesky 9a0619aa2a fix: Drag and Resize events for workspace comments (#8217)
* feat: Added a comment_drag event.

* Add workspace comment resize events.

* Addressing PR feedback.

* Fixed chai imports in new test files.

* Addressing more PR feedback.
2024-06-26 12:16:56 -07:00
Maribeth Bottorff 3fa46f45fe chore: tsdoc for generator exceptions (#8214)
* chore: tsdoc for generator exceptions

* chore: missed a period
2024-06-13 17:07:24 -07:00
Beka Westberg dc91c3ab54 fix: c-blocks disappearing (#8203) 2024-06-11 11:21:48 -07:00
Mark Friedman 5881ce32c1 fix: change which element keydown is bound to from document to injection div (#8188)
* Change which element keydown is bound to

* Modify keydown tests

* Use browserEvents.conditionalBind()

* Remove commented out code.
2024-05-31 23:19:46 +01:00
Beka Westberg c3d41cfd9f fix: comment body height too short (#8182) 2024-05-29 11:13:43 -07:00
Beka Westberg 6e4ba00be5 fix: dragging and disposing of shadows (#8172)
* Revert "fix: dragging blocks by shadows to delete (#8138)"

This reverts commit 3fd749205f.

* fix: dragging shadows
2024-05-28 10:28:16 -07:00
Maribeth Moffatt c4287d1276 chore: format 2024-05-23 16:13:52 -07:00
Maribeth Moffatt 5d3ae222e7 feat: paste in viewport 2024-05-23 16:13:39 -07:00
Maribeth Moffatt 4040e78ffb Revert "feat: Paste block in viewport / near cursor (#7521)"
This reverts commit c37f4b8749.
2024-05-23 11:06:46 -07:00
Maribeth Moffatt 7c6fbec23c Merge branch 'osd' into merge-osd 2024-05-23 10:59:53 -07:00
John Nesky 9b2ab79e73 fix: Only hide WidgetDiv if it is associated with the affected workspace. (#8150)
* Associate a workspace with WidgetDiv.

* Minor fixes after merging.

* Hide widget if owner is in an unknown workspace.
2024-05-20 12:48:05 -07:00
Maribeth Bottorff 28de9ef494 fix: paste in a better spot (#8123)
* fix: paste in a better spot

* fix: include bump offset

* chore: rename param

---------

Co-authored-by: Beka Westberg <bwestberg@google.com>
2024-05-20 10:09:47 -07:00
Neil Fraser fcdb8fc33d fix: Normalize CSS between comment types (#8161)
Merge the CSS so that both comment types (block and workspace) are the same -- other than a border.
2024-05-20 18:59:24 +02:00
Beka Westberg 7c4b0bd703 fix: delete area animation (#8149)
* fix: delete area animation

* chore: format

* Update core/dragging/dragger.ts

Co-authored-by: Christopher Allen <cpcallen+github@gmail.com>

---------

Co-authored-by: Christopher Allen <cpcallen+github@gmail.com>
2024-05-20 09:58:48 -07:00
Beka Westberg 139b4b993f fix: creating comments in RTL (#8153) 2024-05-20 09:54:30 -07:00
Neil Fraser 70ca676c24 fix: Properly size comments. (#8158)
* Properly size comments.

Fixes multiple rendering and sizing issues across different browsers.

Tip: `text-overflow: hidden;` is not legal CSS and did nothing.

Resolves #8142
2024-05-20 09:30:38 -07:00
Beka Westberg 36b75696a2 fix: comment text area bottom border hidden (#8152) 2024-05-20 09:03:59 -07:00
Beka Westberg 69db8a63d6 fix: comment size not respecting collapsed-ness (#8136)
* fix: comment size not respecting collapsed-ness

* chore: fix tests the only way I know how, by adding explicit clock ticks
2024-05-17 13:23:13 -07:00
Beka Westberg 3fd749205f fix: dragging blocks by shadows to delete (#8138)
* Revert "fix: dragging shadow blocks (#7992)"

This reverts commit c0e6e6745f.

* fix: dragging by shadow not being deletable

* fix: unselecting shadows

* fix: revert changes to select and unselect
2024-05-17 13:22:53 -07:00
Neil Fraser 5a8969f855 fix: Zelos comments shouldn't be bold (#8141)
Resolves #8061
2024-05-17 21:33:52 +02:00
Beka Westberg 12ff96674b fix: comment handle position in RTL (#8151) 2024-05-17 12:27:14 -07:00
Beka Westberg 75d81620ab fix: undoing block delete over trashcan creates block in wrong place (#8126) 2024-05-17 12:26:10 -07:00
Maribeth Bottorff 80cacdcad7 Merge pull request #8140 from maribethb/grabby
fix: change cursor to grab on ws comment bar
2024-05-17 09:47:45 -07:00
Beka Westberg 44db3edce3 fix: comment move events and snapping (#8127) 2024-05-17 08:26:23 -07:00
Maribeth Moffatt e4b734c0db fix: change cursor to grab on ws comment bar 2024-05-16 17:54:28 -07:00
Sam El-Husseini 23af202796 fix: workspace comment bounding box affecting RTL zoom (#8125) 2024-05-16 10:36:36 -07:00
Sampada Bhujel 049993405e fix: JSON deserialization not firing variable create events for blocks (#8122)
* fix: JSON deserialization not firing variable create events for blocks

* fix: extract logic for checking added variables and firing event to checkNewVariables function
2024-05-15 15:46:23 -07:00
Beka Westberg dfcf5317c1 fix: throwing errors for chameleon blocks (#8121) 2024-05-15 12:51:55 -07:00
Beka Westberg dd9619dc94 fix: extra insertion markers being created (#8120)
* fix: extra insertion markers being created

* chore: remove unused value
2024-05-15 10:44:13 -07:00
Beka Westberg e2eba2879d fix: connection db error for insertion markers (#8109) 2024-05-15 08:27:43 -07:00
Beka Westberg 392a38bb2e fix: drag cursor being incorrect for flyout blocks (#8107) 2024-05-14 13:24:20 -07:00