transaction-base.js 929 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /**
  2. * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. 'use strict';
  6. CKEDITOR.define( [ 'utils', 'document/deltas/delta' ], ( utils, Delta ) => {
  7. /**
  8. * @class document.Transaction
  9. */
  10. class Transaction {
  11. /**
  12. * @constructor
  13. */
  14. constructor( doc ) {
  15. this.doc = doc;
  16. this.deltas = [];
  17. }
  18. [ Symbol.iterator ]() {
  19. return this.deltas[ Symbol.iterator ]();
  20. }
  21. static register( name, creator ) {
  22. if ( Transaction.prototype[ name ] ) {
  23. throw 'error';
  24. }
  25. Transaction.prototype[ name ] = function() {
  26. var deltas = creator.apply( this, [ this.doc, this ].concat( Array.from( arguments ) ) );
  27. if ( deltas instanceof Delta ) {
  28. deltas = [ deltas ];
  29. }
  30. for ( var delta of deltas ) {
  31. delta._execute();
  32. this.deltas.push( delta );
  33. }
  34. return this;
  35. };
  36. }
  37. }
  38. return Transaction;
  39. } );