| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- /**
- * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
- */
- /**
- * @module engine/model/batch
- */
- /**
- * A batch instance groups model changes ({@link module:engine/model/operation/operation~Operation operations}). All operations
- * grouped in a single batch can be reverted together, so you can also think about a batch as of a single undo step. If you want
- * to extend a given undo step, you can add more changes to the batch using {@link module:engine/model/model~Model#enqueueChange}:
- *
- * model.enqueueChange( batch, writer => {
- * writer.insertText( 'foo', paragraph, 'end' );
- * } );
- *
- * @see module:engine/model/model~Model#enqueueChange
- * @see module:engine/model/model~Model#change
- */
- export default class Batch {
- /**
- * Creates a batch instance.
- *
- * @see module:engine/model/model~Model#enqueueChange
- * @see module:engine/model/model~Model#change
- * @param {'transparent'|'default'} [type='default'] The type of the batch.
- */
- constructor( type = 'default' ) {
- /**
- * An array of operations that compose this batch.
- *
- * @readonly
- * @type {Array.<module:engine/model/operation/operation~Operation>}
- */
- this.operations = [];
- /**
- * The type of the batch.
- *
- * It can be one of the following values:
- * * `'default'` – All "normal" batches. This is the most commonly used type.
- * * `'transparent'` – A batch that should be ignored by other features, i.e. an initial batch or collaborative editing
- * changes.
- *
- * @readonly
- * @type {'transparent'|'default'}
- */
- this.type = type;
- }
- /**
- * Returns the base version of this batch, which is equal to the base version of the first operation in the batch.
- * If there are no operations in the batch or neither operation has the base version set, it returns `null`.
- *
- * @readonly
- * @type {Number|null}
- */
- get baseVersion() {
- for ( const op of this.operations ) {
- if ( op.baseVersion !== null ) {
- return op.baseVersion;
- }
- }
- return null;
- }
- /**
- * Adds an operation to the batch instance.
- *
- * @param {module:engine/model/operation/operation~Operation} operation An operation to add.
- * @returns {module:engine/model/operation/operation~Operation} The added operation.
- */
- addOperation( operation ) {
- operation.batch = this;
- this.operations.push( operation );
- return operation;
- }
- }
|