UNPKG

ckeditor5-image-upload-base64

Version:

The development environment of CKEditor 5 – the best browser-based rich text editor.

74 lines (61 loc) 1.8 kB
/** * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ /** * @module enter/shiftenter */ import ShiftEnterCommand from './shiftentercommand'; import EnterObserver from './enterobserver'; import Plugin from '@ckeditor/ckeditor5-core/src/plugin'; /** * 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. * * For more information about this feature see the {@glink api/enter package page}. * * @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', isInline: true } ); // Configure converters. conversion.for( 'upcast' ) .elementToElement( { model: 'softBreak', view: 'br' } ); conversion.for( 'downcast' ) .elementToElement( { model: 'softBreak', view: ( modelElement, { writer } ) => writer.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' } ); } }