@ckeditor/ckeditor5-enter 48.0.1 → 48.1.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -271,10 +271,7 @@ const ENTER_EVENT_TYPES = {
271
271
  const endElement = range.end.parent;
272
272
  const isContainedWithinOneElement = startElement == endElement;
273
273
  if (isSelectionEmpty) {
274
- const attributesToCopy = getCopyOnEnterAttributes(model.schema, selection.getAttributes());
275
- insertBreak(model, writer, range.end);
276
- writer.removeSelectionAttribute(selection.getAttributeKeys());
277
- writer.setSelectionAttribute(attributesToCopy);
274
+ insertBreak(model, writer, range.end, selection.getAttributes());
278
275
  } else {
279
276
  const leaveUnmerged = !(range.start.isAtStart && range.end.isAtEnd);
280
277
  model.deleteContent(selection, {
@@ -284,7 +281,7 @@ const ENTER_EVENT_TYPES = {
284
281
  //
285
282
  // <h>x[xx]x</h> -> <h>x^x</h> -> <h>x<br>^x</h>
286
283
  if (isContainedWithinOneElement) {
287
- insertBreak(model, writer, selection.focus);
284
+ insertBreak(model, writer, selection.focus, selection.getAttributes());
288
285
  } else {
289
286
  // Move the selection to the 2nd element (last step of the example above).
290
287
  if (leaveUnmerged) {
@@ -293,8 +290,11 @@ const ENTER_EVENT_TYPES = {
293
290
  }
294
291
  }
295
292
  }
296
- function insertBreak(model, writer, position) {
297
- const breakLineElement = writer.createElement('softBreak');
293
+ /**
294
+ * Inserts a softBreak with applicable attributes.
295
+ */ function insertBreak(model, writer, position, selectionAttributes) {
296
+ const attributes = Array.from(getCopyOnEnterAttributes(model.schema, selectionAttributes));
297
+ const breakLineElement = writer.createElement('softBreak', attributes);
298
298
  model.insertContent(breakLineElement, position);
299
299
  writer.setSelection(breakLineElement, 'after');
300
300
  }
@@ -339,6 +339,7 @@ function insertBreak(model, writer, position) {
339
339
  // Configure the schema.
340
340
  schema.register('softBreak', {
341
341
  allowWhere: '$text',
342
+ allowAttributesOf: '$text',
342
343
  isInline: true
343
344
  });
344
345
  // Configure converters.
@@ -352,6 +353,7 @@ function insertBreak(model, writer, position) {
352
353
  });
353
354
  view.addObserver(EnterObserver);
354
355
  editor.commands.add('shiftEnter', new ShiftEnterCommand(editor));
356
+ editor.model.document.registerPostFixer((writer)=>removeStaleSoftBreakAttributes(writer));
355
357
  this.listenTo(viewDocument, 'enter', (evt, data)=>{
356
358
  // When not in composition, we handle the action, so prevent the default one.
357
359
  // When in composition, it's the browser who modify the DOM (renderer is disabled).
@@ -378,6 +380,49 @@ function insertBreak(model, writer, position) {
378
380
  });
379
381
  }
380
382
  }
383
+ /**
384
+ * The post-fixer that removes attributes from stale soft-break elements.
385
+ */ function removeStaleSoftBreakAttributes(writer) {
386
+ const parentsToCheck = new Set();
387
+ for (const change of writer.model.document.differ.getChanges()){
388
+ if (change.type == 'insert' || change.type == 'remove') {
389
+ if (change.position.parent.is('element')) {
390
+ parentsToCheck.add(change.position.parent);
391
+ }
392
+ } else if (change.type == 'attribute') {
393
+ if (change.range.start.parent.is('element')) {
394
+ parentsToCheck.add(change.range.start.parent);
395
+ }
396
+ }
397
+ }
398
+ let wasChanged = false;
399
+ for (const parent of parentsToCheck){
400
+ // Just a sibling nodes check. We do not need to check attributes of nested elements.
401
+ for (const child of parent.getChildren()){
402
+ // Find a softBreak element.
403
+ if (!child.is('element', 'softBreak')) {
404
+ continue;
405
+ }
406
+ const nextSibling = child.nextSibling;
407
+ // Do not remove attributes when softBreak is the last element or there is some element after it.
408
+ if (!nextSibling || nextSibling.is('element')) {
409
+ continue;
410
+ }
411
+ // Remove the attribute if the next sibling does not have the same attribute.
412
+ const attributesToRemove = Array.from(child.getAttributes()).filter(([key, value])=>!hasSameAttribute(nextSibling, key, value));
413
+ for (const [key] of attributesToRemove){
414
+ writer.removeAttribute(key, child);
415
+ wasChanged = true;
416
+ }
417
+ }
418
+ }
419
+ return wasChanged;
420
+ }
421
+ /**
422
+ * Returns `true` if the given node has the same attribute as the one provided in the parameters.
423
+ */ function hasSameAttribute(node, key, value) {
424
+ return node?.getAttribute(key) === value;
425
+ }
381
426
 
382
427
  export { Enter, EnterCommand, EnterObserver, ShiftEnter, ShiftEnterCommand, getCopyOnEnterAttributes as _getCopyOnEnterAttributes };
383
428
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.js","../src/utils.ts","../src/entercommand.ts","../src/enterobserver.ts","../src/enter.ts","../src/shiftentercommand.ts","../src/shiftenter.ts"],"names":["getCopyOnEnterAttributes","schema","allAttributes","attribute","getAttributeProperties","copyOnEnter","EnterCommand","Command","execute","editor","model","change","writer","enterBlock","fire","selection","document","isSelectionEmpty","isCollapsed","range","getFirstRange","startElement","start","parent","endElement","end","isLimit","deleteContent","attributesToCopy","getAttributes","splitBlock","setSelectionAttribute","leaveUnmerged","isAtStart","isAtEnd","isContainedWithinOneElement","focus","setSelection","splitPos","split","nextSibling","ENTER_EVENT_TYPES","insertParagraph","isSoft","insertLineBreak","EnterObserver","Observer","view","doc","shiftPressed","on","evt","data","shiftKey","isEnabled","inputType","env","isSafari","domEvent","enterEventSpec","event","BubblingEventInfo","targetRanges","ViewDocumentDomEventData","stop","called","observe","stopObserving","Enter","Plugin","pluginName","isOfficialPlugin","init","editing","viewDocument","t","addObserver","commands","add","listenTo","isComposing","preventDefault","scrollToTheSelection","priority","accessibility","addKeystrokeInfos","keystrokes","label","keystroke","ShiftEnterCommand","softBreakAction","refresh","rangeCount","anchorPos","anchor","checkChild","isInsideLimitElement","insertBreak","removeSelectionAttribute","getAttributeKeys","position","breakLineElement","createElement","insertContent","element","is","ShiftEnter","conversion","register","allowWhere","isInline","for","elementToElement","modelElement","createEmptyElement"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Command, Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { Observer, BubblingEventInfo, ViewDocumentDomEventData } from '@ckeditor/ckeditor5-engine/dist/index.js';\nimport { env } from '@ckeditor/ckeditor5-utils/dist/index.js';\n\n/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */ /**\n * @module enter/utils\n */ /**\n * Returns attributes that should be preserved on the enter keystroke.\n *\n * Filtering is realized based on `copyOnEnter` attribute property. Read more about attribute properties\n * {@link module:engine/model/schema~ModelSchema#setAttributeProperties here}.\n *\n * @param schema Model's schema.\n * @param allAttributes Attributes to filter.\n * @internal\n */ function* getCopyOnEnterAttributes(schema, allAttributes) {\n for (const attribute of allAttributes){\n if (attribute && schema.getAttributeProperties(attribute[0]).copyOnEnter) {\n yield attribute;\n }\n }\n}\n\n/**\n * Enter command used by the {@link module:enter/enter~Enter Enter feature} to handle the <kbd>Enter</kbd> keystroke.\n */ class EnterCommand extends Command {\n /**\n\t * @inheritDoc\n\t */ execute() {\n this.editor.model.change((writer)=>{\n this.enterBlock(writer);\n this.fire('afterExecute', {\n writer\n });\n });\n }\n /**\n\t * Splits a block where the document selection is placed, in the way how the <kbd>Enter</kbd> key is expected to work:\n\t *\n\t * ```\n\t * <p>Foo[]bar</p> -> <p>Foo</p><p>[]bar</p>\n\t * <p>Foobar[]</p> -> <p>Foobar</p><p>[]</p>\n\t * <p>Fo[ob]ar</p> -> <p>Fo</p><p>[]ar</p>\n\t * ```\n\t *\n\t * In some cases, the split will not happen:\n\t *\n\t * ```\n\t * // The selection parent is a limit element:\n\t * <figcaption>A[bc]d</figcaption> -> <figcaption>A[]d</figcaption>\n\t *\n\t * // The selection spans over multiple elements:\n\t * <h>x[x</h><p>y]y<p> -> <h>x</h><p>[]y</p>\n\t * ```\n\t *\n\t * @param writer Writer to use when performing the enter action.\n\t * @returns Boolean indicating if the block was split.\n\t */ enterBlock(writer) {\n const model = this.editor.model;\n const selection = model.document.selection;\n const schema = model.schema;\n const isSelectionEmpty = selection.isCollapsed;\n const range = selection.getFirstRange();\n const startElement = range.start.parent;\n const endElement = range.end.parent;\n // Don't touch the roots and other limit elements.\n if (schema.isLimit(startElement) || schema.isLimit(endElement)) {\n // Delete the selected content but only if inside a single limit element.\n // Abort, when crossing limit elements boundary (e.g. <limit1>x[x</limit1>donttouchme<limit2>y]y</limit2>).\n // This is an edge case and it's hard to tell what should actually happen because such a selection\n // is not entirely valid.\n if (!isSelectionEmpty && startElement == endElement) {\n model.deleteContent(selection);\n }\n return false;\n }\n if (isSelectionEmpty) {\n const attributesToCopy = getCopyOnEnterAttributes(writer.model.schema, selection.getAttributes());\n splitBlock(writer, range.start);\n writer.setSelectionAttribute(attributesToCopy);\n return true;\n } else {\n const leaveUnmerged = !(range.start.isAtStart && range.end.isAtEnd);\n const isContainedWithinOneElement = startElement == endElement;\n model.deleteContent(selection, {\n leaveUnmerged\n });\n if (leaveUnmerged) {\n // Partially selected elements.\n //\n // <h>x[xx]x</h>\t\t-> <h>x^x</h>\t\t\t-> <h>x</h><h>^x</h>\n if (isContainedWithinOneElement) {\n splitBlock(writer, selection.focus);\n return true;\n } else {\n writer.setSelection(endElement, 0);\n }\n }\n }\n return false;\n }\n}\nfunction splitBlock(writer, splitPos) {\n writer.split(splitPos);\n writer.setSelection(splitPos.parent.nextSibling, 0);\n}\n\nconst ENTER_EVENT_TYPES = {\n insertParagraph: {\n isSoft: false\n },\n insertLineBreak: {\n isSoft: true\n }\n};\n/**\n * Enter observer introduces the {@link module:engine/view/document~ViewDocument#event:enter `Document#enter`} event.\n */ class EnterObserver extends Observer {\n /**\n\t * @inheritDoc\n\t */ constructor(view){\n super(view);\n const doc = this.document;\n let shiftPressed = false;\n doc.on('keydown', (evt, data)=>{\n shiftPressed = data.shiftKey;\n });\n doc.on('beforeinput', (evt, data)=>{\n if (!this.isEnabled) {\n return;\n }\n let inputType = data.inputType;\n // See https://github.com/ckeditor/ckeditor5/issues/13321.\n if (env.isSafari && shiftPressed && inputType == 'insertParagraph') {\n inputType = 'insertLineBreak';\n }\n const domEvent = data.domEvent;\n const enterEventSpec = ENTER_EVENT_TYPES[inputType];\n if (!enterEventSpec) {\n return;\n }\n const event = new BubblingEventInfo(doc, 'enter', data.targetRanges[0]);\n doc.fire(event, new ViewDocumentDomEventData(view, domEvent, {\n isSoft: enterEventSpec.isSoft\n }));\n // Stop `beforeinput` event if `enter` event was stopped.\n // https://github.com/ckeditor/ckeditor5/issues/753\n if (event.stop.called) {\n evt.stop();\n }\n });\n }\n /**\n\t * @inheritDoc\n\t */ observe() {}\n /**\n\t * @inheritDoc\n\t */ stopObserving() {}\n}\n\n/**\n * This plugin handles the <kbd>Enter</kbd> keystroke (hard line break) in the editor.\n *\n * See also the {@link module:enter/shiftenter~ShiftEnter} plugin.\n *\n * For more information about this feature see the {@glink api/enter package page}.\n */ class Enter extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'Enter';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n init() {\n const editor = this.editor;\n const view = editor.editing.view;\n const viewDocument = view.document;\n const t = this.editor.t;\n view.addObserver(EnterObserver);\n editor.commands.add('enter', new EnterCommand(editor));\n this.listenTo(viewDocument, 'enter', (evt, data)=>{\n // When not in composition, we handle the action, so prevent the default one.\n // When in composition, it's the browser who modify the DOM (renderer is disabled).\n if (!viewDocument.isComposing) {\n data.preventDefault();\n }\n // The soft enter key is handled by the ShiftEnter plugin.\n if (data.isSoft) {\n return;\n }\n editor.execute('enter');\n view.scrollToTheSelection();\n }, {\n priority: 'low'\n });\n // Add the information about the keystroke to the accessibility database.\n editor.accessibility.addKeystrokeInfos({\n keystrokes: [\n {\n label: t('Insert a hard break (a new paragraph)'),\n keystroke: 'Enter'\n }\n ]\n });\n }\n}\n\n/**\n * ShiftEnter command. It is used by the {@link module:enter/shiftenter~ShiftEnter ShiftEnter feature} to handle\n * the <kbd>Shift</kbd>+<kbd>Enter</kbd> keystroke.\n */ class ShiftEnterCommand extends Command {\n /**\n\t * @inheritDoc\n\t */ execute() {\n const model = this.editor.model;\n const doc = model.document;\n model.change((writer)=>{\n softBreakAction(model, writer, doc.selection);\n this.fire('afterExecute', {\n writer\n });\n });\n }\n /**\n\t * @inheritDoc\n\t */ refresh() {\n const model = this.editor.model;\n const doc = model.document;\n this.isEnabled = isEnabled(model.schema, doc.selection);\n }\n}\n/**\n * Checks whether the ShiftEnter command should be enabled in the specified selection.\n */ function isEnabled(schema, selection) {\n // At this moment it is okay to support single range selections only.\n // But in the future we may need to change that.\n if (selection.rangeCount > 1) {\n return false;\n }\n const anchorPos = selection.anchor;\n // Check whether the break element can be inserted in the current selection anchor.\n if (!anchorPos || !schema.checkChild(anchorPos, 'softBreak')) {\n return false;\n }\n const range = selection.getFirstRange();\n const startElement = range.start.parent;\n const endElement = range.end.parent;\n // Do not modify the content if selection is cross-limit elements.\n if ((isInsideLimitElement(startElement, schema) || isInsideLimitElement(endElement, schema)) && startElement !== endElement) {\n return false;\n }\n return true;\n}\n/**\n * Creates a break in the way that the <kbd>Shift</kbd>+<kbd>Enter</kbd> keystroke is expected to work.\n */ function softBreakAction(model, writer, selection) {\n const isSelectionEmpty = selection.isCollapsed;\n const range = selection.getFirstRange();\n const startElement = range.start.parent;\n const endElement = range.end.parent;\n const isContainedWithinOneElement = startElement == endElement;\n if (isSelectionEmpty) {\n const attributesToCopy = getCopyOnEnterAttributes(model.schema, selection.getAttributes());\n insertBreak(model, writer, range.end);\n writer.removeSelectionAttribute(selection.getAttributeKeys());\n writer.setSelectionAttribute(attributesToCopy);\n } else {\n const leaveUnmerged = !(range.start.isAtStart && range.end.isAtEnd);\n model.deleteContent(selection, {\n leaveUnmerged\n });\n // Selection within one element:\n //\n // <h>x[xx]x</h>\t\t-> <h>x^x</h>\t\t\t-> <h>x<br>^x</h>\n if (isContainedWithinOneElement) {\n insertBreak(model, writer, selection.focus);\n } else {\n // Move the selection to the 2nd element (last step of the example above).\n if (leaveUnmerged) {\n writer.setSelection(endElement, 0);\n }\n }\n }\n}\nfunction insertBreak(model, writer, position) {\n const breakLineElement = writer.createElement('softBreak');\n model.insertContent(breakLineElement, position);\n writer.setSelection(breakLineElement, 'after');\n}\n/**\n * Checks whether the specified `element` is a child of the limit element.\n *\n * Checking whether the `<p>` element is inside a limit element:\n * - `<$root><p>Text.</p></$root> => false`\n * - `<$root><limitElement><p>Text</p></limitElement></$root> => true`\n */ function isInsideLimitElement(element, schema) {\n // `$root` is a limit element but in this case is an invalid element.\n if (element.is('rootElement')) {\n return false;\n }\n return schema.isLimit(element) || isInsideLimitElement(element.parent, schema);\n}\n\n/**\n * This plugin handles the <kbd>Shift</kbd>+<kbd>Enter</kbd> keystroke (soft line break) in the editor.\n *\n * See also the {@link module:enter/enter~Enter} plugin.\n *\n * For more information about this feature see the {@glink api/enter package page}.\n */ class ShiftEnter extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'ShiftEnter';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n init() {\n const editor = this.editor;\n const schema = editor.model.schema;\n const conversion = editor.conversion;\n const view = editor.editing.view;\n const viewDocument = view.document;\n const t = this.editor.t;\n // Configure the schema.\n schema.register('softBreak', {\n allowWhere: '$text',\n isInline: true\n });\n // Configure converters.\n conversion.for('upcast').elementToElement({\n model: 'softBreak',\n view: 'br'\n });\n conversion.for('downcast').elementToElement({\n model: 'softBreak',\n view: (modelElement, { writer })=>writer.createEmptyElement('br')\n });\n view.addObserver(EnterObserver);\n editor.commands.add('shiftEnter', new ShiftEnterCommand(editor));\n this.listenTo(viewDocument, 'enter', (evt, data)=>{\n // When not in composition, we handle the action, so prevent the default one.\n // When in composition, it's the browser who modify the DOM (renderer is disabled).\n if (!viewDocument.isComposing) {\n data.preventDefault();\n }\n // The hard enter key is handled by the Enter plugin.\n if (!data.isSoft) {\n return;\n }\n editor.execute('shiftEnter');\n view.scrollToTheSelection();\n }, {\n priority: 'low'\n });\n // Add the information about the keystroke to the accessibility database.\n editor.accessibility.addKeystrokeInfos({\n keystrokes: [\n {\n label: t('Insert a soft break (a <code>&lt;br&gt;</code> element)'),\n keystroke: 'Shift+Enter'\n }\n ]\n });\n }\n}\n\nexport { Enter, EnterCommand, EnterObserver, ShiftEnter, ShiftEnterCommand, getCopyOnEnterAttributes as _getCopyOnEnterAttributes };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module enter/utils\n */\n\nimport type { ModelSchema } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Returns attributes that should be preserved on the enter keystroke.\n *\n * Filtering is realized based on `copyOnEnter` attribute property. Read more about attribute properties\n * {@link module:engine/model/schema~ModelSchema#setAttributeProperties here}.\n *\n * @param schema Model's schema.\n * @param allAttributes Attributes to filter.\n * @internal\n */\nexport function* getCopyOnEnterAttributes(\n\tschema: ModelSchema,\n\tallAttributes: Iterable<[ string, unknown ]>\n): IterableIterator<[ string, unknown ]> {\n\tfor ( const attribute of allAttributes ) {\n\t\tif ( attribute && schema.getAttributeProperties( attribute[ 0 ] ).copyOnEnter ) {\n\t\t\tyield attribute;\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module enter/entercommand\n */\n\nimport { Command } from '@ckeditor/ckeditor5-core';\nimport { getCopyOnEnterAttributes } from './utils.js';\n\nimport type {\n\tModelElement,\n\tModelPosition,\n\tModelWriter\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * Enter command used by the {@link module:enter/enter~Enter Enter feature} to handle the <kbd>Enter</kbd> keystroke.\n */\nexport class EnterCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tthis.editor.model.change( writer => {\n\t\t\tthis.enterBlock( writer );\n\t\t\tthis.fire<EnterCommandAfterExecuteEvent>( 'afterExecute', { writer } );\n\t\t} );\n\t}\n\n\t/**\n\t * Splits a block where the document selection is placed, in the way how the <kbd>Enter</kbd> key is expected to work:\n\t *\n\t * ```\n\t * <p>Foo[]bar</p> -> <p>Foo</p><p>[]bar</p>\n\t * <p>Foobar[]</p> -> <p>Foobar</p><p>[]</p>\n\t * <p>Fo[ob]ar</p> -> <p>Fo</p><p>[]ar</p>\n\t * ```\n\t *\n\t * In some cases, the split will not happen:\n\t *\n\t * ```\n\t * // The selection parent is a limit element:\n\t * <figcaption>A[bc]d</figcaption> -> <figcaption>A[]d</figcaption>\n\t *\n\t * // The selection spans over multiple elements:\n\t * <h>x[x</h><p>y]y<p> -> <h>x</h><p>[]y</p>\n\t * ```\n\t *\n\t * @param writer Writer to use when performing the enter action.\n\t * @returns Boolean indicating if the block was split.\n\t */\n\tpublic enterBlock( writer: ModelWriter ): boolean {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst schema = model.schema;\n\t\tconst isSelectionEmpty = selection.isCollapsed;\n\t\tconst range = selection.getFirstRange()!;\n\t\tconst startElement = range.start.parent as ModelElement;\n\t\tconst endElement = range.end.parent as ModelElement;\n\n\t\t// Don't touch the roots and other limit elements.\n\t\tif ( schema.isLimit( startElement ) || schema.isLimit( endElement ) ) {\n\t\t\t// Delete the selected content but only if inside a single limit element.\n\t\t\t// Abort, when crossing limit elements boundary (e.g. <limit1>x[x</limit1>donttouchme<limit2>y]y</limit2>).\n\t\t\t// This is an edge case and it's hard to tell what should actually happen because such a selection\n\t\t\t// is not entirely valid.\n\t\t\tif ( !isSelectionEmpty && startElement == endElement ) {\n\t\t\t\tmodel.deleteContent( selection );\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( isSelectionEmpty ) {\n\t\t\tconst attributesToCopy = getCopyOnEnterAttributes( writer.model.schema, selection.getAttributes() );\n\n\t\t\tsplitBlock( writer, range.start );\n\t\t\twriter.setSelectionAttribute( attributesToCopy );\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tconst leaveUnmerged = !( range.start.isAtStart && range.end.isAtEnd );\n\t\t\tconst isContainedWithinOneElement = ( startElement == endElement );\n\n\t\t\tmodel.deleteContent( selection, { leaveUnmerged } );\n\n\t\t\tif ( leaveUnmerged ) {\n\t\t\t\t// Partially selected elements.\n\t\t\t\t//\n\t\t\t\t// <h>x[xx]x</h>\t\t-> <h>x^x</h>\t\t\t-> <h>x</h><h>^x</h>\n\t\t\t\tif ( isContainedWithinOneElement ) {\n\t\t\t\t\tsplitBlock( writer, selection.focus! );\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// Selection over multiple elements.\n\t\t\t\t//\n\t\t\t\t// <h>x[x</h><p>y]y<p>\t-> <h>x^</h><p>y</p>\t-> <h>x</h><p>^y</p>\n\t\t\t\telse {\n\t\t\t\t\twriter.setSelection( endElement, 0 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n}\n\n/**\n * Fired after the the {@link module:enter/entercommand~EnterCommand} is finished executing.\n *\n * @eventName ~EnterCommand#afterExecute\n */\nexport type EnterCommandAfterExecuteEvent = {\n\tname: 'afterExecute';\n\targs: [ { writer: ModelWriter } ];\n};\n\nfunction splitBlock( writer: ModelWriter, splitPos: ModelPosition ): void {\n\twriter.split( splitPos );\n\twriter.setSelection( splitPos.parent.nextSibling!, 0 );\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module enter/enterobserver\n */\n\nimport {\n\tObserver,\n\tViewDocumentDomEventData,\n\tBubblingEventInfo,\n\ttype EditingView,\n\ttype ViewDocumentInputEvent,\n\ttype BubblingEvent,\n\ttype ViewDocumentKeyDownEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport { env } from '@ckeditor/ckeditor5-utils';\n\nconst ENTER_EVENT_TYPES: Record<string, { isSoft: boolean }> = {\n\tinsertParagraph: { isSoft: false },\n\tinsertLineBreak: { isSoft: true }\n};\n\n/**\n * Enter observer introduces the {@link module:engine/view/document~ViewDocument#event:enter `Document#enter`} event.\n */\nexport class EnterObserver extends Observer {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( view: EditingView ) {\n\t\tsuper( view );\n\n\t\tconst doc = this.document;\n\t\tlet shiftPressed = false;\n\n\t\tdoc.on<ViewDocumentKeyDownEvent>( 'keydown', ( evt, data ) => {\n\t\t\tshiftPressed = data.shiftKey;\n\t\t} );\n\n\t\tdoc.on<ViewDocumentInputEvent>( 'beforeinput', ( evt, data ) => {\n\t\t\tif ( !this.isEnabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet inputType = data.inputType;\n\n\t\t\t// See https://github.com/ckeditor/ckeditor5/issues/13321.\n\t\t\tif ( env.isSafari && shiftPressed && inputType == 'insertParagraph' ) {\n\t\t\t\tinputType = 'insertLineBreak';\n\t\t\t}\n\n\t\t\tconst domEvent = data.domEvent;\n\t\t\tconst enterEventSpec = ENTER_EVENT_TYPES[ inputType ];\n\n\t\t\tif ( !enterEventSpec ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst event = new BubblingEventInfo( doc, 'enter', data.targetRanges[ 0 ] );\n\n\t\t\tdoc.fire( event, new ViewDocumentDomEventData( view, domEvent, {\n\t\t\t\tisSoft: enterEventSpec.isSoft\n\t\t\t} ) );\n\n\t\t\t// Stop `beforeinput` event if `enter` event was stopped.\n\t\t\t// https://github.com/ckeditor/ckeditor5/issues/753\n\t\t\tif ( event.stop.called ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic observe(): void {}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic stopObserving(): void {}\n}\n\n/**\n * Fired when the user presses the <kbd>Enter</kbd> key.\n *\n * Note: This event is fired by the {@link module:enter/enterobserver~EnterObserver observer}\n * (usually registered by the {@link module:enter/enter~Enter Enter feature} and\n * {@link module:enter/shiftenter~ShiftEnter ShiftEnter feature}).\n *\n * @eventName module:engine/view/document~ViewDocument#enter\n */\nexport type ViewDocumentEnterEvent = BubblingEvent<{\n\tname: 'enter';\n\targs: [ ViewDocumentEnterEventData ];\n}>;\nexport interface ViewDocumentEnterEventData extends ViewDocumentDomEventData<InputEvent> {\n\n\t/**\n\t * Whether it is a soft enter (<kbd>Shift</kbd>+<kbd>Enter</kbd>) or a hard enter (<kbd>Enter</kbd>).\n\t */\n\tisSoft: boolean;\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module enter/enter\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport { EnterCommand } from './entercommand.js';\nimport { EnterObserver, type ViewDocumentEnterEvent } from './enterobserver.js';\n\n/**\n * This plugin handles the <kbd>Enter</kbd> keystroke (hard line break) in the editor.\n *\n * See also the {@link module:enter/shiftenter~ShiftEnter} plugin.\n *\n * For more information about this feature see the {@glink api/enter package page}.\n */\nexport class Enter extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Enter' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tconst t = this.editor.t;\n\n\t\tview.addObserver( EnterObserver );\n\n\t\teditor.commands.add( 'enter', new EnterCommand( editor ) );\n\n\t\tthis.listenTo<ViewDocumentEnterEvent>( viewDocument, 'enter', ( evt, data ) => {\n\t\t\t// When not in composition, we handle the action, so prevent the default one.\n\t\t\t// When in composition, it's the browser who modify the DOM (renderer is disabled).\n\t\t\tif ( !viewDocument.isComposing ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t}\n\n\t\t\t// The soft enter key is handled by the ShiftEnter plugin.\n\t\t\tif ( data.isSoft ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\teditor.execute( 'enter' );\n\n\t\t\tview.scrollToTheSelection();\n\t\t}, { priority: 'low' } );\n\n\t\t// Add the information about the keystroke to the accessibility database.\n\t\teditor.accessibility.addKeystrokeInfos( {\n\t\t\tkeystrokes: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Insert a hard break (a new paragraph)' ),\n\t\t\t\t\tkeystroke: 'Enter'\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module enter/shiftentercommand\n */\n\nimport { Command } from '@ckeditor/ckeditor5-core';\nimport { getCopyOnEnterAttributes } from './utils.js';\n\nimport type {\n\tModelDocumentSelection,\n\tModel,\n\tModelPosition,\n\tModelSchema,\n\tModelElement,\n\tModelWriter\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * ShiftEnter command. It is used by the {@link module:enter/shiftenter~ShiftEnter ShiftEnter feature} to handle\n * the <kbd>Shift</kbd>+<kbd>Enter</kbd> keystroke.\n */\nexport class ShiftEnterCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\n\t\tmodel.change( writer => {\n\t\t\tsoftBreakAction( model, writer, doc.selection );\n\t\t\tthis.fire<ShiftEnterCommandAfterExecuteEvent>( 'afterExecute', { writer } );\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\n\t\tthis.isEnabled = isEnabled( model.schema, doc.selection );\n\t}\n}\n\n/**\n * Fired after the the {@link module:enter/shiftentercommand~ShiftEnterCommand} is finished executing.\n *\n * @eventName ~ShiftEnterCommand#afterExecute\n */\nexport type ShiftEnterCommandAfterExecuteEvent = {\n\tname: 'afterExecute';\n\targs: [ { writer: ModelWriter } ];\n};\n\n/**\n * Checks whether the ShiftEnter command should be enabled in the specified selection.\n */\nfunction isEnabled( schema: ModelSchema, selection: ModelDocumentSelection ): boolean {\n\t// At this moment it is okay to support single range selections only.\n\t// But in the future we may need to change that.\n\tif ( selection.rangeCount > 1 ) {\n\t\treturn false;\n\t}\n\n\tconst anchorPos = selection.anchor;\n\n\t// Check whether the break element can be inserted in the current selection anchor.\n\tif ( !anchorPos || !schema.checkChild( anchorPos, 'softBreak' ) ) {\n\t\treturn false;\n\t}\n\n\tconst range = selection.getFirstRange()!;\n\tconst startElement = range.start.parent as ModelElement;\n\tconst endElement = range.end.parent as ModelElement;\n\n\t// Do not modify the content if selection is cross-limit elements.\n\tif ( ( isInsideLimitElement( startElement, schema ) || isInsideLimitElement( endElement, schema ) ) && startElement !== endElement ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n/**\n * Creates a break in the way that the <kbd>Shift</kbd>+<kbd>Enter</kbd> keystroke is expected to work.\n */\nfunction softBreakAction( model: Model, writer: ModelWriter, selection: ModelDocumentSelection ): void {\n\tconst isSelectionEmpty = selection.isCollapsed;\n\tconst range = selection.getFirstRange()!;\n\tconst startElement = range.start.parent as ModelElement;\n\tconst endElement = range.end.parent as ModelElement;\n\tconst isContainedWithinOneElement = ( startElement == endElement );\n\n\tif ( isSelectionEmpty ) {\n\t\tconst attributesToCopy = getCopyOnEnterAttributes( model.schema, selection.getAttributes() );\n\n\t\tinsertBreak( model, writer, range.end );\n\n\t\twriter.removeSelectionAttribute( selection.getAttributeKeys() );\n\t\twriter.setSelectionAttribute( attributesToCopy );\n\t} else {\n\t\tconst leaveUnmerged = !( range.start.isAtStart && range.end.isAtEnd );\n\n\t\tmodel.deleteContent( selection, { leaveUnmerged } );\n\n\t\t// Selection within one element:\n\t\t//\n\t\t// <h>x[xx]x</h>\t\t-> <h>x^x</h>\t\t\t-> <h>x<br>^x</h>\n\t\tif ( isContainedWithinOneElement ) {\n\t\t\tinsertBreak( model, writer, selection.focus! );\n\t\t}\n\t\t// Selection over multiple elements.\n\t\t//\n\t\t// <h>x[x</h><p>y]y<p>\t-> <h>x^</h><p>y</p>\t-> <h>x</h><p>^y</p>\n\t\t//\n\t\t// We chose not to insert a line break in this case because:\n\t\t//\n\t\t// * it's not a very common scenario,\n\t\t// * it actually surprised me when I saw the \"expected behavior\" in real life.\n\t\t//\n\t\t// It's ok if the user will need to be more specific where they want the <br> to be inserted.\n\t\telse {\n\t\t\t// Move the selection to the 2nd element (last step of the example above).\n\t\t\tif ( leaveUnmerged ) {\n\t\t\t\twriter.setSelection( endElement, 0 );\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction insertBreak( model: Model, writer: ModelWriter, position: ModelPosition ): void {\n\tconst breakLineElement = writer.createElement( 'softBreak' );\n\n\tmodel.insertContent( breakLineElement, position );\n\twriter.setSelection( breakLineElement, 'after' );\n}\n\n/**\n * Checks whether the specified `element` is a child of the limit element.\n *\n * Checking whether the `<p>` element is inside a limit element:\n * - `<$root><p>Text.</p></$root> => false`\n * - `<$root><limitElement><p>Text</p></limitElement></$root> => true`\n */\nfunction isInsideLimitElement( element: ModelElement, schema: ModelSchema ): boolean {\n\t// `$root` is a limit element but in this case is an invalid element.\n\tif ( element.is( 'rootElement' ) ) {\n\t\treturn false;\n\t}\n\n\treturn schema.isLimit( element ) || isInsideLimitElement( element.parent as ModelElement, schema );\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module enter/shiftenter\n */\n\nimport { ShiftEnterCommand } from './shiftentercommand.js';\nimport { EnterObserver, type ViewDocumentEnterEvent } from './enterobserver.js';\nimport { Plugin } from '@ckeditor/ckeditor5-core';\n\n/**\n * This plugin handles the <kbd>Shift</kbd>+<kbd>Enter</kbd> keystroke (soft line break) in the editor.\n *\n * See also the {@link module:enter/enter~Enter} plugin.\n *\n * For more information about this feature see the {@glink api/enter package page}.\n */\nexport class ShiftEnter extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ShiftEnter' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tconst conversion = editor.conversion;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tconst t = this.editor.t;\n\n\t\t// Configure the schema.\n\t\tschema.register( 'softBreak', {\n\t\t\tallowWhere: '$text',\n\t\t\tisInline: true\n\t\t} );\n\n\t\t// Configure converters.\n\t\tconversion.for( 'upcast' )\n\t\t\t.elementToElement( {\n\t\t\t\tmodel: 'softBreak',\n\t\t\t\tview: 'br'\n\t\t\t} );\n\n\t\tconversion.for( 'downcast' )\n\t\t\t.elementToElement( {\n\t\t\t\tmodel: 'softBreak',\n\t\t\t\tview: ( modelElement, { writer } ) => writer.createEmptyElement( 'br' )\n\t\t\t} );\n\n\t\tview.addObserver( EnterObserver );\n\n\t\teditor.commands.add( 'shiftEnter', new ShiftEnterCommand( editor ) );\n\n\t\tthis.listenTo<ViewDocumentEnterEvent>( viewDocument, 'enter', ( evt, data ) => {\n\t\t\t// When not in composition, we handle the action, so prevent the default one.\n\t\t\t// When in composition, it's the browser who modify the DOM (renderer is disabled).\n\t\t\tif ( !viewDocument.isComposing ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t}\n\n\t\t\t// The hard enter key is handled by the Enter plugin.\n\t\t\tif ( !data.isSoft ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\teditor.execute( 'shiftEnter' );\n\t\t\tview.scrollToTheSelection();\n\t\t}, { priority: 'low' } );\n\n\t\t// Add the information about the keystroke to the accessibility database.\n\t\teditor.accessibility.addKeystrokeInfos( {\n\t\t\tkeystrokes: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Insert a soft break (a <code>&lt;br&gt;</code> element)' ),\n\t\t\t\t\tkeystroke: 'Shift+Enter'\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\t}\n}\n"]}
1
+ {"version":3,"sources":["index.js","../src/utils.ts","../src/entercommand.ts","../src/enterobserver.ts","../src/enter.ts","../src/shiftentercommand.ts","../src/shiftenter.ts"],"names":["getCopyOnEnterAttributes","schema","allAttributes","attribute","getAttributeProperties","copyOnEnter","EnterCommand","Command","execute","editor","model","change","writer","enterBlock","fire","selection","document","isSelectionEmpty","isCollapsed","range","getFirstRange","startElement","start","parent","endElement","end","isLimit","deleteContent","attributesToCopy","getAttributes","splitBlock","setSelectionAttribute","leaveUnmerged","isAtStart","isAtEnd","isContainedWithinOneElement","focus","setSelection","splitPos","split","nextSibling","ENTER_EVENT_TYPES","insertParagraph","isSoft","insertLineBreak","EnterObserver","Observer","view","doc","shiftPressed","on","evt","data","shiftKey","isEnabled","inputType","env","isSafari","domEvent","enterEventSpec","event","BubblingEventInfo","targetRanges","ViewDocumentDomEventData","stop","called","observe","stopObserving","Enter","Plugin","pluginName","isOfficialPlugin","init","editing","viewDocument","t","addObserver","commands","add","listenTo","isComposing","preventDefault","scrollToTheSelection","priority","accessibility","addKeystrokeInfos","keystrokes","label","keystroke","ShiftEnterCommand","softBreakAction","refresh","rangeCount","anchorPos","anchor","checkChild","isInsideLimitElement","insertBreak","position","selectionAttributes","attributes","Array","from","breakLineElement","createElement","insertContent","element","is","ShiftEnter","conversion","register","allowWhere","allowAttributesOf","isInline","for","elementToElement","modelElement","createEmptyElement","registerPostFixer","removeStaleSoftBreakAttributes","parentsToCheck","Set","differ","getChanges","type","wasChanged","child","getChildren","attributesToRemove","filter","key","value","hasSameAttribute","removeAttribute","node","getAttribute"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Command, Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { Observer, BubblingEventInfo, ViewDocumentDomEventData } from '@ckeditor/ckeditor5-engine/dist/index.js';\nimport { env } from '@ckeditor/ckeditor5-utils/dist/index.js';\n\n/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */ /**\n * @module enter/utils\n */ /**\n * Returns attributes that should be preserved on the enter keystroke.\n *\n * Filtering is realized based on `copyOnEnter` attribute property. Read more about attribute properties\n * {@link module:engine/model/schema~ModelSchema#setAttributeProperties here}.\n *\n * @param schema Model's schema.\n * @param allAttributes Attributes to filter.\n * @internal\n */ function* getCopyOnEnterAttributes(schema, allAttributes) {\n for (const attribute of allAttributes){\n if (attribute && schema.getAttributeProperties(attribute[0]).copyOnEnter) {\n yield attribute;\n }\n }\n}\n\n/**\n * Enter command used by the {@link module:enter/enter~Enter Enter feature} to handle the <kbd>Enter</kbd> keystroke.\n */ class EnterCommand extends Command {\n /**\n\t * @inheritDoc\n\t */ execute() {\n this.editor.model.change((writer)=>{\n this.enterBlock(writer);\n this.fire('afterExecute', {\n writer\n });\n });\n }\n /**\n\t * Splits a block where the document selection is placed, in the way how the <kbd>Enter</kbd> key is expected to work:\n\t *\n\t * ```\n\t * <p>Foo[]bar</p> -> <p>Foo</p><p>[]bar</p>\n\t * <p>Foobar[]</p> -> <p>Foobar</p><p>[]</p>\n\t * <p>Fo[ob]ar</p> -> <p>Fo</p><p>[]ar</p>\n\t * ```\n\t *\n\t * In some cases, the split will not happen:\n\t *\n\t * ```\n\t * // The selection parent is a limit element:\n\t * <figcaption>A[bc]d</figcaption> -> <figcaption>A[]d</figcaption>\n\t *\n\t * // The selection spans over multiple elements:\n\t * <h>x[x</h><p>y]y<p> -> <h>x</h><p>[]y</p>\n\t * ```\n\t *\n\t * @param writer Writer to use when performing the enter action.\n\t * @returns Boolean indicating if the block was split.\n\t */ enterBlock(writer) {\n const model = this.editor.model;\n const selection = model.document.selection;\n const schema = model.schema;\n const isSelectionEmpty = selection.isCollapsed;\n const range = selection.getFirstRange();\n const startElement = range.start.parent;\n const endElement = range.end.parent;\n // Don't touch the roots and other limit elements.\n if (schema.isLimit(startElement) || schema.isLimit(endElement)) {\n // Delete the selected content but only if inside a single limit element.\n // Abort, when crossing limit elements boundary (e.g. <limit1>x[x</limit1>donttouchme<limit2>y]y</limit2>).\n // This is an edge case and it's hard to tell what should actually happen because such a selection\n // is not entirely valid.\n if (!isSelectionEmpty && startElement == endElement) {\n model.deleteContent(selection);\n }\n return false;\n }\n if (isSelectionEmpty) {\n const attributesToCopy = getCopyOnEnterAttributes(writer.model.schema, selection.getAttributes());\n splitBlock(writer, range.start);\n writer.setSelectionAttribute(attributesToCopy);\n return true;\n } else {\n const leaveUnmerged = !(range.start.isAtStart && range.end.isAtEnd);\n const isContainedWithinOneElement = startElement == endElement;\n model.deleteContent(selection, {\n leaveUnmerged\n });\n if (leaveUnmerged) {\n // Partially selected elements.\n //\n // <h>x[xx]x</h>\t\t-> <h>x^x</h>\t\t\t-> <h>x</h><h>^x</h>\n if (isContainedWithinOneElement) {\n splitBlock(writer, selection.focus);\n return true;\n } else {\n writer.setSelection(endElement, 0);\n }\n }\n }\n return false;\n }\n}\nfunction splitBlock(writer, splitPos) {\n writer.split(splitPos);\n writer.setSelection(splitPos.parent.nextSibling, 0);\n}\n\nconst ENTER_EVENT_TYPES = {\n insertParagraph: {\n isSoft: false\n },\n insertLineBreak: {\n isSoft: true\n }\n};\n/**\n * Enter observer introduces the {@link module:engine/view/document~ViewDocument#event:enter `Document#enter`} event.\n */ class EnterObserver extends Observer {\n /**\n\t * @inheritDoc\n\t */ constructor(view){\n super(view);\n const doc = this.document;\n let shiftPressed = false;\n doc.on('keydown', (evt, data)=>{\n shiftPressed = data.shiftKey;\n });\n doc.on('beforeinput', (evt, data)=>{\n if (!this.isEnabled) {\n return;\n }\n let inputType = data.inputType;\n // See https://github.com/ckeditor/ckeditor5/issues/13321.\n if (env.isSafari && shiftPressed && inputType == 'insertParagraph') {\n inputType = 'insertLineBreak';\n }\n const domEvent = data.domEvent;\n const enterEventSpec = ENTER_EVENT_TYPES[inputType];\n if (!enterEventSpec) {\n return;\n }\n const event = new BubblingEventInfo(doc, 'enter', data.targetRanges[0]);\n doc.fire(event, new ViewDocumentDomEventData(view, domEvent, {\n isSoft: enterEventSpec.isSoft\n }));\n // Stop `beforeinput` event if `enter` event was stopped.\n // https://github.com/ckeditor/ckeditor5/issues/753\n if (event.stop.called) {\n evt.stop();\n }\n });\n }\n /**\n\t * @inheritDoc\n\t */ observe() {}\n /**\n\t * @inheritDoc\n\t */ stopObserving() {}\n}\n\n/**\n * This plugin handles the <kbd>Enter</kbd> keystroke (hard line break) in the editor.\n *\n * See also the {@link module:enter/shiftenter~ShiftEnter} plugin.\n *\n * For more information about this feature see the {@glink api/enter package page}.\n */ class Enter extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'Enter';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n init() {\n const editor = this.editor;\n const view = editor.editing.view;\n const viewDocument = view.document;\n const t = this.editor.t;\n view.addObserver(EnterObserver);\n editor.commands.add('enter', new EnterCommand(editor));\n this.listenTo(viewDocument, 'enter', (evt, data)=>{\n // When not in composition, we handle the action, so prevent the default one.\n // When in composition, it's the browser who modify the DOM (renderer is disabled).\n if (!viewDocument.isComposing) {\n data.preventDefault();\n }\n // The soft enter key is handled by the ShiftEnter plugin.\n if (data.isSoft) {\n return;\n }\n editor.execute('enter');\n view.scrollToTheSelection();\n }, {\n priority: 'low'\n });\n // Add the information about the keystroke to the accessibility database.\n editor.accessibility.addKeystrokeInfos({\n keystrokes: [\n {\n label: t('Insert a hard break (a new paragraph)'),\n keystroke: 'Enter'\n }\n ]\n });\n }\n}\n\n/**\n * ShiftEnter command. It is used by the {@link module:enter/shiftenter~ShiftEnter ShiftEnter feature} to handle\n * the <kbd>Shift</kbd>+<kbd>Enter</kbd> keystroke.\n */ class ShiftEnterCommand extends Command {\n /**\n\t * @inheritDoc\n\t */ execute() {\n const model = this.editor.model;\n const doc = model.document;\n model.change((writer)=>{\n softBreakAction(model, writer, doc.selection);\n this.fire('afterExecute', {\n writer\n });\n });\n }\n /**\n\t * @inheritDoc\n\t */ refresh() {\n const model = this.editor.model;\n const doc = model.document;\n this.isEnabled = isEnabled(model.schema, doc.selection);\n }\n}\n/**\n * Checks whether the ShiftEnter command should be enabled in the specified selection.\n */ function isEnabled(schema, selection) {\n // At this moment it is okay to support single range selections only.\n // But in the future we may need to change that.\n if (selection.rangeCount > 1) {\n return false;\n }\n const anchorPos = selection.anchor;\n // Check whether the break element can be inserted in the current selection anchor.\n if (!anchorPos || !schema.checkChild(anchorPos, 'softBreak')) {\n return false;\n }\n const range = selection.getFirstRange();\n const startElement = range.start.parent;\n const endElement = range.end.parent;\n // Do not modify the content if selection is cross-limit elements.\n if ((isInsideLimitElement(startElement, schema) || isInsideLimitElement(endElement, schema)) && startElement !== endElement) {\n return false;\n }\n return true;\n}\n/**\n * Creates a break in the way that the <kbd>Shift</kbd>+<kbd>Enter</kbd> keystroke is expected to work.\n */ function softBreakAction(model, writer, selection) {\n const isSelectionEmpty = selection.isCollapsed;\n const range = selection.getFirstRange();\n const startElement = range.start.parent;\n const endElement = range.end.parent;\n const isContainedWithinOneElement = startElement == endElement;\n if (isSelectionEmpty) {\n insertBreak(model, writer, range.end, selection.getAttributes());\n } else {\n const leaveUnmerged = !(range.start.isAtStart && range.end.isAtEnd);\n model.deleteContent(selection, {\n leaveUnmerged\n });\n // Selection within one element:\n //\n // <h>x[xx]x</h>\t\t-> <h>x^x</h>\t\t\t-> <h>x<br>^x</h>\n if (isContainedWithinOneElement) {\n insertBreak(model, writer, selection.focus, selection.getAttributes());\n } else {\n // Move the selection to the 2nd element (last step of the example above).\n if (leaveUnmerged) {\n writer.setSelection(endElement, 0);\n }\n }\n }\n}\n/**\n * Inserts a softBreak with applicable attributes.\n */ function insertBreak(model, writer, position, selectionAttributes) {\n const attributes = Array.from(getCopyOnEnterAttributes(model.schema, selectionAttributes));\n const breakLineElement = writer.createElement('softBreak', attributes);\n model.insertContent(breakLineElement, position);\n writer.setSelection(breakLineElement, 'after');\n}\n/**\n * Checks whether the specified `element` is a child of the limit element.\n *\n * Checking whether the `<p>` element is inside a limit element:\n * - `<$root><p>Text.</p></$root> => false`\n * - `<$root><limitElement><p>Text</p></limitElement></$root> => true`\n */ function isInsideLimitElement(element, schema) {\n // `$root` is a limit element but in this case is an invalid element.\n if (element.is('rootElement')) {\n return false;\n }\n return schema.isLimit(element) || isInsideLimitElement(element.parent, schema);\n}\n\n/**\n * This plugin handles the <kbd>Shift</kbd>+<kbd>Enter</kbd> keystroke (soft line break) in the editor.\n *\n * See also the {@link module:enter/enter~Enter} plugin.\n *\n * For more information about this feature see the {@glink api/enter package page}.\n */ class ShiftEnter extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'ShiftEnter';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n init() {\n const editor = this.editor;\n const schema = editor.model.schema;\n const conversion = editor.conversion;\n const view = editor.editing.view;\n const viewDocument = view.document;\n const t = this.editor.t;\n // Configure the schema.\n schema.register('softBreak', {\n allowWhere: '$text',\n allowAttributesOf: '$text',\n isInline: true\n });\n // Configure converters.\n conversion.for('upcast').elementToElement({\n model: 'softBreak',\n view: 'br'\n });\n conversion.for('downcast').elementToElement({\n model: 'softBreak',\n view: (modelElement, { writer })=>writer.createEmptyElement('br')\n });\n view.addObserver(EnterObserver);\n editor.commands.add('shiftEnter', new ShiftEnterCommand(editor));\n editor.model.document.registerPostFixer((writer)=>removeStaleSoftBreakAttributes(writer));\n this.listenTo(viewDocument, 'enter', (evt, data)=>{\n // When not in composition, we handle the action, so prevent the default one.\n // When in composition, it's the browser who modify the DOM (renderer is disabled).\n if (!viewDocument.isComposing) {\n data.preventDefault();\n }\n // The hard enter key is handled by the Enter plugin.\n if (!data.isSoft) {\n return;\n }\n editor.execute('shiftEnter');\n view.scrollToTheSelection();\n }, {\n priority: 'low'\n });\n // Add the information about the keystroke to the accessibility database.\n editor.accessibility.addKeystrokeInfos({\n keystrokes: [\n {\n label: t('Insert a soft break (a <code>&lt;br&gt;</code> element)'),\n keystroke: 'Shift+Enter'\n }\n ]\n });\n }\n}\n/**\n * The post-fixer that removes attributes from stale soft-break elements.\n */ function removeStaleSoftBreakAttributes(writer) {\n const parentsToCheck = new Set();\n for (const change of writer.model.document.differ.getChanges()){\n if (change.type == 'insert' || change.type == 'remove') {\n if (change.position.parent.is('element')) {\n parentsToCheck.add(change.position.parent);\n }\n } else if (change.type == 'attribute') {\n if (change.range.start.parent.is('element')) {\n parentsToCheck.add(change.range.start.parent);\n }\n }\n }\n let wasChanged = false;\n for (const parent of parentsToCheck){\n // Just a sibling nodes check. We do not need to check attributes of nested elements.\n for (const child of parent.getChildren()){\n // Find a softBreak element.\n if (!child.is('element', 'softBreak')) {\n continue;\n }\n const nextSibling = child.nextSibling;\n // Do not remove attributes when softBreak is the last element or there is some element after it.\n if (!nextSibling || nextSibling.is('element')) {\n continue;\n }\n // Remove the attribute if the next sibling does not have the same attribute.\n const attributesToRemove = Array.from(child.getAttributes()).filter(([key, value])=>!hasSameAttribute(nextSibling, key, value));\n for (const [key] of attributesToRemove){\n writer.removeAttribute(key, child);\n wasChanged = true;\n }\n }\n }\n return wasChanged;\n}\n/**\n * Returns `true` if the given node has the same attribute as the one provided in the parameters.\n */ function hasSameAttribute(node, key, value) {\n return node?.getAttribute(key) === value;\n}\n\nexport { Enter, EnterCommand, EnterObserver, ShiftEnter, ShiftEnterCommand, getCopyOnEnterAttributes as _getCopyOnEnterAttributes };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module enter/utils\n */\n\nimport type { ModelSchema } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Returns attributes that should be preserved on the enter keystroke.\n *\n * Filtering is realized based on `copyOnEnter` attribute property. Read more about attribute properties\n * {@link module:engine/model/schema~ModelSchema#setAttributeProperties here}.\n *\n * @param schema Model's schema.\n * @param allAttributes Attributes to filter.\n * @internal\n */\nexport function* getCopyOnEnterAttributes(\n\tschema: ModelSchema,\n\tallAttributes: Iterable<[ string, unknown ]>\n): IterableIterator<[ string, unknown ]> {\n\tfor ( const attribute of allAttributes ) {\n\t\tif ( attribute && schema.getAttributeProperties( attribute[ 0 ] ).copyOnEnter ) {\n\t\t\tyield attribute;\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module enter/entercommand\n */\n\nimport { Command } from '@ckeditor/ckeditor5-core';\nimport { getCopyOnEnterAttributes } from './utils.js';\n\nimport type {\n\tModelElement,\n\tModelPosition,\n\tModelWriter\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * Enter command used by the {@link module:enter/enter~Enter Enter feature} to handle the <kbd>Enter</kbd> keystroke.\n */\nexport class EnterCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tthis.editor.model.change( writer => {\n\t\t\tthis.enterBlock( writer );\n\t\t\tthis.fire<EnterCommandAfterExecuteEvent>( 'afterExecute', { writer } );\n\t\t} );\n\t}\n\n\t/**\n\t * Splits a block where the document selection is placed, in the way how the <kbd>Enter</kbd> key is expected to work:\n\t *\n\t * ```\n\t * <p>Foo[]bar</p> -> <p>Foo</p><p>[]bar</p>\n\t * <p>Foobar[]</p> -> <p>Foobar</p><p>[]</p>\n\t * <p>Fo[ob]ar</p> -> <p>Fo</p><p>[]ar</p>\n\t * ```\n\t *\n\t * In some cases, the split will not happen:\n\t *\n\t * ```\n\t * // The selection parent is a limit element:\n\t * <figcaption>A[bc]d</figcaption> -> <figcaption>A[]d</figcaption>\n\t *\n\t * // The selection spans over multiple elements:\n\t * <h>x[x</h><p>y]y<p> -> <h>x</h><p>[]y</p>\n\t * ```\n\t *\n\t * @param writer Writer to use when performing the enter action.\n\t * @returns Boolean indicating if the block was split.\n\t */\n\tpublic enterBlock( writer: ModelWriter ): boolean {\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst schema = model.schema;\n\t\tconst isSelectionEmpty = selection.isCollapsed;\n\t\tconst range = selection.getFirstRange()!;\n\t\tconst startElement = range.start.parent as ModelElement;\n\t\tconst endElement = range.end.parent as ModelElement;\n\n\t\t// Don't touch the roots and other limit elements.\n\t\tif ( schema.isLimit( startElement ) || schema.isLimit( endElement ) ) {\n\t\t\t// Delete the selected content but only if inside a single limit element.\n\t\t\t// Abort, when crossing limit elements boundary (e.g. <limit1>x[x</limit1>donttouchme<limit2>y]y</limit2>).\n\t\t\t// This is an edge case and it's hard to tell what should actually happen because such a selection\n\t\t\t// is not entirely valid.\n\t\t\tif ( !isSelectionEmpty && startElement == endElement ) {\n\t\t\t\tmodel.deleteContent( selection );\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( isSelectionEmpty ) {\n\t\t\tconst attributesToCopy = getCopyOnEnterAttributes( writer.model.schema, selection.getAttributes() );\n\n\t\t\tsplitBlock( writer, range.start );\n\t\t\twriter.setSelectionAttribute( attributesToCopy );\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tconst leaveUnmerged = !( range.start.isAtStart && range.end.isAtEnd );\n\t\t\tconst isContainedWithinOneElement = ( startElement == endElement );\n\n\t\t\tmodel.deleteContent( selection, { leaveUnmerged } );\n\n\t\t\tif ( leaveUnmerged ) {\n\t\t\t\t// Partially selected elements.\n\t\t\t\t//\n\t\t\t\t// <h>x[xx]x</h>\t\t-> <h>x^x</h>\t\t\t-> <h>x</h><h>^x</h>\n\t\t\t\tif ( isContainedWithinOneElement ) {\n\t\t\t\t\tsplitBlock( writer, selection.focus! );\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// Selection over multiple elements.\n\t\t\t\t//\n\t\t\t\t// <h>x[x</h><p>y]y<p>\t-> <h>x^</h><p>y</p>\t-> <h>x</h><p>^y</p>\n\t\t\t\telse {\n\t\t\t\t\twriter.setSelection( endElement, 0 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n}\n\n/**\n * Fired after the the {@link module:enter/entercommand~EnterCommand} is finished executing.\n *\n * @eventName ~EnterCommand#afterExecute\n */\nexport type EnterCommandAfterExecuteEvent = {\n\tname: 'afterExecute';\n\targs: [ { writer: ModelWriter } ];\n};\n\nfunction splitBlock( writer: ModelWriter, splitPos: ModelPosition ): void {\n\twriter.split( splitPos );\n\twriter.setSelection( splitPos.parent.nextSibling!, 0 );\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module enter/enterobserver\n */\n\nimport {\n\tObserver,\n\tViewDocumentDomEventData,\n\tBubblingEventInfo,\n\ttype EditingView,\n\ttype ViewDocumentInputEvent,\n\ttype BubblingEvent,\n\ttype ViewDocumentKeyDownEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport { env } from '@ckeditor/ckeditor5-utils';\n\nconst ENTER_EVENT_TYPES: Record<string, { isSoft: boolean }> = {\n\tinsertParagraph: { isSoft: false },\n\tinsertLineBreak: { isSoft: true }\n};\n\n/**\n * Enter observer introduces the {@link module:engine/view/document~ViewDocument#event:enter `Document#enter`} event.\n */\nexport class EnterObserver extends Observer {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( view: EditingView ) {\n\t\tsuper( view );\n\n\t\tconst doc = this.document;\n\t\tlet shiftPressed = false;\n\n\t\tdoc.on<ViewDocumentKeyDownEvent>( 'keydown', ( evt, data ) => {\n\t\t\tshiftPressed = data.shiftKey;\n\t\t} );\n\n\t\tdoc.on<ViewDocumentInputEvent>( 'beforeinput', ( evt, data ) => {\n\t\t\tif ( !this.isEnabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet inputType = data.inputType;\n\n\t\t\t// See https://github.com/ckeditor/ckeditor5/issues/13321.\n\t\t\tif ( env.isSafari && shiftPressed && inputType == 'insertParagraph' ) {\n\t\t\t\tinputType = 'insertLineBreak';\n\t\t\t}\n\n\t\t\tconst domEvent = data.domEvent;\n\t\t\tconst enterEventSpec = ENTER_EVENT_TYPES[ inputType ];\n\n\t\t\tif ( !enterEventSpec ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst event = new BubblingEventInfo( doc, 'enter', data.targetRanges[ 0 ] );\n\n\t\t\tdoc.fire( event, new ViewDocumentDomEventData( view, domEvent, {\n\t\t\t\tisSoft: enterEventSpec.isSoft\n\t\t\t} ) );\n\n\t\t\t// Stop `beforeinput` event if `enter` event was stopped.\n\t\t\t// https://github.com/ckeditor/ckeditor5/issues/753\n\t\t\tif ( event.stop.called ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic observe(): void {}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic stopObserving(): void {}\n}\n\n/**\n * Fired when the user presses the <kbd>Enter</kbd> key.\n *\n * Note: This event is fired by the {@link module:enter/enterobserver~EnterObserver observer}\n * (usually registered by the {@link module:enter/enter~Enter Enter feature} and\n * {@link module:enter/shiftenter~ShiftEnter ShiftEnter feature}).\n *\n * @eventName module:engine/view/document~ViewDocument#enter\n */\nexport type ViewDocumentEnterEvent = BubblingEvent<{\n\tname: 'enter';\n\targs: [ ViewDocumentEnterEventData ];\n}>;\nexport interface ViewDocumentEnterEventData extends ViewDocumentDomEventData<InputEvent> {\n\n\t/**\n\t * Whether it is a soft enter (<kbd>Shift</kbd>+<kbd>Enter</kbd>) or a hard enter (<kbd>Enter</kbd>).\n\t */\n\tisSoft: boolean;\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module enter/enter\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport { EnterCommand } from './entercommand.js';\nimport { EnterObserver, type ViewDocumentEnterEvent } from './enterobserver.js';\n\n/**\n * This plugin handles the <kbd>Enter</kbd> keystroke (hard line break) in the editor.\n *\n * See also the {@link module:enter/shiftenter~ShiftEnter} plugin.\n *\n * For more information about this feature see the {@glink api/enter package page}.\n */\nexport class Enter extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Enter' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tconst t = this.editor.t;\n\n\t\tview.addObserver( EnterObserver );\n\n\t\teditor.commands.add( 'enter', new EnterCommand( editor ) );\n\n\t\tthis.listenTo<ViewDocumentEnterEvent>( viewDocument, 'enter', ( evt, data ) => {\n\t\t\t// When not in composition, we handle the action, so prevent the default one.\n\t\t\t// When in composition, it's the browser who modify the DOM (renderer is disabled).\n\t\t\tif ( !viewDocument.isComposing ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t}\n\n\t\t\t// The soft enter key is handled by the ShiftEnter plugin.\n\t\t\tif ( data.isSoft ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\teditor.execute( 'enter' );\n\n\t\t\tview.scrollToTheSelection();\n\t\t}, { priority: 'low' } );\n\n\t\t// Add the information about the keystroke to the accessibility database.\n\t\teditor.accessibility.addKeystrokeInfos( {\n\t\t\tkeystrokes: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Insert a hard break (a new paragraph)' ),\n\t\t\t\t\tkeystroke: 'Enter'\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module enter/shiftentercommand\n */\n\nimport { Command } from '@ckeditor/ckeditor5-core';\nimport { getCopyOnEnterAttributes } from './utils.js';\n\nimport type {\n\tModelDocumentSelection,\n\tModel,\n\tModelPosition,\n\tModelSchema,\n\tModelElement,\n\tModelWriter\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * ShiftEnter command. It is used by the {@link module:enter/shiftenter~ShiftEnter ShiftEnter feature} to handle\n * the <kbd>Shift</kbd>+<kbd>Enter</kbd> keystroke.\n */\nexport class ShiftEnterCommand extends Command {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\n\t\tmodel.change( writer => {\n\t\t\tsoftBreakAction( model, writer, doc.selection );\n\t\t\tthis.fire<ShiftEnterCommandAfterExecuteEvent>( 'afterExecute', { writer } );\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\n\t\tthis.isEnabled = isEnabled( model.schema, doc.selection );\n\t}\n}\n\n/**\n * Fired after the the {@link module:enter/shiftentercommand~ShiftEnterCommand} is finished executing.\n *\n * @eventName ~ShiftEnterCommand#afterExecute\n */\nexport type ShiftEnterCommandAfterExecuteEvent = {\n\tname: 'afterExecute';\n\targs: [ { writer: ModelWriter } ];\n};\n\n/**\n * Checks whether the ShiftEnter command should be enabled in the specified selection.\n */\nfunction isEnabled( schema: ModelSchema, selection: ModelDocumentSelection ): boolean {\n\t// At this moment it is okay to support single range selections only.\n\t// But in the future we may need to change that.\n\tif ( selection.rangeCount > 1 ) {\n\t\treturn false;\n\t}\n\n\tconst anchorPos = selection.anchor;\n\n\t// Check whether the break element can be inserted in the current selection anchor.\n\tif ( !anchorPos || !schema.checkChild( anchorPos, 'softBreak' ) ) {\n\t\treturn false;\n\t}\n\n\tconst range = selection.getFirstRange()!;\n\tconst startElement = range.start.parent as ModelElement;\n\tconst endElement = range.end.parent as ModelElement;\n\n\t// Do not modify the content if selection is cross-limit elements.\n\tif ( ( isInsideLimitElement( startElement, schema ) || isInsideLimitElement( endElement, schema ) ) && startElement !== endElement ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n/**\n * Creates a break in the way that the <kbd>Shift</kbd>+<kbd>Enter</kbd> keystroke is expected to work.\n */\nfunction softBreakAction( model: Model, writer: ModelWriter, selection: ModelDocumentSelection ): void {\n\tconst isSelectionEmpty = selection.isCollapsed;\n\tconst range = selection.getFirstRange()!;\n\tconst startElement = range.start.parent as ModelElement;\n\tconst endElement = range.end.parent as ModelElement;\n\tconst isContainedWithinOneElement = ( startElement == endElement );\n\n\tif ( isSelectionEmpty ) {\n\t\tinsertBreak( model, writer, range.end, selection.getAttributes() );\n\t} else {\n\t\tconst leaveUnmerged = !( range.start.isAtStart && range.end.isAtEnd );\n\n\t\tmodel.deleteContent( selection, { leaveUnmerged } );\n\n\t\t// Selection within one element:\n\t\t//\n\t\t// <h>x[xx]x</h>\t\t-> <h>x^x</h>\t\t\t-> <h>x<br>^x</h>\n\t\tif ( isContainedWithinOneElement ) {\n\t\t\tinsertBreak( model, writer, selection.focus!, selection.getAttributes() );\n\t\t}\n\t\t// Selection over multiple elements.\n\t\t//\n\t\t// <h>x[x</h><p>y]y<p>\t-> <h>x^</h><p>y</p>\t-> <h>x</h><p>^y</p>\n\t\t//\n\t\t// We chose not to insert a line break in this case because:\n\t\t//\n\t\t// * it's not a very common scenario,\n\t\t// * it actually surprised me when I saw the \"expected behavior\" in real life.\n\t\t//\n\t\t// It's ok if the user will need to be more specific where they want the <br> to be inserted.\n\t\telse {\n\t\t\t// Move the selection to the 2nd element (last step of the example above).\n\t\t\tif ( leaveUnmerged ) {\n\t\t\t\twriter.setSelection( endElement, 0 );\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Inserts a softBreak with applicable attributes.\n */\nfunction insertBreak(\n\tmodel: Model,\n\twriter: ModelWriter,\n\tposition: ModelPosition,\n\tselectionAttributes: IterableIterator<[ string, unknown ]>\n): void {\n\tconst attributes = Array.from( getCopyOnEnterAttributes( model.schema, selectionAttributes ) );\n\tconst breakLineElement = writer.createElement( 'softBreak', attributes );\n\n\tmodel.insertContent( breakLineElement, position );\n\twriter.setSelection( breakLineElement, 'after' );\n}\n\n/**\n * Checks whether the specified `element` is a child of the limit element.\n *\n * Checking whether the `<p>` element is inside a limit element:\n * - `<$root><p>Text.</p></$root> => false`\n * - `<$root><limitElement><p>Text</p></limitElement></$root> => true`\n */\nfunction isInsideLimitElement( element: ModelElement, schema: ModelSchema ): boolean {\n\t// `$root` is a limit element but in this case is an invalid element.\n\tif ( element.is( 'rootElement' ) ) {\n\t\treturn false;\n\t}\n\n\treturn schema.isLimit( element ) || isInsideLimitElement( element.parent as ModelElement, schema );\n}\n","/**\n * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * @module enter/shiftenter\n */\n\nimport { ShiftEnterCommand } from './shiftentercommand.js';\nimport { EnterObserver, type ViewDocumentEnterEvent } from './enterobserver.js';\nimport { Plugin } from '@ckeditor/ckeditor5-core';\n\nimport type {\n\tModelElement,\n\tModelNode,\n\tModelWriter\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * This plugin handles the <kbd>Shift</kbd>+<kbd>Enter</kbd> keystroke (soft line break) in the editor.\n *\n * See also the {@link module:enter/enter~Enter} plugin.\n *\n * For more information about this feature see the {@glink api/enter package page}.\n */\nexport class ShiftEnter extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'ShiftEnter' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static override get isOfficialPlugin(): true {\n\t\treturn true;\n\t}\n\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst schema = editor.model.schema;\n\t\tconst conversion = editor.conversion;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\t\tconst t = this.editor.t;\n\n\t\t// Configure the schema.\n\t\tschema.register( 'softBreak', {\n\t\t\tallowWhere: '$text',\n\t\t\tallowAttributesOf: '$text',\n\t\t\tisInline: true\n\t\t} );\n\n\t\t// Configure converters.\n\t\tconversion.for( 'upcast' )\n\t\t\t.elementToElement( {\n\t\t\t\tmodel: 'softBreak',\n\t\t\t\tview: 'br'\n\t\t\t} );\n\n\t\tconversion.for( 'downcast' )\n\t\t\t.elementToElement( {\n\t\t\t\tmodel: 'softBreak',\n\t\t\t\tview: ( modelElement, { writer } ) => writer.createEmptyElement( 'br' )\n\t\t\t} );\n\n\t\tview.addObserver( EnterObserver );\n\n\t\teditor.commands.add( 'shiftEnter', new ShiftEnterCommand( editor ) );\n\t\teditor.model.document.registerPostFixer( writer => removeStaleSoftBreakAttributes( writer ) );\n\n\t\tthis.listenTo<ViewDocumentEnterEvent>( viewDocument, 'enter', ( evt, data ) => {\n\t\t\t// When not in composition, we handle the action, so prevent the default one.\n\t\t\t// When in composition, it's the browser who modify the DOM (renderer is disabled).\n\t\t\tif ( !viewDocument.isComposing ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t}\n\n\t\t\t// The hard enter key is handled by the Enter plugin.\n\t\t\tif ( !data.isSoft ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\teditor.execute( 'shiftEnter' );\n\t\t\tview.scrollToTheSelection();\n\t\t}, { priority: 'low' } );\n\n\t\t// Add the information about the keystroke to the accessibility database.\n\t\teditor.accessibility.addKeystrokeInfos( {\n\t\t\tkeystrokes: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Insert a soft break (a <code>&lt;br&gt;</code> element)' ),\n\t\t\t\t\tkeystroke: 'Shift+Enter'\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\t}\n}\n\n/**\n * The post-fixer that removes attributes from stale soft-break elements.\n */\nfunction removeStaleSoftBreakAttributes( writer: ModelWriter ): boolean {\n\tconst parentsToCheck = new Set<ModelElement>();\n\n\tfor ( const change of writer.model.document.differ.getChanges() ) {\n\t\tif ( change.type == 'insert' || change.type == 'remove' ) {\n\t\t\tif ( change.position.parent.is( 'element' ) ) {\n\t\t\t\tparentsToCheck.add( change.position.parent );\n\t\t\t}\n\t\t} else if ( change.type == 'attribute' ) {\n\t\t\tif ( change.range.start.parent.is( 'element' ) ) {\n\t\t\t\tparentsToCheck.add( change.range.start.parent );\n\t\t\t}\n\t\t}\n\t}\n\n\tlet wasChanged = false;\n\n\tfor ( const parent of parentsToCheck ) {\n\t\t// Just a sibling nodes check. We do not need to check attributes of nested elements.\n\t\tfor ( const child of parent.getChildren() ) {\n\t\t\t// Find a softBreak element.\n\t\t\tif ( !child.is( 'element', 'softBreak' ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst nextSibling = child.nextSibling;\n\n\t\t\t// Do not remove attributes when softBreak is the last element or there is some element after it.\n\t\t\tif ( !nextSibling || nextSibling.is( 'element' ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Remove the attribute if the next sibling does not have the same attribute.\n\t\t\tconst attributesToRemove = Array.from( child.getAttributes() )\n\t\t\t\t.filter( ( [ key, value ] ) => !hasSameAttribute( nextSibling, key, value ) );\n\n\t\t\tfor ( const [ key ] of attributesToRemove ) {\n\t\t\t\twriter.removeAttribute( key, child );\n\t\t\t\twasChanged = true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn wasChanged;\n}\n\n/**\n * Returns `true` if the given node has the same attribute as the one provided in the parameters.\n */\nfunction hasSameAttribute( node: ModelNode | null, key: string, value: unknown ): boolean {\n\treturn node?.getAttribute( key ) === value;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ckeditor/ckeditor5-enter",
3
- "version": "48.0.1",
3
+ "version": "48.1.0-alpha.0",
4
4
  "description": "Enter feature for CKEditor 5.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "CKSource (http://cksource.com/)",
@@ -26,9 +26,9 @@
26
26
  "./package.json": "./package.json"
27
27
  },
28
28
  "dependencies": {
29
- "@ckeditor/ckeditor5-core": "48.0.1",
30
- "@ckeditor/ckeditor5-engine": "48.0.1",
31
- "@ckeditor/ckeditor5-utils": "48.0.1"
29
+ "@ckeditor/ckeditor5-core": "48.1.0-alpha.0",
30
+ "@ckeditor/ckeditor5-engine": "48.1.0-alpha.0",
31
+ "@ckeditor/ckeditor5-utils": "48.1.0-alpha.0"
32
32
  },
33
33
  "files": [
34
34
  "dist",