| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- /**
- * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md.
- */
- /**
- * @module enter/shiftenter
- */
- import ShiftEnterCommand from './shiftentercommand';
- import EnterObserver from './enterobserver';
- import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
- import { upcastElementToElement } from '@ckeditor/ckeditor5-engine/src/conversion/upcast-converters';
- import { downcastElementToElement } from '@ckeditor/ckeditor5-engine/src/conversion/downcast-converters';
- /**
- * This plugin handles the <kbd>Shift</kbd>+<kbd>Enter</kbd> keystroke (soft line break) in the editor.
- *
- * See also the {@link module:enter/enter~Enter} plugin.
- *
- * @extends module:core/plugin~Plugin
- */
- export default class ShiftEnter extends Plugin {
- /**
- * @inheritDoc
- */
- static get pluginName() {
- return 'ShiftEnter';
- }
- init() {
- const editor = this.editor;
- const schema = editor.model.schema;
- const conversion = editor.conversion;
- const view = editor.editing.view;
- const viewDocument = view.document;
- // Configure the schema.
- schema.register( 'softBreak', {
- allowWhere: '$text'
- } );
- // Configure converters.
- conversion.for( 'upcast' )
- .add( upcastElementToElement( {
- model: 'softBreak',
- view: 'br'
- } ) );
- conversion.for( 'downcast' )
- .add( downcastElementToElement( {
- model: 'softBreak',
- view: ( modelElement, viewWriter ) => viewWriter.createEmptyElement( 'br' )
- } ) );
- view.addObserver( EnterObserver );
- editor.commands.add( 'shiftEnter', new ShiftEnterCommand( editor ) );
- this.listenTo( viewDocument, 'enter', ( evt, data ) => {
- data.preventDefault();
- // The hard enter key is handled by the Enter plugin.
- if ( !data.isSoft ) {
- return;
- }
- editor.execute( 'shiftEnter' );
- view.scrollToTheSelection();
- }, { priority: 'low' } );
- }
- }
|