CommentThread (comments/comments)
@ckeditor/ckeditor5-comments/src/comments/commentsrepository
Comment thread representation.
Stores a list of Comments
.
Filtering
Properties
-
channelId : String | undefined
The channel where the comment thread was created.
-
comments : Collection
readonly
A collection of
Comment
s belonging to this thread. -
first
inherited
Returns the first item from the collection or null when collection is empty.
-
id : String
The comment thread ID.
-
isAttached : Boolean
Informs if the comment thread is attached to any target at the moment.
-
isReadOnly : Boolean
Informs if the comment thread is in read-only state (
true
) or not (false
). -
last
inherited
Returns the last item from the collection or null when collection is empty.
-
length : Number
The number of comments in the comment thread.
-
weight : Number
Sum of weights of all comments in this thread.
-
_bindToCollection : Collection
protected inherited
A collection instance this collection is bound to as a result of calling
bindTo
method. -
_bindToExternalToInternalMap : WeakMap
protected inherited
A helper mapping external items of a bound collection (
bindTo
) and actual items of this collection. It provides information necessary to properly remove items bound to another collection. -
_bindToInternalToExternalMap : WeakMap
protected inherited
A helper mapping items of this collection to external items of a bound collection (
bindTo
). It provides information necessary to manage the bindings, e.g. to avoid loops in two–way bindings. -
_isAttached : Boolean
protected
Informs if the comment thread is attached to any target at the moment.
-
_idProperty : String
private inherited
The name of the property which is considered to identify an item.
-
_itemMap : Map
private inherited
The internal map of items in the collection.
-
_items : Array.<Object>
private inherited
The internal list of items in the collection.
-
_skippedIndexesFromExternal : Array
private inherited
Stores indexes of skipped items from bound external collection.
Methods
-
constructor( commentsRepository, data = { [data.channelId], data.id } )
Parameters
commentsRepository : CommentsRepository
data : Object
-
Properties
[ data.channelId ] : String
data.id : String
-
Symbol.iterator() → Iterable.<*>
inherited
Iterable interface.
Returns
Iterable.<*>
-
add( item, [ index ] )
inherited
-
addComment( data = { data.commentId, data.content, data.authorId, [data.createdAt], [data.attributes], [data.isFromAdapter] } )
Creates a new comment inside the comment thread.
Note This method is event-driven. It means it fires an event then a normal priority listener catches it and executes an action. It makes it possible to add some actions before and after method will be executed.
Parameters
data : Object
Data object.
Propertiesdata.commentId : String
Comment id.
data.content : String
Comment content.
data.authorId : String
Author id.
[ data.createdAt ] : Date
Creation date. If not set, current date (
new Date()
) will be used.[ data.attributes ] : Object
Custom comment attributes. See also
setAttribute
andremoveAttribute
.[ data.isFromAdapter ] : Boolean
-
Defaults to
false
Fires
-
addMany( item, [ index ] )
inherited
-
attachTo( target )
Creates comment annotations and displays it attached to the given target.
Parameters
target : HTMLElement | Rect | function
-
bindTo( externalCollection ) → Object
inherited
Binds and synchronizes the collection with another one.
The binding can be a simple factory:
class FactoryClass { constructor( data ) { this.label = data.label; } } const source = new Collection( { idProperty: 'label' } ); const target = new Collection(); target.bindTo( source ).as( FactoryClass ); source.add( { label: 'foo' } ); source.add( { label: 'bar' } ); console.log( target.length ); // 2 console.log( target.get( 1 ).label ); // 'bar' source.remove( 0 ); console.log( target.length ); // 1 console.log( target.get( 0 ).label ); // 'bar'
or the factory driven by a custom callback:
class FooClass { constructor( data ) { this.label = data.label; } } class BarClass { constructor( data ) { this.label = data.label; } } const source = new Collection( { idProperty: 'label' } ); const target = new Collection(); target.bindTo( source ).using( ( item ) => { if ( item.label == 'foo' ) { return new FooClass( item ); } else { return new BarClass( item ); } } ); source.add( { label: 'foo' } ); source.add( { label: 'bar' } ); console.log( target.length ); // 2 console.log( target.get( 0 ) instanceof FooClass ); // true console.log( target.get( 1 ) instanceof BarClass ); // true
or the factory out of property name:
const source = new Collection( { idProperty: 'label' } ); const target = new Collection(); target.bindTo( source ).using( 'label' ); source.add( { label: { value: 'foo' } } ); source.add( { label: { value: 'bar' } } ); console.log( target.length ); // 2 console.log( target.get( 0 ).value ); // 'foo' console.log( target.get( 1 ).value ); // 'bar'
It's possible to skip specified items by returning falsy value:
const source = new Collection(); const target = new Collection(); target.bindTo( source ).using( item => { if ( item.hidden ) { return null; } return item; } ); source.add( { hidden: true } ); source.add( { hidden: false } ); console.log( source.length ); // 2 console.log( target.length ); // 1
Note:
clear
can be used to break the binding.Parameters
externalCollection : Collection
A collection to be bound.
Returns
Object
CollectionBindToChain
The binding chain object.
-
clear()
inherited
-
delegate( events ) → EmitterMixinDelegateChain
mixed
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
-
filter( callback, callback.item, callback.index, ctx ) → Array.<Object>
inherited
Returns an array with items for which the
callback
returned a true value.Parameters
callback : function
callback.item : Object
callback.index : Number
ctx : Object
Context in which the
callback
will be called.
Returns
Array.<Object>
The array with matching items.
-
find( callback, callback.item, callback.index, ctx ) → Object
inherited
Finds the first item in the collection for which the
callback
returns a true value.Parameters
callback : function
callback.item : Object
callback.index : Number
ctx : Object
Context in which the
callback
will be called.
Returns
Object
The item for which
callback
returned a true value.
-
fire( eventOrInfo, [ args ] ) → *
mixed
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).
-
get( idOrIndex ) → Object | null
inherited
Gets an item by its ID or index.
Parameters
idOrIndex : String | Number
The item ID or index in the collection.
Returns
Object | null
The requested item or
null
if such item does not exist.
-
getComment( commentId ) → Comment
Returns comment of given id.
-
getIndex( itemOrId ) → Number
inherited
Gets an index of an item in the collection. When an item is not defined in the collection, the index will equal -1.
Parameters
itemOrId : Object | String
The item or its ID in the collection.
Returns
Number
The index of a given item.
-
has( itemOrId ) → Boolean
inherited
Returns a Boolean indicating whether the collection contains an item.
Parameters
itemOrId : Object | String
The item or its ID in the collection.
Returns
Boolean
true
if the collection contains the item,false
otherwise.
-
listenTo( emitter, event, callback, [ options ] = { [options.priority] } )
mixed
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
{}
-
map( callback, callback.item, callback.index, ctx ) → Array
inherited
Executes the callback for each item in the collection and composes an array or values returned by this callback.
Parameters
callback : function
callback.item : Object
callback.index : Number
ctx : Object
Context in which the
callback
will be called.
Returns
Array
The result of mapping.
-
off( event, callback )
mixed
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] } )
mixed
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] } )
mixed
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
{}
-
remove( subject ) → Object
inherited
-
stopDelegating( [ event ], [ emitter ] )
mixed
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 ] )
mixed
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
.
-
toJSON() → Object
Returns
Object
-
_add( comment )
protected
Add comment to the thread according to the creation date. Comments in the thread are sorted by date.
Parameters
comment : Comment
-
_setUpBindToBinding( factory )
protected inherited
Finalizes and activates a binding initiated by {#bindTo}.
Parameters
factory : function
A function which produces collection items.
-
_getItemIdBeforeAdding( item ) → String
private inherited
Returns an unique id property for a given
item
.The method will generate new id and assign it to the
item
if it doesn't have any.Parameters
item : Object
Item to be added.
Returns
String
-
_remove( subject ) → Array
private inherited
Core
remove
method implementation shared in other functions.In contrast this method does not fire the
event-change
event.Parameters
subject : Object
The item to remove, its id or index in the collection.
Returns
Array
Returns an array with the removed item and its index.
Fires
Events
-
add( eventInfo, item )
inherited
Fired when an item is added to the collection.
Parameters
eventInfo : EventInfo
An object containing information about the fired event.
item : Object
The added item.
-
change( eventInfo, added, removed, index )
inherited
Fired when the collection was changed due to adding or removing items.
Parameters
eventInfo : EventInfo
An object containing information about the fired event.
added : Iterable.<Object>
A list of added items.
removed : Iterable.<Object>
A list of removed items.
index : Number
An index where the addition or removal occurred.
-
change:isReadOnly( eventInfo, name, value, oldValue )
Fired when the
isReadOnly
property changed value.Parameters
eventInfo : EventInfo
An object containing information about the fired event.
name : String
Name of the changed property (
isReadOnly
).value : Boolean
New value of the
isReadOnly
property with given key ornull
, if operation should remove property.oldValue : Boolean
Old value of the
isReadOnly
property with given key ornull
, if property was not set before.
-
remove( eventInfo, item, index )
inherited
Fired when an item is removed from the collection.
Parameters
eventInfo : EventInfo
An object containing information about the fired event.
item : Object
The removed item.
index : Number
Index from which item was removed.