8
0

removeoperation.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /**
  2. * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. 'use strict';
  6. import MoveOperation from './moveoperation.js';
  7. import Position from '../position.js';
  8. import ReinsertOperation from './reinsertoperation.js';
  9. /**
  10. * Operation to remove a range of nodes.
  11. *
  12. * @memberOf core.treeModel.operation
  13. * @extends core.treeModel.operation.Operation
  14. */
  15. export default class RemoveOperation extends MoveOperation {
  16. /**
  17. *
  18. * Creates a remove operation.
  19. *
  20. * @param {core.treeModel.Position} position Position before the first node to remove.
  21. * @param {Number} howMany How many nodes to remove.
  22. * @param {Number} baseVersion {@link core.treeModel.Document#version} on which operation can be applied.
  23. */
  24. constructor( position, howMany, baseVersion ) {
  25. // Position in a graveyard where nodes were moved.
  26. const graveyardPosition = Position.createFromParentAndOffset( position.root.document.graveyard, 0 );
  27. super( position, howMany, graveyardPosition, baseVersion );
  28. }
  29. /**
  30. * @see core.treeModel.operation.Operation#type
  31. */
  32. get type() {
  33. return 'remove';
  34. }
  35. /**
  36. * @see core.treeModel.operation.MoveOperation#isSticky
  37. */
  38. get isSticky() {
  39. return false;
  40. }
  41. /**
  42. * @returns {core.treeModel.operation.ReinsertOperation}
  43. */
  44. getReversed() {
  45. return new ReinsertOperation( this.targetPosition, this.howMany, this.sourcePosition, this.baseVersion + 1 );
  46. }
  47. /**
  48. * @returns {core.treeModel.operation.RemoveOperation}
  49. */
  50. clone() {
  51. return new RemoveOperation( this.sourcePosition, this.howMany, this.baseVersion );
  52. }
  53. }