8
0

editingcontroller.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. 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( model.getRoot(), 0 ), modelData );
  27. } );
  28. // enter
  29. editing.view.on( 'keydown', ( evt, data ) => {
  30. if ( data.keyCode == 13 ) {
  31. model.enqueueChanges( () => {
  32. model.batch().split( model.selection.getFirstPosition() );
  33. } );
  34. }
  35. } );
  36. // delete
  37. editing.view.on( 'keydown', ( evt, data ) => {
  38. if ( data.keyCode == 46 ) {
  39. model.enqueueChanges( () => {
  40. model.batch().remove( ModelRange.createFromPositionAndShift( model.selection.getFirstPosition(), 1 ) );
  41. } );
  42. }
  43. } );