BubblingEmitter (engine/view/observer)
@ckeditor/ckeditor5-engine/src/view/observer/bubblingemittermixin
Bubbling emitter for the view document.
Bubbling emitter is triggering events in the context of specified view element name,
predefined '$text'
, '$root'
, '$document'
and '$capture'
contexts, and context matchers provided as a function.
Before bubbling starts, listeners for '$capture'
context are triggered. Then the bubbling starts from the deeper selection
position (by firing event on the '$text'
context) and propagates the view document tree up to the '$root'
and finally
the listeners at '$document'
context are fired (this is the default context).
Examples:
// Listeners registered in the context of the view element names:
this.listenTo( viewDocument, 'enter', ( evt, data ) => {
// ...
}, { context: 'blockquote' } );
this.listenTo( viewDocument, 'enter', ( evt, data ) => {
// ...
}, { context: 'li' } );
// Listeners registered in the context of the '$text' and '$root' nodes.
this.listenTo( view.document, 'arrowKey', ( evt, data ) => {
// ...
}, { context: '$text', priority: 'high' } );
this.listenTo( view.document, 'arrowKey', ( evt, data ) => {
// ...
}, { context: '$root' } );
// Listeners registered in the context of custom callback function.
this.listenTo( view.document, 'arrowKey', ( evt, data ) => {
// ...
}, { context: isWidget } );
this.listenTo( view.document, 'arrowKey', ( evt, data ) => {
// ...
}, { context: isWidget, priority: 'high' } );
Example flow for selection in text:
<blockquote><p>Foo[]bar</p></blockquote>
Fired events on contexts:
'$capture'
'$text'
'p'
'blockquote'
'$root'
'$document'
Example flow for selection on element (i.e., Widget):
<blockquote><p>Foo[<widget/>]bar</p></blockquote>
Fired events on contexts:
'$capture'
- widget (custom matcher)
'p'
'blockquote'
'$root'
'$document'
There could be multiple listeners registered for the same context and at different priority levels:
<p>Foo[]bar</p>
'$capture'
at priorities:'highest'
'high'
'normal'
'low'
'lowest'
'$text'
at priorities:'highest'
'high'
'normal'
'low'
'lowest'
'p'
at priorities:'highest'
'high'
'normal'
'low'
'lowest'
'$root'
at priorities:'highest'
'high'
'normal'
'low'
'lowest'
'$document'
at priorities:'highest'
'high'
'normal'
'low'
'lowest'
Filtering
Methods
-
delegate( events ) → EmitterMixinDelegateChain
module:engine/view/observer/bubblingemittermixin~BubblingEmitter#delegate
inherited
Delegates selected events to another
Emitter
. For instance:emitterA.delegate( 'eventX' ).to( emitterB ); emitterA.delegate( 'eventX', 'eventY' ).to( emitterC );
then
eventX
is delegated (fired by)emitterB
andemitterC
along withdata
:emitterA.fire( 'eventX', data );
and
eventY
is delegated (fired by)emitterC
along withdata
:emitterA.fire( 'eventY', data );
Parameters
events : String
Event names that will be delegated to another emitter.
Returns
-
fire( eventOrInfo, [ args ] ) → *
module:engine/view/observer/bubblingemittermixin~BubblingEmitter#fire
inherited
Fires an event, executing all callbacks registered for it.
The first parameter passed to callbacks is an
EventInfo
object, followed by the optionalargs
provided in thefire()
method call.Parameters
eventOrInfo : String | EventInfo
The name of the event or
EventInfo
object if event is delegated.[ args ] : *
Additional arguments to be passed to the callbacks.
Returns
*
By default the method returns
undefined
. However, the return value can be changed by listeners through modification of theevt.return
's property (the event info is the first param of every callback).
-
listenTo( emitter, event, callback, [ options ] = { [options.priority] } )
module:engine/view/observer/bubblingemittermixin~BubblingEmitter#listenTo
inherited
Registers a callback function to be executed when an event is fired in a specific (emitter) object.
Events can be grouped in namespaces using
:
. When namespaced event is fired, it additionally fires all callbacks for that namespace.// myEmitter.on( ... ) is a shorthand for myEmitter.listenTo( myEmitter, ... ). myEmitter.on( 'myGroup', genericCallback ); myEmitter.on( 'myGroup:myEvent', specificCallback ); // genericCallback is fired. myEmitter.fire( 'myGroup' ); // both genericCallback and specificCallback are fired. myEmitter.fire( 'myGroup:myEvent' ); // genericCallback is fired even though there are no callbacks for "foo". myEmitter.fire( 'myGroup:foo' );
An event callback can stop the event and set the return value of the
fire
method.Parameters
emitter : Emitter
The object that fires the event.
event : String
The name of the event.
callback : function
The function to be called on event.
[ options ] : Object
Additional options.
Properties[ options.priority ] : PriorityString | Number
The priority of this event callback. The higher the priority value the sooner the callback will be fired. Events having the same priority are called in the order they were added.
Defaults to
'normal'
Defaults to
{}
-
off( event, callback )
module:engine/view/observer/bubblingemittermixin~BubblingEmitter#off
inherited
Stops executing the callback on the given event. Shorthand for
this.stopListening( this, event, callback )
.Parameters
event : String
The name of the event.
callback : function
The function to stop being called.
-
on( event, callback, [ options ] = { [options.priority] } )
module:engine/view/observer/bubblingemittermixin~BubblingEmitter#on
inherited
Registers a callback function to be executed when an event is fired.
Shorthand for
this.listenTo( this, event, callback, options )
(it makes the emitter listen on itself).Parameters
event : String
The name of the event.
callback : function
The function to be called on event.
[ options ] : Object
Additional options.
Properties[ options.priority ] : PriorityString | Number
The priority of this event callback. The higher the priority value the sooner the callback will be fired. Events having the same priority are called in the order they were added.
Defaults to
'normal'
Defaults to
{}
-
once( event, callback, [ options ] = { [options.priority] } )
module:engine/view/observer/bubblingemittermixin~BubblingEmitter#once
inherited
Registers a callback function to be executed on the next time the event is fired only. This is similar to calling
on
followed byoff
in the callback.Parameters
event : String
The name of the event.
callback : function
The function to be called on event.
[ options ] : Object
Additional options.
Properties[ options.priority ] : PriorityString | Number
The priority of this event callback. The higher the priority value the sooner the callback will be fired. Events having the same priority are called in the order they were added.
Defaults to
'normal'
Defaults to
{}
-
stopDelegating( [ event ], [ emitter ] )
module:engine/view/observer/bubblingemittermixin~BubblingEmitter#stopDelegating
inherited
Stops delegating events. It can be used at different levels:
- To stop delegating all events.
- To stop delegating a specific event to all emitters.
- To stop delegating a specific event to a specific emitter.
Parameters
[ event ] : String
The name of the event to stop delegating. If omitted, stops it all delegations.
[ emitter ] : Emitter
(requires
event
) The object to stop delegating a particular event to. If omitted, stops delegation ofevent
to all emitters.
-
stopListening( [ emitter ], [ event ], [ callback ] )
module:engine/view/observer/bubblingemittermixin~BubblingEmitter#stopListening
inherited
Stops listening for events. It can be used at different levels:
- To stop listening to a specific callback.
- To stop listening to a specific event.
- To stop listening to all events fired by a specific object.
- To stop listening to all events fired by all objects.
Parameters
[ emitter ] : Emitter
The object to stop listening to. If omitted, stops it for all objects.
[ event ] : String
(Requires the
emitter
) The name of the event to stop listening to. If omitted, stops it for all events fromemitter
.[ callback ] : function
(Requires the
event
) The function to be removed from the call list for the givenevent
.
-
_addEventListener( event, callback, [ options ] = { [options.priority] } )
module:engine/view/observer/bubblingemittermixin~BubblingEmitter#_addEventListener
protected inherited
Adds callback to emitter for given event.
Parameters
event : String
The name of the event.
callback : function
The function to be called on event.
[ options ] : Object
Additional options.
Properties[ options.priority ] : PriorityString | Number
The priority of this event callback. The higher the priority value the sooner the callback will be fired. Events having the same priority are called in the order they were added.
Defaults to
'normal'
Defaults to
{}
-
_removeEventListener( event, callback )
module:engine/view/observer/bubblingemittermixin~BubblingEmitter#_removeEventListener
protected inherited
Removes callback from emitter for given event.
Parameters
event : String
The name of the event.
callback : function
The function to stop being called.
Every day, we work hard to keep our documentation complete. Have you spotted an outdated information? Is something missing? Please report it via our issue tracker.