editingcontroller.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /**
  2. * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. /* globals document */
  6. import EditingController from '/ckeditor5/engine/editingcontroller.js';
  7. import Document from '/ckeditor5/engine/model/document.js';
  8. import ModelRange from '/ckeditor5/engine/model/range.js';
  9. import { setData } from '/tests/engine/_utils/model.js';
  10. import buildModelConverter from '/ckeditor5/engine/conversion/buildmodelconverter.js';
  11. const model = new Document();
  12. model.createRoot();
  13. const editing = new EditingController( model );
  14. editing.createRoot( document.getElementById( 'editor' ) );
  15. model.schema.registerItem( 'paragraph', '$block' );
  16. buildModelConverter().for( editing.modelToView ).fromElement( 'paragraph' ).toElement( 'p' );
  17. setData( model,
  18. '<paragraph>foo</paragraph>' +
  19. '<paragraph></paragraph>' +
  20. '<paragraph>bar</paragraph>' );
  21. editing.view.focus();
  22. // enter
  23. editing.view.on( 'keydown', ( evt, data ) => {
  24. if ( data.keyCode == 13 ) {
  25. model.enqueueChanges( () => {
  26. model.batch().split( model.selection.getFirstPosition() );
  27. } );
  28. }
  29. } );
  30. // delete
  31. editing.view.on( 'keydown', ( evt, data ) => {
  32. if ( data.keyCode == 46 ) {
  33. model.enqueueChanges( () => {
  34. model.batch().remove( ModelRange.createFromPositionAndShift( model.selection.getFirstPosition(), 1 ) );
  35. } );
  36. }
  37. } );