8
0

editingcontroller.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /**
  2. * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. import EditingController from '/ckeditor5/engine/editingcontroller.js';
  6. import Document from '/ckeditor5/engine/model/document.js';
  7. import ModelPosition from '/ckeditor5/engine/model/position.js';
  8. import ModelRange from '/ckeditor5/engine/model/range.js';
  9. import ModelDocumentFragment from '/ckeditor5/engine/model/documentfragment.js';
  10. import { parse } from '/tests/engine/_utils/model.js';
  11. import BuildModelConverterFor from '/ckeditor5/engine/conversion/model-converter-builder.js';
  12. const model = new Document();
  13. window.model = model;
  14. const modelRoot = model.createRoot();
  15. const editing = new EditingController( model );
  16. editing.createRoot( document.getElementById( 'editor' ) );
  17. model.schema.registerItem( 'paragraph', '$block' );
  18. BuildModelConverterFor( editing.modelToView ).fromElement( 'paragraph' ).toElement( 'p' );
  19. const modelData = new ModelDocumentFragment( parse(
  20. '<paragraph>foo</paragraph>' +
  21. '<paragraph></paragraph>' +
  22. '<paragraph>bar</paragraph>'
  23. )._children );
  24. model.enqueueChanges( () => {
  25. model.batch().insert( ModelPosition.createAt( modelRoot, 0 ), modelData );
  26. model.selection.addRange( ModelRange.createFromParentsAndOffsets(
  27. modelRoot.getChild( 0 ), 0, modelRoot.getChild( 0 ), 0 ) );
  28. } );
  29. // enter
  30. editing.view.on( 'keydown', ( evt, data ) => {
  31. if ( data.keyCode == 13 ) {
  32. model.enqueueChanges( () => {
  33. model.batch().split( model.selection.getFirstPosition() );
  34. } );
  35. }
  36. } );
  37. // delete
  38. editing.view.on( 'keydown', ( evt, data ) => {
  39. if ( data.keyCode == 46 ) {
  40. model.enqueueChanges( () => {
  41. model.batch().remove( ModelRange.createFromPositionAndShift( model.selection.getFirstPosition(), 1 ) );
  42. } );
  43. }
  44. } );