8
0

delete.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /**
  2. * @license Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
  4. */
  5. /**
  6. * @module typing/delete
  7. */
  8. import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
  9. import DeleteCommand from './deletecommand';
  10. import DeleteObserver from './deleteobserver';
  11. import injectAndroidBackspaceMutationsHandling from './utils/injectandroidbackspacemutationshandling';
  12. /**
  13. * The delete and backspace feature. Handles the <kbd>Delete</kbd> and <kbd>Backspace</kbd> keys in the editor.
  14. *
  15. * @extends module:core/plugin~Plugin
  16. */
  17. export default class Delete extends Plugin {
  18. /**
  19. * @inheritDoc
  20. */
  21. static get pluginName() {
  22. return 'Delete';
  23. }
  24. init() {
  25. const editor = this.editor;
  26. const view = editor.editing.view;
  27. const viewDocument = view.document;
  28. view.addObserver( DeleteObserver );
  29. editor.commands.add( 'forwardDelete', new DeleteCommand( editor, 'forward' ) );
  30. editor.commands.add( 'delete', new DeleteCommand( editor, 'backward' ) );
  31. this.listenTo( viewDocument, 'delete', ( evt, data ) => {
  32. editor.execute( data.direction == 'forward' ? 'forwardDelete' : 'delete', { unit: data.unit, sequence: data.sequence } );
  33. data.preventDefault();
  34. view.scrollToTheSelection();
  35. } );
  36. injectAndroidBackspaceMutationsHandling( editor );
  37. }
  38. }