| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /**
- * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md.
- */
- 'use strict';
- import Operation from './operation.js';
- import NodeList from '../nodelist.js';
- import Position from '../position.js';
- import Range from '../range.js';
- import RemoveOperation from './removeoperation.js';
- /**
- * Operation to insert list of nodes on the given position in the tree data model.
- *
- * @memberOf engine.treeModel.operation
- * @extends engine.treeModel.operation.Operation
- */
- export default class InsertOperation extends Operation {
- /**
- * Creates an insert operation.
- *
- * @param {engine.treeModel.Position} position Position of insertion.
- * @param {engine.treeModel.NodeSet} nodes The list of nodes to be inserted.
- * List of nodes can be any type accepted by the {@link engine.treeModel.NodeList} constructor.
- * @param {Number} baseVersion {@link engine.treeModel.Document#version} on which operation can be applied.
- */
- constructor( position, nodes, baseVersion ) {
- super( baseVersion );
- /**
- * Position of insertion.
- *
- * @readonly
- * @member {engine.treeModel.Position} engine.treeModel.operation.InsertOperation#position
- */
- this.position = Position.createFromPosition( position );
- /**
- * List of nodes to insert.
- *
- * @readonly
- * @member {engine.treeModel.NodeList} engine.treeModel.operation.InsertOperation#nodeList
- */
- this.nodeList = new NodeList( nodes );
- }
- get type() {
- return 'insert';
- }
- /**
- * @returns {engine.treeModel.operation.InsertOperation}
- */
- clone() {
- return new InsertOperation( this.position, this.nodeList, this.baseVersion );
- }
- /**
- * @returns {engine.treeModel.operation.RemoveOperation}
- */
- getReversed() {
- return new RemoveOperation( this.position, this.nodeList.length, this.baseVersion + 1 );
- }
- _execute() {
- this.position.parent.insertChildren( this.position.offset, this.nodeList );
- return {
- range: Range.createFromPositionAndShift( this.position, this.nodeList.length )
- };
- }
- }
|