editingcontroller.js 1.8 KB

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