Skip to main content

Home > blockly > Events

Events namespace

Classes

ClassDescription
BlockBaseAbstract class for any event related to blocks.
BlockChangeNotifies listeners when some element of a block has changed (e.g. field values, comments, etc).
BlockCreateNotifies listeners when a block (or connected stack of blocks) is created.
BlockDeleteNotifies listeners when a block (or connected stack of blocks) is deleted.
BlockDragNotifies listeners when a block is being manually dragged/dropped.
BlockFieldIntermediateChangeNotifies listeners when the value of a block's field has changed but the change is not yet complete, and is expected to be followed by a block change event.
BlockMoveNotifies listeners when a block is moved. This could be from one connection to another, or from one location on the workspace to another.
BubbleOpenClass for a bubble open event.
ClickNotifies listeners that some blockly element was clicked.
CommentBaseAbstract class for a comment event.
CommentChangeNotifies listeners that the contents of a workspace comment has changed.
CommentCollapse
CommentCreateNotifies listeners that a workspace comment was created.
CommentDeleteNotifies listeners that a workspace comment has been deleted.
CommentDragNotifies listeners when a comment is being manually dragged/dropped.
CommentMoveNotifies listeners that a workspace comment has moved.
CommentResizeNotifies listeners that a workspace comment has resized.
FinishedLoadingNotifies listeners when the workspace has finished deserializing from JSON/XML.
SelectedClass for a selected event. Notifies listeners that a new element has been selected.
ThemeChangeNotifies listeners that the workspace theme has changed.
ToolboxItemSelectNotifies listeners that a toolbox item has been selected.
TrashcanOpenNotifies listeners when the trashcan is opening or closing.
UiBaseBase class for a UI event. UI events are events that don't need to be sent over the wire for multi-user editing to work (e.g. scrolling the workspace, zooming, opening toolbox categories). UI events do not undo or redo.
VarBaseAbstract class for a variable event.
VarCreateNotifies listeners that a variable model has been created.
VarDeleteNotifies listeners that a variable model has been deleted.
VarRenameNotifies listeners that a variable model was renamed.
VarTypeChangeNotifies listeners that a variable's type has changed.
ViewportChangeNotifies listeners that the workspace surface's position or scale has changed. Does not notify when the workspace itself resizes.

Abstract Classes

Abstract ClassDescription
AbstractAbstract class for an event.

Enumerations

EnumerationDescription
BubbleType
ClickTarget

Functions

FunctionDescription
clearPendingUndo()Modify pending undo events so that when they are fired they don't land in the undo stack. Called by Workspace.clearUndo.
disable()Stop sending events. Every call to this function MUST also call enable.
disableOrphans(event)Set if a block is disabled depending on whether it is properly connected. Use this on applications where all blocks should be connected to a top block.
enable()Start sending events. Unless events were already disabled when the corresponding call to disable was made.
filter(queue)Filter the queued events by merging duplicates, removing null events and reording BlockChange events. History of this function: This function was originally added in commit cf257ea5 with the intention of dramatically reduing the total number of dispatched events. Initialy it affected only BlockMove events but others were added over time. Code was added to reorder BlockChange events added in commit 5578458, for uncertain reasons but most probably as part of an only-partially-successful attemp to fix problems with event ordering during block mutations. This code should probably have been added to the top of the function, before merging and null-removal, but was added at the bottom for now-forgotten reasons. See these bug investigations for a fuller discussion of the underlying issue and some of the failures that arose because of this incomplete/incorrect fix: https://github.com/google/blockly/issues/8225#issuecomment-2195751783 https://github.com/google/blockly/issues/2037#issuecomment-2209696351 Later, in PR #1205 the original O(n^2) implementation was replaced by a linear-time implementation, though additonal fixes were made subsequently. In August 2024 a number of significant simplifications were made: This function was previously called from Workspace.prototype.undo, but the mutation of events by this function was the cause of issue #7026 (note that events would combine differently in reverse order vs. forward order). The originally-chosen fix for this 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, so both the call from undo and the post-processing code was removed, and forward=true was made the default while calling the function with forward=false was deprecated. At the same time, the buggy code to reorder BlockChange events was replaced by a less-buggy version of the same functionality in a new function, enqueueEvent, called from fireInternal, thus assuring that events will be in the correct order at the time filter is called. Additionally, the event merging code was modified so that only immediately adjacent events would be merged. This simplified the implementation while ensuring that the merging of events cannot cause them to be reordered.
fire(event)Enqueue an event to be dispatched to change listeners. Notes: - Events are enqueued until a timeout, generally after rendering is complete or at the end of the current microtask, if not running in a browser. - Queued events are subject to destructive modification by being combined with later-enqueued events, but only until they are fired. - Events are dispatched via the fireChangeListener method on the affected workspace.
fromJson(json, workspace)Decode the JSON into an event.
get(eventType)Gets the class for a specific event type from the registry.
getGroup()Current group.
getRecordUndo()Returns whether or not events will be added to the undo stack.
isEnabled()Returns whether events may be fired or not.
setGroup(state)Start or stop a group.
setRecordUndo(newValue)Sets whether events should be added to the undo stack.

Interfaces

InterfaceDescription
AbstractEventJson
BlockBaseJson
BlockChangeJson
BlockCreateJson
BlockDeleteJson
BlockDragJson
BlockFieldIntermediateChangeJson
BlockMoveJson
BubbleOpenJson
ClickJson
CommentBaseJson
CommentChangeJson
CommentCollapseJson
CommentCreateJson
CommentDragJson
CommentMoveJson
CommentResizeJson
SelectedJson
ThemeChangeJson
ToolboxItemSelectJson
TrashcanOpenJson
VarBaseJson
VarCreateJson
VarDeleteJson
VarRenameJson
VarTypeChangeJson
ViewportChangeJson

Variables

VariableDescription
BLOCK_CHANGE
BLOCK_CREATE
BLOCK_DELETE
BLOCK_DRAG
BLOCK_FIELD_INTERMEDIATE_CHANGE
BLOCK_MOVE
BUBBLE_OPEN
BUMP_EVENTSList of events that cause objects to be bumped back into the visible portion of the workspace. Not to be confused with bumping so that disconnected connections do not appear connected.
CHANGE
CLICK
COMMENT_CHANGE
COMMENT_CREATE
COMMENT_DELETE
COMMENT_DRAG
COMMENT_MOVE
COMMENT_RESIZE
CREATE
DELETE
FINISHED_LOADING
MOVE
SELECTED
THEME_CHANGE
TOOLBOX_ITEM_SELECT
TRASHCAN_OPEN
UI
VAR_CREATE
VAR_DELETE
VAR_RENAME
VIEWPORT_CHANGE

Type Aliases

Type AliasDescription
BumpEventType of events that cause objects to be bumped back into the visible portion of the workspace. Not to be confused with bumping so that disconnected connections do not appear connected.