Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
function _prepareListOptions( options, command ) {
const itemDefinitions = new Collection();
// Create dropdown items.
for ( const option of options ) {
const def = {
type: 'button',
model: new Model( {
commandName: FONT_FAMILY,
commandParam: option.model,
label: option.title,
withText: true
} )
};
def.model.bind( 'isOn' ).to( command, 'value', value => value === option.model );
// Try to set a dropdown list item style.
_prepareDropdown( label, icon, options, locale ) {
const editor = this.editor;
const dropdownView = createDropdown( locale );
const commands = [];
// Prepare dropdown list items for list dropdown.
const itemDefinitions = new Collection();
for ( const option of options ) {
addListOption( option, editor, commands, itemDefinitions );
}
addListToDropdown( dropdownView, itemDefinitions );
// Decorate dropdown's button.
dropdownView.buttonView.set( {
label,
icon,
tooltip: true
} );
// Make dropdown button disabled when all options are disabled.
dropdownView.bind( 'isEnabled' ).toMany( commands, 'isEnabled', ( ...areEnabled ) => {
constructor( doc ) {
super();
// List of selection markers.
// Marker is a selection marker when selection range is inside the marker range.
//
// @type {module:utils/collection~Collection}
this.markers = new Collection( { idProperty: 'name' } );
// Document which owns this selection.
//
// @protected
// @member {module:engine/model/model~Model}
this._model = doc.model;
// Document which owns this selection.
//
// @protected
// @member {module:engine/model/document~Document}
this._document = doc;
// Keeps mapping of attribute name to priority with which the attribute got modified (added/changed/removed)
// last time. Possible values of priority are: `'low'` and `'normal'`.
//
function _prepareListOptions( options, command ) {
const itemDefinitions = new Collection();
for ( const option of options ) {
const def = {
type: 'button',
model: new Model( {
commandName: FONT_SIZE,
commandParam: option.model,
label: option.title,
class: 'ck-fontsize-option',
withText: true
} )
};
if ( option.view && option.view.styles ) {
def.model.set( 'labelStyle', `font-size:${ option.view.styles[ 'font-size' ] }` );
}
* @member {module:engine/view/documentselection~DocumentSelection} module:engine/view/document~Document#selection
*/
this.selection = new DocumentSelection();
/**
* Roots of the view tree. Collection of the {@link module:engine/view/element~Element view elements}.
*
* View roots are created as a result of binding between {@link module:engine/view/document~Document#roots} and
* {@link module:engine/model/document~Document#roots} and this is handled by
* {@link module:engine/controller/editingcontroller~EditingController}, so to create view root we need to create
* model root using {@link module:engine/model/document~Document#createRoot}.
*
* @readonly
* @member {Collection} module:engine/view/document~Document#roots
*/
this.roots = new Collection( { idProperty: 'rootName' } );
/**
* Defines whether document is in read-only mode.
*
* When document is read-ony then all roots are read-only as well and caret placed inside this root is hidden.
*
* @observable
* @member {Boolean} #isReadOnly
*/
this.set( 'isReadOnly', false );
/**
* True if document is focused.
*
* This property is updated by the {@link module:engine/view/observer/focusobserver~FocusObserver}.
* If the {@link module:engine/view/observer/focusobserver~FocusObserver} is disabled this property will not change.
/**
* Defines whether there is any registered pending action.
*
* @readonly
* @observable
* @member {Boolean} #hasAny
*/
this.set( 'hasAny', false );
/**
* A list of pending actions.
*
* @private
* @type {module:utils/collection~Collection}
*/
this._actions = new Collection( { idProperty: '_id' } );
this._actions.delegate( 'add', 'remove' ).to( this );
}
* @member {module:engine/view/documentselection~DocumentSelection} module:engine/view/document~Document#selection
*/
this.selection = new DocumentSelection();
/**
* Roots of the view tree. Collection of the {@link module:engine/view/element~Element view elements}.
*
* View roots are created as a result of binding between {@link module:engine/view/document~Document#roots} and
* {@link module:engine/model/document~Document#roots} and this is handled by
* {@link module:engine/controller/editingcontroller~EditingController}, so to create view root we need to create
* model root using {@link module:engine/model/document~Document#createRoot}.
*
* @readonly
* @member {module:utils/collection~Collection} module:engine/view/document~Document#roots
*/
this.roots = new Collection( { idProperty: 'rootName' } );
/**
* Defines whether document is in read-only mode.
*
* When document is read-ony then all roots are read-only as well and caret placed inside this root is hidden.
*
* @observable
* @member {Boolean} #isReadOnly
*/
this.set( 'isReadOnly', false );
/**
* True if document is focused.
*
* This property is updated by the {@link module:engine/view/observer/focusobserver~FocusObserver}.
* If the {@link module:engine/view/observer/focusobserver~FocusObserver} is disabled this property will not change.
/**
* The selection in this document.
*
* @readonly
* @type {module:engine/model/documentselection~DocumentSelection}
*/
this.selection = new DocumentSelection( this );
/**
* A list of roots that are owned and managed by this document. Use {@link #createRoot} and
* {@link #getRoot} to manipulate it.
*
* @readonly
* @type {module:utils/collection~Collection}
*/
this.roots = new Collection( { idProperty: 'rootName' } );
/**
* The model differ object. Its role is to buffer changes done on the model document and then calculate a diff of those changes.
*
* @readonly
* @type {module:engine/model/differ~Differ}
*/
this.differ = new Differ( model.markers );
/**
* Post-fixer callbacks registered to the model document.
*
* @private
* @type {Set.}
*/
this._postFixers = new Set();