MarkerCollection
The collection of all markers attached to the document. It lets you get markers or track them using event-update event.
To create, change or remove makers use model writers' methods: addMarker or removeMarker. Since the writer is the only proper way to change the data model it is not possible to change markers directly using this collection. All markers created by the writer will be automatically added to this collection.
By default there is one marker collection available as model property.
Properties
module:engine/model/markercollection~MarkerCollection#_markersStores markers added to the collection.
Methods
constructor()inheritedmodule:engine/model/markercollection~MarkerCollection#constructorSymbol.iterator() → IterableIterator<Marker>module:engine/model/markercollection~MarkerCollection#Symbol.iteratordelegate( events ) → EmitterMixinDelegateChaininheritedmodule:engine/model/markercollection~MarkerCollection#delegateDelegates selected events to another
Emitter. For instance:emitterA.delegate( 'eventX' ).to( emitterB ); emitterA.delegate( 'eventX', 'eventY' ).to( emitterC );Copy codethen
eventXis delegated (fired by)emitterBandemitterCalong withdata:emitterA.fire( 'eventX', data );Copy codeand
eventYis delegated (fired by)emitterCalong withdata:emitterA.fire( 'eventY', data );Copy codeParameters
events : Array<string>Event names that will be delegated to another emitter.
Returns
destroy() → voidmodule:engine/model/markercollection~MarkerCollection#destroyfire( eventOrInfo, args ) → GetEventInfo<TEvent>[ 'return' ]inheritedmodule:engine/model/markercollection~MarkerCollection#fireFires an event, executing all callbacks registered for it.
The first parameter passed to callbacks is an
EventInfoobject, followed by the optionalargsprovided in thefire()method call.Type parameters
Parameters
eventOrInfo : GetNameOrEventInfo<TEvent>The name of the event or
EventInfoobject if event is delegated.args : TEvent[ 'args' ]Additional arguments to be passed to the callbacks.
Returns
GetEventInfo<TEvent>[ 'return' ]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).
module:engine/model/markercollection~MarkerCollection#getgetMarkersAtPosition( position ) → IterableIterator<Marker>module:engine/model/markercollection~MarkerCollection#getMarkersAtPositionReturns iterator that iterates over all markers, which ranges contain given position.
Parameters
position : ModelPosition
Returns
IterableIterator<Marker>
getMarkersGroup( prefix ) → IterableIterator<Marker>module:engine/model/markercollection~MarkerCollection#getMarkersGroupIterates over all markers that starts with given
prefix.const markerFooA = markersCollection._set( 'foo:a', rangeFooA ); const markerFooB = markersCollection._set( 'foo:b', rangeFooB ); const markerBarA = markersCollection._set( 'bar:a', rangeBarA ); const markerFooBarA = markersCollection._set( 'foobar:a', rangeFooBarA ); Array.from( markersCollection.getMarkersGroup( 'foo' ) ); // [ markerFooA, markerFooB ] Array.from( markersCollection.getMarkersGroup( 'a' ) ); // []Copy codeParameters
prefix : string
Returns
IterableIterator<Marker>
getMarkersIntersectingRange( range ) → Iterable<Marker>module:engine/model/markercollection~MarkerCollection#getMarkersIntersectingRangeReturns iterator that iterates over all markers, which intersects with given range.
Parameters
range : ModelRange
Returns
Iterable<Marker>
has( markerOrName ) → booleanmodule:engine/model/markercollection~MarkerCollection#haslistenTo( emitter, event, callback, [ options ] ) → voidinheritedmodule:engine/model/markercollection~MarkerCollection#listenTo:BASE_EMITTERRegisters 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' );Copy codeAn event callback can stop the event and set the return value of the
firemethod.Type parameters
Parameters
emitter : EmitterThe object that fires the event.
event : TEvent[ 'name' ]The name of the event.
callback : GetCallback<TEvent>The function to be called on event.
[ options ] : GetCallbackOptions<TEvent>Additional options.
Returns
void
off( event, callback ) → voidinheritedmodule:engine/model/markercollection~MarkerCollection#offStops executing the callback on the given event. Shorthand for
this.stopListening( this, event, callback ).Parameters
event : stringThe name of the event.
callback : FunctionThe function to stop being called.
Returns
void
on( event, callback, [ options ] ) → voidinheritedmodule:engine/model/markercollection~MarkerCollection#onRegisters 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).Type parameters
Parameters
event : TEvent[ 'name' ]The name of the event.
callback : GetCallback<TEvent>The function to be called on event.
[ options ] : GetCallbackOptions<TEvent>Additional options.
Returns
void
once( event, callback, [ options ] ) → voidinheritedmodule:engine/model/markercollection~MarkerCollection#onceRegisters a callback function to be executed on the next time the event is fired only. This is similar to calling
onfollowed byoffin the callback.Type parameters
Parameters
event : TEvent[ 'name' ]The name of the event.
callback : GetCallback<TEvent>The function to be called on event.
[ options ] : GetCallbackOptions<TEvent>Additional options.
Returns
void
stopDelegating( [ event ], [ emitter ] ) → voidinheritedmodule:engine/model/markercollection~MarkerCollection#stopDelegatingStops 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 ] : stringThe 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 ofeventto all emitters.
Returns
void
stopListening( [ emitter ], [ event ], [ callback ] ) → voidinheritedmodule:engine/model/markercollection~MarkerCollection#stopListening:BASE_STOPStops 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 ] : EmitterThe 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.
Returns
void
_refresh( markerOrName ) → voidinternalmodule:engine/model/markercollection~MarkerCollection#_refreshFires an event-update event for the given marker but does not change the marker. Useful to force downcast conversion for the marker.
Parameters
markerOrName : string | MarkerMarker or name of a marker to refresh.
Returns
void
Fires
_remove( markerOrName ) → booleaninternalmodule:engine/model/markercollection~MarkerCollection#_removemodule:engine/model/markercollection~MarkerCollection#_setCreates and adds a marker to the
MarkerCollectionwith given name on given range.If
MarkerCollectionalready had a marker with given name (or marker was passed), the marker in collection is updated and event-update event is fired but only if there was a change (marker range ormanagedUsingOperationsflag has changed.Parameters
markerOrName : string | MarkerName of marker to set or marker instance to update.
range : ModelRangeMarker range.
managedUsingOperations : booleanSpecifies whether the marker is managed using operations.
Defaults to
falseaffectsData : booleanSpecifies whether the marker affects the data produced by the data pipeline (is persisted in the editor's data).
Defaults to
false
Returns
MarkerMarkerinstance which was added or updated.
Fires
_destroyMarker( marker ) → voidprivatemodule:engine/model/markercollection~MarkerCollection#_destroyMarker
Events
update( eventInfo, marker, oldRange, newRange, oldMarkerData )module:engine/model/markercollection~MarkerCollection#event:updateFired whenever marker is added, updated or removed from
MarkerCollection.Parameters
eventInfo : EventInfoAn object containing information about the fired event.
marker : MarkerUpdated Marker.
oldRange : ModelRange | nullMarker range before the update. When is not defined it means that marker is just added.
newRange : ModelRange | nullMarker range after update. When is not defined it means that marker is just removed.
oldMarkerData : MarkerDataData of the marker before the change.