@ckeditor/ckeditor5-typing 45.2.1-alpha.9 → 45.2.2

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.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.js","../src/utils/changebuffer.ts","../src/inserttextcommand.ts","../src/inserttextobserver.ts","../src/input.ts","../src/deletecommand.ts","../src/deleteobserver.ts","../src/delete.ts","../src/typing.ts","../src/utils/getlasttextline.ts","../src/textwatcher.ts","../src/twostepcaretmovement.ts","../src/texttransformation.ts","../src/utils/findattributerange.ts","../src/utils/inlinehighlight.ts"],"names":["ChangeBuffer","model","limit","_isLocked","_size","_batch","_changeCallback","_selectionChangeCallback","evt","batch","isLocal","isUndoable","_reset","document","on","selection","createBatch","isTyping","size","input","changeCount","isLocked","lock","unlock","destroy","off","ignoreLock","InsertTextCommand","Command","_buffer","editor","undoStepSize","_isEnabledBasedOnSelection","buffer","execute","options","doc","text","textInsertions","length","range","createSelection","canEditAt","resultRange","enqueueChange","writer","selectionAttributes","Array","from","getAttributes","deleteContent","insertContent","createText","setSelection","is","TYPING_INPUT_TYPES","TYPING_INPUT_TYPES_ANDROID","InsertTextObserver","Observer","focusObserver","view","getObserver","FocusObserver","typingInputTypes","env","isAndroid","viewDocument","data","isEnabled","targetRanges","inputType","domEvent","isComposing","includes","flush","eventInfo","EventInfo","fire","DomEventData","stop","called","priority","observe","stopObserving","Input","Plugin","_typingQueue","pluginName","isOfficialPlugin","init","editing","mapper","modelSelection","TypingQueue","addObserver","insertTextCommand","config","get","commands","add","listenTo","viewSelection","isFake","isSimilar","preventDefault","getRanges","some","isCollapsed","modelRanges","map","viewRange","toModelRange","modelRange","_tryFixingModelRange","schema","insertText","selectedText","getItems","reduce","rangeText","node","startsWith","substring","start","getShiftedBy","commandData","push","Boolean","defaultPrevented","keyCode","deleteSelectionContent","mutations","hasAffectedElements","viewElement","findMappedViewAncestor","modelElement","toModelElement","isElementAffected","element","flushAffectedElements","toViewElement","type","flushDebounced","debounce","_queue","_isComposing","_affectedElements","Set","cancel","clear","shift","commandLiveData","selectionRanges","LiveRange","fromRange","parent","ranges","liveRange","detachLiveRange","filter","reason","scrollToTheSelection","has","result","toRange","detach","root","rootName","viewNode","DeleteCommand","direction","sequence","doNotResetEntireContent","modifySelection","unit","treatEmojiAsSingleUnit","_shouldEntireContentBeReplacedWithParagraph","_replaceEntireContentWithParagraph","_shouldReplaceFirstBlockWithParagraph","getFirstRange","getMinimalFlatRanges","forEach","count","getWalker","singleCharacters","ignoreElementEnd","shallow","limitElement","getLimitElement","limitElementIsEmpty","containsEntireContent","checkChild","limitElementFirstChild","getChild","paragraph","createElement","remove","createRangeIn","insert","position","getFirstPosition","name","DELETE_CHARACTER","DELETE_WORD","DELETE_CODE_POINT","DELETE_SELECTION","DELETE_BACKWARD","DELETE_FORWARD","DELETE_EVENT_TYPES","deleteContentBackward","deleteWordBackward","deleteHardLineBackward","deleteSoftLineBackward","deleteContentForward","deleteWordForward","deleteHardLineForward","deleteSoftLineForward","DeleteObserver","deleteEventSpec","deleteData","selectionToRemove","shouldUseTargetRanges","BubblingEventInfo","isBlink","enableChromeWorkaround","observer","pressedKeyCode","beforeInputReceived","shouldFireDeleteEvent","isDeleteKeyCode","targetRange","getDeleteDirection","isMatchingBeforeInput","shouldIgnoreBeforeInput","keyCodes","delete","backspace","walker","nextPosition","item","offset","isInsideSurrogatePair","isInsideCombinedSymbol","isInsideEmojiSequence","Delete","_undoOnBackspace","modelDocument","deleteForwardCommand","commandName","ancestorLimit","limitStartPosition","createPositionAt","isTouching","getNearestSelectionRange","toViewRange","plugins","context","requestUndoOnBackspace","Typing","requires","getLastTextLine","createPositionAfter","createRange","end","TextWatcher","ObservableMixin","testCallback","_hasMatch","set","_startListening","stopListening","hasMatch","directChange","_evaluateTextBeforeSelection","isUndo","suffix","rangeBeforeSelection","focus","testResult","eventData","Object","assign","TwoStepCaretMovement","attributes","_overrideUid","_isNextGravityRestorationSkipped","locale","shiftKey","altKey","ctrlKey","arrowRightPressed","arrowright","arrowLeftPressed","arrowleft","contentDirection","contentLanguageDirection","isMovementHandled","_handleForwardMovement","_handleBackwardMovement","_isGravityOverridden","isBetweenDifferentAttributes","_restoreGravity","_enableClickingAfterNode","_enableInsertContentSelectionAttributesFixer","_handleDeleteContentAfterNode","registerAttribute","attribute","isAtStart","hasAnyAttribute","preventCaretMovement","clearSelectionAttributes","_overrideGravity","setSelectionAttributesFromTheNodeBefore","isStepAfterAnyAttributeBoundary","isAtEnd","MouseObserver","TouchObserver","touched","clicked","isBackspace","shouldPreserveAttributes","change","overrideSelectionGravity","restoreSelectionGravity","observedAttribute","hasAttribute","nodeBefore","isInlineObject","isObject","isInline","key","value","checkAttribute","getAttributeProperties","copyFromObject","setSelectionAttribute","removeSelectionAttribute","positionBefore","isStrict","nodeAfter","attrBefore","getAttribute","undefined","attrAfter","TRANSFORMATIONS","copyright","to","registeredTrademark","trademark","oneHalf","oneThird","twoThirds","oneForth","threeQuarters","lessThanOrEqual","greaterThanOrEqual","notEqual","arrowLeft","arrowRight","horizontalEllipsis","enDash","emDash","quotesPrimary","buildQuotesRegExp","quotesSecondary","quotesPrimaryEnGb","quotesSecondaryEnGb","quotesPrimaryPl","quotesSecondaryPl","TRANSFORMATION_GROUPS","symbols","mathematical","typography","quotes","DEFAULT_TRANSFORMATIONS","TextTransformation","define","transformations","include","anchor","_enableTransformationWatchers","deletePlugin","normalizedTransformations","normalizeTransformations","normalizedTransformation","match","test","watcher","matches","exec","replaces","slice","matchedRange","changeIndex","index","i","replaceWith","replacePosition","replaceRange","getTextAttributesAfterPosition","bind","normalizeFrom","RegExp","escapeRegExp","normalizeTo","textNode","quoteCharacter","extra","isNotRemoved","transformation","configured","concat","expandGroupsAndRemoveDuplicates","definitions","definedTransformations","transformationOrGroup","findAttributeRange","attributeName","findAttributeRangeBound","lookBack","lastNode","previousSibling","nextSibling","inlineHighlight","tagName","className","highlightedElements","registerPostFixer","changed","hasClass","addClass","conversion","for","dispatcher","removeHighlight","values","removeClass"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Command, Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { env, EventInfo, count, isInsideSurrogatePair, isInsideCombinedSymbol, isInsideEmojiSequence, keyCodes, ObservableMixin } from '@ckeditor/ckeditor5-utils/dist/index.js';\nimport { Observer, FocusObserver, DomEventData, _tryFixingModelRange, LiveRange, BubblingEventInfo, MouseObserver, TouchObserver } from '@ckeditor/ckeditor5-engine/dist/index.js';\nimport { debounce, escapeRegExp } from 'es-toolkit/compat';\n\n/**\n * @license Copyright (c) 2003-2025, 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 typing/utils/changebuffer\n */ /**\n * Change buffer allows to group atomic changes (like characters that have been typed) into\n * {@link module:engine/model/batch~Batch batches}.\n *\n * Batches represent single undo steps, hence changes added to one single batch are undone together.\n *\n * The buffer has a configurable limit of atomic changes that it can accommodate. After the limit was\n * exceeded (see {@link ~ChangeBuffer#input}), a new batch is created in {@link ~ChangeBuffer#batch}.\n *\n * To use the change buffer you need to let it know about the number of changes that were added to the batch:\n *\n * ```ts\n * const buffer = new ChangeBuffer( model, LIMIT );\n *\n * // Later on in your feature:\n * buffer.batch.insert( pos, insertedCharacters );\n * buffer.input( insertedCharacters.length );\n * ```\n */ class ChangeBuffer {\n /**\n\t * The model instance.\n\t */ model;\n /**\n\t * The maximum number of atomic changes which can be contained in one batch.\n\t */ limit;\n /**\n\t * Whether the buffer is locked. A locked buffer cannot be reset unless it gets unlocked.\n\t */ _isLocked;\n /**\n\t * The number of atomic changes in the buffer. Once it exceeds the {@link #limit},\n\t * the {@link #batch batch} is set to a new one.\n\t */ _size;\n /**\n\t * The current batch instance.\n\t */ _batch = null;\n /**\n\t * The callback to document the change event which later needs to be removed.\n\t */ _changeCallback;\n /**\n\t * The callback to document selection `change:attribute` and `change:range` events which resets the buffer.\n\t */ _selectionChangeCallback;\n /**\n\t * Creates a new instance of the change buffer.\n\t *\n\t * @param limit The maximum number of atomic changes which can be contained in one batch.\n\t */ constructor(model, limit = 20){\n this.model = model;\n this._size = 0;\n this.limit = limit;\n this._isLocked = false;\n // The function to be called in order to notify the buffer about batches which appeared in the document.\n // The callback will check whether it is a new batch and in that case the buffer will be flushed.\n //\n // The reason why the buffer needs to be flushed whenever a new batch appears is that the changes added afterwards\n // should be added to a new batch. For instance, when the user types, then inserts an image, and then types again,\n // the characters typed after inserting the image should be added to a different batch than the characters typed before.\n this._changeCallback = (evt, batch)=>{\n if (batch.isLocal && batch.isUndoable && batch !== this._batch) {\n this._reset(true);\n }\n };\n this._selectionChangeCallback = ()=>{\n this._reset();\n };\n this.model.document.on('change', this._changeCallback);\n this.model.document.selection.on('change:range', this._selectionChangeCallback);\n this.model.document.selection.on('change:attribute', this._selectionChangeCallback);\n }\n /**\n\t * The current batch to which a feature should add its operations. Once the {@link #size}\n\t * is reached or exceeds the {@link #limit}, the batch is set to a new instance and the size is reset.\n\t */ get batch() {\n if (!this._batch) {\n this._batch = this.model.createBatch({\n isTyping: true\n });\n }\n return this._batch;\n }\n /**\n\t * The number of atomic changes in the buffer. Once it exceeds the {@link #limit},\n\t * the {@link #batch batch} is set to a new one.\n\t */ get size() {\n return this._size;\n }\n /**\n\t * The input number of changes into the buffer. Once the {@link #size} is\n\t * reached or exceeds the {@link #limit}, the batch is set to a new instance and the size is reset.\n\t *\n\t * @param changeCount The number of atomic changes to input.\n\t */ input(changeCount) {\n this._size += changeCount;\n if (this._size >= this.limit) {\n this._reset(true);\n }\n }\n /**\n\t * Whether the buffer is locked. A locked buffer cannot be reset unless it gets unlocked.\n\t */ get isLocked() {\n return this._isLocked;\n }\n /**\n\t * Locks the buffer.\n\t */ lock() {\n this._isLocked = true;\n }\n /**\n\t * Unlocks the buffer.\n\t */ unlock() {\n this._isLocked = false;\n }\n /**\n\t * Destroys the buffer.\n\t */ destroy() {\n this.model.document.off('change', this._changeCallback);\n this.model.document.selection.off('change:range', this._selectionChangeCallback);\n this.model.document.selection.off('change:attribute', this._selectionChangeCallback);\n }\n /**\n\t * Resets the change buffer.\n\t *\n\t * @param ignoreLock Whether internal lock {@link #isLocked} should be ignored.\n\t */ _reset(ignoreLock = false) {\n if (!this.isLocked || ignoreLock) {\n this._batch = null;\n this._size = 0;\n }\n }\n}\n\n/**\n * The insert text command. Used by the {@link module:typing/input~Input input feature} to handle typing.\n */ class InsertTextCommand extends Command {\n /**\n\t * Typing's change buffer used to group subsequent changes into batches.\n\t */ _buffer;\n /**\n\t * Creates an instance of the command.\n\t *\n\t * @param undoStepSize The maximum number of atomic changes\n\t * which can be contained in one batch in the command buffer.\n\t */ constructor(editor, undoStepSize){\n super(editor);\n this._buffer = new ChangeBuffer(editor.model, undoStepSize);\n // Since this command may execute on different selectable than selection, it should be checked directly in execute block.\n this._isEnabledBasedOnSelection = false;\n }\n /**\n\t * The current change buffer.\n\t */ get buffer() {\n return this._buffer;\n }\n /**\n\t * @inheritDoc\n\t */ destroy() {\n super.destroy();\n this._buffer.destroy();\n }\n /**\n\t * Executes the input command. It replaces the content within the given range with the given text.\n\t * Replacing is a two step process, first the content within the range is removed and then the new text is inserted\n\t * at the beginning of the range (which after the removal is a collapsed range).\n\t *\n\t * @fires execute\n\t * @param options The command options.\n\t */ execute(options = {}) {\n const model = this.editor.model;\n const doc = model.document;\n const text = options.text || '';\n const textInsertions = text.length;\n let selection = doc.selection;\n if (options.selection) {\n selection = options.selection;\n } else if (options.range) {\n selection = model.createSelection(options.range);\n }\n // Stop executing if selectable is in non-editable place.\n if (!model.canEditAt(selection)) {\n return;\n }\n const resultRange = options.resultRange;\n model.enqueueChange(this._buffer.batch, (writer)=>{\n this._buffer.lock();\n // Store selection attributes before deleting old content to preserve formatting and link.\n // This unifies the behavior between DocumentSelection and Selection provided as input option.\n const selectionAttributes = Array.from(doc.selection.getAttributes());\n model.deleteContent(selection);\n if (text) {\n model.insertContent(writer.createText(text, selectionAttributes), selection);\n }\n if (resultRange) {\n writer.setSelection(resultRange);\n } else if (!selection.is('documentSelection')) {\n writer.setSelection(selection);\n }\n this._buffer.unlock();\n this._buffer.input(textInsertions);\n });\n }\n}\n\n// @if CK_DEBUG_TYPING // const { _buildLogMessage } = require( '@ckeditor/ckeditor5-engine/src/dev-utils/utils.js' );\nconst TYPING_INPUT_TYPES = [\n // For collapsed range:\n //\t- This one is a regular typing (all browsers, all systems).\n //\t- This one is used by Chrome when typing accented letter – 2nd step when the user selects the accent (Mac).\n // For non-collapsed range:\n //\t- This one is used by Chrome when typing accented letter – when the selection box first appears (Mac).\n //\t- This one is used by Safari when accepting spell check suggestions from the context menu (Mac).\n 'insertText',\n // This one is used by Safari when typing accented letter (Mac).\n // This one is used by Safari when accepting spell check suggestions from the autocorrection pop-up (Mac).\n 'insertReplacementText'\n];\nconst TYPING_INPUT_TYPES_ANDROID = [\n ...TYPING_INPUT_TYPES,\n 'insertCompositionText'\n];\n/**\n * Text insertion observer introduces the {@link module:engine/view/document~Document#event:insertText} event.\n */ class InsertTextObserver extends Observer {\n /**\n\t * Instance of the focus observer. Insert text observer calls\n\t * {@link module:engine/view/observer/focusobserver~FocusObserver#flush} to mark the latest focus change as complete.\n\t */ focusObserver;\n /**\n\t * @inheritDoc\n\t */ constructor(view){\n super(view);\n this.focusObserver = view.getObserver(FocusObserver);\n // On Android composition events should immediately be applied to the model. Rendering is not disabled.\n // On non-Android the model is updated only on composition end.\n // On Android we can't rely on composition start/end to update model.\n const typingInputTypes = env.isAndroid ? TYPING_INPUT_TYPES_ANDROID : TYPING_INPUT_TYPES;\n const viewDocument = view.document;\n viewDocument.on('beforeinput', (evt, data)=>{\n if (!this.isEnabled) {\n return;\n }\n const { data: text, targetRanges, inputType, domEvent, isComposing } = data;\n if (!typingInputTypes.includes(inputType)) {\n return;\n }\n // Mark the latest focus change as complete (we are typing in editable after the focus\n // so the selection is in the focused element).\n this.focusObserver.flush();\n const eventInfo = new EventInfo(viewDocument, 'insertText');\n viewDocument.fire(eventInfo, new DomEventData(view, domEvent, {\n text,\n selection: view.createSelection(targetRanges),\n isComposing\n }));\n // Stop the beforeinput event if `delete` event was stopped.\n // https://github.com/ckeditor/ckeditor5/issues/753\n if (eventInfo.stop.called) {\n evt.stop();\n }\n });\n // On Android composition events are immediately applied to the model.\n // On non-Android the model is updated only on composition end.\n // On Android we can't rely on composition start/end to update model.\n if (!env.isAndroid) {\n // Note: The priority must be lower than the CompositionObserver handler to call it after the renderer is unblocked.\n // This is important for view to DOM position mapping.\n // This causes the effect of first remove composed DOM and then reapply it after model modification.\n viewDocument.on('compositionend', (evt, { data, domEvent })=>{\n if (!this.isEnabled) {\n return;\n }\n // In case of aborted composition.\n if (!data) {\n return;\n }\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'InsertTextObserver',\n // @if CK_DEBUG_TYPING // \t\t`%cFire insertText event, %c${ JSON.stringify( data ) }`,\n // @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n // @if CK_DEBUG_TYPING // \t\t 'color: blue'\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n // How do we know where to insert the composed text?\n // 1. The SelectionObserver is blocked and the view is not updated with the composition changes.\n // 2. The last moment before it's locked is the `compositionstart` event.\n // 3. The `SelectionObserver` is listening for `compositionstart` event and immediately converts\n // the selection. Handle this at the low priority so after the rendering is blocked.\n viewDocument.fire('insertText', new DomEventData(view, domEvent, {\n text: data,\n isComposing: true\n }));\n }, {\n priority: 'low'\n });\n }\n }\n /**\n\t * @inheritDoc\n\t */ observe() {}\n /**\n\t * @inheritDoc\n\t */ stopObserving() {}\n}\n\n// @if CK_DEBUG_TYPING // const { _debouncedLine, _buildLogMessage } = require( '@ckeditor/ckeditor5-engine/src/dev-utils/utils.js' );\n/**\n * Handles text input coming from the keyboard or other input methods.\n */ class Input extends Plugin {\n /**\n\t * The queue of `insertText` command executions that are waiting for the DOM to get updated after beforeinput event.\n\t */ _typingQueue;\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'Input';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const model = editor.model;\n const view = editor.editing.view;\n const mapper = editor.editing.mapper;\n const modelSelection = model.document.selection;\n this._typingQueue = new TypingQueue(editor);\n view.addObserver(InsertTextObserver);\n // TODO The above default configuration value should be defined using editor.config.define() once it's fixed.\n const insertTextCommand = new InsertTextCommand(editor, editor.config.get('typing.undoStep') || 20);\n // Register `insertText` command and add `input` command as an alias for backward compatibility.\n editor.commands.add('insertText', insertTextCommand);\n editor.commands.add('input', insertTextCommand);\n this.listenTo(view.document, 'beforeinput', ()=>{\n // Flush queue on the next beforeinput event because it could happen\n // that the mutation observer does not notice the DOM change in time.\n this._typingQueue.flush('next beforeinput');\n }, {\n priority: 'high'\n });\n this.listenTo(view.document, 'insertText', (evt, data)=>{\n const { text, selection: viewSelection } = data;\n // In case of a synthetic event, make sure that selection is not fake.\n if (view.document.selection.isFake && viewSelection && view.document.selection.isSimilar(viewSelection)) {\n data.preventDefault();\n }\n // In case of typing on a non-collapsed range, we have to handle it ourselves as a browser\n // could modify the DOM unpredictably.\n // Noticed cases:\n // * <pre><code>[foo</code></pre><p>]bar</p>\n // * <p>[foo</p><pre>]<code>bar</code></pre>\n // * <p>[foo</p><blockquote><p>]bar</p></blockquote>\n //\n // Especially tricky case is when a code block follows a paragraph as code block on the view side\n // is rendered as a <code> element inside a <pre> element, but only the <code> element is mapped to the model.\n // While mapping view position <pre>]<code> to model, the model position results before the <codeBlock> element,\n // and this triggers selection fixer to cover only text in the previous paragraph.\n //\n // This is safe for composition as those events are not cancellable\n // and the preventDefault() and defaultPrevented are not affected.\n if (viewSelection && Array.from(viewSelection.getRanges()).some((range)=>!range.isCollapsed)) {\n data.preventDefault();\n }\n if (!insertTextCommand.isEnabled) {\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t'%cInsertText command is disabled - prevent DOM change.',\n // @if CK_DEBUG_TYPING // \t\t'font-style: italic'\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n data.preventDefault();\n return;\n }\n let modelRanges;\n // If view selection was specified, translate it to model selection.\n if (viewSelection) {\n modelRanges = Array.from(viewSelection.getRanges()).map((viewRange)=>mapper.toModelRange(viewRange)).map((modelRange)=>_tryFixingModelRange(modelRange, model.schema) || modelRange);\n } else {\n modelRanges = Array.from(modelSelection.getRanges());\n }\n let insertText = text;\n // Typing in English on Android is firing composition events for the whole typed word.\n // We need to check the target range text to only apply the difference.\n if (env.isAndroid) {\n const selectedText = Array.from(modelRanges[0].getItems()).reduce((rangeText, node)=>{\n return rangeText + (node.is('$textProxy') ? node.data : '');\n }, '');\n if (selectedText) {\n if (selectedText.length <= insertText.length) {\n if (insertText.startsWith(selectedText)) {\n insertText = insertText.substring(selectedText.length);\n modelRanges[0].start = modelRanges[0].start.getShiftedBy(selectedText.length);\n }\n } else {\n if (selectedText.startsWith(insertText)) {\n // TODO this should be mapped as delete?\n modelRanges[0].start = modelRanges[0].start.getShiftedBy(insertText.length);\n insertText = '';\n }\n }\n }\n if (insertText.length == 0 && modelRanges[0].isCollapsed) {\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t'%cIgnore insertion of an empty data to the collapsed range.',\n // @if CK_DEBUG_TYPING // \t\t'font-style: italic'\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n return;\n }\n }\n // Note: the TypingQueue stores live-ranges internally as RTC could change the model while waiting for mutations.\n const commandData = {\n text: insertText,\n selection: model.createSelection(modelRanges)\n };\n // This is a beforeinput event, so we need to wait until the browser updates the DOM,\n // and we could apply changes to the model and verify if the DOM is valid.\n // The browser applies changes to the DOM not immediately on beforeinput event.\n // We just wait for mutation observer to notice changes or as a fallback a timeout.\n //\n // Previously we were cancelling the non-composition events, but it caused issues especially in Safari.\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t`%cQueue insertText:%c \"${ commandData.text }\"%c ` +\n // @if CK_DEBUG_TYPING // \t\t`[${ commandData.selection.getFirstPosition().path }]-` +\n // @if CK_DEBUG_TYPING // \t\t`[${ commandData.selection.getLastPosition().path }]` +\n // @if CK_DEBUG_TYPING // \t\t` queue size: ${ this._typingQueue.length + 1 }`,\n // @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n // @if CK_DEBUG_TYPING // \t\t'color: blue',\n // @if CK_DEBUG_TYPING // \t\t''\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n this._typingQueue.push(commandData, Boolean(data.isComposing));\n if (data.domEvent.defaultPrevented) {\n this._typingQueue.flush('beforeinput default prevented');\n }\n });\n // Delete selected content on composition start.\n if (env.isAndroid) {\n // On Android with English keyboard, the composition starts just by putting caret\n // at the word end or by selecting a table column. This is not a real composition started.\n // Trigger delete content on first composition key pressed.\n this.listenTo(view.document, 'keydown', (evt, data)=>{\n if (modelSelection.isCollapsed || data.keyCode != 229 || !view.document.isComposing) {\n return;\n }\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconst firstPositionPath = modelSelection.getFirstPosition()!.path;\n // @if CK_DEBUG_TYPING // \tconst lastPositionPath = modelSelection.getLastPosition()!.path;\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t'%cKeyDown 229%c -> model.deleteContent() ' +\n // @if CK_DEBUG_TYPING // \t\t`[${ firstPositionPath }]-[${ lastPositionPath }]`,\n // @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n // @if CK_DEBUG_TYPING // \t\t''\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n deleteSelectionContent(model, insertTextCommand);\n });\n } else {\n // Note: The priority must precede the CompositionObserver handler to call it before\n // the renderer is blocked, because we want to render this change.\n this.listenTo(view.document, 'compositionstart', ()=>{\n if (modelSelection.isCollapsed) {\n return;\n }\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconst firstPositionPath = modelSelection.getFirstPosition()!.path;\n // @if CK_DEBUG_TYPING // \tconst lastPositionPath = modelSelection.getLastPosition()!.path;\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t'%cComposition start%c -> model.deleteContent() ' +\n // @if CK_DEBUG_TYPING // \t\t`[${ firstPositionPath }]-[${ lastPositionPath }]`,\n // @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n // @if CK_DEBUG_TYPING // \t\t'',\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n deleteSelectionContent(model, insertTextCommand);\n }, {\n priority: 'high'\n });\n }\n // Apply changes to the model as they are applied to the DOM by the browser.\n // On beforeinput event, the DOM is not yet modified. We wait for detected mutations to apply model changes.\n this.listenTo(view.document, 'mutations', (evt, { mutations })=>{\n // Check if mutations are relevant for queued changes.\n if (this._typingQueue.hasAffectedElements()) {\n for (const { node } of mutations){\n const viewElement = findMappedViewAncestor(node, mapper);\n const modelElement = mapper.toModelElement(viewElement);\n if (this._typingQueue.isElementAffected(modelElement)) {\n this._typingQueue.flush('mutations');\n return;\n }\n }\n }\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t'%cMutations not related to the composition.',\n // @if CK_DEBUG_TYPING // \t\t'font-style: italic'\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n });\n // Make sure that all changes are applied to the model before the end of composition.\n this.listenTo(view.document, 'compositionend', ()=>{\n this._typingQueue.flush('before composition end');\n }, {\n priority: 'high'\n });\n // Trigger mutations check after the composition completes to fix all DOM changes that got ignored during composition.\n // On Android, the Renderer is not disabled while composing. While updating DOM nodes, we ignore some changes\n // that are not that important (like NBSP vs. plain space character) and could break the composition flow.\n // After composition is completed, we trigger additional `mutations` event for elements affected by the composition\n // so the Renderer can adjust the DOM to the expected structure without breaking the composition.\n this.listenTo(view.document, 'compositionend', ()=>{\n // There could be new item queued on the composition end, so flush it.\n this._typingQueue.flush('after composition end');\n const mutations = [];\n if (this._typingQueue.hasAffectedElements()) {\n for (const element of this._typingQueue.flushAffectedElements()){\n const viewElement = mapper.toViewElement(element);\n if (!viewElement) {\n continue;\n }\n mutations.push({\n type: 'children',\n node: viewElement\n });\n }\n }\n // Fire composition mutations, if any.\n //\n // For non-Android:\n // After the composition end, we need to verify if there are no left-overs.\n // Listening at the lowest priority, so after the `InsertTextObserver` added above (all composed text\n // should already be applied to the model, view, and DOM).\n // On non-Android the `Renderer` is blocked while the user is composing, but the `MutationObserver` still collects\n // mutated nodes and fires `mutations` events.\n // Those events are recorded by the `Renderer` but not applied to the DOM while composing.\n // We need to trigger those checks (and fixes) once again but this time without specifying the exact mutations\n // since they are already recorded by the `Renderer`.\n // It in most cases just clears the internal record of mutated text nodes\n // since all changes should already be applied to the DOM.\n // This is especially needed when a user cancels composition, so we can clear nodes marked to sync.\n if (mutations.length || !env.isAndroid) {\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.group( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t'%cFire post-composition mutation fixes.',\n // @if CK_DEBUG_TYPING // \t\t'font-weight: bold'\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n view.document.fire('mutations', {\n mutations\n });\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.groupEnd();\n // @if CK_DEBUG_TYPING // }\n }\n }, {\n priority: 'lowest'\n });\n }\n /**\n\t * @inheritDoc\n\t */ destroy() {\n super.destroy();\n this._typingQueue.destroy();\n }\n}\n/**\n * The queue of `insertText` command executions that are waiting for the DOM to get updated after beforeinput event.\n */ class TypingQueue {\n /**\n\t * The editor instance.\n\t */ editor;\n /**\n\t * Debounced queue flush as a safety mechanism for cases of mutation observer not triggering.\n\t */ flushDebounced = debounce(()=>this.flush('timeout'), 50);\n /**\n\t * The queue of `insertText` command executions that are waiting for the DOM to get updated after beforeinput event.\n\t */ _queue = [];\n /**\n\t * Whether there is any composition enqueued or plain typing only.\n\t */ _isComposing = false;\n /**\n\t * A set of model elements. The typing happened in those elements. It's used for mutations check.\n\t */ _affectedElements = new Set();\n /**\n\t * @inheritDoc\n\t */ constructor(editor){\n this.editor = editor;\n }\n /**\n\t * Destroys the helper object.\n\t */ destroy() {\n this.flushDebounced.cancel();\n this._affectedElements.clear();\n while(this._queue.length){\n this.shift();\n }\n }\n /**\n\t * Returns the size of the queue.\n\t */ get length() {\n return this._queue.length;\n }\n /**\n\t * Push next insertText command data to the queue.\n\t */ push(commandData, isComposing) {\n const commandLiveData = {\n text: commandData.text\n };\n if (commandData.selection) {\n commandLiveData.selectionRanges = [];\n for (const range of commandData.selection.getRanges()){\n commandLiveData.selectionRanges.push(LiveRange.fromRange(range));\n // Keep reference to the model element for later mutation checks.\n this._affectedElements.add(range.start.parent);\n }\n }\n this._queue.push(commandLiveData);\n this._isComposing ||= isComposing;\n this.flushDebounced();\n }\n /**\n\t * Shift the first item from the insertText command data queue.\n\t */ shift() {\n const commandLiveData = this._queue.shift();\n const commandData = {\n text: commandLiveData.text\n };\n if (commandLiveData.selectionRanges) {\n const ranges = commandLiveData.selectionRanges.map((liveRange)=>detachLiveRange(liveRange)).filter((range)=>!!range);\n if (ranges.length) {\n commandData.selection = this.editor.model.createSelection(ranges);\n }\n }\n return commandData;\n }\n /**\n\t * Applies all queued insertText command executions.\n\t *\n\t * @param reason Used only for debugging.\n\t */ flush(reason) {\n const editor = this.editor;\n const model = editor.model;\n const view = editor.editing.view;\n this.flushDebounced.cancel();\n if (!this._queue.length) {\n return;\n }\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.group( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t`%cFlush insertText queue on ${ reason }.`,\n // @if CK_DEBUG_TYPING // \t\t'font-weight: bold'\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n const insertTextCommand = editor.commands.get('insertText');\n const buffer = insertTextCommand.buffer;\n model.enqueueChange(buffer.batch, ()=>{\n buffer.lock();\n while(this._queue.length){\n const commandData = this.shift();\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t`%cExecute queued insertText:%c \"${ commandData.text }\"%c ` +\n // @if CK_DEBUG_TYPING // \t\t\t`[${ commandData.selection.getFirstPosition().path }]-` +\n // @if CK_DEBUG_TYPING // \t\t\t`[${ commandData.selection.getLastPosition().path }]`,\n // @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n // @if CK_DEBUG_TYPING // \t\t'color: blue',\n // @if CK_DEBUG_TYPING // \t\t''\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n editor.execute('insertText', commandData);\n }\n buffer.unlock();\n if (!this._isComposing) {\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t'Clear affected elements set'\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n this._affectedElements.clear();\n }\n this._isComposing = false;\n });\n view.scrollToTheSelection();\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.groupEnd();\n // @if CK_DEBUG_TYPING // }\n }\n /**\n\t * Returns `true` if the given model element is related to recent typing.\n\t */ isElementAffected(element) {\n return this._affectedElements.has(element);\n }\n /**\n\t * Returns `true` if there are any affected elements in the queue.\n\t */ hasAffectedElements() {\n return this._affectedElements.size > 0;\n }\n /**\n\t * Returns an array of typing-related elements and clears the internal list.\n\t */ flushAffectedElements() {\n const result = Array.from(this._affectedElements);\n this._affectedElements.clear();\n return result;\n }\n}\n/**\n * Deletes the content selected by the document selection at the start of composition.\n */ function deleteSelectionContent(model, insertTextCommand) {\n // By relying on the state of the input command we allow disabling the entire input easily\n // by just disabling the input command. We could’ve used here the delete command but that\n // would mean requiring the delete feature which would block loading one without the other.\n // We could also check the editor.isReadOnly property, but that wouldn't allow to block\n // the input without blocking other features.\n if (!insertTextCommand.isEnabled) {\n return;\n }\n const buffer = insertTextCommand.buffer;\n buffer.lock();\n model.enqueueChange(buffer.batch, ()=>{\n model.deleteContent(model.document.selection);\n });\n buffer.unlock();\n}\n/**\n * Detaches a LiveRange and returns the static range from it.\n */ function detachLiveRange(liveRange) {\n const range = liveRange.toRange();\n liveRange.detach();\n if (range.root.rootName == '$graveyard') {\n return null;\n }\n return range;\n}\n/**\n * For the given `viewNode`, finds and returns the closest ancestor of this node that has a mapping to the model.\n */ function findMappedViewAncestor(viewNode, mapper) {\n let node = viewNode.is('$text') ? viewNode.parent : viewNode;\n while(!mapper.toModelElement(node)){\n node = node.parent;\n }\n return node;\n}\n\n// @if CK_DEBUG_TYPING // const { _buildLogMessage } = require( '@ckeditor/ckeditor5-engine/src/dev-utils/utils.js' );\n/**\n * The delete command. Used by the {@link module:typing/delete~Delete delete feature} to handle the <kbd>Delete</kbd> and\n * <kbd>Backspace</kbd> keys.\n */ class DeleteCommand extends Command {\n /**\n\t * The directionality of the delete describing in what direction it should\n\t * consume the content when the selection is collapsed.\n\t */ direction;\n /**\n\t * Delete's change buffer used to group subsequent changes into batches.\n\t */ _buffer;\n /**\n\t * Creates an instance of the command.\n\t *\n\t * @param direction The directionality of the delete describing in what direction it\n\t * should consume the content when the selection is collapsed.\n\t */ constructor(editor, direction){\n super(editor);\n this.direction = direction;\n this._buffer = new ChangeBuffer(editor.model, editor.config.get('typing.undoStep'));\n // Since this command may execute on different selectable than selection, it should be checked directly in execute block.\n this._isEnabledBasedOnSelection = false;\n }\n /**\n\t * The current change buffer.\n\t */ get buffer() {\n return this._buffer;\n }\n /**\n\t * Executes the delete command. Depending on whether the selection is collapsed or not, deletes its content\n\t * or a piece of content in the {@link #direction defined direction}.\n\t *\n\t * @fires execute\n\t * @param options The command options.\n\t * @param options.unit See {@link module:engine/model/utils/modifyselection~modifySelection}'s options.\n\t * @param options.sequence A number describing which subsequent delete event it is without the key being released.\n\t * See the {@link module:engine/view/document~Document#event:delete} event data.\n\t * @param options.selection Selection to remove. If not set, current model selection will be used.\n\t */ execute(options = {}) {\n const model = this.editor.model;\n const doc = model.document;\n model.enqueueChange(this._buffer.batch, (writer)=>{\n this._buffer.lock();\n const selection = writer.createSelection(options.selection || doc.selection);\n // Don't execute command when selection is in non-editable place.\n if (!model.canEditAt(selection)) {\n return;\n }\n const sequence = options.sequence || 1;\n // Do not replace the whole selected content if selection was collapsed.\n // This prevents such situation:\n //\n // <h1></h1><p>[]</p>\t--> <h1>[</h1><p>]</p> \t\t--> <p></p>\n // starting content\t\t--> after `modifySelection`\t--> after `deleteContent`.\n const doNotResetEntireContent = selection.isCollapsed;\n // Try to extend the selection in the specified direction.\n if (selection.isCollapsed) {\n model.modifySelection(selection, {\n direction: this.direction,\n unit: options.unit,\n treatEmojiAsSingleUnit: true\n });\n }\n // Check if deleting in an empty editor. See #61.\n if (this._shouldEntireContentBeReplacedWithParagraph(sequence)) {\n this._replaceEntireContentWithParagraph(writer);\n return;\n }\n // Check if deleting in the first empty block.\n // See https://github.com/ckeditor/ckeditor5/issues/8137.\n if (this._shouldReplaceFirstBlockWithParagraph(selection, sequence)) {\n this.editor.execute('paragraph', {\n selection\n });\n return;\n }\n // If selection is still collapsed, then there's nothing to delete.\n if (selection.isCollapsed) {\n return;\n }\n let changeCount = 0;\n selection.getFirstRange().getMinimalFlatRanges().forEach((range)=>{\n changeCount += count(range.getWalker({\n singleCharacters: true,\n ignoreElementEnd: true,\n shallow: true\n }));\n });\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'DeleteCommand',\n // @if CK_DEBUG_TYPING // \t\t'Delete content',\n // @if CK_DEBUG_TYPING // \t\t`[${ selection.getFirstPosition()!.path }]-[${ selection.getLastPosition()!.path }]`,\n // @if CK_DEBUG_TYPING // \t\toptions\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n model.deleteContent(selection, {\n doNotResetEntireContent,\n direction: this.direction\n });\n this._buffer.input(changeCount);\n writer.setSelection(selection);\n this._buffer.unlock();\n });\n }\n /**\n\t * If the user keeps <kbd>Backspace</kbd> or <kbd>Delete</kbd> key pressed, the content of the current\n\t * editable will be cleared. However, this will not yet lead to resetting the remaining block to a paragraph\n\t * (which happens e.g. when the user does <kbd>Ctrl</kbd> + <kbd>A</kbd>, <kbd>Backspace</kbd>).\n\t *\n\t * But, if the user pressed the key in an empty editable for the first time,\n\t * we want to replace the entire content with a paragraph if:\n\t *\n\t * * the current limit element is empty,\n\t * * the paragraph is allowed in the limit element,\n\t * * the limit doesn't already have a paragraph inside.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5-typing/issues/61.\n\t *\n\t * @param sequence A number describing which subsequent delete event it is without the key being released.\n\t */ _shouldEntireContentBeReplacedWithParagraph(sequence) {\n // Does nothing if user pressed and held the \"Backspace\" or \"Delete\" key.\n if (sequence > 1) {\n return false;\n }\n const model = this.editor.model;\n const doc = model.document;\n const selection = doc.selection;\n const limitElement = model.schema.getLimitElement(selection);\n // If a collapsed selection contains the whole content it means that the content is empty\n // (from the user perspective).\n const limitElementIsEmpty = selection.isCollapsed && selection.containsEntireContent(limitElement);\n if (!limitElementIsEmpty) {\n return false;\n }\n if (!model.schema.checkChild(limitElement, 'paragraph')) {\n return false;\n }\n const limitElementFirstChild = limitElement.getChild(0);\n // Does nothing if the limit element already contains only a paragraph.\n // We ignore the case when paragraph might have some inline elements (<p><inlineWidget>[]</inlineWidget></p>)\n // because we don't support such cases yet and it's unclear whether inlineWidget shouldn't be a limit itself.\n if (limitElementFirstChild && limitElementFirstChild.is('element', 'paragraph')) {\n return false;\n }\n return true;\n }\n /**\n\t * The entire content is replaced with the paragraph. Selection is moved inside the paragraph.\n\t *\n\t * @param writer The model writer.\n\t */ _replaceEntireContentWithParagraph(writer) {\n const model = this.editor.model;\n const doc = model.document;\n const selection = doc.selection;\n const limitElement = model.schema.getLimitElement(selection);\n const paragraph = writer.createElement('paragraph');\n writer.remove(writer.createRangeIn(limitElement));\n writer.insert(paragraph, limitElement);\n writer.setSelection(paragraph, 0);\n }\n /**\n\t * Checks if the selection is inside an empty element that is the first child of the limit element\n\t * and should be replaced with a paragraph.\n\t *\n\t * @param selection The selection.\n\t * @param sequence A number describing which subsequent delete event it is without the key being released.\n\t */ _shouldReplaceFirstBlockWithParagraph(selection, sequence) {\n const model = this.editor.model;\n // Does nothing if user pressed and held the \"Backspace\" key or it was a \"Delete\" button.\n if (sequence > 1 || this.direction != 'backward') {\n return false;\n }\n if (!selection.isCollapsed) {\n return false;\n }\n const position = selection.getFirstPosition();\n const limitElement = model.schema.getLimitElement(position);\n const limitElementFirstChild = limitElement.getChild(0);\n // Only elements that are direct children of the limit element can be replaced.\n // Unwrapping from a block quote should be handled in a dedicated feature.\n if (position.parent != limitElementFirstChild) {\n return false;\n }\n // A block should be replaced only if it was empty.\n if (!selection.containsEntireContent(limitElementFirstChild)) {\n return false;\n }\n // Replace with a paragraph only if it's allowed there.\n if (!model.schema.checkChild(limitElement, 'paragraph')) {\n return false;\n }\n // Does nothing if the limit element already contains only a paragraph.\n if (limitElementFirstChild.name == 'paragraph') {\n return false;\n }\n return true;\n }\n}\n\nconst DELETE_CHARACTER = 'character';\nconst DELETE_WORD = 'word';\nconst DELETE_CODE_POINT = 'codePoint';\nconst DELETE_SELECTION = 'selection';\nconst DELETE_BACKWARD = 'backward';\nconst DELETE_FORWARD = 'forward';\nconst DELETE_EVENT_TYPES = {\n // --------------------------------------- Backward delete types -----------------------------------------------------\n // This happens in Safari on Mac when some content is selected and Ctrl + K is pressed.\n deleteContent: {\n unit: DELETE_SELECTION,\n // According to the Input Events Level 2 spec, this delete type has no direction\n // but to keep things simple, let's default to backward.\n direction: DELETE_BACKWARD\n },\n // Chrome and Safari on Mac: Backspace or Ctrl + H\n deleteContentBackward: {\n // This kind of deletions must be done on the code point-level instead of target range provided by the DOM beforeinput event.\n // Take for instance \"👨‍👩‍👧‍👧\", it equals:\n //\n //\t* [ \"👨\", \"ZERO WIDTH JOINER\", \"👩\", \"ZERO WIDTH JOINER\", \"👧\", \"ZERO WIDTH JOINER\", \"👧\" ]\n //\t* or simply \"\\u{1F468}\\u200D\\u{1F469}\\u200D\\u{1F467}\\u200D\\u{1F467}\"\n //\n // The range provided by the browser would cause the entire multi-byte grapheme to disappear while the user\n // intention when deleting backwards (\"👨‍👩‍👧‍👧[]\", then backspace) is gradual \"decomposition\" (first to \"👨‍👩‍👧‍[]\",\n // then to \"👨‍👩‍[]\", etc.).\n //\n //\t* \"👨‍👩‍👧‍👧[]\" + backward delete (by code point) -> results in \"👨‍👩‍👧[]\", removed the last \"👧\" 👍\n //\t* \"👨‍👩‍👧‍👧[]\" + backward delete (by character) -> results in \"[]\", removed the whole grapheme 👎\n //\n // Deleting by code-point is simply a better UX. See \"deleteContentForward\" to learn more.\n unit: DELETE_CODE_POINT,\n direction: DELETE_BACKWARD\n },\n // On Mac: Option + Backspace.\n // On iOS: Hold the backspace for a while and the whole words will start to disappear.\n deleteWordBackward: {\n unit: DELETE_WORD,\n direction: DELETE_BACKWARD\n },\n // Safari on Mac: Cmd + Backspace\n deleteHardLineBackward: {\n unit: DELETE_SELECTION,\n direction: DELETE_BACKWARD\n },\n // Chrome on Mac: Cmd + Backspace.\n deleteSoftLineBackward: {\n unit: DELETE_SELECTION,\n direction: DELETE_BACKWARD\n },\n // --------------------------------------- Forward delete types -----------------------------------------------------\n // Chrome on Mac: Fn + Backspace or Ctrl + D\n // Safari on Mac: Ctrl + K or Ctrl + D\n deleteContentForward: {\n // Unlike backward delete, this delete must be performed by character instead of by code point, which\n // provides the best UX for working with accented letters.\n // Take, for example \"b̂\" (\"\\u0062\\u0302\", or [ \"LATIN SMALL LETTER B\", \"COMBINING CIRCUMFLEX ACCENT\" ]):\n //\n //\t* \"b̂[]\" + backward delete (by code point) -> results in \"b[]\", removed the combining mark 👍\n //\t* \"[]b̂\" + forward delete (by code point) -> results in \"[]^\", a bare combining mark does that not make sense when alone 👎\n //\t* \"[]b̂\" + forward delete (by character) -> results in \"[]\", removed both \"b\" and the combining mark 👍\n //\n // See: \"deleteContentBackward\" to learn more.\n unit: DELETE_CHARACTER,\n direction: DELETE_FORWARD\n },\n // On Mac: Fn + Option + Backspace.\n deleteWordForward: {\n unit: DELETE_WORD,\n direction: DELETE_FORWARD\n },\n // Chrome on Mac: Ctrl + K (you have to disable the Link plugin first, though, because it uses the same keystroke)\n // This is weird that it does not work in Safari on Mac despite being listed in the official shortcuts listing\n // on Apple's webpage.\n deleteHardLineForward: {\n unit: DELETE_SELECTION,\n direction: DELETE_FORWARD\n },\n // At this moment there is no known way to trigger this event type but let's keep it for the symmetry with\n // deleteSoftLineBackward.\n deleteSoftLineForward: {\n unit: DELETE_SELECTION,\n direction: DELETE_FORWARD\n }\n};\n/**\n * Delete observer introduces the {@link module:engine/view/document~Document#event:delete} event.\n */ class DeleteObserver extends Observer {\n /**\n\t * @inheritDoc\n\t */ constructor(view){\n super(view);\n const document = view.document;\n // It matters how many subsequent deletions were made, e.g. when the backspace key was pressed and held\n // by the user for some time. For instance, if such scenario ocurred and the heading the selection was\n // anchored to was the only content of the editor, it will not be converted into a paragraph (the user\n // wanted to clean it up, not remove it, it's about UX). Check out the DeleteCommand implementation to learn more.\n //\n // Fun fact: Safari on Mac won't fire beforeinput for backspace in an empty heading (only content).\n let sequence = 0;\n document.on('keydown', ()=>{\n sequence++;\n });\n document.on('keyup', ()=>{\n sequence = 0;\n });\n document.on('beforeinput', (evt, data)=>{\n if (!this.isEnabled) {\n return;\n }\n const { targetRanges, domEvent, inputType } = data;\n const deleteEventSpec = DELETE_EVENT_TYPES[inputType];\n if (!deleteEventSpec) {\n return;\n }\n const deleteData = {\n direction: deleteEventSpec.direction,\n unit: deleteEventSpec.unit,\n sequence\n };\n if (deleteData.unit == DELETE_SELECTION) {\n deleteData.selectionToRemove = view.createSelection(targetRanges[0]);\n }\n // The default deletion unit for deleteContentBackward is a single code point\n // but if the browser provides a wider target range then we should use it.\n if (inputType === 'deleteContentBackward') {\n // On Android, deleteContentBackward has sequence 1 by default.\n if (env.isAndroid) {\n deleteData.sequence = 1;\n }\n // The beforeInput event wants more than a single character to be removed.\n if (shouldUseTargetRanges(targetRanges)) {\n deleteData.unit = DELETE_SELECTION;\n deleteData.selectionToRemove = view.createSelection(targetRanges);\n }\n }\n const eventInfo = new BubblingEventInfo(document, 'delete', targetRanges[0]);\n document.fire(eventInfo, new DomEventData(view, domEvent, deleteData));\n // Stop the beforeinput event if `delete` event was stopped.\n // https://github.com/ckeditor/ckeditor5/issues/753\n if (eventInfo.stop.called) {\n evt.stop();\n }\n });\n // TODO: to be removed when https://bugs.chromium.org/p/chromium/issues/detail?id=1365311 is solved.\n if (env.isBlink) {\n enableChromeWorkaround(this);\n }\n }\n /**\n\t * @inheritDoc\n\t */ observe() {}\n /**\n\t * @inheritDoc\n\t */ stopObserving() {}\n}\n/**\n * Enables workaround for the issue https://github.com/ckeditor/ckeditor5/issues/11904.\n */ function enableChromeWorkaround(observer) {\n const view = observer.view;\n const document = view.document;\n let pressedKeyCode = null;\n let beforeInputReceived = false;\n document.on('keydown', (evt, { keyCode })=>{\n pressedKeyCode = keyCode;\n beforeInputReceived = false;\n });\n document.on('keyup', (evt, { keyCode, domEvent })=>{\n const selection = document.selection;\n const shouldFireDeleteEvent = observer.isEnabled && keyCode == pressedKeyCode && isDeleteKeyCode(keyCode) && !selection.isCollapsed && !beforeInputReceived;\n pressedKeyCode = null;\n if (shouldFireDeleteEvent) {\n const targetRange = selection.getFirstRange();\n const eventInfo = new BubblingEventInfo(document, 'delete', targetRange);\n const deleteData = {\n unit: DELETE_SELECTION,\n direction: getDeleteDirection(keyCode),\n selectionToRemove: selection\n };\n document.fire(eventInfo, new DomEventData(view, domEvent, deleteData));\n }\n });\n document.on('beforeinput', (evt, { inputType })=>{\n const deleteEventSpec = DELETE_EVENT_TYPES[inputType];\n const isMatchingBeforeInput = isDeleteKeyCode(pressedKeyCode) && deleteEventSpec && deleteEventSpec.direction == getDeleteDirection(pressedKeyCode);\n if (isMatchingBeforeInput) {\n beforeInputReceived = true;\n }\n }, {\n priority: 'high'\n });\n document.on('beforeinput', (evt, { inputType, data })=>{\n const shouldIgnoreBeforeInput = pressedKeyCode == keyCodes.delete && inputType == 'insertText' && data == '\\x7f'; // Delete character :P\n if (shouldIgnoreBeforeInput) {\n evt.stop();\n }\n }, {\n priority: 'high'\n });\n function isDeleteKeyCode(keyCode) {\n return keyCode == keyCodes.backspace || keyCode == keyCodes.delete;\n }\n function getDeleteDirection(keyCode) {\n return keyCode == keyCodes.backspace ? DELETE_BACKWARD : DELETE_FORWARD;\n }\n}\n/**\n * Verifies whether the given target ranges cover more than a single character and should be used instead of a single code-point deletion.\n */ function shouldUseTargetRanges(targetRanges) {\n // The collapsed target range could happen for example while deleting inside an inline filler\n // (it's mapped to collapsed position before an inline filler).\n if (targetRanges.length != 1 || targetRanges[0].isCollapsed) {\n return false;\n }\n const walker = targetRanges[0].getWalker({\n direction: 'backward',\n singleCharacters: true,\n ignoreElementEnd: true\n });\n let count = 0;\n for (const { nextPosition, item } of walker){\n if (nextPosition.parent.is('$text')) {\n const data = nextPosition.parent.data;\n const offset = nextPosition.offset;\n // Count combined symbols and emoji sequences as a single character.\n if (isInsideSurrogatePair(data, offset) || isInsideCombinedSymbol(data, offset) || isInsideEmojiSequence(data, offset)) {\n continue;\n }\n count++;\n } else if (item.is('containerElement') || item.is('emptyElement')) {\n count++;\n }\n if (count > 1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The delete and backspace feature. Handles keys such as <kbd>Delete</kbd> and <kbd>Backspace</kbd>, other\n * keystrokes and user actions that result in deleting content in the editor.\n */ class Delete extends Plugin {\n /**\n\t * Whether pressing backspace should trigger undo action\n\t */ _undoOnBackspace;\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'Delete';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const view = editor.editing.view;\n const viewDocument = view.document;\n const modelDocument = editor.model.document;\n view.addObserver(DeleteObserver);\n this._undoOnBackspace = false;\n const deleteForwardCommand = new DeleteCommand(editor, 'forward');\n // Register `deleteForward` command and add `forwardDelete` command as an alias for backward compatibility.\n editor.commands.add('deleteForward', deleteForwardCommand);\n editor.commands.add('forwardDelete', deleteForwardCommand);\n editor.commands.add('delete', new DeleteCommand(editor, 'backward'));\n this.listenTo(viewDocument, 'delete', (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 const { direction, sequence, selectionToRemove, unit } = data;\n const commandName = direction === 'forward' ? 'deleteForward' : 'delete';\n const commandData = {\n sequence\n };\n if (unit == 'selection') {\n const modelRanges = Array.from(selectionToRemove.getRanges()).map((viewRange)=>editor.editing.mapper.toModelRange(viewRange)).map((modelRange)=>_tryFixingModelRange(modelRange, editor.model.schema) || modelRange);\n commandData.selection = editor.model.createSelection(modelRanges);\n } else {\n commandData.unit = unit;\n }\n editor.execute(commandName, commandData);\n view.scrollToTheSelection();\n }, {\n priority: 'low'\n });\n // Handle the Backspace key while at the beginning of a nested editable. See https://github.com/ckeditor/ckeditor5/issues/17383.\n this.listenTo(viewDocument, 'keydown', (evt, data)=>{\n if (viewDocument.isComposing || data.keyCode != keyCodes.backspace || !modelDocument.selection.isCollapsed) {\n return;\n }\n const ancestorLimit = editor.model.schema.getLimitElement(modelDocument.selection);\n const limitStartPosition = editor.model.createPositionAt(ancestorLimit, 0);\n if (limitStartPosition.isTouching(modelDocument.selection.getFirstPosition())) {\n // Stop the beforeinput event as it could be invalid.\n data.preventDefault();\n // Create a fake delete event so all features can act on it and the target range is proper.\n const modelRange = editor.model.schema.getNearestSelectionRange(limitStartPosition, 'forward');\n if (!modelRange) {\n return;\n }\n const viewSelection = view.createSelection(editor.editing.mapper.toViewRange(modelRange));\n const targetRange = viewSelection.getFirstRange();\n const eventInfo = new BubblingEventInfo(document, 'delete', targetRange);\n const deleteData = {\n unit: 'selection',\n direction: 'backward',\n selectionToRemove: viewSelection\n };\n viewDocument.fire(eventInfo, new DomEventData(view, data.domEvent, deleteData));\n }\n });\n if (this.editor.plugins.has('UndoEditing')) {\n this.listenTo(viewDocument, 'delete', (evt, data)=>{\n if (this._undoOnBackspace && data.direction == 'backward' && data.sequence == 1 && data.unit == 'codePoint') {\n this._undoOnBackspace = false;\n editor.execute('undo');\n data.preventDefault();\n evt.stop();\n }\n }, {\n context: '$capture'\n });\n this.listenTo(modelDocument, 'change', ()=>{\n this._undoOnBackspace = false;\n });\n }\n }\n /**\n\t * If the next user action after calling this method is pressing backspace, it would undo the last change.\n\t *\n\t * Requires {@link module:undo/undoediting~UndoEditing} plugin. If not loaded, does nothing.\n\t */ requestUndoOnBackspace() {\n if (this.editor.plugins.has('UndoEditing')) {\n this._undoOnBackspace = true;\n }\n }\n}\n\n/**\n * The typing feature. It handles typing.\n *\n * This is a \"glue\" plugin which loads the {@link module:typing/input~Input} and {@link module:typing/delete~Delete}\n * plugins.\n */ class Typing extends Plugin {\n static get requires() {\n return [\n Input,\n Delete\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'Typing';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 typing/utils/getlasttextline\n */ /**\n * Returns the last text line from the given range.\n *\n * \"The last text line\" is understood as text (from one or more text nodes) which is limited either by a parent block\n * or by inline elements (e.g. `<softBreak>`).\n *\n * ```ts\n * const rangeToCheck = model.createRange(\n * \tmodel.createPositionAt( paragraph, 0 ),\n * \tmodel.createPositionAt( paragraph, 'end' )\n * );\n *\n * const { text, range } = getLastTextLine( rangeToCheck, model );\n * ```\n *\n * For model below, the returned `text` will be \"Foo bar baz\" and `range` will be set on whole `<paragraph>` content:\n *\n * ```xml\n * <paragraph>Foo bar baz<paragraph>\n * ```\n *\n * However, in below case, `text` will be set to \"baz\" and `range` will be set only on \"baz\".\n *\n * ```xml\n * <paragraph>Foo<softBreak></softBreak>bar<softBreak></softBreak>baz<paragraph>\n * ```\n */ function getLastTextLine(range, model) {\n let start = range.start;\n const text = Array.from(range.getWalker({\n ignoreElementEnd: false\n })).reduce((rangeText, { item })=>{\n // Trim text to a last occurrence of an inline element and update range start.\n if (!(item.is('$text') || item.is('$textProxy'))) {\n start = model.createPositionAfter(item);\n return '';\n }\n return rangeText + item.data;\n }, '');\n return {\n text,\n range: model.createRange(start, range.end)\n };\n}\n\n/**\n * The text watcher feature.\n *\n * Fires the {@link module:typing/textwatcher~TextWatcher#event:matched:data `matched:data`},\n * {@link module:typing/textwatcher~TextWatcher#event:matched:selection `matched:selection`} and\n * {@link module:typing/textwatcher~TextWatcher#event:unmatched `unmatched`} events on typing or selection changes.\n */ class TextWatcher extends /* #__PURE__ */ ObservableMixin() {\n /**\n\t * The editor's model.\n\t */ model;\n /**\n\t * The function used to match the text.\n\t *\n\t * The test callback can return 3 values:\n\t *\n\t * * `false` if there is no match,\n\t * * `true` if there is a match,\n\t * * an object if there is a match and we want to pass some additional information to the {@link #event:matched:data} event.\n\t */ testCallback;\n /**\n\t * Whether there is a match currently.\n\t */ _hasMatch;\n /**\n\t * Creates a text watcher instance.\n\t *\n\t * @param testCallback See {@link module:typing/textwatcher~TextWatcher#testCallback}.\n\t */ constructor(model, testCallback){\n super();\n this.model = model;\n this.testCallback = testCallback;\n this._hasMatch = false;\n this.set('isEnabled', true);\n // Toggle text watching on isEnabled state change.\n this.on('change:isEnabled', ()=>{\n if (this.isEnabled) {\n this._startListening();\n } else {\n this.stopListening(model.document.selection);\n this.stopListening(model.document);\n }\n });\n this._startListening();\n }\n /**\n\t * Flag indicating whether there is a match currently.\n\t */ get hasMatch() {\n return this._hasMatch;\n }\n /**\n\t * Starts listening to the editor for typing and selection events.\n\t */ _startListening() {\n const model = this.model;\n const document = model.document;\n this.listenTo(document.selection, 'change:range', (evt, { directChange })=>{\n // Indirect changes (i.e. when the user types or external changes are applied) are handled in the document's change event.\n if (!directChange) {\n return;\n }\n // Act only on collapsed selection.\n if (!document.selection.isCollapsed) {\n if (this.hasMatch) {\n this.fire('unmatched');\n this._hasMatch = false;\n }\n return;\n }\n this._evaluateTextBeforeSelection('selection');\n });\n this.listenTo(document, 'change:data', (evt, batch)=>{\n if (batch.isUndo || !batch.isLocal) {\n return;\n }\n this._evaluateTextBeforeSelection('data', {\n batch\n });\n });\n }\n /**\n\t * Checks the editor content for matched text.\n\t *\n\t * @fires matched:data\n\t * @fires matched:selection\n\t * @fires unmatched\n\t *\n\t * @param suffix A suffix used for generating the event name.\n\t * @param data Data object for event.\n\t */ _evaluateTextBeforeSelection(suffix, data = {}) {\n const model = this.model;\n const document = model.document;\n const selection = document.selection;\n const rangeBeforeSelection = model.createRange(model.createPositionAt(selection.focus.parent, 0), selection.focus);\n const { text, range } = getLastTextLine(rangeBeforeSelection, model);\n const testResult = this.testCallback(text);\n if (!testResult && this.hasMatch) {\n this.fire('unmatched');\n }\n this._hasMatch = !!testResult;\n if (testResult) {\n const eventData = Object.assign(data, {\n text,\n range\n });\n // If the test callback returns an object with additional data, assign the data as well.\n if (typeof testResult == 'object') {\n Object.assign(eventData, testResult);\n }\n this.fire(`matched:${suffix}`, eventData);\n }\n }\n}\n\n/**\n * This plugin enables the two-step caret (phantom) movement behavior for\n * {@link module:typing/twostepcaretmovement~TwoStepCaretMovement#registerAttribute registered attributes}\n * on arrow right (<kbd>→</kbd>) and left (<kbd>←</kbd>) key press.\n *\n * Thanks to this (phantom) caret movement the user is able to type before/after as well as at the\n * beginning/end of an attribute.\n *\n * **Note:** This plugin support right–to–left (Arabic, Hebrew, etc.) content by mirroring its behavior\n * but for the sake of simplicity examples showcase only left–to–right use–cases.\n *\n * # Forward movement\n *\n * ## \"Entering\" an attribute:\n *\n * When this plugin is enabled and registered for the `a` attribute and the selection is right before it\n * (at the attribute boundary), pressing the right arrow key will not move the selection but update its\n * attributes accordingly:\n *\n * * When enabled:\n *\n * ```xml\n * foo{}<$text a=\"true\">bar</$text>\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * foo<$text a=\"true\">{}bar</$text>\n * ```\n *\n * * When disabled:\n *\n * ```xml\n * foo{}<$text a=\"true\">bar</$text>\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * foo<$text a=\"true\">b{}ar</$text>\n * ```\n *\n *\n * ## \"Leaving\" an attribute:\n *\n * * When enabled:\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text>baz\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar</$text>{}baz\n * ```\n *\n * * When disabled:\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text>baz\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar</$text>b{}az\n * ```\n *\n * # Backward movement\n *\n * * When enabled:\n *\n * ```xml\n * <$text a=\"true\">bar</$text>{}baz\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text>baz\n * ```\n *\n * * When disabled:\n *\n * ```xml\n * <$text a=\"true\">bar</$text>{}baz\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\">ba{}r</$text>b{}az\n * ```\n *\n * # Multiple attributes\n *\n * * When enabled and many attributes starts or ends at the same position:\n *\n * ```xml\n * <$text a=\"true\" b=\"true\">bar</$text>{}baz\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\" b=\"true\">bar{}</$text>baz\n * ```\n *\n * * When enabled and one procedes another:\n *\n * ```xml\n * <$text a=\"true\">bar</$text><$text b=\"true\">{}bar</$text>\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text><$text b=\"true\">bar</$text>\n * ```\n *\n */ class TwoStepCaretMovement extends Plugin {\n /**\n\t * A set of attributes to handle.\n\t */ attributes;\n /**\n\t * The current UID of the overridden gravity, as returned by\n\t * {@link module:engine/model/writer~Writer#overrideSelectionGravity}.\n\t */ _overrideUid;\n /**\n\t * A flag indicating that the automatic gravity restoration should not happen upon the next\n\t * gravity restoration.\n\t * {@link module:engine/model/selection~Selection#event:change:range} event.\n\t */ _isNextGravityRestorationSkipped = false;\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'TwoStepCaretMovement';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ constructor(editor){\n super(editor);\n this.attributes = new Set();\n this._overrideUid = null;\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const model = editor.model;\n const view = editor.editing.view;\n const locale = editor.locale;\n const modelSelection = model.document.selection;\n // Listen to keyboard events and handle the caret movement according to the 2-step caret logic.\n this.listenTo(view.document, 'arrowKey', (evt, data)=>{\n // This implementation works only for collapsed selection.\n if (!modelSelection.isCollapsed) {\n return;\n }\n // When user tries to expand the selection or jump over the whole word or to the beginning/end then\n // two-steps movement is not necessary.\n if (data.shiftKey || data.altKey || data.ctrlKey) {\n return;\n }\n const arrowRightPressed = data.keyCode == keyCodes.arrowright;\n const arrowLeftPressed = data.keyCode == keyCodes.arrowleft;\n // When neither left or right arrow has been pressed then do noting.\n if (!arrowRightPressed && !arrowLeftPressed) {\n return;\n }\n const contentDirection = locale.contentLanguageDirection;\n let isMovementHandled = false;\n if (contentDirection === 'ltr' && arrowRightPressed || contentDirection === 'rtl' && arrowLeftPressed) {\n isMovementHandled = this._handleForwardMovement(data);\n } else {\n isMovementHandled = this._handleBackwardMovement(data);\n }\n // Stop the keydown event if the two-step caret movement handled it. Avoid collisions\n // with other features which may also take over the caret movement (e.g. Widget).\n if (isMovementHandled === true) {\n evt.stop();\n }\n }, {\n context: '$text',\n priority: 'highest'\n });\n // The automatic gravity restoration logic.\n this.listenTo(modelSelection, 'change:range', (evt, data)=>{\n // Skipping the automatic restoration is needed if the selection should change\n // but the gravity must remain overridden afterwards. See the #handleBackwardMovement\n // to learn more.\n if (this._isNextGravityRestorationSkipped) {\n this._isNextGravityRestorationSkipped = false;\n return;\n }\n // Skip automatic restore when the gravity is not overridden — simply, there's nothing to restore\n // at this moment.\n if (!this._isGravityOverridden) {\n return;\n }\n // Skip automatic restore when the change is indirect AND the selection is at the attribute boundary.\n // It means that e.g. if the change was external (collaboration) and the user had their\n // selection around the link, its gravity should remain intact in this change:range event.\n if (!data.directChange && isBetweenDifferentAttributes(modelSelection.getFirstPosition(), this.attributes)) {\n return;\n }\n this._restoreGravity();\n });\n // Handle a click at the beginning/end of a two-step element.\n this._enableClickingAfterNode();\n // Change the attributes of the selection in certain situations after the two-step node was inserted into the document.\n this._enableInsertContentSelectionAttributesFixer();\n // Handle removing the content after the two-step node.\n this._handleDeleteContentAfterNode();\n }\n /**\n\t * Registers a given attribute for the two-step caret movement.\n\t *\n\t * @param attribute Name of the attribute to handle.\n\t */ registerAttribute(attribute) {\n this.attributes.add(attribute);\n }\n /**\n\t * Updates the document selection and the view according to the two–step caret movement state\n\t * when moving **forwards**. Executed upon `keypress` in the {@link module:engine/view/view~View}.\n\t *\n\t * @internal\n\t * @param eventData Data of the key press.\n\t * @returns `true` when the handler prevented caret movement.\n\t */ _handleForwardMovement(eventData) {\n const attributes = this.attributes;\n const model = this.editor.model;\n const selection = model.document.selection;\n const position = selection.getFirstPosition();\n // DON'T ENGAGE 2-SCM if gravity is already overridden. It means that we just entered\n //\n // \t\t<paragraph>foo<$text attribute>{}bar</$text>baz</paragraph>\n //\n // or left the attribute\n //\n // \t\t<paragraph>foo<$text attribute>bar</$text>{}baz</paragraph>\n //\n // and the gravity will be restored automatically.\n if (this._isGravityOverridden) {\n return false;\n }\n // DON'T ENGAGE 2-SCM when the selection is at the beginning of the block AND already has the\n // attribute:\n // * when the selection was initially set there using the mouse,\n // * when the editor has just started\n //\n //\t\t<paragraph><$text attribute>{}bar</$text>baz</paragraph>\n //\n if (position.isAtStart && hasAnyAttribute(selection, attributes)) {\n return false;\n }\n // ENGAGE 2-SCM When at least one of the observed attributes changes its value (incl. starts, ends).\n //\n //\t\t<paragraph>foo<$text attribute>bar{}</$text>baz</paragraph>\n //\t\t<paragraph>foo<$text attribute>bar{}</$text><$text otherAttribute>baz</$text></paragraph>\n //\t\t<paragraph>foo<$text attribute=1>bar{}</$text><$text attribute=2>baz</$text></paragraph>\n //\t\t<paragraph>foo{}<$text attribute>bar</$text>baz</paragraph>\n //\n if (isBetweenDifferentAttributes(position, attributes)) {\n if (eventData) {\n preventCaretMovement(eventData);\n }\n // CLEAR 2-SCM attributes if we are at the end of one 2-SCM and before\n // the next one with a different value of the same attribute.\n //\n //\t\t<paragraph>foo<$text attribute=1>bar{}</$text><$text attribute=2>bar</$text>baz</paragraph>\n //\n if (hasAnyAttribute(selection, attributes) && isBetweenDifferentAttributes(position, attributes, true)) {\n clearSelectionAttributes(model, attributes);\n } else {\n this._overrideGravity();\n }\n return true;\n }\n return false;\n }\n /**\n\t * Updates the document selection and the view according to the two–step caret movement state\n\t * when moving **backwards**. Executed upon `keypress` in the {@link module:engine/view/view~View}.\n\t *\n\t * @internal\n\t * @param eventData Data of the key press.\n\t * @returns `true` when the handler prevented caret movement\n\t */ _handleBackwardMovement(eventData) {\n const attributes = this.attributes;\n const model = this.editor.model;\n const selection = model.document.selection;\n const position = selection.getFirstPosition();\n // When the gravity is already overridden (by this plugin), it means we are on the two-step position.\n // Prevent the movement, restore the gravity and update selection attributes.\n //\n //\t\t<paragraph>foo<$text attribute=1>bar</$text><$text attribute=2>{}baz</$text></paragraph>\n //\t\t<paragraph>foo<$text attribute>bar</$text><$text otherAttribute>{}baz</$text></paragraph>\n //\t\t<paragraph>foo<$text attribute>{}bar</$text>baz</paragraph>\n //\t\t<paragraph>foo<$text attribute>bar</$text>{}baz</paragraph>\n //\n if (this._isGravityOverridden) {\n if (eventData) {\n preventCaretMovement(eventData);\n }\n this._restoreGravity();\n // CLEAR 2-SCM attributes if we are at the end of one 2-SCM and before\n // the next one with a different value of the same attribute.\n //\n //\t\t<paragraph>foo<$text attribute=1>bar</$text><$text attribute=2>{}bar</$text>baz</paragraph>\n //\n if (isBetweenDifferentAttributes(position, attributes, true)) {\n clearSelectionAttributes(model, attributes);\n } else {\n setSelectionAttributesFromTheNodeBefore(model, attributes, position);\n }\n return true;\n } else {\n // REMOVE SELECTION ATTRIBUTE when restoring gravity towards a non-existent content at the\n // beginning of the block.\n //\n // \t\t<paragraph>{}<$text attribute>bar</$text></paragraph>\n //\n if (position.isAtStart) {\n if (hasAnyAttribute(selection, attributes)) {\n if (eventData) {\n preventCaretMovement(eventData);\n }\n setSelectionAttributesFromTheNodeBefore(model, attributes, position);\n return true;\n }\n return false;\n }\n // SET 2-SCM attributes if we are between nodes with the same attribute but with different values.\n //\n //\t\t<paragraph>foo<$text attribute=1>bar</$text>[]<$text attribute=2>bar</$text>baz</paragraph>\n //\n if (!hasAnyAttribute(selection, attributes) && isBetweenDifferentAttributes(position, attributes, true)) {\n if (eventData) {\n preventCaretMovement(eventData);\n }\n setSelectionAttributesFromTheNodeBefore(model, attributes, position);\n return true;\n }\n // When we are moving from natural gravity, to the position of the 2SCM, we need to override the gravity,\n // and make sure it won't be restored. Unless it's at the end of the block and an observed attribute.\n // We need to check if the caret is a one position before the attribute boundary:\n //\n //\t\t<paragraph>foo<$text attribute=1>bar</$text><$text attribute=2>b{}az</$text></paragraph>\n //\t\t<paragraph>foo<$text attribute>bar</$text><$text otherAttribute>b{}az</$text></paragraph>\n //\t\t<paragraph>foo<$text attribute>b{}ar</$text>baz</paragraph>\n //\t\t<paragraph>foo<$text attribute>bar</$text>b{}az</paragraph>\n //\n if (isStepAfterAnyAttributeBoundary(position, attributes)) {\n // ENGAGE 2-SCM if the selection has no attribute. This may happen when the user\n // left the attribute using a FORWARD 2-SCM.\n //\n // \t\t<paragraph><$text attribute>bar</$text>{}</paragraph>\n //\n if (position.isAtEnd && !hasAnyAttribute(selection, attributes) && isBetweenDifferentAttributes(position, attributes)) {\n if (eventData) {\n preventCaretMovement(eventData);\n }\n setSelectionAttributesFromTheNodeBefore(model, attributes, position);\n return true;\n }\n // Skip the automatic gravity restore upon the next selection#change:range event.\n // If not skipped, it would automatically restore the gravity, which should remain\n // overridden.\n this._isNextGravityRestorationSkipped = true;\n this._overrideGravity();\n // Don't return \"true\" here because we didn't call _preventCaretMovement.\n // Returning here will destabilize the filler logic, which also listens to\n // keydown (and the event would be stopped).\n return false;\n }\n }\n return false;\n }\n /**\n\t * Starts listening to {@link module:engine/view/document~Document#event:mousedown} and\n\t * {@link module:engine/view/document~Document#event:selectionChange} and puts the selection before/after a 2-step node\n\t * if clicked at the beginning/ending of the 2-step node.\n\t *\n\t * The purpose of this action is to allow typing around the 2-step node directly after a click.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5/issues/1016.\n\t */ _enableClickingAfterNode() {\n const editor = this.editor;\n const model = editor.model;\n const selection = model.document.selection;\n const document = editor.editing.view.document;\n editor.editing.view.addObserver(MouseObserver);\n editor.editing.view.addObserver(TouchObserver);\n let touched = false;\n let clicked = false;\n // This event should be fired before selection on mobile devices.\n this.listenTo(document, 'touchstart', ()=>{\n clicked = false;\n touched = true;\n });\n // Track mouse click event.\n // Keep in mind that it's often called after the selection change on iOS devices.\n // On the Android devices, it's called before the selection change.\n // That's why we watch `touchstart` event on mobile and set `touched` flag, as it's fired before the selection change.\n // See more: https://github.com/ckeditor/ckeditor5/issues/17171\n this.listenTo(document, 'mousedown', ()=>{\n clicked = true;\n });\n // When the selection has changed...\n this.listenTo(document, 'selectionChange', ()=>{\n const attributes = this.attributes;\n if (!clicked && !touched) {\n return;\n }\n // ...and it was caused by the click or touch...\n clicked = false;\n touched = false;\n // ...and no text is selected...\n if (!selection.isCollapsed) {\n return;\n }\n // ...and clicked text is the 2-step node...\n if (!hasAnyAttribute(selection, attributes)) {\n return;\n }\n const position = selection.getFirstPosition();\n if (!isBetweenDifferentAttributes(position, attributes)) {\n return;\n }\n // The selection at the start of a block would use surrounding attributes\n // from text after the selection so just clear 2-SCM attributes.\n //\n // Also, clear attributes for selection between same attribute with different values.\n if (position.isAtStart || isBetweenDifferentAttributes(position, attributes, true)) {\n clearSelectionAttributes(model, attributes);\n } else if (!this._isGravityOverridden) {\n this._overrideGravity();\n }\n });\n }\n /**\n\t * Starts listening to {@link module:engine/model/model~Model#event:insertContent} and corrects the model\n\t * selection attributes if the selection is at the end of a two-step node after inserting the content.\n\t *\n\t * The purpose of this action is to improve the overall UX because the user is no longer \"trapped\" by the\n\t * two-step attribute of the selection, and they can type a \"clean\" (`linkHref`–less) text right away.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5/issues/6053.\n\t */ _enableInsertContentSelectionAttributesFixer() {\n const editor = this.editor;\n const model = editor.model;\n const selection = model.document.selection;\n const attributes = this.attributes;\n this.listenTo(model, 'insertContent', ()=>{\n const position = selection.getFirstPosition();\n if (hasAnyAttribute(selection, attributes) && isBetweenDifferentAttributes(position, attributes)) {\n clearSelectionAttributes(model, attributes);\n }\n }, {\n priority: 'low'\n });\n }\n /**\n\t * Starts listening to {@link module:engine/model/model~Model#deleteContent} and checks whether\n\t * removing a content right after the tow-step attribute.\n\t *\n\t * If so, the selection should not preserve the two-step attribute. However, if\n\t * the {@link module:typing/twostepcaretmovement~TwoStepCaretMovement} plugin is active and\n\t * the selection has the two-step attribute due to overridden gravity (at the end), the two-step attribute should stay untouched.\n\t *\n\t * The purpose of this action is to allow removing the link text and keep the selection outside the link.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5/issues/7521.\n\t */ _handleDeleteContentAfterNode() {\n const editor = this.editor;\n const model = editor.model;\n const selection = model.document.selection;\n const view = editor.editing.view;\n let isBackspace = false;\n let shouldPreserveAttributes = false;\n // Detect pressing `Backspace`.\n this.listenTo(view.document, 'delete', (evt, data)=>{\n isBackspace = data.direction === 'backward';\n }, {\n priority: 'high'\n });\n // Before removing the content, check whether the selection is inside a two-step attribute.\n // If so, we want to preserve those attributes.\n this.listenTo(model, 'deleteContent', ()=>{\n if (!isBackspace) {\n return;\n }\n const position = selection.getFirstPosition();\n shouldPreserveAttributes = hasAnyAttribute(selection, this.attributes) && !isStepAfterAnyAttributeBoundary(position, this.attributes);\n }, {\n priority: 'high'\n });\n // After removing the content, check whether the current selection should preserve the `linkHref` attribute.\n this.listenTo(model, 'deleteContent', ()=>{\n if (!isBackspace) {\n return;\n }\n isBackspace = false;\n // Do not escape two-step attribute if it was inside it before content deletion.\n if (shouldPreserveAttributes) {\n return;\n }\n // Use `model.enqueueChange()` in order to execute the callback at the end of the changes process.\n editor.model.enqueueChange(()=>{\n const position = selection.getFirstPosition();\n if (hasAnyAttribute(selection, this.attributes) && isBetweenDifferentAttributes(position, this.attributes)) {\n if (position.isAtStart || isBetweenDifferentAttributes(position, this.attributes, true)) {\n clearSelectionAttributes(model, this.attributes);\n } else if (!this._isGravityOverridden) {\n this._overrideGravity();\n }\n }\n });\n }, {\n priority: 'low'\n });\n }\n /**\n\t * `true` when the gravity is overridden for the plugin.\n\t */ get _isGravityOverridden() {\n return !!this._overrideUid;\n }\n /**\n\t * Overrides the gravity using the {@link module:engine/model/writer~Writer model writer}\n\t * and stores the information about this fact in the {@link #_overrideUid}.\n\t *\n\t * A shorthand for {@link module:engine/model/writer~Writer#overrideSelectionGravity}.\n\t */ _overrideGravity() {\n this._overrideUid = this.editor.model.change((writer)=>{\n return writer.overrideSelectionGravity();\n });\n }\n /**\n\t * Restores the gravity using the {@link module:engine/model/writer~Writer model writer}.\n\t *\n\t * A shorthand for {@link module:engine/model/writer~Writer#restoreSelectionGravity}.\n\t */ _restoreGravity() {\n this.editor.model.change((writer)=>{\n writer.restoreSelectionGravity(this._overrideUid);\n this._overrideUid = null;\n });\n }\n}\n/**\n * Checks whether the selection has any of given attributes.\n */ function hasAnyAttribute(selection, attributes) {\n for (const observedAttribute of attributes){\n if (selection.hasAttribute(observedAttribute)) {\n return true;\n }\n }\n return false;\n}\n/**\n * Applies the given attributes to the current selection using using the\n * values from the node before the current position. Uses\n * the {@link module:engine/model/writer~Writer model writer}.\n */ function setSelectionAttributesFromTheNodeBefore(model, attributes, position) {\n const nodeBefore = position.nodeBefore;\n model.change((writer)=>{\n if (nodeBefore) {\n const attributes = [];\n const isInlineObject = model.schema.isObject(nodeBefore) && model.schema.isInline(nodeBefore);\n for (const [key, value] of nodeBefore.getAttributes()){\n if (model.schema.checkAttribute('$text', key) && (!isInlineObject || model.schema.getAttributeProperties(key).copyFromObject !== false)) {\n attributes.push([\n key,\n value\n ]);\n }\n }\n writer.setSelectionAttribute(attributes);\n } else {\n writer.removeSelectionAttribute(attributes);\n }\n });\n}\n/**\n * Removes 2-SCM attributes from the selection.\n */ function clearSelectionAttributes(model, attributes) {\n model.change((writer)=>{\n writer.removeSelectionAttribute(attributes);\n });\n}\n/**\n * Prevents the caret movement in the view by calling `preventDefault` on the event data.\n *\n * @alias data.preventDefault\n */ function preventCaretMovement(data) {\n data.preventDefault();\n}\n/**\n * Checks whether the step before `isBetweenDifferentAttributes()`.\n */ function isStepAfterAnyAttributeBoundary(position, attributes) {\n const positionBefore = position.getShiftedBy(-1);\n return isBetweenDifferentAttributes(positionBefore, attributes);\n}\n/**\n * Checks whether the given position is between different values of given attributes.\n */ function isBetweenDifferentAttributes(position, attributes, isStrict = false) {\n const { nodeBefore, nodeAfter } = position;\n for (const observedAttribute of attributes){\n const attrBefore = nodeBefore ? nodeBefore.getAttribute(observedAttribute) : undefined;\n const attrAfter = nodeAfter ? nodeAfter.getAttribute(observedAttribute) : undefined;\n if (isStrict && (attrBefore === undefined || attrAfter === undefined)) {\n continue;\n }\n if (attrAfter !== attrBefore) {\n return true;\n }\n }\n return false;\n}\n\n// All named transformations.\nconst TRANSFORMATIONS = {\n // Common symbols:\n copyright: {\n from: '(c)',\n to: '©'\n },\n registeredTrademark: {\n from: '(r)',\n to: '®'\n },\n trademark: {\n from: '(tm)',\n to: '™'\n },\n // Mathematical:\n oneHalf: {\n from: /(^|[^/a-z0-9])(1\\/2)([^/a-z0-9])$/i,\n to: [\n null,\n '½',\n null\n ]\n },\n oneThird: {\n from: /(^|[^/a-z0-9])(1\\/3)([^/a-z0-9])$/i,\n to: [\n null,\n '⅓',\n null\n ]\n },\n twoThirds: {\n from: /(^|[^/a-z0-9])(2\\/3)([^/a-z0-9])$/i,\n to: [\n null,\n '⅔',\n null\n ]\n },\n oneForth: {\n from: /(^|[^/a-z0-9])(1\\/4)([^/a-z0-9])$/i,\n to: [\n null,\n '¼',\n null\n ]\n },\n threeQuarters: {\n from: /(^|[^/a-z0-9])(3\\/4)([^/a-z0-9])$/i,\n to: [\n null,\n '¾',\n null\n ]\n },\n lessThanOrEqual: {\n from: '<=',\n to: '≤'\n },\n greaterThanOrEqual: {\n from: '>=',\n to: '≥'\n },\n notEqual: {\n from: '!=',\n to: '≠'\n },\n arrowLeft: {\n from: '<-',\n to: '←'\n },\n arrowRight: {\n from: '->',\n to: '→'\n },\n // Typography:\n horizontalEllipsis: {\n from: '...',\n to: '…'\n },\n enDash: {\n from: /(^| )(--)( )$/,\n to: [\n null,\n '–',\n null\n ]\n },\n emDash: {\n from: /(^| )(---)( )$/,\n to: [\n null,\n '—',\n null\n ]\n },\n // Quotations:\n // English, US\n quotesPrimary: {\n from: buildQuotesRegExp('\"'),\n to: [\n null,\n '“',\n null,\n '”'\n ]\n },\n quotesSecondary: {\n from: buildQuotesRegExp('\\''),\n to: [\n null,\n '‘',\n null,\n '’'\n ]\n },\n // English, UK\n quotesPrimaryEnGb: {\n from: buildQuotesRegExp('\\''),\n to: [\n null,\n '‘',\n null,\n '’'\n ]\n },\n quotesSecondaryEnGb: {\n from: buildQuotesRegExp('\"'),\n to: [\n null,\n '“',\n null,\n '”'\n ]\n },\n // Polish\n quotesPrimaryPl: {\n from: buildQuotesRegExp('\"'),\n to: [\n null,\n '„',\n null,\n '”'\n ]\n },\n quotesSecondaryPl: {\n from: buildQuotesRegExp('\\''),\n to: [\n null,\n '‚',\n null,\n '’'\n ]\n }\n};\n// Transformation groups.\nconst TRANSFORMATION_GROUPS = {\n symbols: [\n 'copyright',\n 'registeredTrademark',\n 'trademark'\n ],\n mathematical: [\n 'oneHalf',\n 'oneThird',\n 'twoThirds',\n 'oneForth',\n 'threeQuarters',\n 'lessThanOrEqual',\n 'greaterThanOrEqual',\n 'notEqual',\n 'arrowLeft',\n 'arrowRight'\n ],\n typography: [\n 'horizontalEllipsis',\n 'enDash',\n 'emDash'\n ],\n quotes: [\n 'quotesPrimary',\n 'quotesSecondary'\n ]\n};\n// A set of default transformations provided by the feature.\nconst DEFAULT_TRANSFORMATIONS = [\n 'symbols',\n 'mathematical',\n 'typography',\n 'quotes'\n];\n/**\n * The text transformation plugin.\n */ class TextTransformation extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n 'Delete',\n 'Input'\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'TextTransformation';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ constructor(editor){\n super(editor);\n editor.config.define('typing', {\n transformations: {\n include: DEFAULT_TRANSFORMATIONS\n }\n });\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const model = this.editor.model;\n const modelSelection = model.document.selection;\n modelSelection.on('change:range', ()=>{\n // Disable plugin when selection is inside a code block.\n this.isEnabled = !modelSelection.anchor.parent.is('element', 'codeBlock');\n });\n this._enableTransformationWatchers();\n }\n /**\n\t * Create new TextWatcher listening to the editor for typing and selection events.\n\t */ _enableTransformationWatchers() {\n const editor = this.editor;\n const model = editor.model;\n const deletePlugin = editor.plugins.get('Delete');\n const normalizedTransformations = normalizeTransformations(editor.config.get('typing.transformations'));\n const testCallback = (text)=>{\n for (const normalizedTransformation of normalizedTransformations){\n const from = normalizedTransformation.from;\n const match = from.test(text);\n if (match) {\n return {\n normalizedTransformation\n };\n }\n }\n };\n const watcher = new TextWatcher(editor.model, testCallback);\n watcher.on('matched:data', (evt, data)=>{\n if (!data.batch.isTyping) {\n return;\n }\n const { from, to } = data.normalizedTransformation;\n const matches = from.exec(data.text);\n const replaces = to(matches.slice(1));\n const matchedRange = data.range;\n let changeIndex = matches.index;\n model.enqueueChange((writer)=>{\n for(let i = 1; i < matches.length; i++){\n const match = matches[i];\n const replaceWith = replaces[i - 1];\n if (replaceWith == null) {\n changeIndex += match.length;\n continue;\n }\n const replacePosition = matchedRange.start.getShiftedBy(changeIndex);\n const replaceRange = model.createRange(replacePosition, replacePosition.getShiftedBy(match.length));\n const attributes = getTextAttributesAfterPosition(replacePosition);\n model.insertContent(writer.createText(replaceWith, attributes), replaceRange);\n changeIndex += replaceWith.length;\n }\n model.enqueueChange(()=>{\n deletePlugin.requestUndoOnBackspace();\n });\n });\n });\n watcher.bind('isEnabled').to(this);\n }\n}\n/**\n * Normalizes the configuration `from` parameter value.\n * The normalized value for the `from` parameter is a RegExp instance. If the passed `from` is already a RegExp instance,\n * it is returned unchanged.\n */ function normalizeFrom(from) {\n if (typeof from == 'string') {\n return new RegExp(`(${escapeRegExp(from)})$`);\n }\n // `from` is already a regular expression.\n return from;\n}\n/**\n * Normalizes the configuration `to` parameter value.\n * The normalized value for the `to` parameter is a function that takes an array and returns an array. See more in the\n * configuration description. If the passed `to` is already a function, it is returned unchanged.\n */ function normalizeTo(to) {\n if (typeof to == 'string') {\n return ()=>[\n to\n ];\n } else if (to instanceof Array) {\n return ()=>to;\n }\n // `to` is already a function.\n return to;\n}\n/**\n * For given `position` returns attributes for the text that is after that position.\n * The text can be in the same text node as the position (`foo[]bar`) or in the next text node (`foo[]<$text bold=\"true\">bar</$text>`).\n */ function getTextAttributesAfterPosition(position) {\n const textNode = position.textNode ? position.textNode : position.nodeAfter;\n return textNode.getAttributes();\n}\n/**\n * Returns a RegExp pattern string that detects a sentence inside a quote.\n *\n * @param quoteCharacter The character to create a pattern for.\n */ function buildQuotesRegExp(quoteCharacter) {\n return new RegExp(`(^|\\\\s)(${quoteCharacter})([^${quoteCharacter}]*)(${quoteCharacter})$`);\n}\n/**\n * Reads text transformation config and returns normalized array of transformations objects.\n */ function normalizeTransformations(config) {\n const extra = config.extra || [];\n const remove = config.remove || [];\n const isNotRemoved = (transformation)=>!remove.includes(transformation);\n const configured = config.include.concat(extra).filter(isNotRemoved);\n return expandGroupsAndRemoveDuplicates(configured).filter(isNotRemoved) // Filter out 'remove' transformations as they might be set in group.\n .map((transformation)=>typeof transformation == 'string' && TRANSFORMATIONS[transformation] ? TRANSFORMATIONS[transformation] : transformation)// Filter out transformations set as string that has not been found.\n .filter((transformation)=>typeof transformation === 'object').map((transformation)=>({\n from: normalizeFrom(transformation.from),\n to: normalizeTo(transformation.to)\n }));\n}\n/**\n * Reads definitions and expands named groups if needed to transformation names.\n * This method also removes duplicated named transformations if any.\n */ function expandGroupsAndRemoveDuplicates(definitions) {\n // Set is using to make sure that transformation names are not duplicated.\n const definedTransformations = new Set();\n for (const transformationOrGroup of definitions){\n if (typeof transformationOrGroup == 'string' && TRANSFORMATION_GROUPS[transformationOrGroup]) {\n for (const transformation of TRANSFORMATION_GROUPS[transformationOrGroup]){\n definedTransformations.add(transformation);\n }\n } else {\n definedTransformations.add(transformationOrGroup);\n }\n }\n return Array.from(definedTransformations);\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 typing/utils/findattributerange\n */ /**\n * Returns a model range that covers all consecutive nodes with the same `attributeName` and its `value`\n * that intersect the given `position`.\n *\n * It can be used e.g. to get the entire range on which the `linkHref` attribute needs to be changed when having a\n * selection inside a link.\n *\n * @param position The start position.\n * @param attributeName The attribute name.\n * @param value The attribute value.\n * @param model The model instance.\n * @returns The link range.\n */ function findAttributeRange(position, attributeName, value, model) {\n return model.createRange(findAttributeRangeBound(position, attributeName, value, true, model), findAttributeRangeBound(position, attributeName, value, false, model));\n}\n/**\n * Walks forward or backward (depends on the `lookBack` flag), node by node, as long as they have the same attribute value\n * and returns a position just before or after (depends on the `lookBack` flag) the last matched node.\n *\n * @param position The start position.\n * @param attributeName The attribute name.\n * @param value The attribute value.\n * @param lookBack Whether the walk direction is forward (`false`) or backward (`true`).\n * @returns The position just before the last matched node.\n */ function findAttributeRangeBound(position, attributeName, value, lookBack, model) {\n // Get node before or after position (depends on `lookBack` flag).\n // When position is inside text node then start searching from text node.\n let node = position.textNode || (lookBack ? position.nodeBefore : position.nodeAfter);\n let lastNode = null;\n while(node && node.getAttribute(attributeName) == value){\n lastNode = node;\n node = lookBack ? node.previousSibling : node.nextSibling;\n }\n return lastNode ? model.createPositionAt(lastNode, lookBack ? 'before' : 'after') : position;\n}\n\n/**\n * Adds a visual highlight style to an attribute element in which the selection is anchored.\n * Together with two-step caret movement, they indicate that the user is typing inside the element.\n *\n * Highlight is turned on by adding the given class to the attribute element in the view:\n *\n * * The class is removed before the conversion has started, as callbacks added with the `'highest'` priority\n * to {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher} events.\n * * The class is added in the view post fixer, after other changes in the model tree were converted to the view.\n *\n * This way, adding and removing the highlight does not interfere with conversion.\n *\n * Usage:\n *\n * ```ts\n * import inlineHighlight from '@ckeditor/ckeditor5-typing/src/utils/inlinehighlight';\n *\n * // Make `ck-link_selected` class be applied on an `a` element\n * // whenever the corresponding `linkHref` attribute element is selected.\n * inlineHighlight( editor, 'linkHref', 'a', 'ck-link_selected' );\n * ```\n *\n * @param editor The editor instance.\n * @param attributeName The attribute name to check.\n * @param tagName The tagName of a view item.\n * @param className The class name to apply in the view.\n */ function inlineHighlight(editor, attributeName, tagName, className) {\n const view = editor.editing.view;\n const highlightedElements = new Set();\n // Adding the class.\n view.document.registerPostFixer((writer)=>{\n const selection = editor.model.document.selection;\n let changed = false;\n if (selection.hasAttribute(attributeName)) {\n const modelRange = findAttributeRange(selection.getFirstPosition(), attributeName, selection.getAttribute(attributeName), editor.model);\n const viewRange = editor.editing.mapper.toViewRange(modelRange);\n // There might be multiple view elements in the `viewRange`, for example, when the `a` element is\n // broken by a UIElement.\n for (const item of viewRange.getItems()){\n if (item.is('element', tagName) && !item.hasClass(className)) {\n writer.addClass(className, item);\n highlightedElements.add(item);\n changed = true;\n }\n }\n }\n return changed;\n });\n // Removing the class.\n editor.conversion.for('editingDowncast').add((dispatcher)=>{\n // Make sure the highlight is removed on every possible event, before conversion is started.\n dispatcher.on('insert', removeHighlight, {\n priority: 'highest'\n });\n dispatcher.on('remove', removeHighlight, {\n priority: 'highest'\n });\n dispatcher.on('attribute', removeHighlight, {\n priority: 'highest'\n });\n dispatcher.on('selection', removeHighlight, {\n priority: 'highest'\n });\n function removeHighlight() {\n view.change((writer)=>{\n for (const item of highlightedElements.values()){\n writer.removeClass(className, item);\n highlightedElements.delete(item);\n }\n });\n }\n });\n}\n\nexport { Delete, Input, InsertTextCommand, TextTransformation, TextWatcher, TwoStepCaretMovement, Typing, findAttributeRange, findAttributeRangeBound, getLastTextLine, inlineHighlight };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/utils/changebuffer\n */\n\nimport type {\n\tModel,\n\tBatch,\n\tDocumentChangeEvent,\n\tDocumentSelectionChangeEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport type { EventInfo } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Change buffer allows to group atomic changes (like characters that have been typed) into\n * {@link module:engine/model/batch~Batch batches}.\n *\n * Batches represent single undo steps, hence changes added to one single batch are undone together.\n *\n * The buffer has a configurable limit of atomic changes that it can accommodate. After the limit was\n * exceeded (see {@link ~ChangeBuffer#input}), a new batch is created in {@link ~ChangeBuffer#batch}.\n *\n * To use the change buffer you need to let it know about the number of changes that were added to the batch:\n *\n * ```ts\n * const buffer = new ChangeBuffer( model, LIMIT );\n *\n * // Later on in your feature:\n * buffer.batch.insert( pos, insertedCharacters );\n * buffer.input( insertedCharacters.length );\n * ```\n */\nexport default class ChangeBuffer {\n\t/**\n\t * The model instance.\n\t */\n\tpublic readonly model: Model;\n\n\t/**\n\t * The maximum number of atomic changes which can be contained in one batch.\n\t */\n\tpublic readonly limit: number;\n\n\t/**\n\t * Whether the buffer is locked. A locked buffer cannot be reset unless it gets unlocked.\n\t */\n\tprivate _isLocked: boolean;\n\n\t/**\n\t * The number of atomic changes in the buffer. Once it exceeds the {@link #limit},\n\t * the {@link #batch batch} is set to a new one.\n\t */\n\tprivate _size: number;\n\n\t/**\n\t * The current batch instance.\n\t */\n\tprivate _batch: Batch | null = null;\n\n\t/**\n\t * The callback to document the change event which later needs to be removed.\n\t */\n\tprivate readonly _changeCallback: ( evt: EventInfo, batch: Batch ) => void;\n\n\t/**\n\t * The callback to document selection `change:attribute` and `change:range` events which resets the buffer.\n\t */\n\tprivate readonly _selectionChangeCallback: () => void;\n\n\t/**\n\t * Creates a new instance of the change buffer.\n\t *\n\t * @param limit The maximum number of atomic changes which can be contained in one batch.\n\t */\n\tconstructor( model: Model, limit: number = 20 ) {\n\t\tthis.model = model;\n\t\tthis._size = 0;\n\t\tthis.limit = limit;\n\t\tthis._isLocked = false;\n\n\t\t// The function to be called in order to notify the buffer about batches which appeared in the document.\n\t\t// The callback will check whether it is a new batch and in that case the buffer will be flushed.\n\t\t//\n\t\t// The reason why the buffer needs to be flushed whenever a new batch appears is that the changes added afterwards\n\t\t// should be added to a new batch. For instance, when the user types, then inserts an image, and then types again,\n\t\t// the characters typed after inserting the image should be added to a different batch than the characters typed before.\n\t\tthis._changeCallback = ( evt, batch ) => {\n\t\t\tif ( batch.isLocal && batch.isUndoable && batch !== this._batch ) {\n\t\t\t\tthis._reset( true );\n\t\t\t}\n\t\t};\n\n\t\tthis._selectionChangeCallback = () => {\n\t\t\tthis._reset();\n\t\t};\n\n\t\tthis.model.document.on<DocumentChangeEvent>( 'change', this._changeCallback );\n\n\t\tthis.model.document.selection.on<DocumentSelectionChangeEvent>( 'change:range', this._selectionChangeCallback );\n\t\tthis.model.document.selection.on<DocumentSelectionChangeEvent>( 'change:attribute', this._selectionChangeCallback );\n\t}\n\n\t/**\n\t * The current batch to which a feature should add its operations. Once the {@link #size}\n\t * is reached or exceeds the {@link #limit}, the batch is set to a new instance and the size is reset.\n\t */\n\tpublic get batch(): Batch {\n\t\tif ( !this._batch ) {\n\t\t\tthis._batch = this.model.createBatch( { isTyping: true } );\n\t\t}\n\n\t\treturn this._batch;\n\t}\n\n\t/**\n\t * The number of atomic changes in the buffer. Once it exceeds the {@link #limit},\n\t * the {@link #batch batch} is set to a new one.\n\t */\n\tpublic get size(): number {\n\t\treturn this._size;\n\t}\n\n\t/**\n\t * The input number of changes into the buffer. Once the {@link #size} is\n\t * reached or exceeds the {@link #limit}, the batch is set to a new instance and the size is reset.\n\t *\n\t * @param changeCount The number of atomic changes to input.\n\t */\n\tpublic input( changeCount: number ): void {\n\t\tthis._size += changeCount;\n\n\t\tif ( this._size >= this.limit ) {\n\t\t\tthis._reset( true );\n\t\t}\n\t}\n\n\t/**\n\t * Whether the buffer is locked. A locked buffer cannot be reset unless it gets unlocked.\n\t */\n\tpublic get isLocked(): boolean {\n\t\treturn this._isLocked;\n\t}\n\n\t/**\n\t * Locks the buffer.\n\t */\n\tpublic lock(): void {\n\t\tthis._isLocked = true;\n\t}\n\n\t/**\n\t * Unlocks the buffer.\n\t */\n\tpublic unlock(): void {\n\t\tthis._isLocked = false;\n\t}\n\n\t/**\n\t * Destroys the buffer.\n\t */\n\tpublic destroy(): void {\n\t\tthis.model.document.off( 'change', this._changeCallback );\n\t\tthis.model.document.selection.off( 'change:range', this._selectionChangeCallback );\n\t\tthis.model.document.selection.off( 'change:attribute', this._selectionChangeCallback );\n\t}\n\n\t/**\n\t * Resets the change buffer.\n\t *\n\t * @param ignoreLock Whether internal lock {@link #isLocked} should be ignored.\n\t */\n\tprivate _reset( ignoreLock: boolean = false ): void {\n\t\tif ( !this.isLocked || ignoreLock ) {\n\t\t\tthis._batch = null;\n\t\t\tthis._size = 0;\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/inserttextcommand\n */\n\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\n\nimport ChangeBuffer from './utils/changebuffer.js';\n\nimport type { DocumentSelection, Range, Selection } from '@ckeditor/ckeditor5-engine';\n\n/**\n * The insert text command. Used by the {@link module:typing/input~Input input feature} to handle typing.\n */\nexport default class InsertTextCommand extends Command {\n\t/**\n\t * Typing's change buffer used to group subsequent changes into batches.\n\t */\n\tprivate readonly _buffer: ChangeBuffer;\n\n\t/**\n\t * Creates an instance of the command.\n\t *\n\t * @param undoStepSize The maximum number of atomic changes\n\t * which can be contained in one batch in the command buffer.\n\t */\n\tconstructor( editor: Editor, undoStepSize: number ) {\n\t\tsuper( editor );\n\n\t\tthis._buffer = new ChangeBuffer( editor.model, undoStepSize );\n\n\t\t// Since this command may execute on different selectable than selection, it should be checked directly in execute block.\n\t\tthis._isEnabledBasedOnSelection = false;\n\t}\n\n\t/**\n\t * The current change buffer.\n\t */\n\tpublic get buffer(): ChangeBuffer {\n\t\treturn this._buffer;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._buffer.destroy();\n\t}\n\n\t/**\n\t * Executes the input command. It replaces the content within the given range with the given text.\n\t * Replacing is a two step process, first the content within the range is removed and then the new text is inserted\n\t * at the beginning of the range (which after the removal is a collapsed range).\n\t *\n\t * @fires execute\n\t * @param options The command options.\n\t */\n\tpublic override execute( options: InsertTextCommandOptions = {} ): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\t\tconst text = options.text || '';\n\t\tconst textInsertions = text.length;\n\n\t\tlet selection: Selection | DocumentSelection = doc.selection;\n\n\t\tif ( options.selection ) {\n\t\t\tselection = options.selection;\n\t\t} else if ( options.range ) {\n\t\t\tselection = model.createSelection( options.range );\n\t\t}\n\n\t\t// Stop executing if selectable is in non-editable place.\n\t\tif ( !model.canEditAt( selection ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst resultRange = options.resultRange;\n\n\t\tmodel.enqueueChange( this._buffer.batch, writer => {\n\t\t\tthis._buffer.lock();\n\n\t\t\t// Store selection attributes before deleting old content to preserve formatting and link.\n\t\t\t// This unifies the behavior between DocumentSelection and Selection provided as input option.\n\t\t\tconst selectionAttributes = Array.from( doc.selection.getAttributes() );\n\n\t\t\tmodel.deleteContent( selection );\n\n\t\t\tif ( text ) {\n\t\t\t\tmodel.insertContent( writer.createText( text, selectionAttributes ), selection );\n\t\t\t}\n\n\t\t\tif ( resultRange ) {\n\t\t\t\twriter.setSelection( resultRange );\n\t\t\t} else if ( !selection.is( 'documentSelection' ) ) {\n\t\t\t\twriter.setSelection( selection );\n\t\t\t}\n\n\t\t\tthis._buffer.unlock();\n\n\t\t\tthis._buffer.input( textInsertions );\n\t\t} );\n\t}\n}\n\n/**\n * Interface with parameters for executing InsertTextCommand.\n *\n * Both `range` and `selection` parameters are used for defining selection but should not be used together.\n * If both are defined, only `selection` will be considered.\n */\nexport interface InsertTextCommandOptions {\n\n\t/**\n\t * The text to be inserted.\n\t */\n\ttext?: string;\n\n\t/**\n\t * The selection in which the text is inserted.\n\t * Inserting a text into a selection deletes the current content within selection ranges. If the selection is not specified,\n\t * the current selection in the model will be used instead.\n\t */\n\tselection?: Selection | DocumentSelection;\n\n\t/**\n\t * The range in which the text is inserted. Defaults to the first range in the current selection.\n\t */\n\trange?: Range;\n\n\t/**\n\t * The range where the selection should be placed after the insertion.\n\t * If not specified, the selection will be placed right after the inserted text.\n\t */\n\tresultRange?: Range;\n}\n\nexport interface InsertTextCommandExecuteEvent {\n\tname: 'execute';\n\targs: [\n\t\tdata: [ options: InsertTextCommandOptions ]\n\t];\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/inserttextobserver\n */\n\nimport { env, EventInfo } from '@ckeditor/ckeditor5-utils';\n\nimport {\n\tDomEventData,\n\tObserver,\n\tFocusObserver,\n\ttype EditingView,\n\ttype ViewDocumentCompositionEndEvent,\n\ttype ViewDocumentInputEvent,\n\ttype ViewDocumentSelection,\n\ttype ViewSelection\n} from '@ckeditor/ckeditor5-engine';\n\n// @if CK_DEBUG_TYPING // const { _buildLogMessage } = require( '@ckeditor/ckeditor5-engine/src/dev-utils/utils.js' );\n\nconst TYPING_INPUT_TYPES = [\n\t// For collapsed range:\n\t//\t- This one is a regular typing (all browsers, all systems).\n\t//\t- This one is used by Chrome when typing accented letter – 2nd step when the user selects the accent (Mac).\n\t// For non-collapsed range:\n\t//\t- This one is used by Chrome when typing accented letter – when the selection box first appears (Mac).\n\t//\t- This one is used by Safari when accepting spell check suggestions from the context menu (Mac).\n\t'insertText',\n\n\t// This one is used by Safari when typing accented letter (Mac).\n\t// This one is used by Safari when accepting spell check suggestions from the autocorrection pop-up (Mac).\n\t'insertReplacementText'\n];\n\nconst TYPING_INPUT_TYPES_ANDROID = [\n\t...TYPING_INPUT_TYPES,\n\t'insertCompositionText'\n];\n\n/**\n * Text insertion observer introduces the {@link module:engine/view/document~Document#event:insertText} event.\n */\nexport default class InsertTextObserver extends Observer {\n\t/**\n\t * Instance of the focus observer. Insert text observer calls\n\t * {@link module:engine/view/observer/focusobserver~FocusObserver#flush} to mark the latest focus change as complete.\n\t */\n\tpublic readonly focusObserver: FocusObserver;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( view: EditingView ) {\n\t\tsuper( view );\n\n\t\tthis.focusObserver = view.getObserver( FocusObserver );\n\n\t\t// On Android composition events should immediately be applied to the model. Rendering is not disabled.\n\t\t// On non-Android the model is updated only on composition end.\n\t\t// On Android we can't rely on composition start/end to update model.\n\t\tconst typingInputTypes = env.isAndroid ? TYPING_INPUT_TYPES_ANDROID : TYPING_INPUT_TYPES;\n\n\t\tconst viewDocument = view.document;\n\n\t\tviewDocument.on<ViewDocumentInputEvent>( 'beforeinput', ( evt, data ) => {\n\t\t\tif ( !this.isEnabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { data: text, targetRanges, inputType, domEvent, isComposing } = data;\n\n\t\t\tif ( !typingInputTypes.includes( inputType ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Mark the latest focus change as complete (we are typing in editable after the focus\n\t\t\t// so the selection is in the focused element).\n\t\t\tthis.focusObserver.flush();\n\n\t\t\tconst eventInfo = new EventInfo( viewDocument, 'insertText' );\n\n\t\t\tviewDocument.fire( eventInfo, new DomEventData( view, domEvent, {\n\t\t\t\ttext,\n\t\t\t\tselection: view.createSelection( targetRanges ),\n\t\t\t\tisComposing\n\t\t\t} ) );\n\n\t\t\t// Stop the beforeinput event if `delete` event was stopped.\n\t\t\t// https://github.com/ckeditor/ckeditor5/issues/753\n\t\t\tif ( eventInfo.stop.called ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t} );\n\n\t\t// On Android composition events are immediately applied to the model.\n\t\t// On non-Android the model is updated only on composition end.\n\t\t// On Android we can't rely on composition start/end to update model.\n\t\tif ( !env.isAndroid ) {\n\t\t\t// Note: The priority must be lower than the CompositionObserver handler to call it after the renderer is unblocked.\n\t\t\t// This is important for view to DOM position mapping.\n\t\t\t// This causes the effect of first remove composed DOM and then reapply it after model modification.\n\t\t\tviewDocument.on<ViewDocumentCompositionEndEvent>( 'compositionend', ( evt, { data, domEvent } ) => {\n\t\t\t\tif ( !this.isEnabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// In case of aborted composition.\n\t\t\t\tif ( !data ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'InsertTextObserver',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t`%cFire insertText event, %c${ JSON.stringify( data ) }`,\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t 'color: blue'\n\t\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t\t// How do we know where to insert the composed text?\n\t\t\t\t// 1. The SelectionObserver is blocked and the view is not updated with the composition changes.\n\t\t\t\t// 2. The last moment before it's locked is the `compositionstart` event.\n\t\t\t\t// 3. The `SelectionObserver` is listening for `compositionstart` event and immediately converts\n\t\t\t\t// the selection. Handle this at the low priority so after the rendering is blocked.\n\t\t\t\tviewDocument.fire( 'insertText', new DomEventData( view, domEvent, {\n\t\t\t\t\ttext: data,\n\t\t\t\t\tisComposing: true\n\t\t\t\t} ) );\n\t\t\t}, { priority: 'low' } );\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 * Event fired when the user types text, for instance presses <kbd>A</kbd> or <kbd>?</kbd> in the\n * editing view document.\n *\n * **Note**: This event will **not** fire for keystrokes such as <kbd>Delete</kbd> or <kbd>Enter</kbd>.\n * They have dedicated events, see {@link module:engine/view/document~Document#event:delete} and\n * {@link module:engine/view/document~Document#event:enter} to learn more.\n *\n * **Note**: This event is fired by the {@link module:typing/inserttextobserver~InsertTextObserver input feature}.\n *\n * @eventName module:engine/view/document~Document#insertText\n * @param data The event data.\n */\nexport type ViewDocumentInsertTextEvent = {\n\tname: 'insertText';\n\targs: [ data: InsertTextEventData ];\n};\n\nexport interface InsertTextEventData extends DomEventData {\n\n\t/**\n\t * The text to be inserted.\n\t */\n\ttext: string;\n\n\t/**\n\t * The selection into which the text should be inserted.\n\t * If not specified, the insertion should occur at the current view selection.\n\t */\n\tselection?: ViewSelection | ViewDocumentSelection;\n\n\t/**\n\t * A flag indicating that event was fired during composition.\n\t *\n\t * Corresponds to the\n\t * {@link module:engine/view/document~Document#event:compositionstart},\n\t * {@link module:engine/view/document~Document#event:compositionupdate},\n\t * and {@link module:engine/view/document~Document#event:compositionend } trio.\n\t */\n\tisComposing?: boolean;\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/input\n */\n\nimport { Plugin, type Editor } from '@ckeditor/ckeditor5-core';\nimport { env } from '@ckeditor/ckeditor5-utils';\n\nimport InsertTextCommand, { type InsertTextCommandOptions } from './inserttextcommand.js';\nimport InsertTextObserver, { type ViewDocumentInsertTextEvent } from './inserttextobserver.js';\n\nimport {\n\tLiveRange,\n\t_tryFixingModelRange,\n\ttype Model,\n\ttype Mapper,\n\ttype Element,\n\ttype Range,\n\ttype ViewNode,\n\ttype ViewElement,\n\ttype MutationData,\n\ttype ViewDocumentCompositionStartEvent,\n\ttype ViewDocumentCompositionEndEvent,\n\ttype ViewDocumentKeyDownEvent,\n\ttype ViewDocumentMutationsEvent,\n\ttype ViewDocumentInputEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport { debounce } from 'es-toolkit/compat';\n\n// @if CK_DEBUG_TYPING // const { _debouncedLine, _buildLogMessage } = require( '@ckeditor/ckeditor5-engine/src/dev-utils/utils.js' );\n\n/**\n * Handles text input coming from the keyboard or other input methods.\n */\nexport default class Input extends Plugin {\n\t/**\n\t * The queue of `insertText` command executions that are waiting for the DOM to get updated after beforeinput event.\n\t */\n\tprivate _typingQueue!: TypingQueue;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Input' 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\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst view = editor.editing.view;\n\t\tconst mapper = editor.editing.mapper;\n\t\tconst modelSelection = model.document.selection;\n\n\t\tthis._typingQueue = new TypingQueue( editor );\n\n\t\tview.addObserver( InsertTextObserver );\n\n\t\t// TODO The above default configuration value should be defined using editor.config.define() once it's fixed.\n\t\tconst insertTextCommand = new InsertTextCommand( editor, editor.config.get( 'typing.undoStep' ) || 20 );\n\n\t\t// Register `insertText` command and add `input` command as an alias for backward compatibility.\n\t\teditor.commands.add( 'insertText', insertTextCommand );\n\t\teditor.commands.add( 'input', insertTextCommand );\n\n\t\tthis.listenTo<ViewDocumentInputEvent>( view.document, 'beforeinput', () => {\n\t\t\t// Flush queue on the next beforeinput event because it could happen\n\t\t\t// that the mutation observer does not notice the DOM change in time.\n\t\t\tthis._typingQueue.flush( 'next beforeinput' );\n\t\t}, { priority: 'high' } );\n\n\t\tthis.listenTo<ViewDocumentInsertTextEvent>( view.document, 'insertText', ( evt, data ) => {\n\t\t\tconst { text, selection: viewSelection } = data;\n\n\t\t\t// In case of a synthetic event, make sure that selection is not fake.\n\t\t\tif ( view.document.selection.isFake && viewSelection && view.document.selection.isSimilar( viewSelection ) ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t}\n\n\t\t\t// In case of typing on a non-collapsed range, we have to handle it ourselves as a browser\n\t\t\t// could modify the DOM unpredictably.\n\t\t\t// Noticed cases:\n\t\t\t// * <pre><code>[foo</code></pre><p>]bar</p>\n\t\t\t// * <p>[foo</p><pre>]<code>bar</code></pre>\n\t\t\t// * <p>[foo</p><blockquote><p>]bar</p></blockquote>\n\t\t\t//\n\t\t\t// Especially tricky case is when a code block follows a paragraph as code block on the view side\n\t\t\t// is rendered as a <code> element inside a <pre> element, but only the <code> element is mapped to the model.\n\t\t\t// While mapping view position <pre>]<code> to model, the model position results before the <codeBlock> element,\n\t\t\t// and this triggers selection fixer to cover only text in the previous paragraph.\n\t\t\t//\n\t\t\t// This is safe for composition as those events are not cancellable\n\t\t\t// and the preventDefault() and defaultPrevented are not affected.\n\t\t\tif ( viewSelection && Array.from( viewSelection.getRanges() ).some( range => !range.isCollapsed ) ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t}\n\n\t\t\tif ( !insertTextCommand.isEnabled ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'%cInsertText command is disabled - prevent DOM change.',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-style: italic'\n\t\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t\tdata.preventDefault();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet modelRanges;\n\n\t\t\t// If view selection was specified, translate it to model selection.\n\t\t\tif ( viewSelection ) {\n\t\t\t\tmodelRanges = Array.from( viewSelection.getRanges() )\n\t\t\t\t\t.map( viewRange => mapper.toModelRange( viewRange ) )\n\t\t\t\t\t.map( modelRange => _tryFixingModelRange( modelRange, model.schema ) || modelRange );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tmodelRanges = Array.from( modelSelection.getRanges() );\n\t\t\t}\n\n\t\t\tlet insertText = text;\n\n\t\t\t// Typing in English on Android is firing composition events for the whole typed word.\n\t\t\t// We need to check the target range text to only apply the difference.\n\t\t\tif ( env.isAndroid ) {\n\t\t\t\tconst selectedText = Array.from( modelRanges[ 0 ].getItems() ).reduce( ( rangeText, node ) => {\n\t\t\t\t\treturn rangeText + ( node.is( '$textProxy' ) ? node.data : '' );\n\t\t\t\t}, '' );\n\n\t\t\t\tif ( selectedText ) {\n\t\t\t\t\tif ( selectedText.length <= insertText.length ) {\n\t\t\t\t\t\tif ( insertText.startsWith( selectedText ) ) {\n\t\t\t\t\t\t\tinsertText = insertText.substring( selectedText.length );\n\t\t\t\t\t\t\t( modelRanges[ 0 ] as any ).start = modelRanges[ 0 ].start.getShiftedBy( selectedText.length );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( selectedText.startsWith( insertText ) ) {\n\t\t\t\t\t\t\t// TODO this should be mapped as delete?\n\t\t\t\t\t\t\t( modelRanges[ 0 ] as any ).start = modelRanges[ 0 ].start.getShiftedBy( insertText.length );\n\t\t\t\t\t\t\tinsertText = '';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( insertText.length == 0 && modelRanges[ 0 ].isCollapsed ) {\n\t\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n\t\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'%cIgnore insertion of an empty data to the collapsed range.',\n\t\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-style: italic'\n\t\t\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Note: the TypingQueue stores live-ranges internally as RTC could change the model while waiting for mutations.\n\t\t\tconst commandData: InsertTextCommandOptions = {\n\t\t\t\ttext: insertText,\n\t\t\t\tselection: model.createSelection( modelRanges )\n\t\t\t};\n\n\t\t\t// This is a beforeinput event, so we need to wait until the browser updates the DOM,\n\t\t\t// and we could apply changes to the model and verify if the DOM is valid.\n\t\t\t// The browser applies changes to the DOM not immediately on beforeinput event.\n\t\t\t// We just wait for mutation observer to notice changes or as a fallback a timeout.\n\t\t\t//\n\t\t\t// Previously we were cancelling the non-composition events, but it caused issues especially in Safari.\n\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t`%cQueue insertText:%c \"${ commandData.text }\"%c ` +\n\t\t\t// @if CK_DEBUG_TYPING // \t\t`[${ commandData.selection.getFirstPosition().path }]-` +\n\t\t\t// @if CK_DEBUG_TYPING // \t\t`[${ commandData.selection.getLastPosition().path }]` +\n\t\t\t// @if CK_DEBUG_TYPING // \t\t` queue size: ${ this._typingQueue.length + 1 }`,\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'color: blue',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t''\n\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\tthis._typingQueue.push( commandData, Boolean( data.isComposing ) );\n\n\t\t\tif ( data.domEvent.defaultPrevented ) {\n\t\t\t\tthis._typingQueue.flush( 'beforeinput default prevented' );\n\t\t\t}\n\t\t} );\n\n\t\t// Delete selected content on composition start.\n\t\tif ( env.isAndroid ) {\n\t\t\t// On Android with English keyboard, the composition starts just by putting caret\n\t\t\t// at the word end or by selecting a table column. This is not a real composition started.\n\t\t\t// Trigger delete content on first composition key pressed.\n\t\t\tthis.listenTo<ViewDocumentKeyDownEvent>( view.document, 'keydown', ( evt, data ) => {\n\t\t\t\tif ( modelSelection.isCollapsed || data.keyCode != 229 || !view.document.isComposing ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconst firstPositionPath = modelSelection.getFirstPosition()!.path;\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconst lastPositionPath = modelSelection.getLastPosition()!.path;\n\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'%cKeyDown 229%c -> model.deleteContent() ' +\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t`[${ firstPositionPath }]-[${ lastPositionPath }]`,\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t''\n\t\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t\tdeleteSelectionContent( model, insertTextCommand );\n\t\t\t} );\n\t\t} else {\n\t\t\t// Note: The priority must precede the CompositionObserver handler to call it before\n\t\t\t// the renderer is blocked, because we want to render this change.\n\t\t\tthis.listenTo<ViewDocumentCompositionStartEvent>( view.document, 'compositionstart', () => {\n\t\t\t\tif ( modelSelection.isCollapsed ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconst firstPositionPath = modelSelection.getFirstPosition()!.path;\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconst lastPositionPath = modelSelection.getLastPosition()!.path;\n\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'%cComposition start%c -> model.deleteContent() ' +\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t`[${ firstPositionPath }]-[${ lastPositionPath }]`,\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t\tdeleteSelectionContent( model, insertTextCommand );\n\t\t\t}, { priority: 'high' } );\n\t\t}\n\n\t\t// Apply changes to the model as they are applied to the DOM by the browser.\n\t\t// On beforeinput event, the DOM is not yet modified. We wait for detected mutations to apply model changes.\n\t\tthis.listenTo<ViewDocumentMutationsEvent>( view.document, 'mutations', ( evt, { mutations } ) => {\n\t\t\t// Check if mutations are relevant for queued changes.\n\t\t\tif ( this._typingQueue.hasAffectedElements() ) {\n\t\t\t\tfor ( const { node } of mutations ) {\n\t\t\t\t\tconst viewElement = findMappedViewAncestor( node, mapper );\n\t\t\t\t\tconst modelElement = mapper.toModelElement( viewElement )!;\n\n\t\t\t\t\tif ( this._typingQueue.isElementAffected( modelElement ) ) {\n\t\t\t\t\t\tthis._typingQueue.flush( 'mutations' );\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'%cMutations not related to the composition.',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-style: italic'\n\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t// @if CK_DEBUG_TYPING // }\n\t\t} );\n\n\t\t// Make sure that all changes are applied to the model before the end of composition.\n\t\tthis.listenTo<ViewDocumentCompositionEndEvent>( view.document, 'compositionend', () => {\n\t\t\tthis._typingQueue.flush( 'before composition end' );\n\t\t}, { priority: 'high' } );\n\n\t\t// Trigger mutations check after the composition completes to fix all DOM changes that got ignored during composition.\n\t\t// On Android, the Renderer is not disabled while composing. While updating DOM nodes, we ignore some changes\n\t\t// that are not that important (like NBSP vs. plain space character) and could break the composition flow.\n\t\t// After composition is completed, we trigger additional `mutations` event for elements affected by the composition\n\t\t// so the Renderer can adjust the DOM to the expected structure without breaking the composition.\n\t\tthis.listenTo<ViewDocumentCompositionEndEvent>( view.document, 'compositionend', () => {\n\t\t\t// There could be new item queued on the composition end, so flush it.\n\t\t\tthis._typingQueue.flush( 'after composition end' );\n\n\t\t\tconst mutations: Array<MutationData> = [];\n\n\t\t\tif ( this._typingQueue.hasAffectedElements() ) {\n\t\t\t\tfor ( const element of this._typingQueue.flushAffectedElements() ) {\n\t\t\t\t\tconst viewElement = mapper.toViewElement( element );\n\n\t\t\t\t\tif ( !viewElement ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tmutations.push( { type: 'children', node: viewElement } );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Fire composition mutations, if any.\n\t\t\t//\n\t\t\t// For non-Android:\n\t\t\t// After the composition end, we need to verify if there are no left-overs.\n\t\t\t// Listening at the lowest priority, so after the `InsertTextObserver` added above (all composed text\n\t\t\t// should already be applied to the model, view, and DOM).\n\t\t\t// On non-Android the `Renderer` is blocked while the user is composing, but the `MutationObserver` still collects\n\t\t\t// mutated nodes and fires `mutations` events.\n\t\t\t// Those events are recorded by the `Renderer` but not applied to the DOM while composing.\n\t\t\t// We need to trigger those checks (and fixes) once again but this time without specifying the exact mutations\n\t\t\t// since they are already recorded by the `Renderer`.\n\t\t\t// It in most cases just clears the internal record of mutated text nodes\n\t\t\t// since all changes should already be applied to the DOM.\n\t\t\t// This is especially needed when a user cancels composition, so we can clear nodes marked to sync.\n\t\t\tif ( mutations.length || !env.isAndroid ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.group( ..._buildLogMessage( this, 'Input',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'%cFire post-composition mutation fixes.',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold'\n\t\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t\tview.document.fire<ViewDocumentMutationsEvent>( 'mutations', { mutations } );\n\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.groupEnd();\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\t\t\t}\n\t\t}, { priority: 'lowest' } );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._typingQueue.destroy();\n\t}\n}\n\n/**\n * The queue of `insertText` command executions that are waiting for the DOM to get updated after beforeinput event.\n */\nclass TypingQueue {\n\t/**\n\t * The editor instance.\n\t */\n\tpublic editor: Editor;\n\n\t/**\n\t * Debounced queue flush as a safety mechanism for cases of mutation observer not triggering.\n\t */\n\tpublic flushDebounced = debounce( () => this.flush( 'timeout' ), 50 );\n\n\t/**\n\t * The queue of `insertText` command executions that are waiting for the DOM to get updated after beforeinput event.\n\t */\n\tprivate _queue: Array<InsertTextCommandLiveOptions> = [];\n\n\t/**\n\t * Whether there is any composition enqueued or plain typing only.\n\t */\n\tprivate _isComposing = false;\n\n\t/**\n\t * A set of model elements. The typing happened in those elements. It's used for mutations check.\n\t */\n\tprivate _affectedElements = new Set<Element>();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tthis.editor = editor;\n\t}\n\n\t/**\n\t * Destroys the helper object.\n\t */\n\tpublic destroy(): void {\n\t\tthis.flushDebounced.cancel();\n\t\tthis._affectedElements.clear();\n\n\t\twhile ( this._queue.length ) {\n\t\t\tthis.shift();\n\t\t}\n\t}\n\n\t/**\n\t * Returns the size of the queue.\n\t */\n\tpublic get length(): number {\n\t\treturn this._queue.length;\n\t}\n\n\t/**\n\t * Push next insertText command data to the queue.\n\t */\n\tpublic push( commandData: InsertTextCommandOptions, isComposing: boolean ): void {\n\t\tconst commandLiveData: InsertTextCommandLiveOptions = {\n\t\t\ttext: commandData.text\n\t\t};\n\n\t\tif ( commandData.selection ) {\n\t\t\tcommandLiveData.selectionRanges = [];\n\n\t\t\tfor ( const range of commandData.selection.getRanges() ) {\n\t\t\t\tcommandLiveData.selectionRanges.push( LiveRange.fromRange( range ) );\n\n\t\t\t\t// Keep reference to the model element for later mutation checks.\n\t\t\t\tthis._affectedElements.add( range.start.parent as Element );\n\t\t\t}\n\t\t}\n\n\t\tthis._queue.push( commandLiveData );\n\t\tthis._isComposing ||= isComposing;\n\t\tthis.flushDebounced();\n\t}\n\n\t/**\n\t * Shift the first item from the insertText command data queue.\n\t */\n\tpublic shift(): InsertTextCommandOptions {\n\t\tconst commandLiveData = this._queue.shift()!;\n\t\tconst commandData: InsertTextCommandOptions = {\n\t\t\ttext: commandLiveData.text\n\t\t};\n\n\t\tif ( commandLiveData.selectionRanges ) {\n\t\t\tconst ranges = commandLiveData.selectionRanges\n\t\t\t\t.map( liveRange => detachLiveRange( liveRange ) )\n\t\t\t\t.filter( ( range ): range is Range => !!range );\n\n\t\t\tif ( ranges.length ) {\n\t\t\t\tcommandData.selection = this.editor.model.createSelection( ranges );\n\t\t\t}\n\t\t}\n\n\t\treturn commandData;\n\t}\n\n\t/**\n\t * Applies all queued insertText command executions.\n\t *\n\t * @param reason Used only for debugging.\n\t */\n\tpublic flush( reason: string ): void { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst view = editor.editing.view;\n\n\t\tthis.flushDebounced.cancel();\n\n\t\tif ( !this._queue.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.group( ..._buildLogMessage( this, 'Input',\n\t\t// @if CK_DEBUG_TYPING // \t\t`%cFlush insertText queue on ${ reason }.`,\n\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold'\n\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t// @if CK_DEBUG_TYPING // }\n\n\t\tconst insertTextCommand = editor.commands.get( 'insertText' )!;\n\t\tconst buffer = insertTextCommand.buffer;\n\n\t\tmodel.enqueueChange( buffer.batch, () => {\n\t\t\tbuffer.lock();\n\n\t\t\twhile ( this._queue.length ) {\n\t\t\t\tconst commandData = this.shift();\n\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t`%cExecute queued insertText:%c \"${ commandData.text }\"%c ` +\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t\t`[${ commandData.selection.getFirstPosition().path }]-` +\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t\t`[${ commandData.selection.getLastPosition().path }]`,\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'color: blue',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t''\n\t\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t\teditor.execute( 'insertText', commandData );\n\t\t\t}\n\n\t\t\tbuffer.unlock();\n\n\t\t\tif ( !this._isComposing ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'Clear affected elements set'\n\t\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\t\t\t\tthis._affectedElements.clear();\n\t\t\t}\n\n\t\t\tthis._isComposing = false;\n\t\t} );\n\n\t\tview.scrollToTheSelection();\n\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.groupEnd();\n\t\t// @if CK_DEBUG_TYPING // }\n\t}\n\n\t/**\n\t * Returns `true` if the given model element is related to recent typing.\n\t */\n\tpublic isElementAffected( element: Element ): boolean {\n\t\treturn this._affectedElements.has( element );\n\t}\n\n\t/**\n\t * Returns `true` if there are any affected elements in the queue.\n\t */\n\tpublic hasAffectedElements(): boolean {\n\t\treturn this._affectedElements.size > 0;\n\t}\n\n\t/**\n\t * Returns an array of typing-related elements and clears the internal list.\n\t */\n\tpublic flushAffectedElements(): Array<Element> {\n\t\tconst result = Array.from( this._affectedElements );\n\n\t\tthis._affectedElements.clear();\n\n\t\treturn result;\n\t}\n}\n\n/**\n * Deletes the content selected by the document selection at the start of composition.\n */\nfunction deleteSelectionContent( model: Model, insertTextCommand: InsertTextCommand ): void {\n\t// By relying on the state of the input command we allow disabling the entire input easily\n\t// by just disabling the input command. We could’ve used here the delete command but that\n\t// would mean requiring the delete feature which would block loading one without the other.\n\t// We could also check the editor.isReadOnly property, but that wouldn't allow to block\n\t// the input without blocking other features.\n\tif ( !insertTextCommand.isEnabled ) {\n\t\treturn;\n\t}\n\n\tconst buffer = insertTextCommand.buffer;\n\n\tbuffer.lock();\n\n\tmodel.enqueueChange( buffer.batch, () => {\n\t\tmodel.deleteContent( model.document.selection );\n\t} );\n\n\tbuffer.unlock();\n}\n\n/**\n * Detaches a LiveRange and returns the static range from it.\n */\nfunction detachLiveRange( liveRange: LiveRange ): Range | null {\n\tconst range = liveRange.toRange();\n\n\tliveRange.detach();\n\n\tif ( range.root.rootName == '$graveyard' ) {\n\t\treturn null;\n\t}\n\n\treturn range;\n}\n\n/**\n * For the given `viewNode`, finds and returns the closest ancestor of this node that has a mapping to the model.\n */\nfunction findMappedViewAncestor( viewNode: ViewNode, mapper: Mapper ): ViewElement {\n\tlet node = ( viewNode.is( '$text' ) ? viewNode.parent : viewNode ) as ViewElement;\n\n\twhile ( !mapper.toModelElement( node ) ) {\n\t\tnode = node.parent as ViewElement;\n\t}\n\n\treturn node;\n}\n\n/**\n * The insertText command data stored as LiveRange-s.\n */\ntype InsertTextCommandLiveOptions = {\n\ttext?: string;\n\tselectionRanges?: Array<LiveRange>;\n};\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/deletecommand\n */\n\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\nimport { count } from '@ckeditor/ckeditor5-utils';\nimport type { DocumentSelection, Element, Selection, Writer } from '@ckeditor/ckeditor5-engine';\n\nimport ChangeBuffer from './utils/changebuffer.js';\n\n// @if CK_DEBUG_TYPING // const { _buildLogMessage } = require( '@ckeditor/ckeditor5-engine/src/dev-utils/utils.js' );\n\n/**\n * The delete command. Used by the {@link module:typing/delete~Delete delete feature} to handle the <kbd>Delete</kbd> and\n * <kbd>Backspace</kbd> keys.\n */\nexport default class DeleteCommand extends Command {\n\t/**\n\t * The directionality of the delete describing in what direction it should\n\t * consume the content when the selection is collapsed.\n\t */\n\tpublic readonly direction: 'forward' | 'backward';\n\n\t/**\n\t * Delete's change buffer used to group subsequent changes into batches.\n\t */\n\tprivate readonly _buffer: ChangeBuffer;\n\n\t/**\n\t * Creates an instance of the command.\n\t *\n\t * @param direction The directionality of the delete describing in what direction it\n\t * should consume the content when the selection is collapsed.\n\t */\n\tconstructor( editor: Editor, direction: 'forward' | 'backward' ) {\n\t\tsuper( editor );\n\n\t\tthis.direction = direction;\n\t\tthis._buffer = new ChangeBuffer( editor.model, editor.config.get( 'typing.undoStep' ) );\n\n\t\t// Since this command may execute on different selectable than selection, it should be checked directly in execute block.\n\t\tthis._isEnabledBasedOnSelection = false;\n\t}\n\n\t/**\n\t * The current change buffer.\n\t */\n\tpublic get buffer(): ChangeBuffer {\n\t\treturn this._buffer;\n\t}\n\n\t/**\n\t * Executes the delete command. Depending on whether the selection is collapsed or not, deletes its content\n\t * or a piece of content in the {@link #direction defined direction}.\n\t *\n\t * @fires execute\n\t * @param options The command options.\n\t * @param options.unit See {@link module:engine/model/utils/modifyselection~modifySelection}'s options.\n\t * @param options.sequence A number describing which subsequent delete event it is without the key being released.\n\t * See the {@link module:engine/view/document~Document#event:delete} event data.\n\t * @param options.selection Selection to remove. If not set, current model selection will be used.\n\t */\n\tpublic override execute( options: {\n\t\tunit?: 'character' | 'codePoint' | 'word';\n\t\tsequence?: number;\n\t\tselection?: Selection | DocumentSelection;\n\t} = {} ): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\n\t\tmodel.enqueueChange( this._buffer.batch, writer => {\n\t\t\tthis._buffer.lock();\n\n\t\t\tconst selection = writer.createSelection( options.selection || doc.selection );\n\n\t\t\t// Don't execute command when selection is in non-editable place.\n\t\t\tif ( !model.canEditAt( selection ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst sequence = options.sequence || 1;\n\n\t\t\t// Do not replace the whole selected content if selection was collapsed.\n\t\t\t// This prevents such situation:\n\t\t\t//\n\t\t\t// <h1></h1><p>[]</p>\t--> <h1>[</h1><p>]</p> \t\t--> <p></p>\n\t\t\t// starting content\t\t--> after `modifySelection`\t--> after `deleteContent`.\n\t\t\tconst doNotResetEntireContent = selection.isCollapsed;\n\n\t\t\t// Try to extend the selection in the specified direction.\n\t\t\tif ( selection.isCollapsed ) {\n\t\t\t\tmodel.modifySelection( selection, {\n\t\t\t\t\tdirection: this.direction,\n\t\t\t\t\tunit: options.unit,\n\t\t\t\t\ttreatEmojiAsSingleUnit: true\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Check if deleting in an empty editor. See #61.\n\t\t\tif ( this._shouldEntireContentBeReplacedWithParagraph( sequence ) ) {\n\t\t\t\tthis._replaceEntireContentWithParagraph( writer );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Check if deleting in the first empty block.\n\t\t\t// See https://github.com/ckeditor/ckeditor5/issues/8137.\n\t\t\tif ( this._shouldReplaceFirstBlockWithParagraph( selection, sequence ) ) {\n\t\t\t\tthis.editor.execute( 'paragraph', { selection } );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If selection is still collapsed, then there's nothing to delete.\n\t\t\tif ( selection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet changeCount = 0;\n\n\t\t\tselection.getFirstRange()!.getMinimalFlatRanges().forEach( range => {\n\t\t\t\tchangeCount += count(\n\t\t\t\t\trange.getWalker( { singleCharacters: true, ignoreElementEnd: true, shallow: true } )\n\t\t\t\t);\n\t\t\t} );\n\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'DeleteCommand',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'Delete content',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t`[${ selection.getFirstPosition()!.path }]-[${ selection.getLastPosition()!.path }]`,\n\t\t\t// @if CK_DEBUG_TYPING // \t\toptions\n\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\tmodel.deleteContent( selection, {\n\t\t\t\tdoNotResetEntireContent,\n\t\t\t\tdirection: this.direction\n\t\t\t} );\n\n\t\t\tthis._buffer.input( changeCount );\n\n\t\t\twriter.setSelection( selection );\n\n\t\t\tthis._buffer.unlock();\n\t\t} );\n\t}\n\n\t/**\n\t * If the user keeps <kbd>Backspace</kbd> or <kbd>Delete</kbd> key pressed, the content of the current\n\t * editable will be cleared. However, this will not yet lead to resetting the remaining block to a paragraph\n\t * (which happens e.g. when the user does <kbd>Ctrl</kbd> + <kbd>A</kbd>, <kbd>Backspace</kbd>).\n\t *\n\t * But, if the user pressed the key in an empty editable for the first time,\n\t * we want to replace the entire content with a paragraph if:\n\t *\n\t * * the current limit element is empty,\n\t * * the paragraph is allowed in the limit element,\n\t * * the limit doesn't already have a paragraph inside.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5-typing/issues/61.\n\t *\n\t * @param sequence A number describing which subsequent delete event it is without the key being released.\n\t */\n\tprivate _shouldEntireContentBeReplacedWithParagraph( sequence: number ): boolean {\n\t\t// Does nothing if user pressed and held the \"Backspace\" or \"Delete\" key.\n\t\tif ( sequence > 1 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\t\tconst selection = doc.selection;\n\t\tconst limitElement = model.schema.getLimitElement( selection );\n\n\t\t// If a collapsed selection contains the whole content it means that the content is empty\n\t\t// (from the user perspective).\n\t\tconst limitElementIsEmpty = selection.isCollapsed && selection.containsEntireContent( limitElement );\n\n\t\tif ( !limitElementIsEmpty ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !model.schema.checkChild( limitElement, 'paragraph' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst limitElementFirstChild = limitElement.getChild( 0 );\n\n\t\t// Does nothing if the limit element already contains only a paragraph.\n\t\t// We ignore the case when paragraph might have some inline elements (<p><inlineWidget>[]</inlineWidget></p>)\n\t\t// because we don't support such cases yet and it's unclear whether inlineWidget shouldn't be a limit itself.\n\t\tif ( limitElementFirstChild && limitElementFirstChild.is( 'element', 'paragraph' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * The entire content is replaced with the paragraph. Selection is moved inside the paragraph.\n\t *\n\t * @param writer The model writer.\n\t */\n\tprivate _replaceEntireContentWithParagraph( writer: Writer ): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\t\tconst selection = doc.selection;\n\t\tconst limitElement = model.schema.getLimitElement( selection );\n\t\tconst paragraph = writer.createElement( 'paragraph' );\n\n\t\twriter.remove( writer.createRangeIn( limitElement ) );\n\t\twriter.insert( paragraph, limitElement );\n\n\t\twriter.setSelection( paragraph, 0 );\n\t}\n\n\t/**\n\t * Checks if the selection is inside an empty element that is the first child of the limit element\n\t * and should be replaced with a paragraph.\n\t *\n\t * @param selection The selection.\n\t * @param sequence A number describing which subsequent delete event it is without the key being released.\n\t */\n\tprivate _shouldReplaceFirstBlockWithParagraph( selection: Selection, sequence: number ): boolean {\n\t\tconst model = this.editor.model;\n\n\t\t// Does nothing if user pressed and held the \"Backspace\" key or it was a \"Delete\" button.\n\t\tif ( sequence > 1 || this.direction != 'backward' ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !selection.isCollapsed ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst position = selection.getFirstPosition()!;\n\t\tconst limitElement = model.schema.getLimitElement( position );\n\t\tconst limitElementFirstChild = limitElement.getChild( 0 ) as Element;\n\n\t\t// Only elements that are direct children of the limit element can be replaced.\n\t\t// Unwrapping from a block quote should be handled in a dedicated feature.\n\t\tif ( position.parent != limitElementFirstChild ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// A block should be replaced only if it was empty.\n\t\tif ( !selection.containsEntireContent( limitElementFirstChild ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Replace with a paragraph only if it's allowed there.\n\t\tif ( !model.schema.checkChild( limitElement, 'paragraph' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Does nothing if the limit element already contains only a paragraph.\n\t\tif ( limitElementFirstChild.name == 'paragraph' ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/deleteobserver\n */\n\nimport {\n\tenv,\n\tkeyCodes,\n\tisInsideCombinedSymbol,\n\tisInsideEmojiSequence,\n\tisInsideSurrogatePair\n} from '@ckeditor/ckeditor5-utils';\nimport {\n\tBubblingEventInfo,\n\tDomEventData,\n\tObserver,\n\ttype BubblingEvent,\n\ttype ViewDocumentInputEvent,\n\ttype ViewDocumentKeyDownEvent,\n\ttype ViewDocumentKeyUpEvent,\n\ttype ViewDocumentSelection,\n\ttype ViewSelection,\n\ttype ViewRange,\n\ttype EditingView\n} from '@ckeditor/ckeditor5-engine';\n\nconst DELETE_CHARACTER = 'character';\nconst DELETE_WORD = 'word';\nconst DELETE_CODE_POINT = 'codePoint';\nconst DELETE_SELECTION = 'selection';\nconst DELETE_BACKWARD = 'backward';\nconst DELETE_FORWARD = 'forward';\n\ntype DeleteEventSpec = {\n\tunit: 'selection' | 'codePoint' | 'character' | 'word';\n\tdirection: 'backward' | 'forward';\n};\n\nconst DELETE_EVENT_TYPES: Record<string, DeleteEventSpec> = {\n\t// --------------------------------------- Backward delete types -----------------------------------------------------\n\n\t// This happens in Safari on Mac when some content is selected and Ctrl + K is pressed.\n\tdeleteContent: {\n\t\tunit: DELETE_SELECTION,\n\n\t\t// According to the Input Events Level 2 spec, this delete type has no direction\n\t\t// but to keep things simple, let's default to backward.\n\t\tdirection: DELETE_BACKWARD\n\t},\n\t// Chrome and Safari on Mac: Backspace or Ctrl + H\n\tdeleteContentBackward: {\n\t\t// This kind of deletions must be done on the code point-level instead of target range provided by the DOM beforeinput event.\n\t\t// Take for instance \"👨‍👩‍👧‍👧\", it equals:\n\t\t//\n\t\t//\t* [ \"👨\", \"ZERO WIDTH JOINER\", \"👩\", \"ZERO WIDTH JOINER\", \"👧\", \"ZERO WIDTH JOINER\", \"👧\" ]\n\t\t//\t* or simply \"\\u{1F468}\\u200D\\u{1F469}\\u200D\\u{1F467}\\u200D\\u{1F467}\"\n\t\t//\n\t\t// The range provided by the browser would cause the entire multi-byte grapheme to disappear while the user\n\t\t// intention when deleting backwards (\"👨‍👩‍👧‍👧[]\", then backspace) is gradual \"decomposition\" (first to \"👨‍👩‍👧‍[]\",\n\t\t// then to \"👨‍👩‍[]\", etc.).\n\t\t//\n\t\t//\t* \"👨‍👩‍👧‍👧[]\" + backward delete (by code point) -> results in \"👨‍👩‍👧[]\", removed the last \"👧\" 👍\n\t\t//\t* \"👨‍👩‍👧‍👧[]\" + backward delete (by character) -> results in \"[]\", removed the whole grapheme 👎\n\t\t//\n\t\t// Deleting by code-point is simply a better UX. See \"deleteContentForward\" to learn more.\n\t\tunit: DELETE_CODE_POINT,\n\t\tdirection: DELETE_BACKWARD\n\t},\n\t// On Mac: Option + Backspace.\n\t// On iOS: Hold the backspace for a while and the whole words will start to disappear.\n\tdeleteWordBackward: {\n\t\tunit: DELETE_WORD,\n\t\tdirection: DELETE_BACKWARD\n\t},\n\t// Safari on Mac: Cmd + Backspace\n\tdeleteHardLineBackward: {\n\t\tunit: DELETE_SELECTION,\n\t\tdirection: DELETE_BACKWARD\n\t},\n\t// Chrome on Mac: Cmd + Backspace.\n\tdeleteSoftLineBackward: {\n\t\tunit: DELETE_SELECTION,\n\t\tdirection: DELETE_BACKWARD\n\t},\n\n\t// --------------------------------------- Forward delete types -----------------------------------------------------\n\n\t// Chrome on Mac: Fn + Backspace or Ctrl + D\n\t// Safari on Mac: Ctrl + K or Ctrl + D\n\tdeleteContentForward: {\n\t\t// Unlike backward delete, this delete must be performed by character instead of by code point, which\n\t\t// provides the best UX for working with accented letters.\n\t\t// Take, for example \"b̂\" (\"\\u0062\\u0302\", or [ \"LATIN SMALL LETTER B\", \"COMBINING CIRCUMFLEX ACCENT\" ]):\n\t\t//\n\t\t//\t* \"b̂[]\" + backward delete (by code point) -> results in \"b[]\", removed the combining mark 👍\n\t\t//\t* \"[]b̂\" + forward delete (by code point) -> results in \"[]^\", a bare combining mark does that not make sense when alone 👎\n\t\t//\t* \"[]b̂\" + forward delete (by character) -> results in \"[]\", removed both \"b\" and the combining mark 👍\n\t\t//\n\t\t// See: \"deleteContentBackward\" to learn more.\n\t\tunit: DELETE_CHARACTER,\n\t\tdirection: DELETE_FORWARD\n\t},\n\t// On Mac: Fn + Option + Backspace.\n\tdeleteWordForward: {\n\t\tunit: DELETE_WORD,\n\t\tdirection: DELETE_FORWARD\n\t},\n\t// Chrome on Mac: Ctrl + K (you have to disable the Link plugin first, though, because it uses the same keystroke)\n\t// This is weird that it does not work in Safari on Mac despite being listed in the official shortcuts listing\n\t// on Apple's webpage.\n\tdeleteHardLineForward: {\n\t\tunit: DELETE_SELECTION,\n\t\tdirection: DELETE_FORWARD\n\t},\n\t// At this moment there is no known way to trigger this event type but let's keep it for the symmetry with\n\t// deleteSoftLineBackward.\n\tdeleteSoftLineForward: {\n\t\tunit: DELETE_SELECTION,\n\t\tdirection: DELETE_FORWARD\n\t}\n};\n\n/**\n * Delete observer introduces the {@link module:engine/view/document~Document#event:delete} event.\n */\nexport default class DeleteObserver extends Observer {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( view: EditingView ) {\n\t\tsuper( view );\n\n\t\tconst document = view.document;\n\n\t\t// It matters how many subsequent deletions were made, e.g. when the backspace key was pressed and held\n\t\t// by the user for some time. For instance, if such scenario ocurred and the heading the selection was\n\t\t// anchored to was the only content of the editor, it will not be converted into a paragraph (the user\n\t\t// wanted to clean it up, not remove it, it's about UX). Check out the DeleteCommand implementation to learn more.\n\t\t//\n\t\t// Fun fact: Safari on Mac won't fire beforeinput for backspace in an empty heading (only content).\n\t\tlet sequence = 0;\n\n\t\tdocument.on( 'keydown', () => {\n\t\t\tsequence++;\n\t\t} );\n\n\t\tdocument.on( 'keyup', () => {\n\t\t\tsequence = 0;\n\t\t} );\n\n\t\tdocument.on<ViewDocumentInputEvent>( 'beforeinput', ( evt, data ) => {\n\t\t\tif ( !this.isEnabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { targetRanges, domEvent, inputType } = data;\n\t\t\tconst deleteEventSpec = DELETE_EVENT_TYPES[ inputType ];\n\n\t\t\tif ( !deleteEventSpec ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst deleteData: Partial<DeleteEventData> = {\n\t\t\t\tdirection: deleteEventSpec.direction,\n\t\t\t\tunit: deleteEventSpec.unit,\n\t\t\t\tsequence\n\t\t\t};\n\n\t\t\tif ( deleteData.unit == DELETE_SELECTION ) {\n\t\t\t\tdeleteData.selectionToRemove = view.createSelection( targetRanges[ 0 ] );\n\t\t\t}\n\n\t\t\t// The default deletion unit for deleteContentBackward is a single code point\n\t\t\t// but if the browser provides a wider target range then we should use it.\n\t\t\tif ( inputType === 'deleteContentBackward' ) {\n\t\t\t\t// On Android, deleteContentBackward has sequence 1 by default.\n\t\t\t\tif ( env.isAndroid ) {\n\t\t\t\t\tdeleteData.sequence = 1;\n\t\t\t\t}\n\n\t\t\t\t// The beforeInput event wants more than a single character to be removed.\n\t\t\t\tif ( shouldUseTargetRanges( targetRanges ) ) {\n\t\t\t\t\tdeleteData.unit = DELETE_SELECTION;\n\t\t\t\t\tdeleteData.selectionToRemove = view.createSelection( targetRanges );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst eventInfo = new BubblingEventInfo( document, 'delete', targetRanges[ 0 ] );\n\n\t\t\tdocument.fire( eventInfo, new DomEventData( view, domEvent, deleteData ) );\n\n\t\t\t// Stop the beforeinput event if `delete` event was stopped.\n\t\t\t// https://github.com/ckeditor/ckeditor5/issues/753\n\t\t\tif ( eventInfo.stop.called ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t} );\n\n\t\t// TODO: to be removed when https://bugs.chromium.org/p/chromium/issues/detail?id=1365311 is solved.\n\t\tif ( env.isBlink ) {\n\t\t\tenableChromeWorkaround( this );\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 * Event fired when the user tries to delete content (e.g. presses <kbd>Delete</kbd> or <kbd>Backspace</kbd>).\n *\n * Note: This event is fired by the {@link module:typing/deleteobserver~DeleteObserver delete observer}\n * (usually registered by the {@link module:typing/delete~Delete delete feature}).\n *\n * @eventName module:engine/view/document~Document#delete\n * @param data The event data.\n */\nexport type ViewDocumentDeleteEvent = BubblingEvent<{\n\tname: 'delete';\n\targs: [ data: DeleteEventData ];\n}>;\n\nexport interface DeleteEventData extends DomEventData<InputEvent> {\n\n\t/**\n\t * The direction in which the deletion should happen.\n\t */\n\tdirection: 'backward' | 'forward';\n\n\t/**\n\t * The \"amount\" of content that should be deleted.\n\t */\n\tunit: 'selection' | 'codePoint' | 'character' | 'word';\n\n\t/**\n\t * A number describing which subsequent delete event it is without the key being released.\n\t * If it's 2 or more it means that the key was pressed and hold.\n\t */\n\tsequence: number;\n\n\t/**\n\t * View selection which content should be removed. If not set,\n\t * current selection should be used.\n\t */\n\tselectionToRemove?: ViewSelection | ViewDocumentSelection;\n}\n\n/**\n * Enables workaround for the issue https://github.com/ckeditor/ckeditor5/issues/11904.\n */\nfunction enableChromeWorkaround( observer: DeleteObserver ) {\n\tconst view = observer.view;\n\tconst document = view.document;\n\n\tlet pressedKeyCode: number | null = null;\n\tlet beforeInputReceived = false;\n\n\tdocument.on<ViewDocumentKeyDownEvent>( 'keydown', ( evt, { keyCode } ) => {\n\t\tpressedKeyCode = keyCode;\n\t\tbeforeInputReceived = false;\n\t} );\n\n\tdocument.on<ViewDocumentKeyUpEvent>( 'keyup', ( evt, { keyCode, domEvent } ) => {\n\t\tconst selection = document.selection;\n\t\tconst shouldFireDeleteEvent = observer.isEnabled &&\n\t\t\tkeyCode == pressedKeyCode &&\n\t\t\tisDeleteKeyCode( keyCode ) &&\n\t\t\t!selection.isCollapsed &&\n\t\t\t!beforeInputReceived;\n\n\t\tpressedKeyCode = null;\n\n\t\tif ( shouldFireDeleteEvent ) {\n\t\t\tconst targetRange = selection.getFirstRange()!;\n\t\t\tconst eventInfo = new BubblingEventInfo( document, 'delete', targetRange );\n\t\t\tconst deleteData: Partial<DeleteEventData> = {\n\t\t\t\tunit: DELETE_SELECTION,\n\t\t\t\tdirection: getDeleteDirection( keyCode ),\n\t\t\t\tselectionToRemove: selection\n\t\t\t};\n\n\t\t\tdocument.fire( eventInfo, new DomEventData( view, domEvent, deleteData ) );\n\t\t}\n\t} );\n\n\tdocument.on<ViewDocumentInputEvent>( 'beforeinput', ( evt, { inputType } ) => {\n\t\tconst deleteEventSpec = DELETE_EVENT_TYPES[ inputType ];\n\t\tconst isMatchingBeforeInput = isDeleteKeyCode( pressedKeyCode ) &&\n\t\t\tdeleteEventSpec &&\n\t\t\tdeleteEventSpec.direction == getDeleteDirection( pressedKeyCode );\n\n\t\tif ( isMatchingBeforeInput ) {\n\t\t\tbeforeInputReceived = true;\n\t\t}\n\t}, { priority: 'high' } );\n\n\tdocument.on<ViewDocumentInputEvent>( 'beforeinput', ( evt, { inputType, data } ) => {\n\t\tconst shouldIgnoreBeforeInput = pressedKeyCode == keyCodes.delete &&\n\t\t\tinputType == 'insertText' &&\n\t\t\tdata == '\\x7f'; // Delete character :P\n\n\t\tif ( shouldIgnoreBeforeInput ) {\n\t\t\tevt.stop();\n\t\t}\n\t}, { priority: 'high' } );\n\n\tfunction isDeleteKeyCode( keyCode: number | null ): boolean {\n\t\treturn keyCode == keyCodes.backspace || keyCode == keyCodes.delete;\n\t}\n\n\tfunction getDeleteDirection( keyCode: number | null ): 'backward' | 'forward' {\n\t\treturn keyCode == keyCodes.backspace ? DELETE_BACKWARD : DELETE_FORWARD;\n\t}\n}\n\n/**\n * Verifies whether the given target ranges cover more than a single character and should be used instead of a single code-point deletion.\n */\nfunction shouldUseTargetRanges( targetRanges: Array<ViewRange> ): boolean {\n\t// The collapsed target range could happen for example while deleting inside an inline filler\n\t// (it's mapped to collapsed position before an inline filler).\n\tif ( targetRanges.length != 1 || targetRanges[ 0 ].isCollapsed ) {\n\t\treturn false;\n\t}\n\n\tconst walker = targetRanges[ 0 ].getWalker( {\n\t\tdirection: 'backward',\n\t\tsingleCharacters: true,\n\t\tignoreElementEnd: true\n\t} );\n\n\tlet count = 0;\n\n\tfor ( const { nextPosition, item } of walker ) {\n\t\tif ( nextPosition.parent.is( '$text' ) ) {\n\t\t\tconst data = nextPosition.parent.data;\n\t\t\tconst offset = nextPosition.offset;\n\n\t\t\t// Count combined symbols and emoji sequences as a single character.\n\t\t\tif (\n\t\t\t\tisInsideSurrogatePair( data, offset ) ||\n\t\t\t\tisInsideCombinedSymbol( data, offset ) ||\n\t\t\t\tisInsideEmojiSequence( data, offset )\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcount++;\n\t\t} else if ( item.is( 'containerElement' ) || item.is( 'emptyElement' ) ) {\n\t\t\tcount++;\n\t\t}\n\n\t\tif ( count > 1 ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/delete\n */\n\nimport { _tryFixingModelRange, BubblingEventInfo, DomEventData, type ViewDocumentKeyDownEvent } from '@ckeditor/ckeditor5-engine';\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport { keyCodes } from '@ckeditor/ckeditor5-utils';\nimport DeleteCommand from './deletecommand.js';\nimport DeleteObserver, { type DeleteEventData, type ViewDocumentDeleteEvent } from './deleteobserver.js';\n\n/**\n * The delete and backspace feature. Handles keys such as <kbd>Delete</kbd> and <kbd>Backspace</kbd>, other\n * keystrokes and user actions that result in deleting content in the editor.\n */\nexport default class Delete extends Plugin {\n\t/**\n\t * Whether pressing backspace should trigger undo action\n\t */\n\tprivate _undoOnBackspace!: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Delete' 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\t/**\n\t * @inheritDoc\n\t */\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 modelDocument = editor.model.document;\n\n\t\tview.addObserver( DeleteObserver );\n\n\t\tthis._undoOnBackspace = false;\n\n\t\tconst deleteForwardCommand = new DeleteCommand( editor, 'forward' );\n\n\t\t// Register `deleteForward` command and add `forwardDelete` command as an alias for backward compatibility.\n\t\teditor.commands.add( 'deleteForward', deleteForwardCommand );\n\t\teditor.commands.add( 'forwardDelete', deleteForwardCommand );\n\n\t\teditor.commands.add( 'delete', new DeleteCommand( editor, 'backward' ) );\n\n\t\tthis.listenTo<ViewDocumentDeleteEvent>( viewDocument, 'delete', ( 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\tconst { direction, sequence, selectionToRemove, unit } = data;\n\t\t\tconst commandName = direction === 'forward' ? 'deleteForward' : 'delete';\n\t\t\tconst commandData: Parameters<DeleteCommand[ 'execute' ]>[ 0 ] = { sequence };\n\n\t\t\tif ( unit == 'selection' ) {\n\t\t\t\tconst modelRanges = Array.from( selectionToRemove!.getRanges() )\n\t\t\t\t\t.map( viewRange => editor.editing.mapper.toModelRange( viewRange ) )\n\t\t\t\t\t.map( modelRange => _tryFixingModelRange( modelRange, editor.model.schema ) || modelRange );\n\n\t\t\t\tcommandData.selection = editor.model.createSelection( modelRanges );\n\t\t\t} else {\n\t\t\t\tcommandData.unit = unit;\n\t\t\t}\n\n\t\t\teditor.execute( commandName, commandData );\n\n\t\t\tview.scrollToTheSelection();\n\t\t}, { priority: 'low' } );\n\n\t\t// Handle the Backspace key while at the beginning of a nested editable. See https://github.com/ckeditor/ckeditor5/issues/17383.\n\t\tthis.listenTo<ViewDocumentKeyDownEvent>( viewDocument, 'keydown', ( evt, data ) => {\n\t\t\tif (\n\t\t\t\tviewDocument.isComposing ||\n\t\t\t\tdata.keyCode != keyCodes.backspace ||\n\t\t\t\t!modelDocument.selection.isCollapsed\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst ancestorLimit = editor.model.schema.getLimitElement( modelDocument.selection );\n\t\t\tconst limitStartPosition = editor.model.createPositionAt( ancestorLimit, 0 );\n\n\t\t\tif ( limitStartPosition.isTouching( modelDocument.selection.getFirstPosition()! ) ) {\n\t\t\t\t// Stop the beforeinput event as it could be invalid.\n\t\t\t\tdata.preventDefault();\n\n\t\t\t\t// Create a fake delete event so all features can act on it and the target range is proper.\n\t\t\t\tconst modelRange = editor.model.schema.getNearestSelectionRange( limitStartPosition, 'forward' );\n\n\t\t\t\tif ( !modelRange ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst viewSelection = view.createSelection( editor.editing.mapper.toViewRange( modelRange ) );\n\t\t\t\tconst targetRange = viewSelection.getFirstRange()!;\n\n\t\t\t\tconst eventInfo = new BubblingEventInfo( document, 'delete', targetRange );\n\t\t\t\tconst deleteData: Partial<DeleteEventData> = {\n\t\t\t\t\tunit: 'selection',\n\t\t\t\t\tdirection: 'backward',\n\t\t\t\t\tselectionToRemove: viewSelection\n\t\t\t\t};\n\n\t\t\t\tviewDocument.fire( eventInfo, new DomEventData( view, data.domEvent, deleteData ) );\n\t\t\t}\n\t\t} );\n\n\t\tif ( this.editor.plugins.has( 'UndoEditing' ) ) {\n\t\t\tthis.listenTo<ViewDocumentDeleteEvent>( viewDocument, 'delete', ( evt, data ) => {\n\t\t\t\tif ( this._undoOnBackspace && data.direction == 'backward' && data.sequence == 1 && data.unit == 'codePoint' ) {\n\t\t\t\t\tthis._undoOnBackspace = false;\n\n\t\t\t\t\teditor.execute( 'undo' );\n\n\t\t\t\t\tdata.preventDefault();\n\t\t\t\t\tevt.stop();\n\t\t\t\t}\n\t\t\t}, { context: '$capture' } );\n\n\t\t\tthis.listenTo( modelDocument, 'change', () => {\n\t\t\t\tthis._undoOnBackspace = false;\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * If the next user action after calling this method is pressing backspace, it would undo the last change.\n\t *\n\t * Requires {@link module:undo/undoediting~UndoEditing} plugin. If not loaded, does nothing.\n\t */\n\tpublic requestUndoOnBackspace(): void {\n\t\tif ( this.editor.plugins.has( 'UndoEditing' ) ) {\n\t\t\tthis._undoOnBackspace = true;\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/typing\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport Input from './input.js';\nimport Delete from './delete.js';\n\n/**\n * The typing feature. It handles typing.\n *\n * This is a \"glue\" plugin which loads the {@link module:typing/input~Input} and {@link module:typing/delete~Delete}\n * plugins.\n */\nexport default class Typing extends Plugin {\n\tpublic static get requires() {\n\t\treturn [ Input, Delete ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Typing' 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","/**\n * @license Copyright (c) 2003-2025, 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 typing/utils/getlasttextline\n */\n\nimport type { Model, Range } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Returns the last text line from the given range.\n *\n * \"The last text line\" is understood as text (from one or more text nodes) which is limited either by a parent block\n * or by inline elements (e.g. `<softBreak>`).\n *\n * ```ts\n * const rangeToCheck = model.createRange(\n * \tmodel.createPositionAt( paragraph, 0 ),\n * \tmodel.createPositionAt( paragraph, 'end' )\n * );\n *\n * const { text, range } = getLastTextLine( rangeToCheck, model );\n * ```\n *\n * For model below, the returned `text` will be \"Foo bar baz\" and `range` will be set on whole `<paragraph>` content:\n *\n * ```xml\n * <paragraph>Foo bar baz<paragraph>\n * ```\n *\n * However, in below case, `text` will be set to \"baz\" and `range` will be set only on \"baz\".\n *\n * ```xml\n * <paragraph>Foo<softBreak></softBreak>bar<softBreak></softBreak>baz<paragraph>\n * ```\n */\nexport default function getLastTextLine( range: Range, model: Model ): LastTextLineData {\n\tlet start = range.start;\n\n\tconst text = Array.from( range.getWalker( { ignoreElementEnd: false } ) ).reduce( ( rangeText, { item } ) => {\n\t\t// Trim text to a last occurrence of an inline element and update range start.\n\t\tif ( !( item.is( '$text' ) || item.is( '$textProxy' ) ) ) {\n\t\t\tstart = model.createPositionAfter( item );\n\n\t\t\treturn '';\n\t\t}\n\n\t\treturn rangeText + item.data;\n\t}, '' );\n\n\treturn { text, range: model.createRange( start, range.end ) };\n}\n\n/**\n * The value returned by {@link module:typing/utils/getlasttextline~getLastTextLine}.\n */\nexport type LastTextLineData = {\n\n\t/**\n\t * The text from the text nodes in the last text line.\n\t */\n\ttext: string;\n\n\t/**\n\t * The range set on the text nodes in the last text line.\n\t */\n\trange: Range;\n};\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/textwatcher\n */\n\nimport { ObservableMixin, type ObservableChangeEvent } from '@ckeditor/ckeditor5-utils';\nimport getLastTextLine from './utils/getlasttextline.js';\n\nimport type {\n\tBatch,\n\tModel,\n\tRange,\n\tDocumentChangeEvent,\n\tDocumentSelectionChangeEvent\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * The text watcher feature.\n *\n * Fires the {@link module:typing/textwatcher~TextWatcher#event:matched:data `matched:data`},\n * {@link module:typing/textwatcher~TextWatcher#event:matched:selection `matched:selection`} and\n * {@link module:typing/textwatcher~TextWatcher#event:unmatched `unmatched`} events on typing or selection changes.\n */\nexport default class TextWatcher extends /* #__PURE__ */ ObservableMixin() {\n\t/**\n\t * The editor's model.\n\t */\n\tpublic readonly model: Model;\n\n\t/**\n\t * The function used to match the text.\n\t *\n\t * The test callback can return 3 values:\n\t *\n\t * * `false` if there is no match,\n\t * * `true` if there is a match,\n\t * * an object if there is a match and we want to pass some additional information to the {@link #event:matched:data} event.\n\t */\n\tpublic testCallback: ( text: string ) => unknown;\n\n\t/**\n\t * Whether there is a match currently.\n\t */\n\tprivate _hasMatch: boolean;\n\n\t/**\n\t * Flag indicating whether the `TextWatcher` instance is enabled or disabled.\n\t * A disabled TextWatcher will not evaluate text.\n\t *\n\t * To disable TextWatcher:\n\t *\n\t * ```ts\n\t * const watcher = new TextWatcher( editor.model, testCallback );\n\t *\n\t * // After this a testCallback will not be called.\n\t * watcher.isEnabled = false;\n\t * ```\n\t */\n\tdeclare public isEnabled: boolean;\n\n\t/**\n\t * Creates a text watcher instance.\n\t *\n\t * @param testCallback See {@link module:typing/textwatcher~TextWatcher#testCallback}.\n\t */\n\tconstructor( model: Model, testCallback: ( text: string ) => unknown ) {\n\t\tsuper();\n\n\t\tthis.model = model;\n\t\tthis.testCallback = testCallback;\n\t\tthis._hasMatch = false;\n\n\t\tthis.set( 'isEnabled', true );\n\n\t\t// Toggle text watching on isEnabled state change.\n\t\tthis.on<ObservableChangeEvent>( 'change:isEnabled', () => {\n\t\t\tif ( this.isEnabled ) {\n\t\t\t\tthis._startListening();\n\t\t\t} else {\n\t\t\t\tthis.stopListening( model.document.selection );\n\t\t\t\tthis.stopListening( model.document );\n\t\t\t}\n\t\t} );\n\n\t\tthis._startListening();\n\t}\n\n\t/**\n\t * Flag indicating whether there is a match currently.\n\t */\n\tpublic get hasMatch(): boolean {\n\t\treturn this._hasMatch;\n\t}\n\n\t/**\n\t * Starts listening to the editor for typing and selection events.\n\t */\n\tprivate _startListening(): void {\n\t\tconst model = this.model;\n\t\tconst document = model.document;\n\n\t\tthis.listenTo<DocumentSelectionChangeEvent>( document.selection, 'change:range', ( evt, { directChange } ) => {\n\t\t\t// Indirect changes (i.e. when the user types or external changes are applied) are handled in the document's change event.\n\t\t\tif ( !directChange ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Act only on collapsed selection.\n\t\t\tif ( !document.selection.isCollapsed ) {\n\t\t\t\tif ( this.hasMatch ) {\n\t\t\t\t\tthis.fire( 'unmatched' );\n\t\t\t\t\tthis._hasMatch = false;\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._evaluateTextBeforeSelection( 'selection' );\n\t\t} );\n\n\t\tthis.listenTo<DocumentChangeEvent>( document, 'change:data', ( evt, batch ) => {\n\t\t\tif ( batch.isUndo || !batch.isLocal ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._evaluateTextBeforeSelection( 'data', { batch } );\n\t\t} );\n\t}\n\n\t/**\n\t * Checks the editor content for matched text.\n\t *\n\t * @fires matched:data\n\t * @fires matched:selection\n\t * @fires unmatched\n\t *\n\t * @param suffix A suffix used for generating the event name.\n\t * @param data Data object for event.\n\t */\n\tprivate _evaluateTextBeforeSelection( suffix: 'data' | 'selection', data: { batch?: Batch } = {} ): void {\n\t\tconst model = this.model;\n\t\tconst document = model.document;\n\t\tconst selection = document.selection;\n\n\t\tconst rangeBeforeSelection = model.createRange( model.createPositionAt( selection.focus!.parent, 0 ), selection.focus! );\n\n\t\tconst { text, range } = getLastTextLine( rangeBeforeSelection, model );\n\n\t\tconst testResult = this.testCallback( text );\n\n\t\tif ( !testResult && this.hasMatch ) {\n\t\t\tthis.fire<TextWatcherUnmatchedEvent>( 'unmatched' );\n\t\t}\n\n\t\tthis._hasMatch = !!testResult;\n\n\t\tif ( testResult ) {\n\t\t\tconst eventData = Object.assign( data, { text, range } );\n\n\t\t\t// If the test callback returns an object with additional data, assign the data as well.\n\t\t\tif ( typeof testResult == 'object' ) {\n\t\t\t\tObject.assign( eventData, testResult );\n\t\t\t}\n\n\t\t\tthis.fire<TextWatcherMatchedEvent>( `matched:${ suffix }`, eventData );\n\t\t}\n\t}\n}\n\nexport type TextWatcherMatchedEvent<TCallbackResult extends Record<string, unknown> = Record<string, unknown>> = {\n\tname: 'matched' | 'matched:data' | 'matched:selection';\n\targs: [ {\n\t\ttext: string;\n\t\trange: Range;\n\t\tbatch?: Batch;\n\t} & TCallbackResult ];\n};\n\n/**\n * Fired whenever the text watcher found a match for data changes.\n *\n * @eventName ~TextWatcher#matched:data\n * @param data Event data.\n * @param data.testResult The additional data returned from the {@link module:typing/textwatcher~TextWatcher#testCallback}.\n */\nexport type TextWatcherMatchedDataEvent<TCallbackResult extends Record<string, unknown>> = {\n\tname: 'matched:data';\n\targs: [ data: TextWatcherMatchedDataEventData & TCallbackResult ];\n};\n\nexport interface TextWatcherMatchedDataEventData {\n\n\t/**\n\t * The full text before selection to which the regexp was applied.\n\t */\n\ttext: string;\n\n\t/**\n\t * The range representing the position of the `data.text`.\n\t */\n\trange: Range;\n\n\tbatch: Batch;\n}\n\n/**\n * Fired whenever the text watcher found a match for selection changes.\n *\n * @eventName ~TextWatcher#matched:selection\n * @param data Event data.\n * @param data.testResult The additional data returned from the {@link module:typing/textwatcher~TextWatcher#testCallback}.\n */\nexport type TextWatcherMatchedSelectionEvent<TCallbackResult extends Record<string, unknown>> = {\n\tname: 'matched:selection';\n\targs: [ data: TextWatcherMatchedSelectionEventData & TCallbackResult ];\n};\n\nexport interface TextWatcherMatchedSelectionEventData {\n\n\t/**\n\t * The full text before selection.\n\t */\n\ttext: string;\n\n\t/**\n\t * The range representing the position of the `data.text`.\n\t */\n\trange: Range;\n}\n\n/**\n * Fired whenever the text does not match anymore. Fired only when the text watcher found a match.\n *\n * @eventName ~TextWatcher#unmatched\n */\nexport type TextWatcherUnmatchedEvent = {\n\tname: 'unmatched';\n\targs: [];\n};\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/twostepcaretmovement\n */\n\nimport { Plugin, type Editor } from '@ckeditor/ckeditor5-core';\n\nimport { keyCodes } from '@ckeditor/ckeditor5-utils';\n\nimport {\n\tMouseObserver,\n\tTouchObserver,\n\ttype DocumentSelection,\n\ttype DocumentSelectionChangeRangeEvent,\n\ttype DomEventData,\n\ttype Model,\n\ttype Position,\n\ttype ViewDocumentArrowKeyEvent,\n\ttype ViewDocumentMouseDownEvent,\n\ttype ViewDocumentSelectionChangeEvent,\n\ttype ViewDocumentTouchStartEvent,\n\ttype ModelInsertContentEvent,\n\ttype ModelDeleteContentEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport type { ViewDocumentDeleteEvent } from './deleteobserver.js';\n\n/**\n * This plugin enables the two-step caret (phantom) movement behavior for\n * {@link module:typing/twostepcaretmovement~TwoStepCaretMovement#registerAttribute registered attributes}\n * on arrow right (<kbd>→</kbd>) and left (<kbd>←</kbd>) key press.\n *\n * Thanks to this (phantom) caret movement the user is able to type before/after as well as at the\n * beginning/end of an attribute.\n *\n * **Note:** This plugin support right–to–left (Arabic, Hebrew, etc.) content by mirroring its behavior\n * but for the sake of simplicity examples showcase only left–to–right use–cases.\n *\n * # Forward movement\n *\n * ## \"Entering\" an attribute:\n *\n * When this plugin is enabled and registered for the `a` attribute and the selection is right before it\n * (at the attribute boundary), pressing the right arrow key will not move the selection but update its\n * attributes accordingly:\n *\n * * When enabled:\n *\n * ```xml\n * foo{}<$text a=\"true\">bar</$text>\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * foo<$text a=\"true\">{}bar</$text>\n * ```\n *\n * * When disabled:\n *\n * ```xml\n * foo{}<$text a=\"true\">bar</$text>\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * foo<$text a=\"true\">b{}ar</$text>\n * ```\n *\n *\n * ## \"Leaving\" an attribute:\n *\n * * When enabled:\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text>baz\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar</$text>{}baz\n * ```\n *\n * * When disabled:\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text>baz\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar</$text>b{}az\n * ```\n *\n * # Backward movement\n *\n * * When enabled:\n *\n * ```xml\n * <$text a=\"true\">bar</$text>{}baz\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text>baz\n * ```\n *\n * * When disabled:\n *\n * ```xml\n * <$text a=\"true\">bar</$text>{}baz\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\">ba{}r</$text>b{}az\n * ```\n *\n * # Multiple attributes\n *\n * * When enabled and many attributes starts or ends at the same position:\n *\n * ```xml\n * <$text a=\"true\" b=\"true\">bar</$text>{}baz\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\" b=\"true\">bar{}</$text>baz\n * ```\n *\n * * When enabled and one procedes another:\n *\n * ```xml\n * <$text a=\"true\">bar</$text><$text b=\"true\">{}bar</$text>\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text><$text b=\"true\">bar</$text>\n * ```\n *\n */\nexport default class TwoStepCaretMovement extends Plugin {\n\t/**\n\t * A set of attributes to handle.\n\t */\n\tprivate attributes: Set<string>;\n\n\t/**\n\t * The current UID of the overridden gravity, as returned by\n\t * {@link module:engine/model/writer~Writer#overrideSelectionGravity}.\n\t */\n\tprivate _overrideUid: string | null;\n\n\t/**\n\t * A flag indicating that the automatic gravity restoration should not happen upon the next\n\t * gravity restoration.\n\t * {@link module:engine/model/selection~Selection#event:change:range} event.\n\t */\n\n\tprivate _isNextGravityRestorationSkipped = false;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TwoStepCaretMovement' 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\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis.attributes = new Set();\n\t\tthis._overrideUid = null;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst view = editor.editing.view;\n\t\tconst locale = editor.locale;\n\n\t\tconst modelSelection = model.document.selection;\n\n\t\t// Listen to keyboard events and handle the caret movement according to the 2-step caret logic.\n\t\tthis.listenTo<ViewDocumentArrowKeyEvent>( view.document, 'arrowKey', ( evt, data ) => {\n\t\t\t// This implementation works only for collapsed selection.\n\t\t\tif ( !modelSelection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// When user tries to expand the selection or jump over the whole word or to the beginning/end then\n\t\t\t// two-steps movement is not necessary.\n\t\t\tif ( data.shiftKey || data.altKey || data.ctrlKey ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst arrowRightPressed = data.keyCode == keyCodes.arrowright;\n\t\t\tconst arrowLeftPressed = data.keyCode == keyCodes.arrowleft;\n\n\t\t\t// When neither left or right arrow has been pressed then do noting.\n\t\t\tif ( !arrowRightPressed && !arrowLeftPressed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst contentDirection = locale.contentLanguageDirection;\n\t\t\tlet isMovementHandled = false;\n\n\t\t\tif ( ( contentDirection === 'ltr' && arrowRightPressed ) || ( contentDirection === 'rtl' && arrowLeftPressed ) ) {\n\t\t\t\tisMovementHandled = this._handleForwardMovement( data );\n\t\t\t} else {\n\t\t\t\tisMovementHandled = this._handleBackwardMovement( data );\n\t\t\t}\n\n\t\t\t// Stop the keydown event if the two-step caret movement handled it. Avoid collisions\n\t\t\t// with other features which may also take over the caret movement (e.g. Widget).\n\t\t\tif ( isMovementHandled === true ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: '$text', priority: 'highest' } );\n\n\t\t// The automatic gravity restoration logic.\n\t\tthis.listenTo<DocumentSelectionChangeRangeEvent>( modelSelection, 'change:range', ( evt, data ) => {\n\t\t\t// Skipping the automatic restoration is needed if the selection should change\n\t\t\t// but the gravity must remain overridden afterwards. See the #handleBackwardMovement\n\t\t\t// to learn more.\n\t\t\tif ( this._isNextGravityRestorationSkipped ) {\n\t\t\t\tthis._isNextGravityRestorationSkipped = false;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Skip automatic restore when the gravity is not overridden — simply, there's nothing to restore\n\t\t\t// at this moment.\n\t\t\tif ( !this._isGravityOverridden ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Skip automatic restore when the change is indirect AND the selection is at the attribute boundary.\n\t\t\t// It means that e.g. if the change was external (collaboration) and the user had their\n\t\t\t// selection around the link, its gravity should remain intact in this change:range event.\n\t\t\tif ( !data.directChange && isBetweenDifferentAttributes( modelSelection.getFirstPosition()!, this.attributes ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._restoreGravity();\n\t\t} );\n\n\t\t// Handle a click at the beginning/end of a two-step element.\n\t\tthis._enableClickingAfterNode();\n\n\t\t// Change the attributes of the selection in certain situations after the two-step node was inserted into the document.\n\t\tthis._enableInsertContentSelectionAttributesFixer();\n\n\t\t// Handle removing the content after the two-step node.\n\t\tthis._handleDeleteContentAfterNode();\n\t}\n\n\t/**\n\t * Registers a given attribute for the two-step caret movement.\n\t *\n\t * @param attribute Name of the attribute to handle.\n\t */\n\tpublic registerAttribute( attribute: string ): void {\n\t\tthis.attributes.add( attribute );\n\t}\n\n\t/**\n\t * Updates the document selection and the view according to the two–step caret movement state\n\t * when moving **forwards**. Executed upon `keypress` in the {@link module:engine/view/view~View}.\n\t *\n\t * @internal\n\t * @param eventData Data of the key press.\n\t * @returns `true` when the handler prevented caret movement.\n\t */\n\tpublic _handleForwardMovement( eventData?: DomEventData ): boolean {\n\t\tconst attributes = this.attributes;\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst position = selection.getFirstPosition()!;\n\n\t\t// DON'T ENGAGE 2-SCM if gravity is already overridden. It means that we just entered\n\t\t//\n\t\t// \t\t<paragraph>foo<$text attribute>{}bar</$text>baz</paragraph>\n\t\t//\n\t\t// or left the attribute\n\t\t//\n\t\t// \t\t<paragraph>foo<$text attribute>bar</$text>{}baz</paragraph>\n\t\t//\n\t\t// and the gravity will be restored automatically.\n\t\tif ( this._isGravityOverridden ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// DON'T ENGAGE 2-SCM when the selection is at the beginning of the block AND already has the\n\t\t// attribute:\n\t\t// * when the selection was initially set there using the mouse,\n\t\t// * when the editor has just started\n\t\t//\n\t\t//\t\t<paragraph><$text attribute>{}bar</$text>baz</paragraph>\n\t\t//\n\t\tif ( position.isAtStart && hasAnyAttribute( selection, attributes ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// ENGAGE 2-SCM When at least one of the observed attributes changes its value (incl. starts, ends).\n\t\t//\n\t\t//\t\t<paragraph>foo<$text attribute>bar{}</$text>baz</paragraph>\n\t\t//\t\t<paragraph>foo<$text attribute>bar{}</$text><$text otherAttribute>baz</$text></paragraph>\n\t\t//\t\t<paragraph>foo<$text attribute=1>bar{}</$text><$text attribute=2>baz</$text></paragraph>\n\t\t//\t\t<paragraph>foo{}<$text attribute>bar</$text>baz</paragraph>\n\t\t//\n\t\tif ( isBetweenDifferentAttributes( position, attributes ) ) {\n\t\t\tif ( eventData ) {\n\t\t\t\tpreventCaretMovement( eventData );\n\t\t\t}\n\n\t\t\t// CLEAR 2-SCM attributes if we are at the end of one 2-SCM and before\n\t\t\t// the next one with a different value of the same attribute.\n\t\t\t//\n\t\t\t//\t\t<paragraph>foo<$text attribute=1>bar{}</$text><$text attribute=2>bar</$text>baz</paragraph>\n\t\t\t//\n\t\t\tif (\n\t\t\t\thasAnyAttribute( selection, attributes ) &&\n\t\t\t\tisBetweenDifferentAttributes( position, attributes, true )\n\t\t\t) {\n\t\t\t\tclearSelectionAttributes( model, attributes );\n\t\t\t} else {\n\t\t\t\tthis._overrideGravity();\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Updates the document selection and the view according to the two–step caret movement state\n\t * when moving **backwards**. Executed upon `keypress` in the {@link module:engine/view/view~View}.\n\t *\n\t * @internal\n\t * @param eventData Data of the key press.\n\t * @returns `true` when the handler prevented caret movement\n\t */\n\tpublic _handleBackwardMovement( eventData?: DomEventData ): boolean {\n\t\tconst attributes = this.attributes;\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst position = selection.getFirstPosition()!;\n\n\t\t// When the gravity is already overridden (by this plugin), it means we are on the two-step position.\n\t\t// Prevent the movement, restore the gravity and update selection attributes.\n\t\t//\n\t\t//\t\t<paragraph>foo<$text attribute=1>bar</$text><$text attribute=2>{}baz</$text></paragraph>\n\t\t//\t\t<paragraph>foo<$text attribute>bar</$text><$text otherAttribute>{}baz</$text></paragraph>\n\t\t//\t\t<paragraph>foo<$text attribute>{}bar</$text>baz</paragraph>\n\t\t//\t\t<paragraph>foo<$text attribute>bar</$text>{}baz</paragraph>\n\t\t//\n\t\tif ( this._isGravityOverridden ) {\n\t\t\tif ( eventData ) {\n\t\t\t\tpreventCaretMovement( eventData );\n\t\t\t}\n\n\t\t\tthis._restoreGravity();\n\n\t\t\t// CLEAR 2-SCM attributes if we are at the end of one 2-SCM and before\n\t\t\t// the next one with a different value of the same attribute.\n\t\t\t//\n\t\t\t//\t\t<paragraph>foo<$text attribute=1>bar</$text><$text attribute=2>{}bar</$text>baz</paragraph>\n\t\t\t//\n\t\t\tif ( isBetweenDifferentAttributes( position, attributes, true ) ) {\n\t\t\t\tclearSelectionAttributes( model, attributes );\n\t\t\t} else {\n\t\t\t\tsetSelectionAttributesFromTheNodeBefore( model, attributes, position );\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\t// REMOVE SELECTION ATTRIBUTE when restoring gravity towards a non-existent content at the\n\t\t\t// beginning of the block.\n\t\t\t//\n\t\t\t// \t\t<paragraph>{}<$text attribute>bar</$text></paragraph>\n\t\t\t//\n\t\t\tif ( position.isAtStart ) {\n\t\t\t\tif ( hasAnyAttribute( selection, attributes ) ) {\n\t\t\t\t\tif ( eventData ) {\n\t\t\t\t\t\tpreventCaretMovement( eventData );\n\t\t\t\t\t}\n\n\t\t\t\t\tsetSelectionAttributesFromTheNodeBefore( model, attributes, position );\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// SET 2-SCM attributes if we are between nodes with the same attribute but with different values.\n\t\t\t//\n\t\t\t//\t\t<paragraph>foo<$text attribute=1>bar</$text>[]<$text attribute=2>bar</$text>baz</paragraph>\n\t\t\t//\n\t\t\tif (\n\t\t\t\t!hasAnyAttribute( selection, attributes ) &&\n\t\t\t\tisBetweenDifferentAttributes( position, attributes, true )\n\t\t\t) {\n\t\t\t\tif ( eventData ) {\n\t\t\t\t\tpreventCaretMovement( eventData );\n\t\t\t\t}\n\n\t\t\t\tsetSelectionAttributesFromTheNodeBefore( model, attributes, position );\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// When we are moving from natural gravity, to the position of the 2SCM, we need to override the gravity,\n\t\t\t// and make sure it won't be restored. Unless it's at the end of the block and an observed attribute.\n\t\t\t// We need to check if the caret is a one position before the attribute boundary:\n\t\t\t//\n\t\t\t//\t\t<paragraph>foo<$text attribute=1>bar</$text><$text attribute=2>b{}az</$text></paragraph>\n\t\t\t//\t\t<paragraph>foo<$text attribute>bar</$text><$text otherAttribute>b{}az</$text></paragraph>\n\t\t\t//\t\t<paragraph>foo<$text attribute>b{}ar</$text>baz</paragraph>\n\t\t\t//\t\t<paragraph>foo<$text attribute>bar</$text>b{}az</paragraph>\n\t\t\t//\n\t\t\tif ( isStepAfterAnyAttributeBoundary( position, attributes ) ) {\n\t\t\t\t// ENGAGE 2-SCM if the selection has no attribute. This may happen when the user\n\t\t\t\t// left the attribute using a FORWARD 2-SCM.\n\t\t\t\t//\n\t\t\t\t// \t\t<paragraph><$text attribute>bar</$text>{}</paragraph>\n\t\t\t\t//\n\t\t\t\tif (\n\t\t\t\t\tposition.isAtEnd &&\n\t\t\t\t\t!hasAnyAttribute( selection, attributes ) &&\n\t\t\t\t\tisBetweenDifferentAttributes( position, attributes )\n\t\t\t\t) {\n\t\t\t\t\tif ( eventData ) {\n\t\t\t\t\t\tpreventCaretMovement( eventData );\n\t\t\t\t\t}\n\n\t\t\t\t\tsetSelectionAttributesFromTheNodeBefore( model, attributes, position );\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Skip the automatic gravity restore upon the next selection#change:range event.\n\t\t\t\t// If not skipped, it would automatically restore the gravity, which should remain\n\t\t\t\t// overridden.\n\t\t\t\tthis._isNextGravityRestorationSkipped = true;\n\t\t\t\tthis._overrideGravity();\n\n\t\t\t\t// Don't return \"true\" here because we didn't call _preventCaretMovement.\n\t\t\t\t// Returning here will destabilize the filler logic, which also listens to\n\t\t\t\t// keydown (and the event would be stopped).\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Starts listening to {@link module:engine/view/document~Document#event:mousedown} and\n\t * {@link module:engine/view/document~Document#event:selectionChange} and puts the selection before/after a 2-step node\n\t * if clicked at the beginning/ending of the 2-step node.\n\t *\n\t * The purpose of this action is to allow typing around the 2-step node directly after a click.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5/issues/1016.\n\t */\n\tprivate _enableClickingAfterNode(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst document = editor.editing.view.document;\n\n\t\teditor.editing.view.addObserver( MouseObserver );\n\t\teditor.editing.view.addObserver( TouchObserver );\n\n\t\tlet touched = false;\n\t\tlet clicked = false;\n\n\t\t// This event should be fired before selection on mobile devices.\n\t\tthis.listenTo<ViewDocumentTouchStartEvent>( document, 'touchstart', () => {\n\t\t\tclicked = false;\n\t\t\ttouched = true;\n\t\t} );\n\n\t\t// Track mouse click event.\n\t\t// Keep in mind that it's often called after the selection change on iOS devices.\n\t\t// On the Android devices, it's called before the selection change.\n\t\t// That's why we watch `touchstart` event on mobile and set `touched` flag, as it's fired before the selection change.\n\t\t// See more: https://github.com/ckeditor/ckeditor5/issues/17171\n\t\tthis.listenTo<ViewDocumentMouseDownEvent>( document, 'mousedown', () => {\n\t\t\tclicked = true;\n\t\t} );\n\n\t\t// When the selection has changed...\n\t\tthis.listenTo<ViewDocumentSelectionChangeEvent>( document, 'selectionChange', () => {\n\t\t\tconst attributes = this.attributes;\n\n\t\t\tif ( !clicked && !touched ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// ...and it was caused by the click or touch...\n\t\t\tclicked = false;\n\t\t\ttouched = false;\n\n\t\t\t// ...and no text is selected...\n\t\t\tif ( !selection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// ...and clicked text is the 2-step node...\n\t\t\tif ( !hasAnyAttribute( selection, attributes ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst position = selection.getFirstPosition()!;\n\n\t\t\tif ( !isBetweenDifferentAttributes( position, attributes ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// The selection at the start of a block would use surrounding attributes\n\t\t\t// from text after the selection so just clear 2-SCM attributes.\n\t\t\t//\n\t\t\t// Also, clear attributes for selection between same attribute with different values.\n\t\t\tif (\n\t\t\t\tposition.isAtStart ||\n\t\t\t\tisBetweenDifferentAttributes( position, attributes, true )\n\t\t\t) {\n\t\t\t\tclearSelectionAttributes( model, attributes );\n\t\t\t}\n\t\t\telse if ( !this._isGravityOverridden ) {\n\t\t\t\tthis._overrideGravity();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Starts listening to {@link module:engine/model/model~Model#event:insertContent} and corrects the model\n\t * selection attributes if the selection is at the end of a two-step node after inserting the content.\n\t *\n\t * The purpose of this action is to improve the overall UX because the user is no longer \"trapped\" by the\n\t * two-step attribute of the selection, and they can type a \"clean\" (`linkHref`–less) text right away.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5/issues/6053.\n\t */\n\tprivate _enableInsertContentSelectionAttributesFixer(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst attributes = this.attributes;\n\n\t\tthis.listenTo<ModelInsertContentEvent>( model, 'insertContent', () => {\n\t\t\tconst position = selection.getFirstPosition()!;\n\n\t\t\tif (\n\t\t\t\thasAnyAttribute( selection, attributes ) &&\n\t\t\t\tisBetweenDifferentAttributes( position, attributes )\n\t\t\t) {\n\t\t\t\tclearSelectionAttributes( model, attributes );\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\t}\n\n\t/**\n\t * Starts listening to {@link module:engine/model/model~Model#deleteContent} and checks whether\n\t * removing a content right after the tow-step attribute.\n\t *\n\t * If so, the selection should not preserve the two-step attribute. However, if\n\t * the {@link module:typing/twostepcaretmovement~TwoStepCaretMovement} plugin is active and\n\t * the selection has the two-step attribute due to overridden gravity (at the end), the two-step attribute should stay untouched.\n\t *\n\t * The purpose of this action is to allow removing the link text and keep the selection outside the link.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5/issues/7521.\n\t */\n\tprivate _handleDeleteContentAfterNode(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst view = editor.editing.view;\n\n\t\tlet isBackspace = false;\n\t\tlet shouldPreserveAttributes = false;\n\n\t\t// Detect pressing `Backspace`.\n\t\tthis.listenTo<ViewDocumentDeleteEvent>( view.document, 'delete', ( evt, data ) => {\n\t\t\tisBackspace = data.direction === 'backward';\n\t\t}, { priority: 'high' } );\n\n\t\t// Before removing the content, check whether the selection is inside a two-step attribute.\n\t\t// If so, we want to preserve those attributes.\n\t\tthis.listenTo<ModelDeleteContentEvent>( model, 'deleteContent', () => {\n\t\t\tif ( !isBackspace ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst position = selection.getFirstPosition()!;\n\n\t\t\tshouldPreserveAttributes = hasAnyAttribute( selection, this.attributes ) &&\n\t\t\t\t!isStepAfterAnyAttributeBoundary( position, this.attributes );\n\t\t}, { priority: 'high' } );\n\n\t\t// After removing the content, check whether the current selection should preserve the `linkHref` attribute.\n\t\tthis.listenTo<ModelDeleteContentEvent>( model, 'deleteContent', () => {\n\t\t\tif ( !isBackspace ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tisBackspace = false;\n\n\t\t\t// Do not escape two-step attribute if it was inside it before content deletion.\n\t\t\tif ( shouldPreserveAttributes ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Use `model.enqueueChange()` in order to execute the callback at the end of the changes process.\n\t\t\teditor.model.enqueueChange( () => {\n\t\t\t\tconst position = selection.getFirstPosition()!;\n\n\t\t\t\tif (\n\t\t\t\t\thasAnyAttribute( selection, this.attributes ) &&\n\t\t\t\t\tisBetweenDifferentAttributes( position, this.attributes )\n\t\t\t\t) {\n\t\t\t\t\tif ( position.isAtStart || isBetweenDifferentAttributes( position, this.attributes, true ) ) {\n\t\t\t\t\t\tclearSelectionAttributes( model, this.attributes );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( !this._isGravityOverridden ) {\n\t\t\t\t\t\tthis._overrideGravity();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}, { priority: 'low' } );\n\t}\n\n\t/**\n\t * `true` when the gravity is overridden for the plugin.\n\t */\n\tprivate get _isGravityOverridden(): boolean {\n\t\treturn !!this._overrideUid;\n\t}\n\n\t/**\n\t * Overrides the gravity using the {@link module:engine/model/writer~Writer model writer}\n\t * and stores the information about this fact in the {@link #_overrideUid}.\n\t *\n\t * A shorthand for {@link module:engine/model/writer~Writer#overrideSelectionGravity}.\n\t */\n\tprivate _overrideGravity(): void {\n\t\tthis._overrideUid = this.editor.model.change( writer => {\n\t\t\treturn writer.overrideSelectionGravity();\n\t\t} );\n\t}\n\n\t/**\n\t * Restores the gravity using the {@link module:engine/model/writer~Writer model writer}.\n\t *\n\t * A shorthand for {@link module:engine/model/writer~Writer#restoreSelectionGravity}.\n\t */\n\tprivate _restoreGravity(): void {\n\t\tthis.editor.model.change( writer => {\n\t\t\twriter.restoreSelectionGravity( this._overrideUid! );\n\t\t\tthis._overrideUid = null;\n\t\t} );\n\t}\n}\n\n/**\n * Checks whether the selection has any of given attributes.\n */\nfunction hasAnyAttribute( selection: DocumentSelection, attributes: Set<string> ): boolean {\n\tfor ( const observedAttribute of attributes ) {\n\t\tif ( selection.hasAttribute( observedAttribute ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Applies the given attributes to the current selection using using the\n * values from the node before the current position. Uses\n * the {@link module:engine/model/writer~Writer model writer}.\n */\nfunction setSelectionAttributesFromTheNodeBefore( model: Model, attributes: Set<string>, position: Position ) {\n\tconst nodeBefore = position.nodeBefore;\n\n\tmodel.change( writer => {\n\t\tif ( nodeBefore ) {\n\t\t\tconst attributes: Array<[string, unknown]> = [];\n\t\t\tconst isInlineObject = model.schema.isObject( nodeBefore ) && model.schema.isInline( nodeBefore );\n\n\t\t\tfor ( const [ key, value ] of nodeBefore.getAttributes() ) {\n\t\t\t\tif (\n\t\t\t\t\tmodel.schema.checkAttribute( '$text', key ) &&\n\t\t\t\t\t( !isInlineObject || model.schema.getAttributeProperties( key ).copyFromObject !== false )\n\t\t\t\t) {\n\t\t\t\t\tattributes.push( [ key, value ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twriter.setSelectionAttribute( attributes );\n\t\t} else {\n\t\t\twriter.removeSelectionAttribute( attributes );\n\t\t}\n\t} );\n}\n\n/**\n * Removes 2-SCM attributes from the selection.\n */\nfunction clearSelectionAttributes( model: Model, attributes: Set<string> ) {\n\tmodel.change( writer => {\n\t\twriter.removeSelectionAttribute( attributes );\n\t} );\n}\n\n/**\n * Prevents the caret movement in the view by calling `preventDefault` on the event data.\n *\n * @alias data.preventDefault\n */\nfunction preventCaretMovement( data: DomEventData ) {\n\tdata.preventDefault();\n}\n\n/**\n * Checks whether the step before `isBetweenDifferentAttributes()`.\n */\nfunction isStepAfterAnyAttributeBoundary( position: Position, attributes: Set<string> ): boolean {\n\tconst positionBefore = position.getShiftedBy( -1 );\n\treturn isBetweenDifferentAttributes( positionBefore, attributes );\n}\n\n/**\n * Checks whether the given position is between different values of given attributes.\n */\nfunction isBetweenDifferentAttributes( position: Position, attributes: Set<string>, isStrict: boolean = false ): boolean {\n\tconst { nodeBefore, nodeAfter } = position;\n\n\tfor ( const observedAttribute of attributes ) {\n\t\tconst attrBefore = nodeBefore ? nodeBefore.getAttribute( observedAttribute ) : undefined;\n\t\tconst attrAfter = nodeAfter ? nodeAfter.getAttribute( observedAttribute ) : undefined;\n\n\t\tif ( isStrict && ( attrBefore === undefined || attrAfter === undefined ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( attrAfter !== attrBefore ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/texttransformation\n */\n\nimport {\n\tPlugin,\n\ttype Editor\n} from '@ckeditor/ckeditor5-core';\n\nimport type { Position } from '@ckeditor/ckeditor5-engine';\n\nimport TextWatcher, { type TextWatcherMatchedDataEvent } from './textwatcher.js';\nimport type { TextTransformationConfig, TextTransformationDescription } from './typingconfig.js';\nimport type Delete from './delete.js';\n\nimport { escapeRegExp } from 'es-toolkit/compat';\n\n// All named transformations.\nconst TRANSFORMATIONS: Record<string, TextTransformationDescription> = {\n\t// Common symbols:\n\tcopyright: { from: '(c)', to: '©' },\n\tregisteredTrademark: { from: '(r)', to: '®' },\n\ttrademark: { from: '(tm)', to: '™' },\n\n\t// Mathematical:\n\toneHalf: { from: /(^|[^/a-z0-9])(1\\/2)([^/a-z0-9])$/i, to: [ null, '½', null ] },\n\toneThird: { from: /(^|[^/a-z0-9])(1\\/3)([^/a-z0-9])$/i, to: [ null, '⅓', null ] },\n\ttwoThirds: { from: /(^|[^/a-z0-9])(2\\/3)([^/a-z0-9])$/i, to: [ null, '⅔', null ] },\n\toneForth: { from: /(^|[^/a-z0-9])(1\\/4)([^/a-z0-9])$/i, to: [ null, '¼', null ] },\n\tthreeQuarters: { from: /(^|[^/a-z0-9])(3\\/4)([^/a-z0-9])$/i, to: [ null, '¾', null ] },\n\tlessThanOrEqual: { from: '<=', to: '≤' },\n\tgreaterThanOrEqual: { from: '>=', to: '≥' },\n\tnotEqual: { from: '!=', to: '≠' },\n\tarrowLeft: { from: '<-', to: '←' },\n\tarrowRight: { from: '->', to: '→' },\n\n\t// Typography:\n\thorizontalEllipsis: { from: '...', to: '…' },\n\tenDash: { from: /(^| )(--)( )$/, to: [ null, '–', null ] },\n\temDash: { from: /(^| )(---)( )$/, to: [ null, '—', null ] },\n\t// Quotations:\n\t// English, US\n\tquotesPrimary: { from: buildQuotesRegExp( '\"' ), to: [ null, '“', null, '”' ] },\n\tquotesSecondary: { from: buildQuotesRegExp( '\\'' ), to: [ null, '‘', null, '’' ] },\n\n\t// English, UK\n\tquotesPrimaryEnGb: { from: buildQuotesRegExp( '\\'' ), to: [ null, '‘', null, '’' ] },\n\tquotesSecondaryEnGb: { from: buildQuotesRegExp( '\"' ), to: [ null, '“', null, '”' ] },\n\n\t// Polish\n\tquotesPrimaryPl: { from: buildQuotesRegExp( '\"' ), to: [ null, '„', null, '”' ] },\n\tquotesSecondaryPl: { from: buildQuotesRegExp( '\\'' ), to: [ null, '‚', null, '’' ] }\n};\n\n// Transformation groups.\nconst TRANSFORMATION_GROUPS: Record<string, Array<string>> = {\n\tsymbols: [ 'copyright', 'registeredTrademark', 'trademark' ],\n\tmathematical: [\n\t\t'oneHalf', 'oneThird', 'twoThirds', 'oneForth', 'threeQuarters',\n\t\t'lessThanOrEqual', 'greaterThanOrEqual', 'notEqual',\n\t\t'arrowLeft', 'arrowRight'\n\t],\n\ttypography: [ 'horizontalEllipsis', 'enDash', 'emDash' ],\n\tquotes: [ 'quotesPrimary', 'quotesSecondary' ]\n};\n\n// A set of default transformations provided by the feature.\nconst DEFAULT_TRANSFORMATIONS = [\n\t'symbols',\n\t'mathematical',\n\t'typography',\n\t'quotes'\n];\n\n/**\n * The text transformation plugin.\n */\nexport default class TextTransformation extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ 'Delete', 'Input' ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TextTransformation' 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\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'typing', {\n\t\t\ttransformations: {\n\t\t\t\tinclude: DEFAULT_TRANSFORMATIONS\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst model = this.editor.model;\n\t\tconst modelSelection = model.document.selection;\n\n\t\tmodelSelection.on( 'change:range', () => {\n\t\t\t// Disable plugin when selection is inside a code block.\n\t\t\tthis.isEnabled = !modelSelection.anchor!.parent.is( 'element', 'codeBlock' );\n\t\t} );\n\n\t\tthis._enableTransformationWatchers();\n\t}\n\n\t/**\n\t * Create new TextWatcher listening to the editor for typing and selection events.\n\t */\n\tprivate _enableTransformationWatchers(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst deletePlugin: Delete = editor.plugins.get( 'Delete' );\n\t\tconst normalizedTransformations = normalizeTransformations( editor.config.get( 'typing.transformations' )! );\n\n\t\tconst testCallback = ( text: string ) => {\n\t\t\tfor ( const normalizedTransformation of normalizedTransformations ) {\n\t\t\t\tconst from = normalizedTransformation.from;\n\t\t\t\tconst match = from.test( text );\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\treturn { normalizedTransformation };\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst watcher = new TextWatcher( editor.model, testCallback );\n\n\t\twatcher.on<TextWatcherMatchedDataEvent<{\n\t\t\tnormalizedTransformation: NormalizedTransformationConfig;\n\t\t}>>( 'matched:data', ( evt, data ) => {\n\t\t\tif ( !data.batch.isTyping ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { from, to } = data.normalizedTransformation;\n\n\t\t\tconst matches = from.exec( data.text )!;\n\t\t\tconst replaces = to( matches.slice( 1 ) );\n\n\t\t\tconst matchedRange = data.range;\n\n\t\t\tlet changeIndex = matches.index;\n\n\t\t\tmodel.enqueueChange( writer => {\n\t\t\t\tfor ( let i = 1; i < matches.length; i++ ) {\n\t\t\t\t\tconst match = matches[ i ];\n\t\t\t\t\tconst replaceWith = replaces[ i - 1 ];\n\n\t\t\t\t\tif ( replaceWith == null ) {\n\t\t\t\t\t\tchangeIndex += match.length;\n\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst replacePosition = matchedRange.start.getShiftedBy( changeIndex );\n\t\t\t\t\tconst replaceRange = model.createRange( replacePosition, replacePosition.getShiftedBy( match.length ) );\n\t\t\t\t\tconst attributes = getTextAttributesAfterPosition( replacePosition );\n\n\t\t\t\t\tmodel.insertContent( writer.createText( replaceWith, attributes ), replaceRange );\n\n\t\t\t\t\tchangeIndex += replaceWith.length;\n\t\t\t\t}\n\n\t\t\t\tmodel.enqueueChange( () => {\n\t\t\t\t\tdeletePlugin.requestUndoOnBackspace();\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\n\t\twatcher.bind( 'isEnabled' ).to( this );\n\t}\n}\n\n/**\n * Normalizes the configuration `from` parameter value.\n * The normalized value for the `from` parameter is a RegExp instance. If the passed `from` is already a RegExp instance,\n * it is returned unchanged.\n */\nfunction normalizeFrom( from: string | RegExp ): RegExp {\n\tif ( typeof from == 'string' ) {\n\t\treturn new RegExp( `(${ escapeRegExp( from ) })$` );\n\t}\n\n\t// `from` is already a regular expression.\n\treturn from;\n}\n\n/**\n * Normalizes the configuration `to` parameter value.\n * The normalized value for the `to` parameter is a function that takes an array and returns an array. See more in the\n * configuration description. If the passed `to` is already a function, it is returned unchanged.\n */\nfunction normalizeTo( to: TextTransformationDescription[ 'to' ] ) {\n\tif ( typeof to == 'string' ) {\n\t\treturn () => [ to ];\n\t} else if ( to instanceof Array ) {\n\t\treturn () => to;\n\t}\n\n\t// `to` is already a function.\n\treturn to;\n}\n\n/**\n * For given `position` returns attributes for the text that is after that position.\n * The text can be in the same text node as the position (`foo[]bar`) or in the next text node (`foo[]<$text bold=\"true\">bar</$text>`).\n */\nfunction getTextAttributesAfterPosition( position: Position ) {\n\tconst textNode = position.textNode ? position.textNode : position.nodeAfter;\n\n\treturn textNode!.getAttributes();\n}\n\n/**\n * Returns a RegExp pattern string that detects a sentence inside a quote.\n *\n * @param quoteCharacter The character to create a pattern for.\n */\nfunction buildQuotesRegExp( quoteCharacter: string ): RegExp {\n\treturn new RegExp( `(^|\\\\s)(${ quoteCharacter })([^${ quoteCharacter }]*)(${ quoteCharacter })$` );\n}\n\n/**\n * Reads text transformation config and returns normalized array of transformations objects.\n */\nfunction normalizeTransformations( config: TextTransformationConfig ): Array<NormalizedTransformationConfig> {\n\tconst extra = config.extra || [];\n\tconst remove = config.remove || [];\n\tconst isNotRemoved = ( transformation: TextTransformationDescription | string ) => !remove.includes( transformation );\n\n\tconst configured = config.include.concat( extra ).filter( isNotRemoved );\n\n\treturn expandGroupsAndRemoveDuplicates( configured )\n\t\t.filter( isNotRemoved ) // Filter out 'remove' transformations as they might be set in group.\n\t\t.map( transformation => (\n\t\t\ttypeof transformation == 'string' && TRANSFORMATIONS[ transformation ] ? TRANSFORMATIONS[ transformation ] : transformation )\n\t\t)\n\t\t// Filter out transformations set as string that has not been found.\n\t\t.filter( ( transformation ): transformation is TextTransformationDescription => typeof transformation === 'object' )\n\t\t.map( transformation => ( {\n\t\t\tfrom: normalizeFrom( transformation.from ),\n\t\t\tto: normalizeTo( transformation.to )\n\t\t} ) );\n}\n\n/**\n * Reads definitions and expands named groups if needed to transformation names.\n * This method also removes duplicated named transformations if any.\n */\nfunction expandGroupsAndRemoveDuplicates(\n\tdefinitions: Array<TextTransformationDescription | string>\n): Array<TextTransformationDescription | string> {\n\t// Set is using to make sure that transformation names are not duplicated.\n\tconst definedTransformations = new Set<TextTransformationDescription | string>();\n\n\tfor ( const transformationOrGroup of definitions ) {\n\t\tif ( typeof transformationOrGroup == 'string' && TRANSFORMATION_GROUPS[ transformationOrGroup ] ) {\n\t\t\tfor ( const transformation of TRANSFORMATION_GROUPS[ transformationOrGroup ] ) {\n\t\t\t\tdefinedTransformations.add( transformation );\n\t\t\t}\n\t\t} else {\n\t\t\tdefinedTransformations.add( transformationOrGroup );\n\t\t}\n\t}\n\n\treturn Array.from( definedTransformations );\n}\n\ntype NormalizedTransformationConfig = {\n\tfrom: RegExp;\n\tto: ( matches: Array<string> ) => Array<string | null>;\n};\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/utils/findattributerange\n */\n\nimport type { Position, Model, Range } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Returns a model range that covers all consecutive nodes with the same `attributeName` and its `value`\n * that intersect the given `position`.\n *\n * It can be used e.g. to get the entire range on which the `linkHref` attribute needs to be changed when having a\n * selection inside a link.\n *\n * @param position The start position.\n * @param attributeName The attribute name.\n * @param value The attribute value.\n * @param model The model instance.\n * @returns The link range.\n */\nexport default function findAttributeRange(\n\tposition: Position,\n\tattributeName: string,\n\tvalue: unknown,\n\tmodel: Model\n): Range {\n\treturn model.createRange(\n\t\tfindAttributeRangeBound( position, attributeName, value, true, model ),\n\t\tfindAttributeRangeBound( position, attributeName, value, false, model )\n\t);\n}\n\n/**\n * Walks forward or backward (depends on the `lookBack` flag), node by node, as long as they have the same attribute value\n * and returns a position just before or after (depends on the `lookBack` flag) the last matched node.\n *\n * @param position The start position.\n * @param attributeName The attribute name.\n * @param value The attribute value.\n * @param lookBack Whether the walk direction is forward (`false`) or backward (`true`).\n * @returns The position just before the last matched node.\n */\nexport function findAttributeRangeBound(\n\tposition: Position,\n\tattributeName: string,\n\tvalue: unknown,\n\tlookBack: boolean,\n\tmodel: Model\n): Position {\n\t// Get node before or after position (depends on `lookBack` flag).\n\t// When position is inside text node then start searching from text node.\n\tlet node = position.textNode || ( lookBack ? position.nodeBefore : position.nodeAfter );\n\n\tlet lastNode = null;\n\n\twhile ( node && node.getAttribute( attributeName ) == value ) {\n\t\tlastNode = node;\n\t\tnode = lookBack ? node.previousSibling : node.nextSibling;\n\t}\n\n\treturn lastNode ? model.createPositionAt( lastNode, lookBack ? 'before' : 'after' ) : position;\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/utils/inlinehighlight\n */\n\nimport findAttributeRange from './findattributerange.js';\nimport type { Editor } from '@ckeditor/ckeditor5-core';\nimport type { ViewElement } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Adds a visual highlight style to an attribute element in which the selection is anchored.\n * Together with two-step caret movement, they indicate that the user is typing inside the element.\n *\n * Highlight is turned on by adding the given class to the attribute element in the view:\n *\n * * The class is removed before the conversion has started, as callbacks added with the `'highest'` priority\n * to {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher} events.\n * * The class is added in the view post fixer, after other changes in the model tree were converted to the view.\n *\n * This way, adding and removing the highlight does not interfere with conversion.\n *\n * Usage:\n *\n * ```ts\n * import inlineHighlight from '@ckeditor/ckeditor5-typing/src/utils/inlinehighlight';\n *\n * // Make `ck-link_selected` class be applied on an `a` element\n * // whenever the corresponding `linkHref` attribute element is selected.\n * inlineHighlight( editor, 'linkHref', 'a', 'ck-link_selected' );\n * ```\n *\n * @param editor The editor instance.\n * @param attributeName The attribute name to check.\n * @param tagName The tagName of a view item.\n * @param className The class name to apply in the view.\n */\nexport default function inlineHighlight(\n\teditor: Editor,\n\tattributeName: string,\n\ttagName: string,\n\tclassName: string\n): void {\n\tconst view = editor.editing.view;\n\tconst highlightedElements = new Set<ViewElement>();\n\n\t// Adding the class.\n\tview.document.registerPostFixer( writer => {\n\t\tconst selection = editor.model.document.selection;\n\t\tlet changed = false;\n\n\t\tif ( selection.hasAttribute( attributeName ) ) {\n\t\t\tconst modelRange = findAttributeRange(\n\t\t\t\tselection.getFirstPosition()!,\n\t\t\t\tattributeName,\n\t\t\t\tselection.getAttribute( attributeName ),\n\t\t\t\teditor.model\n\t\t\t);\n\t\t\tconst viewRange = editor.editing.mapper.toViewRange( modelRange );\n\n\t\t\t// There might be multiple view elements in the `viewRange`, for example, when the `a` element is\n\t\t\t// broken by a UIElement.\n\t\t\tfor ( const item of viewRange.getItems() ) {\n\t\t\t\tif ( item.is( 'element', tagName ) && !item.hasClass( className ) ) {\n\t\t\t\t\twriter.addClass( className, item );\n\t\t\t\t\thighlightedElements.add( item );\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t} );\n\n\t// Removing the class.\n\teditor.conversion.for( 'editingDowncast' ).add( dispatcher => {\n\t\t// Make sure the highlight is removed on every possible event, before conversion is started.\n\t\tdispatcher.on( 'insert', removeHighlight, { priority: 'highest' } );\n\t\tdispatcher.on( 'remove', removeHighlight, { priority: 'highest' } );\n\t\tdispatcher.on( 'attribute', removeHighlight, { priority: 'highest' } );\n\t\tdispatcher.on( 'selection', removeHighlight, { priority: 'highest' } );\n\n\t\tfunction removeHighlight() {\n\t\t\tview.change( writer => {\n\t\t\t\tfor ( const item of highlightedElements.values() ) {\n\t\t\t\t\twriter.removeClass( className, item );\n\t\t\t\t\thighlightedElements.delete( item );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t} );\n}\n"]}
1
+ {"version":3,"sources":["index.js","../src/utils/changebuffer.ts","../src/inserttextcommand.ts","../src/inserttextobserver.ts","../src/input.ts","../src/deletecommand.ts","../src/deleteobserver.ts","../src/delete.ts","../src/typing.ts","../src/utils/getlasttextline.ts","../src/textwatcher.ts","../src/twostepcaretmovement.ts","../src/texttransformation.ts","../src/utils/findattributerange.ts","../src/utils/inlinehighlight.ts"],"names":["ChangeBuffer","model","limit","_isLocked","_size","_batch","_changeCallback","_selectionChangeCallback","evt","batch","isLocal","isUndoable","_reset","document","on","selection","createBatch","isTyping","size","input","changeCount","isLocked","lock","unlock","destroy","off","ignoreLock","InsertTextCommand","Command","_buffer","editor","undoStepSize","_isEnabledBasedOnSelection","buffer","execute","options","doc","text","textInsertions","length","range","createSelection","canEditAt","resultRange","enqueueChange","writer","selectionAttributes","Array","from","getAttributes","deleteContent","insertContent","createText","setSelection","is","TYPING_INPUT_TYPES","TYPING_INPUT_TYPES_ANDROID","InsertTextObserver","Observer","focusObserver","view","getObserver","FocusObserver","typingInputTypes","env","isAndroid","viewDocument","data","isEnabled","targetRanges","inputType","domEvent","isComposing","includes","flush","eventInfo","EventInfo","fire","DomEventData","stop","called","priority","observe","stopObserving","Input","Plugin","_typingQueue","pluginName","isOfficialPlugin","init","editing","mapper","modelSelection","TypingQueue","addObserver","insertTextCommand","config","get","commands","add","listenTo","viewSelection","isFake","isSimilar","preventDefault","getRanges","some","isCollapsed","modelRanges","map","viewRange","toModelRange","modelRange","_tryFixingModelRange","schema","insertText","selectedText","getItems","reduce","rangeText","node","startsWith","substring","start","getShiftedBy","commandData","push","Boolean","defaultPrevented","keyCode","deleteSelectionContent","mutations","hasAffectedElements","viewElement","findMappedViewAncestor","modelElement","toModelElement","isElementAffected","element","flushAffectedElements","toViewElement","type","flushDebounced","debounce","_queue","_isComposing","_affectedElements","Set","cancel","clear","shift","commandLiveData","selectionRanges","LiveRange","fromRange","parent","ranges","liveRange","detachLiveRange","filter","reason","scrollToTheSelection","has","result","toRange","detach","root","rootName","viewNode","DeleteCommand","direction","sequence","doNotResetEntireContent","modifySelection","unit","treatEmojiAsSingleUnit","_shouldEntireContentBeReplacedWithParagraph","_replaceEntireContentWithParagraph","_shouldReplaceFirstBlockWithParagraph","getFirstRange","getMinimalFlatRanges","forEach","count","getWalker","singleCharacters","ignoreElementEnd","shallow","limitElement","getLimitElement","limitElementIsEmpty","containsEntireContent","checkChild","limitElementFirstChild","getChild","paragraph","createElement","remove","createRangeIn","insert","position","getFirstPosition","name","DELETE_CHARACTER","DELETE_WORD","DELETE_CODE_POINT","DELETE_SELECTION","DELETE_BACKWARD","DELETE_FORWARD","DELETE_EVENT_TYPES","deleteContentBackward","deleteWordBackward","deleteHardLineBackward","deleteSoftLineBackward","deleteContentForward","deleteWordForward","deleteHardLineForward","deleteSoftLineForward","DeleteObserver","deleteEventSpec","deleteData","selectionToRemove","shouldUseTargetRanges","BubblingEventInfo","isBlink","enableChromeWorkaround","observer","pressedKeyCode","beforeInputReceived","shouldFireDeleteEvent","isDeleteKeyCode","targetRange","getDeleteDirection","isMatchingBeforeInput","shouldIgnoreBeforeInput","keyCodes","delete","backspace","walker","nextPosition","item","offset","isInsideSurrogatePair","isInsideCombinedSymbol","isInsideEmojiSequence","Delete","_undoOnBackspace","modelDocument","deleteForwardCommand","commandName","ancestorLimit","limitStartPosition","createPositionAt","isTouching","getNearestSelectionRange","toViewRange","plugins","context","requestUndoOnBackspace","Typing","requires","getLastTextLine","createPositionAfter","createRange","end","TextWatcher","ObservableMixin","testCallback","_hasMatch","set","_startListening","stopListening","hasMatch","directChange","_evaluateTextBeforeSelection","isUndo","suffix","rangeBeforeSelection","focus","testResult","eventData","Object","assign","TwoStepCaretMovement","attributes","_overrideUid","_isNextGravityRestorationSkipped","locale","shiftKey","altKey","ctrlKey","arrowRightPressed","arrowright","arrowLeftPressed","arrowleft","contentDirection","contentLanguageDirection","isMovementHandled","_handleForwardMovement","_handleBackwardMovement","_isGravityOverridden","isBetweenDifferentAttributes","_restoreGravity","_enableClickingAfterNode","_enableInsertContentSelectionAttributesFixer","_handleDeleteContentAfterNode","registerAttribute","attribute","isAtStart","hasAnyAttribute","preventCaretMovement","clearSelectionAttributes","_overrideGravity","setSelectionAttributesFromTheNodeBefore","isStepAfterAnyAttributeBoundary","isAtEnd","MouseObserver","TouchObserver","touched","clicked","isBackspace","shouldPreserveAttributes","change","overrideSelectionGravity","restoreSelectionGravity","observedAttribute","hasAttribute","nodeBefore","isInlineObject","isObject","isInline","key","value","checkAttribute","getAttributeProperties","copyFromObject","setSelectionAttribute","removeSelectionAttribute","positionBefore","isStrict","nodeAfter","attrBefore","getAttribute","undefined","attrAfter","TRANSFORMATIONS","copyright","to","registeredTrademark","trademark","oneHalf","oneThird","twoThirds","oneForth","threeQuarters","lessThanOrEqual","greaterThanOrEqual","notEqual","arrowLeft","arrowRight","horizontalEllipsis","enDash","emDash","quotesPrimary","buildQuotesRegExp","quotesSecondary","quotesPrimaryEnGb","quotesSecondaryEnGb","quotesPrimaryPl","quotesSecondaryPl","TRANSFORMATION_GROUPS","symbols","mathematical","typography","quotes","DEFAULT_TRANSFORMATIONS","TextTransformation","define","transformations","include","anchor","_enableTransformationWatchers","deletePlugin","normalizedTransformations","normalizeTransformations","normalizedTransformation","match","test","watcher","matches","exec","replaces","slice","matchedRange","changeIndex","index","i","replaceWith","replacePosition","replaceRange","getTextAttributesAfterPosition","bind","normalizeFrom","RegExp","escapeRegExp","normalizeTo","textNode","quoteCharacter","extra","isNotRemoved","transformation","configured","concat","expandGroupsAndRemoveDuplicates","definitions","definedTransformations","transformationOrGroup","findAttributeRange","attributeName","findAttributeRangeBound","lookBack","lastNode","previousSibling","nextSibling","inlineHighlight","tagName","className","highlightedElements","registerPostFixer","changed","hasClass","addClass","conversion","for","dispatcher","removeHighlight","values","removeClass"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Command, Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { env, EventInfo, count, isInsideSurrogatePair, isInsideCombinedSymbol, isInsideEmojiSequence, keyCodes, ObservableMixin } from '@ckeditor/ckeditor5-utils/dist/index.js';\nimport { Observer, FocusObserver, DomEventData, _tryFixingModelRange, LiveRange, BubblingEventInfo, MouseObserver, TouchObserver } from '@ckeditor/ckeditor5-engine/dist/index.js';\nimport { debounce, escapeRegExp } from 'es-toolkit/compat';\n\n/**\n * @license Copyright (c) 2003-2025, 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 typing/utils/changebuffer\n */ /**\n * Change buffer allows to group atomic changes (like characters that have been typed) into\n * {@link module:engine/model/batch~Batch batches}.\n *\n * Batches represent single undo steps, hence changes added to one single batch are undone together.\n *\n * The buffer has a configurable limit of atomic changes that it can accommodate. After the limit was\n * exceeded (see {@link ~ChangeBuffer#input}), a new batch is created in {@link ~ChangeBuffer#batch}.\n *\n * To use the change buffer you need to let it know about the number of changes that were added to the batch:\n *\n * ```ts\n * const buffer = new ChangeBuffer( model, LIMIT );\n *\n * // Later on in your feature:\n * buffer.batch.insert( pos, insertedCharacters );\n * buffer.input( insertedCharacters.length );\n * ```\n */ class ChangeBuffer {\n /**\n\t * The model instance.\n\t */ model;\n /**\n\t * The maximum number of atomic changes which can be contained in one batch.\n\t */ limit;\n /**\n\t * Whether the buffer is locked. A locked buffer cannot be reset unless it gets unlocked.\n\t */ _isLocked;\n /**\n\t * The number of atomic changes in the buffer. Once it exceeds the {@link #limit},\n\t * the {@link #batch batch} is set to a new one.\n\t */ _size;\n /**\n\t * The current batch instance.\n\t */ _batch = null;\n /**\n\t * The callback to document the change event which later needs to be removed.\n\t */ _changeCallback;\n /**\n\t * The callback to document selection `change:attribute` and `change:range` events which resets the buffer.\n\t */ _selectionChangeCallback;\n /**\n\t * Creates a new instance of the change buffer.\n\t *\n\t * @param limit The maximum number of atomic changes which can be contained in one batch.\n\t */ constructor(model, limit = 20){\n this.model = model;\n this._size = 0;\n this.limit = limit;\n this._isLocked = false;\n // The function to be called in order to notify the buffer about batches which appeared in the document.\n // The callback will check whether it is a new batch and in that case the buffer will be flushed.\n //\n // The reason why the buffer needs to be flushed whenever a new batch appears is that the changes added afterwards\n // should be added to a new batch. For instance, when the user types, then inserts an image, and then types again,\n // the characters typed after inserting the image should be added to a different batch than the characters typed before.\n this._changeCallback = (evt, batch)=>{\n if (batch.isLocal && batch.isUndoable && batch !== this._batch) {\n this._reset(true);\n }\n };\n this._selectionChangeCallback = ()=>{\n this._reset();\n };\n this.model.document.on('change', this._changeCallback);\n this.model.document.selection.on('change:range', this._selectionChangeCallback);\n this.model.document.selection.on('change:attribute', this._selectionChangeCallback);\n }\n /**\n\t * The current batch to which a feature should add its operations. Once the {@link #size}\n\t * is reached or exceeds the {@link #limit}, the batch is set to a new instance and the size is reset.\n\t */ get batch() {\n if (!this._batch) {\n this._batch = this.model.createBatch({\n isTyping: true\n });\n }\n return this._batch;\n }\n /**\n\t * The number of atomic changes in the buffer. Once it exceeds the {@link #limit},\n\t * the {@link #batch batch} is set to a new one.\n\t */ get size() {\n return this._size;\n }\n /**\n\t * The input number of changes into the buffer. Once the {@link #size} is\n\t * reached or exceeds the {@link #limit}, the batch is set to a new instance and the size is reset.\n\t *\n\t * @param changeCount The number of atomic changes to input.\n\t */ input(changeCount) {\n this._size += changeCount;\n if (this._size >= this.limit) {\n this._reset(true);\n }\n }\n /**\n\t * Whether the buffer is locked. A locked buffer cannot be reset unless it gets unlocked.\n\t */ get isLocked() {\n return this._isLocked;\n }\n /**\n\t * Locks the buffer.\n\t */ lock() {\n this._isLocked = true;\n }\n /**\n\t * Unlocks the buffer.\n\t */ unlock() {\n this._isLocked = false;\n }\n /**\n\t * Destroys the buffer.\n\t */ destroy() {\n this.model.document.off('change', this._changeCallback);\n this.model.document.selection.off('change:range', this._selectionChangeCallback);\n this.model.document.selection.off('change:attribute', this._selectionChangeCallback);\n }\n /**\n\t * Resets the change buffer.\n\t *\n\t * @param ignoreLock Whether internal lock {@link #isLocked} should be ignored.\n\t */ _reset(ignoreLock = false) {\n if (!this.isLocked || ignoreLock) {\n this._batch = null;\n this._size = 0;\n }\n }\n}\n\n/**\n * The insert text command. Used by the {@link module:typing/input~Input input feature} to handle typing.\n */ class InsertTextCommand extends Command {\n /**\n\t * Typing's change buffer used to group subsequent changes into batches.\n\t */ _buffer;\n /**\n\t * Creates an instance of the command.\n\t *\n\t * @param undoStepSize The maximum number of atomic changes\n\t * which can be contained in one batch in the command buffer.\n\t */ constructor(editor, undoStepSize){\n super(editor);\n this._buffer = new ChangeBuffer(editor.model, undoStepSize);\n // Since this command may execute on different selectable than selection, it should be checked directly in execute block.\n this._isEnabledBasedOnSelection = false;\n }\n /**\n\t * The current change buffer.\n\t */ get buffer() {\n return this._buffer;\n }\n /**\n\t * @inheritDoc\n\t */ destroy() {\n super.destroy();\n this._buffer.destroy();\n }\n /**\n\t * Executes the input command. It replaces the content within the given range with the given text.\n\t * Replacing is a two step process, first the content within the range is removed and then the new text is inserted\n\t * at the beginning of the range (which after the removal is a collapsed range).\n\t *\n\t * @fires execute\n\t * @param options The command options.\n\t */ execute(options = {}) {\n const model = this.editor.model;\n const doc = model.document;\n const text = options.text || '';\n const textInsertions = text.length;\n let selection = doc.selection;\n if (options.selection) {\n selection = options.selection;\n } else if (options.range) {\n selection = model.createSelection(options.range);\n }\n // Stop executing if selectable is in non-editable place.\n if (!model.canEditAt(selection)) {\n return;\n }\n const resultRange = options.resultRange;\n model.enqueueChange(this._buffer.batch, (writer)=>{\n this._buffer.lock();\n // Store selection attributes before deleting old content to preserve formatting and link.\n // This unifies the behavior between DocumentSelection and Selection provided as input option.\n const selectionAttributes = Array.from(doc.selection.getAttributes());\n model.deleteContent(selection);\n if (text) {\n model.insertContent(writer.createText(text, selectionAttributes), selection);\n }\n if (resultRange) {\n writer.setSelection(resultRange);\n } else if (!selection.is('documentSelection')) {\n writer.setSelection(selection);\n }\n this._buffer.unlock();\n this._buffer.input(textInsertions);\n });\n }\n}\n\n// @if CK_DEBUG_TYPING // const { _buildLogMessage } = require( '@ckeditor/ckeditor5-engine/src/dev-utils/utils.js' );\nconst TYPING_INPUT_TYPES = [\n // For collapsed range:\n //\t- This one is a regular typing (all browsers, all systems).\n //\t- This one is used by Chrome when typing accented letter – 2nd step when the user selects the accent (Mac).\n // For non-collapsed range:\n //\t- This one is used by Chrome when typing accented letter – when the selection box first appears (Mac).\n //\t- This one is used by Safari when accepting spell check suggestions from the context menu (Mac).\n 'insertText',\n // This one is used by Safari when typing accented letter (Mac).\n // This one is used by Safari when accepting spell check suggestions from the autocorrection pop-up (Mac).\n 'insertReplacementText'\n];\nconst TYPING_INPUT_TYPES_ANDROID = [\n ...TYPING_INPUT_TYPES,\n 'insertCompositionText'\n];\n/**\n * Text insertion observer introduces the {@link module:engine/view/document~Document#event:insertText} event.\n */ class InsertTextObserver extends Observer {\n /**\n\t * Instance of the focus observer. Insert text observer calls\n\t * {@link module:engine/view/observer/focusobserver~FocusObserver#flush} to mark the latest focus change as complete.\n\t */ focusObserver;\n /**\n\t * @inheritDoc\n\t */ constructor(view){\n super(view);\n this.focusObserver = view.getObserver(FocusObserver);\n // On Android composition events should immediately be applied to the model. Rendering is not disabled.\n // On non-Android the model is updated only on composition end.\n // On Android we can't rely on composition start/end to update model.\n const typingInputTypes = env.isAndroid ? TYPING_INPUT_TYPES_ANDROID : TYPING_INPUT_TYPES;\n const viewDocument = view.document;\n viewDocument.on('beforeinput', (evt, data)=>{\n if (!this.isEnabled) {\n return;\n }\n const { data: text, targetRanges, inputType, domEvent, isComposing } = data;\n if (!typingInputTypes.includes(inputType)) {\n return;\n }\n // Mark the latest focus change as complete (we are typing in editable after the focus\n // so the selection is in the focused element).\n this.focusObserver.flush();\n const eventInfo = new EventInfo(viewDocument, 'insertText');\n viewDocument.fire(eventInfo, new DomEventData(view, domEvent, {\n text,\n selection: view.createSelection(targetRanges),\n isComposing\n }));\n // Stop the beforeinput event if `delete` event was stopped.\n // https://github.com/ckeditor/ckeditor5/issues/753\n if (eventInfo.stop.called) {\n evt.stop();\n }\n });\n // On Android composition events are immediately applied to the model.\n // On non-Android the model is updated only on composition end.\n // On Android we can't rely on composition start/end to update model.\n if (!env.isAndroid) {\n // Note: The priority must be lower than the CompositionObserver handler to call it after the renderer is unblocked.\n // This is important for view to DOM position mapping.\n // This causes the effect of first remove composed DOM and then reapply it after model modification.\n viewDocument.on('compositionend', (evt, { data, domEvent })=>{\n if (!this.isEnabled) {\n return;\n }\n // In case of aborted composition.\n if (!data) {\n return;\n }\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'InsertTextObserver',\n // @if CK_DEBUG_TYPING // \t\t`%cFire insertText event, %c${ JSON.stringify( data ) }`,\n // @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n // @if CK_DEBUG_TYPING // \t\t 'color: blue'\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n // How do we know where to insert the composed text?\n // 1. The SelectionObserver is blocked and the view is not updated with the composition changes.\n // 2. The last moment before it's locked is the `compositionstart` event.\n // 3. The `SelectionObserver` is listening for `compositionstart` event and immediately converts\n // the selection. Handle this at the low priority so after the rendering is blocked.\n viewDocument.fire('insertText', new DomEventData(view, domEvent, {\n text: data,\n isComposing: true\n }));\n }, {\n priority: 'low'\n });\n }\n }\n /**\n\t * @inheritDoc\n\t */ observe() {}\n /**\n\t * @inheritDoc\n\t */ stopObserving() {}\n}\n\n// @if CK_DEBUG_TYPING // const { _debouncedLine, _buildLogMessage } = require( '@ckeditor/ckeditor5-engine/src/dev-utils/utils.js' );\n/**\n * Handles text input coming from the keyboard or other input methods.\n */ class Input extends Plugin {\n /**\n\t * The queue of `insertText` command executions that are waiting for the DOM to get updated after beforeinput event.\n\t */ _typingQueue;\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'Input';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const model = editor.model;\n const view = editor.editing.view;\n const mapper = editor.editing.mapper;\n const modelSelection = model.document.selection;\n this._typingQueue = new TypingQueue(editor);\n view.addObserver(InsertTextObserver);\n // TODO The above default configuration value should be defined using editor.config.define() once it's fixed.\n const insertTextCommand = new InsertTextCommand(editor, editor.config.get('typing.undoStep') || 20);\n // Register `insertText` command and add `input` command as an alias for backward compatibility.\n editor.commands.add('insertText', insertTextCommand);\n editor.commands.add('input', insertTextCommand);\n this.listenTo(view.document, 'beforeinput', ()=>{\n // Flush queue on the next beforeinput event because it could happen\n // that the mutation observer does not notice the DOM change in time.\n this._typingQueue.flush('next beforeinput');\n }, {\n priority: 'high'\n });\n this.listenTo(view.document, 'insertText', (evt, data)=>{\n const { text, selection: viewSelection } = data;\n // In case of a synthetic event, make sure that selection is not fake.\n if (view.document.selection.isFake && viewSelection && view.document.selection.isSimilar(viewSelection)) {\n data.preventDefault();\n }\n // In case of typing on a non-collapsed range, we have to handle it ourselves as a browser\n // could modify the DOM unpredictably.\n // Noticed cases:\n // * <pre><code>[foo</code></pre><p>]bar</p>\n // * <p>[foo</p><pre>]<code>bar</code></pre>\n // * <p>[foo</p><blockquote><p>]bar</p></blockquote>\n //\n // Especially tricky case is when a code block follows a paragraph as code block on the view side\n // is rendered as a <code> element inside a <pre> element, but only the <code> element is mapped to the model.\n // While mapping view position <pre>]<code> to model, the model position results before the <codeBlock> element,\n // and this triggers selection fixer to cover only text in the previous paragraph.\n //\n // This is safe for composition as those events are not cancellable\n // and the preventDefault() and defaultPrevented are not affected.\n if (viewSelection && Array.from(viewSelection.getRanges()).some((range)=>!range.isCollapsed)) {\n data.preventDefault();\n }\n if (!insertTextCommand.isEnabled) {\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t'%cInsertText command is disabled - prevent DOM change.',\n // @if CK_DEBUG_TYPING // \t\t'font-style: italic'\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n data.preventDefault();\n return;\n }\n let modelRanges;\n // If view selection was specified, translate it to model selection.\n if (viewSelection) {\n modelRanges = Array.from(viewSelection.getRanges()).map((viewRange)=>mapper.toModelRange(viewRange)).map((modelRange)=>_tryFixingModelRange(modelRange, model.schema) || modelRange);\n } else {\n modelRanges = Array.from(modelSelection.getRanges());\n }\n let insertText = text;\n // Typing in English on Android is firing composition events for the whole typed word.\n // We need to check the target range text to only apply the difference.\n if (env.isAndroid) {\n const selectedText = Array.from(modelRanges[0].getItems()).reduce((rangeText, node)=>{\n return rangeText + (node.is('$textProxy') ? node.data : '');\n }, '');\n if (selectedText) {\n if (selectedText.length <= insertText.length) {\n if (insertText.startsWith(selectedText)) {\n insertText = insertText.substring(selectedText.length);\n modelRanges[0].start = modelRanges[0].start.getShiftedBy(selectedText.length);\n }\n } else {\n if (selectedText.startsWith(insertText)) {\n // TODO this should be mapped as delete?\n modelRanges[0].start = modelRanges[0].start.getShiftedBy(insertText.length);\n insertText = '';\n }\n }\n }\n if (insertText.length == 0 && modelRanges[0].isCollapsed) {\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t'%cIgnore insertion of an empty data to the collapsed range.',\n // @if CK_DEBUG_TYPING // \t\t'font-style: italic'\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n return;\n }\n }\n // Note: the TypingQueue stores live-ranges internally as RTC could change the model while waiting for mutations.\n const commandData = {\n text: insertText,\n selection: model.createSelection(modelRanges)\n };\n // This is a beforeinput event, so we need to wait until the browser updates the DOM,\n // and we could apply changes to the model and verify if the DOM is valid.\n // The browser applies changes to the DOM not immediately on beforeinput event.\n // We just wait for mutation observer to notice changes or as a fallback a timeout.\n //\n // Previously we were cancelling the non-composition events, but it caused issues especially in Safari.\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t`%cQueue insertText:%c \"${ commandData.text }\"%c ` +\n // @if CK_DEBUG_TYPING // \t\t`[${ commandData.selection.getFirstPosition().path }]-` +\n // @if CK_DEBUG_TYPING // \t\t`[${ commandData.selection.getLastPosition().path }]` +\n // @if CK_DEBUG_TYPING // \t\t` queue size: ${ this._typingQueue.length + 1 }`,\n // @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n // @if CK_DEBUG_TYPING // \t\t'color: blue',\n // @if CK_DEBUG_TYPING // \t\t''\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n this._typingQueue.push(commandData, Boolean(data.isComposing));\n if (data.domEvent.defaultPrevented) {\n this._typingQueue.flush('beforeinput default prevented');\n }\n });\n // Delete selected content on composition start.\n if (env.isAndroid) {\n // On Android with English keyboard, the composition starts just by putting caret\n // at the word end or by selecting a table column. This is not a real composition started.\n // Trigger delete content on first composition key pressed.\n this.listenTo(view.document, 'keydown', (evt, data)=>{\n if (modelSelection.isCollapsed || data.keyCode != 229 || !view.document.isComposing) {\n return;\n }\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconst firstPositionPath = modelSelection.getFirstPosition()!.path;\n // @if CK_DEBUG_TYPING // \tconst lastPositionPath = modelSelection.getLastPosition()!.path;\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t'%cKeyDown 229%c -> model.deleteContent() ' +\n // @if CK_DEBUG_TYPING // \t\t`[${ firstPositionPath }]-[${ lastPositionPath }]`,\n // @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n // @if CK_DEBUG_TYPING // \t\t''\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n deleteSelectionContent(model, insertTextCommand);\n });\n } else {\n // Note: The priority must precede the CompositionObserver handler to call it before\n // the renderer is blocked, because we want to render this change.\n this.listenTo(view.document, 'compositionstart', ()=>{\n if (modelSelection.isCollapsed) {\n return;\n }\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconst firstPositionPath = modelSelection.getFirstPosition()!.path;\n // @if CK_DEBUG_TYPING // \tconst lastPositionPath = modelSelection.getLastPosition()!.path;\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t'%cComposition start%c -> model.deleteContent() ' +\n // @if CK_DEBUG_TYPING // \t\t`[${ firstPositionPath }]-[${ lastPositionPath }]`,\n // @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n // @if CK_DEBUG_TYPING // \t\t'',\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n deleteSelectionContent(model, insertTextCommand);\n }, {\n priority: 'high'\n });\n }\n // Apply changes to the model as they are applied to the DOM by the browser.\n // On beforeinput event, the DOM is not yet modified. We wait for detected mutations to apply model changes.\n this.listenTo(view.document, 'mutations', (evt, { mutations })=>{\n // Check if mutations are relevant for queued changes.\n if (this._typingQueue.hasAffectedElements()) {\n for (const { node } of mutations){\n const viewElement = findMappedViewAncestor(node, mapper);\n const modelElement = mapper.toModelElement(viewElement);\n if (this._typingQueue.isElementAffected(modelElement)) {\n this._typingQueue.flush('mutations');\n return;\n }\n }\n }\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t'%cMutations not related to the composition.',\n // @if CK_DEBUG_TYPING // \t\t'font-style: italic'\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n });\n // Make sure that all changes are applied to the model before the end of composition.\n this.listenTo(view.document, 'compositionend', ()=>{\n this._typingQueue.flush('before composition end');\n }, {\n priority: 'high'\n });\n // Trigger mutations check after the composition completes to fix all DOM changes that got ignored during composition.\n // On Android, the Renderer is not disabled while composing. While updating DOM nodes, we ignore some changes\n // that are not that important (like NBSP vs. plain space character) and could break the composition flow.\n // After composition is completed, we trigger additional `mutations` event for elements affected by the composition\n // so the Renderer can adjust the DOM to the expected structure without breaking the composition.\n this.listenTo(view.document, 'compositionend', ()=>{\n // There could be new item queued on the composition end, so flush it.\n this._typingQueue.flush('after composition end');\n const mutations = [];\n if (this._typingQueue.hasAffectedElements()) {\n for (const element of this._typingQueue.flushAffectedElements()){\n const viewElement = mapper.toViewElement(element);\n if (!viewElement) {\n continue;\n }\n mutations.push({\n type: 'children',\n node: viewElement\n });\n }\n }\n // Fire composition mutations, if any.\n //\n // For non-Android:\n // After the composition end, we need to verify if there are no left-overs.\n // Listening at the lowest priority, so after the `InsertTextObserver` added above (all composed text\n // should already be applied to the model, view, and DOM).\n // On non-Android the `Renderer` is blocked while the user is composing, but the `MutationObserver` still collects\n // mutated nodes and fires `mutations` events.\n // Those events are recorded by the `Renderer` but not applied to the DOM while composing.\n // We need to trigger those checks (and fixes) once again but this time without specifying the exact mutations\n // since they are already recorded by the `Renderer`.\n // It in most cases just clears the internal record of mutated text nodes\n // since all changes should already be applied to the DOM.\n // This is especially needed when a user cancels composition, so we can clear nodes marked to sync.\n if (mutations.length || !env.isAndroid) {\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.group( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t'%cFire post-composition mutation fixes.',\n // @if CK_DEBUG_TYPING // \t\t'font-weight: bold'\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n view.document.fire('mutations', {\n mutations\n });\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.groupEnd();\n // @if CK_DEBUG_TYPING // }\n }\n }, {\n priority: 'lowest'\n });\n }\n /**\n\t * @inheritDoc\n\t */ destroy() {\n super.destroy();\n this._typingQueue.destroy();\n }\n}\n/**\n * The queue of `insertText` command executions that are waiting for the DOM to get updated after beforeinput event.\n */ class TypingQueue {\n /**\n\t * The editor instance.\n\t */ editor;\n /**\n\t * Debounced queue flush as a safety mechanism for cases of mutation observer not triggering.\n\t */ flushDebounced = debounce(()=>this.flush('timeout'), 50);\n /**\n\t * The queue of `insertText` command executions that are waiting for the DOM to get updated after beforeinput event.\n\t */ _queue = [];\n /**\n\t * Whether there is any composition enqueued or plain typing only.\n\t */ _isComposing = false;\n /**\n\t * A set of model elements. The typing happened in those elements. It's used for mutations check.\n\t */ _affectedElements = new Set();\n /**\n\t * @inheritDoc\n\t */ constructor(editor){\n this.editor = editor;\n }\n /**\n\t * Destroys the helper object.\n\t */ destroy() {\n this.flushDebounced.cancel();\n this._affectedElements.clear();\n while(this._queue.length){\n this.shift();\n }\n }\n /**\n\t * Returns the size of the queue.\n\t */ get length() {\n return this._queue.length;\n }\n /**\n\t * Push next insertText command data to the queue.\n\t */ push(commandData, isComposing) {\n const commandLiveData = {\n text: commandData.text\n };\n if (commandData.selection) {\n commandLiveData.selectionRanges = [];\n for (const range of commandData.selection.getRanges()){\n commandLiveData.selectionRanges.push(LiveRange.fromRange(range));\n // Keep reference to the model element for later mutation checks.\n this._affectedElements.add(range.start.parent);\n }\n }\n this._queue.push(commandLiveData);\n this._isComposing ||= isComposing;\n this.flushDebounced();\n }\n /**\n\t * Shift the first item from the insertText command data queue.\n\t */ shift() {\n const commandLiveData = this._queue.shift();\n const commandData = {\n text: commandLiveData.text\n };\n if (commandLiveData.selectionRanges) {\n const ranges = commandLiveData.selectionRanges.map((liveRange)=>detachLiveRange(liveRange)).filter((range)=>!!range);\n if (ranges.length) {\n commandData.selection = this.editor.model.createSelection(ranges);\n }\n }\n return commandData;\n }\n /**\n\t * Applies all queued insertText command executions.\n\t *\n\t * @param reason Used only for debugging.\n\t */ flush(reason) {\n const editor = this.editor;\n const model = editor.model;\n const view = editor.editing.view;\n this.flushDebounced.cancel();\n if (!this._queue.length) {\n return;\n }\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.group( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t`%cFlush insertText queue on ${ reason }.`,\n // @if CK_DEBUG_TYPING // \t\t'font-weight: bold'\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n const insertTextCommand = editor.commands.get('insertText');\n const buffer = insertTextCommand.buffer;\n model.enqueueChange(buffer.batch, ()=>{\n buffer.lock();\n while(this._queue.length){\n const commandData = this.shift();\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t`%cExecute queued insertText:%c \"${ commandData.text }\"%c ` +\n // @if CK_DEBUG_TYPING // \t\t\t`[${ commandData.selection.getFirstPosition().path }]-` +\n // @if CK_DEBUG_TYPING // \t\t\t`[${ commandData.selection.getLastPosition().path }]`,\n // @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n // @if CK_DEBUG_TYPING // \t\t'color: blue',\n // @if CK_DEBUG_TYPING // \t\t''\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n editor.execute('insertText', commandData);\n }\n buffer.unlock();\n if (!this._isComposing) {\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n // @if CK_DEBUG_TYPING // \t\t'Clear affected elements set'\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n this._affectedElements.clear();\n }\n this._isComposing = false;\n });\n view.scrollToTheSelection();\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.groupEnd();\n // @if CK_DEBUG_TYPING // }\n }\n /**\n\t * Returns `true` if the given model element is related to recent typing.\n\t */ isElementAffected(element) {\n return this._affectedElements.has(element);\n }\n /**\n\t * Returns `true` if there are any affected elements in the queue.\n\t */ hasAffectedElements() {\n return this._affectedElements.size > 0;\n }\n /**\n\t * Returns an array of typing-related elements and clears the internal list.\n\t */ flushAffectedElements() {\n const result = Array.from(this._affectedElements);\n this._affectedElements.clear();\n return result;\n }\n}\n/**\n * Deletes the content selected by the document selection at the start of composition.\n */ function deleteSelectionContent(model, insertTextCommand) {\n // By relying on the state of the input command we allow disabling the entire input easily\n // by just disabling the input command. We could’ve used here the delete command but that\n // would mean requiring the delete feature which would block loading one without the other.\n // We could also check the editor.isReadOnly property, but that wouldn't allow to block\n // the input without blocking other features.\n if (!insertTextCommand.isEnabled) {\n return;\n }\n const buffer = insertTextCommand.buffer;\n buffer.lock();\n model.enqueueChange(buffer.batch, ()=>{\n model.deleteContent(model.document.selection);\n });\n buffer.unlock();\n}\n/**\n * Detaches a LiveRange and returns the static range from it.\n */ function detachLiveRange(liveRange) {\n const range = liveRange.toRange();\n liveRange.detach();\n if (range.root.rootName == '$graveyard') {\n return null;\n }\n return range;\n}\n/**\n * For the given `viewNode`, finds and returns the closest ancestor of this node that has a mapping to the model.\n */ function findMappedViewAncestor(viewNode, mapper) {\n let node = viewNode.is('$text') ? viewNode.parent : viewNode;\n while(!mapper.toModelElement(node)){\n node = node.parent;\n }\n return node;\n}\n\n// @if CK_DEBUG_TYPING // const { _buildLogMessage } = require( '@ckeditor/ckeditor5-engine/src/dev-utils/utils.js' );\n/**\n * The delete command. Used by the {@link module:typing/delete~Delete delete feature} to handle the <kbd>Delete</kbd> and\n * <kbd>Backspace</kbd> keys.\n */ class DeleteCommand extends Command {\n /**\n\t * The directionality of the delete describing in what direction it should\n\t * consume the content when the selection is collapsed.\n\t */ direction;\n /**\n\t * Delete's change buffer used to group subsequent changes into batches.\n\t */ _buffer;\n /**\n\t * Creates an instance of the command.\n\t *\n\t * @param direction The directionality of the delete describing in what direction it\n\t * should consume the content when the selection is collapsed.\n\t */ constructor(editor, direction){\n super(editor);\n this.direction = direction;\n this._buffer = new ChangeBuffer(editor.model, editor.config.get('typing.undoStep'));\n // Since this command may execute on different selectable than selection, it should be checked directly in execute block.\n this._isEnabledBasedOnSelection = false;\n }\n /**\n\t * The current change buffer.\n\t */ get buffer() {\n return this._buffer;\n }\n /**\n\t * Executes the delete command. Depending on whether the selection is collapsed or not, deletes its content\n\t * or a piece of content in the {@link #direction defined direction}.\n\t *\n\t * @fires execute\n\t * @param options The command options.\n\t * @param options.unit See {@link module:engine/model/utils/modifyselection~modifySelection}'s options.\n\t * @param options.sequence A number describing which subsequent delete event it is without the key being released.\n\t * See the {@link module:engine/view/document~Document#event:delete} event data.\n\t * @param options.selection Selection to remove. If not set, current model selection will be used.\n\t */ execute(options = {}) {\n const model = this.editor.model;\n const doc = model.document;\n model.enqueueChange(this._buffer.batch, (writer)=>{\n this._buffer.lock();\n const selection = writer.createSelection(options.selection || doc.selection);\n // Don't execute command when selection is in non-editable place.\n if (!model.canEditAt(selection)) {\n return;\n }\n const sequence = options.sequence || 1;\n // Do not replace the whole selected content if selection was collapsed.\n // This prevents such situation:\n //\n // <h1></h1><p>[]</p>\t--> <h1>[</h1><p>]</p> \t\t--> <p></p>\n // starting content\t\t--> after `modifySelection`\t--> after `deleteContent`.\n const doNotResetEntireContent = selection.isCollapsed;\n // Try to extend the selection in the specified direction.\n if (selection.isCollapsed) {\n model.modifySelection(selection, {\n direction: this.direction,\n unit: options.unit,\n treatEmojiAsSingleUnit: true\n });\n }\n // Check if deleting in an empty editor. See #61.\n if (this._shouldEntireContentBeReplacedWithParagraph(sequence)) {\n this._replaceEntireContentWithParagraph(writer);\n return;\n }\n // Check if deleting in the first empty block.\n // See https://github.com/ckeditor/ckeditor5/issues/8137.\n if (this._shouldReplaceFirstBlockWithParagraph(selection, sequence)) {\n this.editor.execute('paragraph', {\n selection\n });\n return;\n }\n // If selection is still collapsed, then there's nothing to delete.\n if (selection.isCollapsed) {\n return;\n }\n let changeCount = 0;\n selection.getFirstRange().getMinimalFlatRanges().forEach((range)=>{\n changeCount += count(range.getWalker({\n singleCharacters: true,\n ignoreElementEnd: true,\n shallow: true\n }));\n });\n // @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n // @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'DeleteCommand',\n // @if CK_DEBUG_TYPING // \t\t'Delete content',\n // @if CK_DEBUG_TYPING // \t\t`[${ selection.getFirstPosition()!.path }]-[${ selection.getLastPosition()!.path }]`,\n // @if CK_DEBUG_TYPING // \t\toptions\n // @if CK_DEBUG_TYPING // \t) );\n // @if CK_DEBUG_TYPING // }\n model.deleteContent(selection, {\n doNotResetEntireContent,\n direction: this.direction\n });\n this._buffer.input(changeCount);\n writer.setSelection(selection);\n this._buffer.unlock();\n });\n }\n /**\n\t * If the user keeps <kbd>Backspace</kbd> or <kbd>Delete</kbd> key pressed, the content of the current\n\t * editable will be cleared. However, this will not yet lead to resetting the remaining block to a paragraph\n\t * (which happens e.g. when the user does <kbd>Ctrl</kbd> + <kbd>A</kbd>, <kbd>Backspace</kbd>).\n\t *\n\t * But, if the user pressed the key in an empty editable for the first time,\n\t * we want to replace the entire content with a paragraph if:\n\t *\n\t * * the current limit element is empty,\n\t * * the paragraph is allowed in the limit element,\n\t * * the limit doesn't already have a paragraph inside.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5-typing/issues/61.\n\t *\n\t * @param sequence A number describing which subsequent delete event it is without the key being released.\n\t */ _shouldEntireContentBeReplacedWithParagraph(sequence) {\n // Does nothing if user pressed and held the \"Backspace\" or \"Delete\" key.\n if (sequence > 1) {\n return false;\n }\n const model = this.editor.model;\n const doc = model.document;\n const selection = doc.selection;\n const limitElement = model.schema.getLimitElement(selection);\n // If a collapsed selection contains the whole content it means that the content is empty\n // (from the user perspective).\n const limitElementIsEmpty = selection.isCollapsed && selection.containsEntireContent(limitElement);\n if (!limitElementIsEmpty) {\n return false;\n }\n if (!model.schema.checkChild(limitElement, 'paragraph')) {\n return false;\n }\n const limitElementFirstChild = limitElement.getChild(0);\n // Does nothing if the limit element already contains only a paragraph.\n // We ignore the case when paragraph might have some inline elements (<p><inlineWidget>[]</inlineWidget></p>)\n // because we don't support such cases yet and it's unclear whether inlineWidget shouldn't be a limit itself.\n if (limitElementFirstChild && limitElementFirstChild.is('element', 'paragraph')) {\n return false;\n }\n return true;\n }\n /**\n\t * The entire content is replaced with the paragraph. Selection is moved inside the paragraph.\n\t *\n\t * @param writer The model writer.\n\t */ _replaceEntireContentWithParagraph(writer) {\n const model = this.editor.model;\n const doc = model.document;\n const selection = doc.selection;\n const limitElement = model.schema.getLimitElement(selection);\n const paragraph = writer.createElement('paragraph');\n writer.remove(writer.createRangeIn(limitElement));\n writer.insert(paragraph, limitElement);\n writer.setSelection(paragraph, 0);\n }\n /**\n\t * Checks if the selection is inside an empty element that is the first child of the limit element\n\t * and should be replaced with a paragraph.\n\t *\n\t * @param selection The selection.\n\t * @param sequence A number describing which subsequent delete event it is without the key being released.\n\t */ _shouldReplaceFirstBlockWithParagraph(selection, sequence) {\n const model = this.editor.model;\n // Does nothing if user pressed and held the \"Backspace\" key or it was a \"Delete\" button.\n if (sequence > 1 || this.direction != 'backward') {\n return false;\n }\n if (!selection.isCollapsed) {\n return false;\n }\n const position = selection.getFirstPosition();\n const limitElement = model.schema.getLimitElement(position);\n const limitElementFirstChild = limitElement.getChild(0);\n // Only elements that are direct children of the limit element can be replaced.\n // Unwrapping from a block quote should be handled in a dedicated feature.\n if (position.parent != limitElementFirstChild) {\n return false;\n }\n // A block should be replaced only if it was empty.\n if (!selection.containsEntireContent(limitElementFirstChild)) {\n return false;\n }\n // Replace with a paragraph only if it's allowed there.\n if (!model.schema.checkChild(limitElement, 'paragraph')) {\n return false;\n }\n // Does nothing if the limit element already contains only a paragraph.\n if (limitElementFirstChild.name == 'paragraph') {\n return false;\n }\n return true;\n }\n}\n\nconst DELETE_CHARACTER = 'character';\nconst DELETE_WORD = 'word';\nconst DELETE_CODE_POINT = 'codePoint';\nconst DELETE_SELECTION = 'selection';\nconst DELETE_BACKWARD = 'backward';\nconst DELETE_FORWARD = 'forward';\nconst DELETE_EVENT_TYPES = {\n // --------------------------------------- Backward delete types -----------------------------------------------------\n // This happens in Safari on Mac when some content is selected and Ctrl + K is pressed.\n deleteContent: {\n unit: DELETE_SELECTION,\n // According to the Input Events Level 2 spec, this delete type has no direction\n // but to keep things simple, let's default to backward.\n direction: DELETE_BACKWARD\n },\n // Chrome and Safari on Mac: Backspace or Ctrl + H\n deleteContentBackward: {\n // This kind of deletions must be done on the code point-level instead of target range provided by the DOM beforeinput event.\n // Take for instance \"👨‍👩‍👧‍👧\", it equals:\n //\n //\t* [ \"👨\", \"ZERO WIDTH JOINER\", \"👩\", \"ZERO WIDTH JOINER\", \"👧\", \"ZERO WIDTH JOINER\", \"👧\" ]\n //\t* or simply \"\\u{1F468}\\u200D\\u{1F469}\\u200D\\u{1F467}\\u200D\\u{1F467}\"\n //\n // The range provided by the browser would cause the entire multi-byte grapheme to disappear while the user\n // intention when deleting backwards (\"👨‍👩‍👧‍👧[]\", then backspace) is gradual \"decomposition\" (first to \"👨‍👩‍👧‍[]\",\n // then to \"👨‍👩‍[]\", etc.).\n //\n //\t* \"👨‍👩‍👧‍👧[]\" + backward delete (by code point) -> results in \"👨‍👩‍👧[]\", removed the last \"👧\" 👍\n //\t* \"👨‍👩‍👧‍👧[]\" + backward delete (by character) -> results in \"[]\", removed the whole grapheme 👎\n //\n // Deleting by code-point is simply a better UX. See \"deleteContentForward\" to learn more.\n unit: DELETE_CODE_POINT,\n direction: DELETE_BACKWARD\n },\n // On Mac: Option + Backspace.\n // On iOS: Hold the backspace for a while and the whole words will start to disappear.\n deleteWordBackward: {\n unit: DELETE_WORD,\n direction: DELETE_BACKWARD\n },\n // Safari on Mac: Cmd + Backspace\n deleteHardLineBackward: {\n unit: DELETE_SELECTION,\n direction: DELETE_BACKWARD\n },\n // Chrome on Mac: Cmd + Backspace.\n deleteSoftLineBackward: {\n unit: DELETE_SELECTION,\n direction: DELETE_BACKWARD\n },\n // --------------------------------------- Forward delete types -----------------------------------------------------\n // Chrome on Mac: Fn + Backspace or Ctrl + D\n // Safari on Mac: Ctrl + K or Ctrl + D\n deleteContentForward: {\n // Unlike backward delete, this delete must be performed by character instead of by code point, which\n // provides the best UX for working with accented letters.\n // Take, for example \"b̂\" (\"\\u0062\\u0302\", or [ \"LATIN SMALL LETTER B\", \"COMBINING CIRCUMFLEX ACCENT\" ]):\n //\n //\t* \"b̂[]\" + backward delete (by code point) -> results in \"b[]\", removed the combining mark 👍\n //\t* \"[]b̂\" + forward delete (by code point) -> results in \"[]^\", a bare combining mark does that not make sense when alone 👎\n //\t* \"[]b̂\" + forward delete (by character) -> results in \"[]\", removed both \"b\" and the combining mark 👍\n //\n // See: \"deleteContentBackward\" to learn more.\n unit: DELETE_CHARACTER,\n direction: DELETE_FORWARD\n },\n // On Mac: Fn + Option + Backspace.\n deleteWordForward: {\n unit: DELETE_WORD,\n direction: DELETE_FORWARD\n },\n // Chrome on Mac: Ctrl + K (you have to disable the Link plugin first, though, because it uses the same keystroke)\n // This is weird that it does not work in Safari on Mac despite being listed in the official shortcuts listing\n // on Apple's webpage.\n deleteHardLineForward: {\n unit: DELETE_SELECTION,\n direction: DELETE_FORWARD\n },\n // At this moment there is no known way to trigger this event type but let's keep it for the symmetry with\n // deleteSoftLineBackward.\n deleteSoftLineForward: {\n unit: DELETE_SELECTION,\n direction: DELETE_FORWARD\n }\n};\n/**\n * Delete observer introduces the {@link module:engine/view/document~Document#event:delete} event.\n */ class DeleteObserver extends Observer {\n /**\n\t * @inheritDoc\n\t */ constructor(view){\n super(view);\n const document = view.document;\n // It matters how many subsequent deletions were made, e.g. when the backspace key was pressed and held\n // by the user for some time. For instance, if such scenario ocurred and the heading the selection was\n // anchored to was the only content of the editor, it will not be converted into a paragraph (the user\n // wanted to clean it up, not remove it, it's about UX). Check out the DeleteCommand implementation to learn more.\n //\n // Fun fact: Safari on Mac won't fire beforeinput for backspace in an empty heading (only content).\n let sequence = 0;\n document.on('keydown', ()=>{\n sequence++;\n });\n document.on('keyup', ()=>{\n sequence = 0;\n });\n document.on('beforeinput', (evt, data)=>{\n if (!this.isEnabled) {\n return;\n }\n const { targetRanges, domEvent, inputType } = data;\n const deleteEventSpec = DELETE_EVENT_TYPES[inputType];\n if (!deleteEventSpec) {\n return;\n }\n const deleteData = {\n direction: deleteEventSpec.direction,\n unit: deleteEventSpec.unit,\n sequence\n };\n if (deleteData.unit == DELETE_SELECTION) {\n deleteData.selectionToRemove = view.createSelection(targetRanges[0]);\n }\n // The default deletion unit for deleteContentBackward is a single code point\n // but if the browser provides a wider target range then we should use it.\n if (inputType === 'deleteContentBackward') {\n // On Android, deleteContentBackward has sequence 1 by default.\n if (env.isAndroid) {\n deleteData.sequence = 1;\n }\n // The beforeInput event wants more than a single character to be removed.\n if (shouldUseTargetRanges(targetRanges)) {\n deleteData.unit = DELETE_SELECTION;\n deleteData.selectionToRemove = view.createSelection(targetRanges);\n }\n }\n const eventInfo = new BubblingEventInfo(document, 'delete', targetRanges[0]);\n document.fire(eventInfo, new DomEventData(view, domEvent, deleteData));\n // Stop the beforeinput event if `delete` event was stopped.\n // https://github.com/ckeditor/ckeditor5/issues/753\n if (eventInfo.stop.called) {\n evt.stop();\n }\n });\n // TODO: to be removed when https://bugs.chromium.org/p/chromium/issues/detail?id=1365311 is solved.\n if (env.isBlink) {\n enableChromeWorkaround(this);\n }\n }\n /**\n\t * @inheritDoc\n\t */ observe() {}\n /**\n\t * @inheritDoc\n\t */ stopObserving() {}\n}\n/**\n * Enables workaround for the issue https://github.com/ckeditor/ckeditor5/issues/11904.\n */ function enableChromeWorkaround(observer) {\n const view = observer.view;\n const document = view.document;\n let pressedKeyCode = null;\n let beforeInputReceived = false;\n document.on('keydown', (evt, { keyCode })=>{\n pressedKeyCode = keyCode;\n beforeInputReceived = false;\n });\n document.on('keyup', (evt, { keyCode, domEvent })=>{\n const selection = document.selection;\n const shouldFireDeleteEvent = observer.isEnabled && keyCode == pressedKeyCode && isDeleteKeyCode(keyCode) && !selection.isCollapsed && !beforeInputReceived;\n pressedKeyCode = null;\n if (shouldFireDeleteEvent) {\n const targetRange = selection.getFirstRange();\n const eventInfo = new BubblingEventInfo(document, 'delete', targetRange);\n const deleteData = {\n unit: DELETE_SELECTION,\n direction: getDeleteDirection(keyCode),\n selectionToRemove: selection\n };\n document.fire(eventInfo, new DomEventData(view, domEvent, deleteData));\n }\n });\n document.on('beforeinput', (evt, { inputType })=>{\n const deleteEventSpec = DELETE_EVENT_TYPES[inputType];\n const isMatchingBeforeInput = isDeleteKeyCode(pressedKeyCode) && deleteEventSpec && deleteEventSpec.direction == getDeleteDirection(pressedKeyCode);\n if (isMatchingBeforeInput) {\n beforeInputReceived = true;\n }\n }, {\n priority: 'high'\n });\n document.on('beforeinput', (evt, { inputType, data })=>{\n const shouldIgnoreBeforeInput = pressedKeyCode == keyCodes.delete && inputType == 'insertText' && data == '\\x7f'; // Delete character :P\n if (shouldIgnoreBeforeInput) {\n evt.stop();\n }\n }, {\n priority: 'high'\n });\n function isDeleteKeyCode(keyCode) {\n return keyCode == keyCodes.backspace || keyCode == keyCodes.delete;\n }\n function getDeleteDirection(keyCode) {\n return keyCode == keyCodes.backspace ? DELETE_BACKWARD : DELETE_FORWARD;\n }\n}\n/**\n * Verifies whether the given target ranges cover more than a single character and should be used instead of a single code-point deletion.\n */ function shouldUseTargetRanges(targetRanges) {\n // The collapsed target range could happen for example while deleting inside an inline filler\n // (it's mapped to collapsed position before an inline filler).\n if (targetRanges.length != 1 || targetRanges[0].isCollapsed) {\n return false;\n }\n const walker = targetRanges[0].getWalker({\n direction: 'backward',\n singleCharacters: true,\n ignoreElementEnd: true\n });\n let count = 0;\n for (const { nextPosition, item } of walker){\n if (nextPosition.parent.is('$text')) {\n const data = nextPosition.parent.data;\n const offset = nextPosition.offset;\n // Count combined symbols and emoji sequences as a single character.\n if (isInsideSurrogatePair(data, offset) || isInsideCombinedSymbol(data, offset) || isInsideEmojiSequence(data, offset)) {\n continue;\n }\n count++;\n } else if (item.is('containerElement') || item.is('emptyElement')) {\n count++;\n }\n if (count > 1) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The delete and backspace feature. Handles keys such as <kbd>Delete</kbd> and <kbd>Backspace</kbd>, other\n * keystrokes and user actions that result in deleting content in the editor.\n */ class Delete extends Plugin {\n /**\n\t * Whether pressing backspace should trigger undo action\n\t */ _undoOnBackspace;\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'Delete';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const view = editor.editing.view;\n const viewDocument = view.document;\n const modelDocument = editor.model.document;\n view.addObserver(DeleteObserver);\n this._undoOnBackspace = false;\n const deleteForwardCommand = new DeleteCommand(editor, 'forward');\n // Register `deleteForward` command and add `forwardDelete` command as an alias for backward compatibility.\n editor.commands.add('deleteForward', deleteForwardCommand);\n editor.commands.add('forwardDelete', deleteForwardCommand);\n editor.commands.add('delete', new DeleteCommand(editor, 'backward'));\n this.listenTo(viewDocument, 'delete', (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 const { direction, sequence, selectionToRemove, unit } = data;\n const commandName = direction === 'forward' ? 'deleteForward' : 'delete';\n const commandData = {\n sequence\n };\n if (unit == 'selection') {\n const modelRanges = Array.from(selectionToRemove.getRanges()).map((viewRange)=>editor.editing.mapper.toModelRange(viewRange)).map((modelRange)=>_tryFixingModelRange(modelRange, editor.model.schema) || modelRange);\n commandData.selection = editor.model.createSelection(modelRanges);\n } else {\n commandData.unit = unit;\n }\n editor.execute(commandName, commandData);\n view.scrollToTheSelection();\n }, {\n priority: 'low'\n });\n // Handle the Backspace key while at the beginning of a nested editable. See https://github.com/ckeditor/ckeditor5/issues/17383.\n this.listenTo(viewDocument, 'keydown', (evt, data)=>{\n if (viewDocument.isComposing || data.keyCode != keyCodes.backspace || !modelDocument.selection.isCollapsed) {\n return;\n }\n const ancestorLimit = editor.model.schema.getLimitElement(modelDocument.selection);\n const limitStartPosition = editor.model.createPositionAt(ancestorLimit, 0);\n if (limitStartPosition.isTouching(modelDocument.selection.getFirstPosition())) {\n // Stop the beforeinput event as it could be invalid.\n data.preventDefault();\n // Create a fake delete event so all features can act on it and the target range is proper.\n const modelRange = editor.model.schema.getNearestSelectionRange(limitStartPosition, 'forward');\n if (!modelRange) {\n return;\n }\n const viewSelection = view.createSelection(editor.editing.mapper.toViewRange(modelRange));\n const targetRange = viewSelection.getFirstRange();\n const eventInfo = new BubblingEventInfo(document, 'delete', targetRange);\n const deleteData = {\n unit: 'selection',\n direction: 'backward',\n selectionToRemove: viewSelection\n };\n viewDocument.fire(eventInfo, new DomEventData(view, data.domEvent, deleteData));\n }\n });\n if (this.editor.plugins.has('UndoEditing')) {\n this.listenTo(viewDocument, 'delete', (evt, data)=>{\n if (this._undoOnBackspace && data.direction == 'backward' && data.sequence == 1 && data.unit == 'codePoint') {\n this._undoOnBackspace = false;\n editor.execute('undo');\n data.preventDefault();\n evt.stop();\n }\n }, {\n context: '$capture'\n });\n this.listenTo(modelDocument, 'change', ()=>{\n this._undoOnBackspace = false;\n });\n }\n }\n /**\n\t * If the next user action after calling this method is pressing backspace, it would undo the last change.\n\t *\n\t * Requires {@link module:undo/undoediting~UndoEditing} plugin. If not loaded, does nothing.\n\t */ requestUndoOnBackspace() {\n if (this.editor.plugins.has('UndoEditing')) {\n this._undoOnBackspace = true;\n }\n }\n}\n\n/**\n * The typing feature. It handles typing.\n *\n * This is a \"glue\" plugin which loads the {@link module:typing/input~Input} and {@link module:typing/delete~Delete}\n * plugins.\n */ class Typing extends Plugin {\n static get requires() {\n return [\n Input,\n Delete\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'Typing';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 typing/utils/getlasttextline\n */ /**\n * Returns the last text line from the given range.\n *\n * \"The last text line\" is understood as text (from one or more text nodes) which is limited either by a parent block\n * or by inline elements (e.g. `<softBreak>`).\n *\n * ```ts\n * const rangeToCheck = model.createRange(\n * \tmodel.createPositionAt( paragraph, 0 ),\n * \tmodel.createPositionAt( paragraph, 'end' )\n * );\n *\n * const { text, range } = getLastTextLine( rangeToCheck, model );\n * ```\n *\n * For model below, the returned `text` will be \"Foo bar baz\" and `range` will be set on whole `<paragraph>` content:\n *\n * ```xml\n * <paragraph>Foo bar baz<paragraph>\n * ```\n *\n * However, in below case, `text` will be set to \"baz\" and `range` will be set only on \"baz\".\n *\n * ```xml\n * <paragraph>Foo<softBreak></softBreak>bar<softBreak></softBreak>baz<paragraph>\n * ```\n */ function getLastTextLine(range, model) {\n let start = range.start;\n const text = Array.from(range.getWalker({\n ignoreElementEnd: false\n })).reduce((rangeText, { item })=>{\n // Trim text to a last occurrence of an inline element and update range start.\n if (!(item.is('$text') || item.is('$textProxy'))) {\n start = model.createPositionAfter(item);\n return '';\n }\n return rangeText + item.data;\n }, '');\n return {\n text,\n range: model.createRange(start, range.end)\n };\n}\n\n/**\n * The text watcher feature.\n *\n * Fires the {@link module:typing/textwatcher~TextWatcher#event:matched:data `matched:data`},\n * {@link module:typing/textwatcher~TextWatcher#event:matched:selection `matched:selection`} and\n * {@link module:typing/textwatcher~TextWatcher#event:unmatched `unmatched`} events on typing or selection changes.\n */ class TextWatcher extends /* #__PURE__ */ ObservableMixin() {\n /**\n\t * The editor's model.\n\t */ model;\n /**\n\t * The function used to match the text.\n\t *\n\t * The test callback can return 3 values:\n\t *\n\t * * `false` if there is no match,\n\t * * `true` if there is a match,\n\t * * an object if there is a match and we want to pass some additional information to the {@link #event:matched:data} event.\n\t */ testCallback;\n /**\n\t * Whether there is a match currently.\n\t */ _hasMatch;\n /**\n\t * Creates a text watcher instance.\n\t *\n\t * @param testCallback See {@link module:typing/textwatcher~TextWatcher#testCallback}.\n\t */ constructor(model, testCallback){\n super();\n this.model = model;\n this.testCallback = testCallback;\n this._hasMatch = false;\n this.set('isEnabled', true);\n // Toggle text watching on isEnabled state change.\n this.on('change:isEnabled', ()=>{\n if (this.isEnabled) {\n this._startListening();\n } else {\n this.stopListening(model.document.selection);\n this.stopListening(model.document);\n }\n });\n this._startListening();\n }\n /**\n\t * Flag indicating whether there is a match currently.\n\t */ get hasMatch() {\n return this._hasMatch;\n }\n /**\n\t * Starts listening to the editor for typing and selection events.\n\t */ _startListening() {\n const model = this.model;\n const document = model.document;\n this.listenTo(document.selection, 'change:range', (evt, { directChange })=>{\n // Indirect changes (i.e. when the user types or external changes are applied) are handled in the document's change event.\n if (!directChange) {\n return;\n }\n // Act only on collapsed selection.\n if (!document.selection.isCollapsed) {\n if (this.hasMatch) {\n this.fire('unmatched');\n this._hasMatch = false;\n }\n return;\n }\n this._evaluateTextBeforeSelection('selection');\n });\n this.listenTo(document, 'change:data', (evt, batch)=>{\n if (batch.isUndo || !batch.isLocal) {\n return;\n }\n this._evaluateTextBeforeSelection('data', {\n batch\n });\n });\n }\n /**\n\t * Checks the editor content for matched text.\n\t *\n\t * @fires matched:data\n\t * @fires matched:selection\n\t * @fires unmatched\n\t *\n\t * @param suffix A suffix used for generating the event name.\n\t * @param data Data object for event.\n\t */ _evaluateTextBeforeSelection(suffix, data = {}) {\n const model = this.model;\n const document = model.document;\n const selection = document.selection;\n const rangeBeforeSelection = model.createRange(model.createPositionAt(selection.focus.parent, 0), selection.focus);\n const { text, range } = getLastTextLine(rangeBeforeSelection, model);\n const testResult = this.testCallback(text);\n if (!testResult && this.hasMatch) {\n this.fire('unmatched');\n }\n this._hasMatch = !!testResult;\n if (testResult) {\n const eventData = Object.assign(data, {\n text,\n range\n });\n // If the test callback returns an object with additional data, assign the data as well.\n if (typeof testResult == 'object') {\n Object.assign(eventData, testResult);\n }\n this.fire(`matched:${suffix}`, eventData);\n }\n }\n}\n\n/**\n * This plugin enables the two-step caret (phantom) movement behavior for\n * {@link module:typing/twostepcaretmovement~TwoStepCaretMovement#registerAttribute registered attributes}\n * on arrow right (<kbd>→</kbd>) and left (<kbd>←</kbd>) key press.\n *\n * Thanks to this (phantom) caret movement the user is able to type before/after as well as at the\n * beginning/end of an attribute.\n *\n * **Note:** This plugin support right–to–left (Arabic, Hebrew, etc.) content by mirroring its behavior\n * but for the sake of simplicity examples showcase only left–to–right use–cases.\n *\n * # Forward movement\n *\n * ## \"Entering\" an attribute:\n *\n * When this plugin is enabled and registered for the `a` attribute and the selection is right before it\n * (at the attribute boundary), pressing the right arrow key will not move the selection but update its\n * attributes accordingly:\n *\n * * When enabled:\n *\n * ```xml\n * foo{}<$text a=\"true\">bar</$text>\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * foo<$text a=\"true\">{}bar</$text>\n * ```\n *\n * * When disabled:\n *\n * ```xml\n * foo{}<$text a=\"true\">bar</$text>\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * foo<$text a=\"true\">b{}ar</$text>\n * ```\n *\n *\n * ## \"Leaving\" an attribute:\n *\n * * When enabled:\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text>baz\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar</$text>{}baz\n * ```\n *\n * * When disabled:\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text>baz\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar</$text>b{}az\n * ```\n *\n * # Backward movement\n *\n * * When enabled:\n *\n * ```xml\n * <$text a=\"true\">bar</$text>{}baz\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text>baz\n * ```\n *\n * * When disabled:\n *\n * ```xml\n * <$text a=\"true\">bar</$text>{}baz\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\">ba{}r</$text>b{}az\n * ```\n *\n * # Multiple attributes\n *\n * * When enabled and many attributes starts or ends at the same position:\n *\n * ```xml\n * <$text a=\"true\" b=\"true\">bar</$text>{}baz\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\" b=\"true\">bar{}</$text>baz\n * ```\n *\n * * When enabled and one procedes another:\n *\n * ```xml\n * <$text a=\"true\">bar</$text><$text b=\"true\">{}bar</$text>\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text><$text b=\"true\">bar</$text>\n * ```\n *\n */ class TwoStepCaretMovement extends Plugin {\n /**\n\t * A set of attributes to handle.\n\t */ attributes;\n /**\n\t * The current UID of the overridden gravity, as returned by\n\t * {@link module:engine/model/writer~Writer#overrideSelectionGravity}.\n\t */ _overrideUid;\n /**\n\t * A flag indicating that the automatic gravity restoration should not happen upon the next\n\t * gravity restoration.\n\t * {@link module:engine/model/selection~Selection#event:change:range} event.\n\t */ _isNextGravityRestorationSkipped = false;\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'TwoStepCaretMovement';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ constructor(editor){\n super(editor);\n this.attributes = new Set();\n this._overrideUid = null;\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const model = editor.model;\n const view = editor.editing.view;\n const locale = editor.locale;\n const modelSelection = model.document.selection;\n // Listen to keyboard events and handle the caret movement according to the 2-step caret logic.\n this.listenTo(view.document, 'arrowKey', (evt, data)=>{\n // This implementation works only for collapsed selection.\n if (!modelSelection.isCollapsed) {\n return;\n }\n // When user tries to expand the selection or jump over the whole word or to the beginning/end then\n // two-steps movement is not necessary.\n if (data.shiftKey || data.altKey || data.ctrlKey) {\n return;\n }\n const arrowRightPressed = data.keyCode == keyCodes.arrowright;\n const arrowLeftPressed = data.keyCode == keyCodes.arrowleft;\n // When neither left or right arrow has been pressed then do noting.\n if (!arrowRightPressed && !arrowLeftPressed) {\n return;\n }\n const contentDirection = locale.contentLanguageDirection;\n let isMovementHandled = false;\n if (contentDirection === 'ltr' && arrowRightPressed || contentDirection === 'rtl' && arrowLeftPressed) {\n isMovementHandled = this._handleForwardMovement(data);\n } else {\n isMovementHandled = this._handleBackwardMovement(data);\n }\n // Stop the keydown event if the two-step caret movement handled it. Avoid collisions\n // with other features which may also take over the caret movement (e.g. Widget).\n if (isMovementHandled === true) {\n evt.stop();\n }\n }, {\n context: '$text',\n priority: 'highest'\n });\n // The automatic gravity restoration logic.\n this.listenTo(modelSelection, 'change:range', (evt, data)=>{\n // Skipping the automatic restoration is needed if the selection should change\n // but the gravity must remain overridden afterwards. See the #handleBackwardMovement\n // to learn more.\n if (this._isNextGravityRestorationSkipped) {\n this._isNextGravityRestorationSkipped = false;\n return;\n }\n // Skip automatic restore when the gravity is not overridden — simply, there's nothing to restore\n // at this moment.\n if (!this._isGravityOverridden) {\n return;\n }\n // Skip automatic restore when the change is indirect AND the selection is at the attribute boundary.\n // It means that e.g. if the change was external (collaboration) and the user had their\n // selection around the link, its gravity should remain intact in this change:range event.\n if (!data.directChange && isBetweenDifferentAttributes(modelSelection.getFirstPosition(), this.attributes)) {\n return;\n }\n this._restoreGravity();\n });\n // Handle a click at the beginning/end of a two-step element.\n this._enableClickingAfterNode();\n // Change the attributes of the selection in certain situations after the two-step node was inserted into the document.\n this._enableInsertContentSelectionAttributesFixer();\n // Handle removing the content after the two-step node.\n this._handleDeleteContentAfterNode();\n }\n /**\n\t * Registers a given attribute for the two-step caret movement.\n\t *\n\t * @param attribute Name of the attribute to handle.\n\t */ registerAttribute(attribute) {\n this.attributes.add(attribute);\n }\n /**\n\t * Updates the document selection and the view according to the two–step caret movement state\n\t * when moving **forwards**. Executed upon `keypress` in the {@link module:engine/view/view~View}.\n\t *\n\t * @internal\n\t * @param eventData Data of the key press.\n\t * @returns `true` when the handler prevented caret movement.\n\t */ _handleForwardMovement(eventData) {\n const attributes = this.attributes;\n const model = this.editor.model;\n const selection = model.document.selection;\n const position = selection.getFirstPosition();\n // DON'T ENGAGE 2-SCM if gravity is already overridden. It means that we just entered\n //\n // \t\t<paragraph>foo<$text attribute>{}bar</$text>baz</paragraph>\n //\n // or left the attribute\n //\n // \t\t<paragraph>foo<$text attribute>bar</$text>{}baz</paragraph>\n //\n // and the gravity will be restored automatically.\n if (this._isGravityOverridden) {\n return false;\n }\n // DON'T ENGAGE 2-SCM when the selection is at the beginning of the block AND already has the\n // attribute:\n // * when the selection was initially set there using the mouse,\n // * when the editor has just started\n //\n //\t\t<paragraph><$text attribute>{}bar</$text>baz</paragraph>\n //\n if (position.isAtStart && hasAnyAttribute(selection, attributes)) {\n return false;\n }\n // ENGAGE 2-SCM When at least one of the observed attributes changes its value (incl. starts, ends).\n //\n //\t\t<paragraph>foo<$text attribute>bar{}</$text>baz</paragraph>\n //\t\t<paragraph>foo<$text attribute>bar{}</$text><$text otherAttribute>baz</$text></paragraph>\n //\t\t<paragraph>foo<$text attribute=1>bar{}</$text><$text attribute=2>baz</$text></paragraph>\n //\t\t<paragraph>foo{}<$text attribute>bar</$text>baz</paragraph>\n //\n if (isBetweenDifferentAttributes(position, attributes)) {\n if (eventData) {\n preventCaretMovement(eventData);\n }\n // CLEAR 2-SCM attributes if we are at the end of one 2-SCM and before\n // the next one with a different value of the same attribute.\n //\n //\t\t<paragraph>foo<$text attribute=1>bar{}</$text><$text attribute=2>bar</$text>baz</paragraph>\n //\n if (hasAnyAttribute(selection, attributes) && isBetweenDifferentAttributes(position, attributes, true)) {\n clearSelectionAttributes(model, attributes);\n } else {\n this._overrideGravity();\n }\n return true;\n }\n return false;\n }\n /**\n\t * Updates the document selection and the view according to the two–step caret movement state\n\t * when moving **backwards**. Executed upon `keypress` in the {@link module:engine/view/view~View}.\n\t *\n\t * @internal\n\t * @param eventData Data of the key press.\n\t * @returns `true` when the handler prevented caret movement\n\t */ _handleBackwardMovement(eventData) {\n const attributes = this.attributes;\n const model = this.editor.model;\n const selection = model.document.selection;\n const position = selection.getFirstPosition();\n // When the gravity is already overridden (by this plugin), it means we are on the two-step position.\n // Prevent the movement, restore the gravity and update selection attributes.\n //\n //\t\t<paragraph>foo<$text attribute=1>bar</$text><$text attribute=2>{}baz</$text></paragraph>\n //\t\t<paragraph>foo<$text attribute>bar</$text><$text otherAttribute>{}baz</$text></paragraph>\n //\t\t<paragraph>foo<$text attribute>{}bar</$text>baz</paragraph>\n //\t\t<paragraph>foo<$text attribute>bar</$text>{}baz</paragraph>\n //\n if (this._isGravityOverridden) {\n if (eventData) {\n preventCaretMovement(eventData);\n }\n this._restoreGravity();\n // CLEAR 2-SCM attributes if we are at the end of one 2-SCM and before\n // the next one with a different value of the same attribute.\n //\n //\t\t<paragraph>foo<$text attribute=1>bar</$text><$text attribute=2>{}bar</$text>baz</paragraph>\n //\n if (isBetweenDifferentAttributes(position, attributes, true)) {\n clearSelectionAttributes(model, attributes);\n } else {\n setSelectionAttributesFromTheNodeBefore(model, attributes, position);\n }\n return true;\n } else {\n // REMOVE SELECTION ATTRIBUTE when restoring gravity towards a non-existent content at the\n // beginning of the block.\n //\n // \t\t<paragraph>{}<$text attribute>bar</$text></paragraph>\n //\n if (position.isAtStart) {\n if (hasAnyAttribute(selection, attributes)) {\n if (eventData) {\n preventCaretMovement(eventData);\n }\n setSelectionAttributesFromTheNodeBefore(model, attributes, position);\n return true;\n }\n return false;\n }\n // SET 2-SCM attributes if we are between nodes with the same attribute but with different values.\n //\n //\t\t<paragraph>foo<$text attribute=1>bar</$text>[]<$text attribute=2>bar</$text>baz</paragraph>\n //\n if (!hasAnyAttribute(selection, attributes) && isBetweenDifferentAttributes(position, attributes, true)) {\n if (eventData) {\n preventCaretMovement(eventData);\n }\n setSelectionAttributesFromTheNodeBefore(model, attributes, position);\n return true;\n }\n // When we are moving from natural gravity, to the position of the 2SCM, we need to override the gravity,\n // and make sure it won't be restored. Unless it's at the end of the block and an observed attribute.\n // We need to check if the caret is a one position before the attribute boundary:\n //\n //\t\t<paragraph>foo<$text attribute=1>bar</$text><$text attribute=2>b{}az</$text></paragraph>\n //\t\t<paragraph>foo<$text attribute>bar</$text><$text otherAttribute>b{}az</$text></paragraph>\n //\t\t<paragraph>foo<$text attribute>b{}ar</$text>baz</paragraph>\n //\t\t<paragraph>foo<$text attribute>bar</$text>b{}az</paragraph>\n //\n if (isStepAfterAnyAttributeBoundary(position, attributes)) {\n // ENGAGE 2-SCM if the selection has no attribute. This may happen when the user\n // left the attribute using a FORWARD 2-SCM.\n //\n // \t\t<paragraph><$text attribute>bar</$text>{}</paragraph>\n //\n if (position.isAtEnd && !hasAnyAttribute(selection, attributes) && isBetweenDifferentAttributes(position, attributes)) {\n if (eventData) {\n preventCaretMovement(eventData);\n }\n setSelectionAttributesFromTheNodeBefore(model, attributes, position);\n return true;\n }\n // Skip the automatic gravity restore upon the next selection#change:range event.\n // If not skipped, it would automatically restore the gravity, which should remain\n // overridden.\n this._isNextGravityRestorationSkipped = true;\n this._overrideGravity();\n // Don't return \"true\" here because we didn't call _preventCaretMovement.\n // Returning here will destabilize the filler logic, which also listens to\n // keydown (and the event would be stopped).\n return false;\n }\n }\n return false;\n }\n /**\n\t * Starts listening to {@link module:engine/view/document~Document#event:mousedown} and\n\t * {@link module:engine/view/document~Document#event:selectionChange} and puts the selection before/after a 2-step node\n\t * if clicked at the beginning/ending of the 2-step node.\n\t *\n\t * The purpose of this action is to allow typing around the 2-step node directly after a click.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5/issues/1016.\n\t */ _enableClickingAfterNode() {\n const editor = this.editor;\n const model = editor.model;\n const selection = model.document.selection;\n const document = editor.editing.view.document;\n editor.editing.view.addObserver(MouseObserver);\n editor.editing.view.addObserver(TouchObserver);\n let touched = false;\n let clicked = false;\n // This event should be fired before selection on mobile devices.\n this.listenTo(document, 'touchstart', ()=>{\n clicked = false;\n touched = true;\n });\n // Track mouse click event.\n // Keep in mind that it's often called after the selection change on iOS devices.\n // On the Android devices, it's called before the selection change.\n // That's why we watch `touchstart` event on mobile and set `touched` flag, as it's fired before the selection change.\n // See more: https://github.com/ckeditor/ckeditor5/issues/17171\n this.listenTo(document, 'mousedown', ()=>{\n clicked = true;\n });\n // When the selection has changed...\n this.listenTo(document, 'selectionChange', ()=>{\n const attributes = this.attributes;\n if (!clicked && !touched) {\n return;\n }\n // ...and it was caused by the click or touch...\n clicked = false;\n touched = false;\n // ...and no text is selected...\n if (!selection.isCollapsed) {\n return;\n }\n // ...and clicked text is the 2-step node...\n if (!hasAnyAttribute(selection, attributes)) {\n return;\n }\n const position = selection.getFirstPosition();\n if (!isBetweenDifferentAttributes(position, attributes)) {\n return;\n }\n // The selection at the start of a block would use surrounding attributes\n // from text after the selection so just clear 2-SCM attributes.\n //\n // Also, clear attributes for selection between same attribute with different values.\n if (position.isAtStart || isBetweenDifferentAttributes(position, attributes, true)) {\n clearSelectionAttributes(model, attributes);\n } else if (!this._isGravityOverridden) {\n this._overrideGravity();\n }\n });\n }\n /**\n\t * Starts listening to {@link module:engine/model/model~Model#event:insertContent} and corrects the model\n\t * selection attributes if the selection is at the end of a two-step node after inserting the content.\n\t *\n\t * The purpose of this action is to improve the overall UX because the user is no longer \"trapped\" by the\n\t * two-step attribute of the selection, and they can type a \"clean\" (`linkHref`–less) text right away.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5/issues/6053.\n\t */ _enableInsertContentSelectionAttributesFixer() {\n const editor = this.editor;\n const model = editor.model;\n const selection = model.document.selection;\n const attributes = this.attributes;\n this.listenTo(model, 'insertContent', ()=>{\n const position = selection.getFirstPosition();\n if (hasAnyAttribute(selection, attributes) && isBetweenDifferentAttributes(position, attributes)) {\n clearSelectionAttributes(model, attributes);\n }\n }, {\n priority: 'low'\n });\n }\n /**\n\t * Starts listening to {@link module:engine/model/model~Model#deleteContent} and checks whether\n\t * removing a content right after the tow-step attribute.\n\t *\n\t * If so, the selection should not preserve the two-step attribute. However, if\n\t * the {@link module:typing/twostepcaretmovement~TwoStepCaretMovement} plugin is active and\n\t * the selection has the two-step attribute due to overridden gravity (at the end), the two-step attribute should stay untouched.\n\t *\n\t * The purpose of this action is to allow removing the link text and keep the selection outside the link.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5/issues/7521.\n\t */ _handleDeleteContentAfterNode() {\n const editor = this.editor;\n const model = editor.model;\n const selection = model.document.selection;\n const view = editor.editing.view;\n let isBackspace = false;\n let shouldPreserveAttributes = false;\n // Detect pressing `Backspace`.\n this.listenTo(view.document, 'delete', (evt, data)=>{\n isBackspace = data.direction === 'backward';\n }, {\n priority: 'high'\n });\n // Before removing the content, check whether the selection is inside a two-step attribute.\n // If so, we want to preserve those attributes.\n this.listenTo(model, 'deleteContent', ()=>{\n if (!isBackspace) {\n return;\n }\n const position = selection.getFirstPosition();\n shouldPreserveAttributes = hasAnyAttribute(selection, this.attributes) && !isStepAfterAnyAttributeBoundary(position, this.attributes);\n }, {\n priority: 'high'\n });\n // After removing the content, check whether the current selection should preserve the `linkHref` attribute.\n this.listenTo(model, 'deleteContent', ()=>{\n if (!isBackspace) {\n return;\n }\n isBackspace = false;\n // Do not escape two-step attribute if it was inside it before content deletion.\n if (shouldPreserveAttributes) {\n return;\n }\n // Use `model.enqueueChange()` in order to execute the callback at the end of the changes process.\n editor.model.enqueueChange(()=>{\n const position = selection.getFirstPosition();\n if (hasAnyAttribute(selection, this.attributes) && isBetweenDifferentAttributes(position, this.attributes)) {\n if (position.isAtStart || isBetweenDifferentAttributes(position, this.attributes, true)) {\n clearSelectionAttributes(model, this.attributes);\n } else if (!this._isGravityOverridden) {\n this._overrideGravity();\n }\n }\n });\n }, {\n priority: 'low'\n });\n }\n /**\n\t * `true` when the gravity is overridden for the plugin.\n\t */ get _isGravityOverridden() {\n return !!this._overrideUid;\n }\n /**\n\t * Overrides the gravity using the {@link module:engine/model/writer~Writer model writer}\n\t * and stores the information about this fact in the {@link #_overrideUid}.\n\t *\n\t * A shorthand for {@link module:engine/model/writer~Writer#overrideSelectionGravity}.\n\t */ _overrideGravity() {\n this._overrideUid = this.editor.model.change((writer)=>{\n return writer.overrideSelectionGravity();\n });\n }\n /**\n\t * Restores the gravity using the {@link module:engine/model/writer~Writer model writer}.\n\t *\n\t * A shorthand for {@link module:engine/model/writer~Writer#restoreSelectionGravity}.\n\t */ _restoreGravity() {\n this.editor.model.change((writer)=>{\n writer.restoreSelectionGravity(this._overrideUid);\n this._overrideUid = null;\n });\n }\n}\n/**\n * Checks whether the selection has any of given attributes.\n */ function hasAnyAttribute(selection, attributes) {\n for (const observedAttribute of attributes){\n if (selection.hasAttribute(observedAttribute)) {\n return true;\n }\n }\n return false;\n}\n/**\n * Applies the given attributes to the current selection using using the\n * values from the node before the current position. Uses\n * the {@link module:engine/model/writer~Writer model writer}.\n */ function setSelectionAttributesFromTheNodeBefore(model, attributes, position) {\n const nodeBefore = position.nodeBefore;\n model.change((writer)=>{\n if (nodeBefore) {\n const attributes = [];\n const isInlineObject = model.schema.isObject(nodeBefore) && model.schema.isInline(nodeBefore);\n for (const [key, value] of nodeBefore.getAttributes()){\n if (model.schema.checkAttribute('$text', key) && (!isInlineObject || model.schema.getAttributeProperties(key).copyFromObject !== false)) {\n attributes.push([\n key,\n value\n ]);\n }\n }\n writer.setSelectionAttribute(attributes);\n } else {\n writer.removeSelectionAttribute(attributes);\n }\n });\n}\n/**\n * Removes 2-SCM attributes from the selection.\n */ function clearSelectionAttributes(model, attributes) {\n model.change((writer)=>{\n writer.removeSelectionAttribute(attributes);\n });\n}\n/**\n * Prevents the caret movement in the view by calling `preventDefault` on the event data.\n *\n * @alias data.preventDefault\n */ function preventCaretMovement(data) {\n data.preventDefault();\n}\n/**\n * Checks whether the step before `isBetweenDifferentAttributes()`.\n */ function isStepAfterAnyAttributeBoundary(position, attributes) {\n const positionBefore = position.getShiftedBy(-1);\n return isBetweenDifferentAttributes(positionBefore, attributes);\n}\n/**\n * Checks whether the given position is between different values of given attributes.\n */ function isBetweenDifferentAttributes(position, attributes, isStrict = false) {\n const { nodeBefore, nodeAfter } = position;\n for (const observedAttribute of attributes){\n const attrBefore = nodeBefore ? nodeBefore.getAttribute(observedAttribute) : undefined;\n const attrAfter = nodeAfter ? nodeAfter.getAttribute(observedAttribute) : undefined;\n if (isStrict && (attrBefore === undefined || attrAfter === undefined)) {\n continue;\n }\n if (attrAfter !== attrBefore) {\n return true;\n }\n }\n return false;\n}\n\n// All named transformations.\nconst TRANSFORMATIONS = {\n // Common symbols:\n copyright: {\n from: '(c)',\n to: '©'\n },\n registeredTrademark: {\n from: '(r)',\n to: '®'\n },\n trademark: {\n from: '(tm)',\n to: '™'\n },\n // Mathematical:\n oneHalf: {\n from: /(^|[^/a-z0-9])(1\\/2)([^/a-z0-9])$/i,\n to: [\n null,\n '½',\n null\n ]\n },\n oneThird: {\n from: /(^|[^/a-z0-9])(1\\/3)([^/a-z0-9])$/i,\n to: [\n null,\n '⅓',\n null\n ]\n },\n twoThirds: {\n from: /(^|[^/a-z0-9])(2\\/3)([^/a-z0-9])$/i,\n to: [\n null,\n '⅔',\n null\n ]\n },\n oneForth: {\n from: /(^|[^/a-z0-9])(1\\/4)([^/a-z0-9])$/i,\n to: [\n null,\n '¼',\n null\n ]\n },\n threeQuarters: {\n from: /(^|[^/a-z0-9])(3\\/4)([^/a-z0-9])$/i,\n to: [\n null,\n '¾',\n null\n ]\n },\n lessThanOrEqual: {\n from: '<=',\n to: '≤'\n },\n greaterThanOrEqual: {\n from: '>=',\n to: '≥'\n },\n notEqual: {\n from: '!=',\n to: '≠'\n },\n arrowLeft: {\n from: '<-',\n to: '←'\n },\n arrowRight: {\n from: '->',\n to: '→'\n },\n // Typography:\n horizontalEllipsis: {\n from: '...',\n to: '…'\n },\n enDash: {\n from: /(^| )(--)( )$/,\n to: [\n null,\n '–',\n null\n ]\n },\n emDash: {\n from: /(^| )(---)( )$/,\n to: [\n null,\n '—',\n null\n ]\n },\n // Quotations:\n // English, US\n quotesPrimary: {\n from: buildQuotesRegExp('\"'),\n to: [\n null,\n '“',\n null,\n '”'\n ]\n },\n quotesSecondary: {\n from: buildQuotesRegExp('\\''),\n to: [\n null,\n '‘',\n null,\n '’'\n ]\n },\n // English, UK\n quotesPrimaryEnGb: {\n from: buildQuotesRegExp('\\''),\n to: [\n null,\n '‘',\n null,\n '’'\n ]\n },\n quotesSecondaryEnGb: {\n from: buildQuotesRegExp('\"'),\n to: [\n null,\n '“',\n null,\n '”'\n ]\n },\n // Polish\n quotesPrimaryPl: {\n from: buildQuotesRegExp('\"'),\n to: [\n null,\n '„',\n null,\n '”'\n ]\n },\n quotesSecondaryPl: {\n from: buildQuotesRegExp('\\''),\n to: [\n null,\n '‚',\n null,\n '’'\n ]\n }\n};\n// Transformation groups.\nconst TRANSFORMATION_GROUPS = {\n symbols: [\n 'copyright',\n 'registeredTrademark',\n 'trademark'\n ],\n mathematical: [\n 'oneHalf',\n 'oneThird',\n 'twoThirds',\n 'oneForth',\n 'threeQuarters',\n 'lessThanOrEqual',\n 'greaterThanOrEqual',\n 'notEqual',\n 'arrowLeft',\n 'arrowRight'\n ],\n typography: [\n 'horizontalEllipsis',\n 'enDash',\n 'emDash'\n ],\n quotes: [\n 'quotesPrimary',\n 'quotesSecondary'\n ]\n};\n// A set of default transformations provided by the feature.\nconst DEFAULT_TRANSFORMATIONS = [\n 'symbols',\n 'mathematical',\n 'typography',\n 'quotes'\n];\n/**\n * The text transformation plugin.\n */ class TextTransformation extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n 'Delete',\n 'Input'\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'TextTransformation';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ constructor(editor){\n super(editor);\n editor.config.define('typing', {\n transformations: {\n include: DEFAULT_TRANSFORMATIONS\n }\n });\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const model = this.editor.model;\n const modelSelection = model.document.selection;\n modelSelection.on('change:range', ()=>{\n // Disable plugin when selection is inside a code block.\n this.isEnabled = !modelSelection.anchor.parent.is('element', 'codeBlock');\n });\n this._enableTransformationWatchers();\n }\n /**\n\t * Create new TextWatcher listening to the editor for typing and selection events.\n\t */ _enableTransformationWatchers() {\n const editor = this.editor;\n const model = editor.model;\n const deletePlugin = editor.plugins.get('Delete');\n const normalizedTransformations = normalizeTransformations(editor.config.get('typing.transformations'));\n const testCallback = (text)=>{\n for (const normalizedTransformation of normalizedTransformations){\n const from = normalizedTransformation.from;\n const match = from.test(text);\n if (match) {\n return {\n normalizedTransformation\n };\n }\n }\n };\n const watcher = new TextWatcher(editor.model, testCallback);\n watcher.on('matched:data', (evt, data)=>{\n if (!data.batch.isTyping) {\n return;\n }\n const { from, to } = data.normalizedTransformation;\n const matches = from.exec(data.text);\n const replaces = to(matches.slice(1));\n const matchedRange = data.range;\n let changeIndex = matches.index;\n model.enqueueChange((writer)=>{\n for(let i = 1; i < matches.length; i++){\n const match = matches[i];\n const replaceWith = replaces[i - 1];\n if (replaceWith == null) {\n changeIndex += match.length;\n continue;\n }\n const replacePosition = matchedRange.start.getShiftedBy(changeIndex);\n const replaceRange = model.createRange(replacePosition, replacePosition.getShiftedBy(match.length));\n const attributes = getTextAttributesAfterPosition(replacePosition);\n model.insertContent(writer.createText(replaceWith, attributes), replaceRange);\n changeIndex += replaceWith.length;\n }\n model.enqueueChange(()=>{\n deletePlugin.requestUndoOnBackspace();\n });\n });\n });\n watcher.bind('isEnabled').to(this);\n }\n}\n/**\n * Normalizes the configuration `from` parameter value.\n * The normalized value for the `from` parameter is a RegExp instance. If the passed `from` is already a RegExp instance,\n * it is returned unchanged.\n */ function normalizeFrom(from) {\n if (typeof from == 'string') {\n return new RegExp(`(${escapeRegExp(from)})$`);\n }\n // `from` is already a regular expression.\n return from;\n}\n/**\n * Normalizes the configuration `to` parameter value.\n * The normalized value for the `to` parameter is a function that takes an array and returns an array. See more in the\n * configuration description. If the passed `to` is already a function, it is returned unchanged.\n */ function normalizeTo(to) {\n if (typeof to == 'string') {\n return ()=>[\n to\n ];\n } else if (to instanceof Array) {\n return ()=>to;\n }\n // `to` is already a function.\n return to;\n}\n/**\n * For given `position` returns attributes for the text that is after that position.\n * The text can be in the same text node as the position (`foo[]bar`) or in the next text node (`foo[]<$text bold=\"true\">bar</$text>`).\n */ function getTextAttributesAfterPosition(position) {\n const textNode = position.textNode ? position.textNode : position.nodeAfter;\n return textNode.getAttributes();\n}\n/**\n * Returns a RegExp pattern string that detects a sentence inside a quote.\n *\n * @param quoteCharacter The character to create a pattern for.\n */ function buildQuotesRegExp(quoteCharacter) {\n return new RegExp(`(^|\\\\s)(${quoteCharacter})([^${quoteCharacter}]*)(${quoteCharacter})$`);\n}\n/**\n * Reads text transformation config and returns normalized array of transformations objects.\n */ function normalizeTransformations(config) {\n const extra = config.extra || [];\n const remove = config.remove || [];\n const isNotRemoved = (transformation)=>!remove.includes(transformation);\n const configured = config.include.concat(extra).filter(isNotRemoved);\n return expandGroupsAndRemoveDuplicates(configured).filter(isNotRemoved) // Filter out 'remove' transformations as they might be set in group.\n .map((transformation)=>typeof transformation == 'string' && TRANSFORMATIONS[transformation] ? TRANSFORMATIONS[transformation] : transformation)// Filter out transformations set as string that has not been found.\n .filter((transformation)=>typeof transformation === 'object').map((transformation)=>({\n from: normalizeFrom(transformation.from),\n to: normalizeTo(transformation.to)\n }));\n}\n/**\n * Reads definitions and expands named groups if needed to transformation names.\n * This method also removes duplicated named transformations if any.\n */ function expandGroupsAndRemoveDuplicates(definitions) {\n // Set is using to make sure that transformation names are not duplicated.\n const definedTransformations = new Set();\n for (const transformationOrGroup of definitions){\n if (typeof transformationOrGroup == 'string' && TRANSFORMATION_GROUPS[transformationOrGroup]) {\n for (const transformation of TRANSFORMATION_GROUPS[transformationOrGroup]){\n definedTransformations.add(transformation);\n }\n } else {\n definedTransformations.add(transformationOrGroup);\n }\n }\n return Array.from(definedTransformations);\n}\n\n/**\n * @license Copyright (c) 2003-2025, 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 typing/utils/findattributerange\n */ /**\n * Returns a model range that covers all consecutive nodes with the same `attributeName` and its `value`\n * that intersect the given `position`.\n *\n * It can be used e.g. to get the entire range on which the `linkHref` attribute needs to be changed when having a\n * selection inside a link.\n *\n * @param position The start position.\n * @param attributeName The attribute name.\n * @param value The attribute value.\n * @param model The model instance.\n * @returns The link range.\n */ function findAttributeRange(position, attributeName, value, model) {\n return model.createRange(findAttributeRangeBound(position, attributeName, value, true, model), findAttributeRangeBound(position, attributeName, value, false, model));\n}\n/**\n * Walks forward or backward (depends on the `lookBack` flag), node by node, as long as they have the same attribute value\n * and returns a position just before or after (depends on the `lookBack` flag) the last matched node.\n *\n * @param position The start position.\n * @param attributeName The attribute name.\n * @param value The attribute value.\n * @param lookBack Whether the walk direction is forward (`false`) or backward (`true`).\n * @returns The position just before the last matched node.\n */ function findAttributeRangeBound(position, attributeName, value, lookBack, model) {\n // Get node before or after position (depends on `lookBack` flag).\n // When position is inside text node then start searching from text node.\n let node = position.textNode || (lookBack ? position.nodeBefore : position.nodeAfter);\n let lastNode = null;\n while(node && node.getAttribute(attributeName) == value){\n lastNode = node;\n node = lookBack ? node.previousSibling : node.nextSibling;\n }\n return lastNode ? model.createPositionAt(lastNode, lookBack ? 'before' : 'after') : position;\n}\n\n/**\n * Adds a visual highlight style to an attribute element in which the selection is anchored.\n * Together with two-step caret movement, they indicate that the user is typing inside the element.\n *\n * Highlight is turned on by adding the given class to the attribute element in the view:\n *\n * * The class is removed before the conversion has started, as callbacks added with the `'highest'` priority\n * to {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher} events.\n * * The class is added in the view post fixer, after other changes in the model tree were converted to the view.\n *\n * This way, adding and removing the highlight does not interfere with conversion.\n *\n * Usage:\n *\n * ```ts\n * import inlineHighlight from '@ckeditor/ckeditor5-typing/src/utils/inlinehighlight';\n *\n * // Make `ck-link_selected` class be applied on an `a` element\n * // whenever the corresponding `linkHref` attribute element is selected.\n * inlineHighlight( editor, 'linkHref', 'a', 'ck-link_selected' );\n * ```\n *\n * @param editor The editor instance.\n * @param attributeName The attribute name to check.\n * @param tagName The tagName of a view item.\n * @param className The class name to apply in the view.\n */ function inlineHighlight(editor, attributeName, tagName, className) {\n const view = editor.editing.view;\n const highlightedElements = new Set();\n // Adding the class.\n view.document.registerPostFixer((writer)=>{\n const selection = editor.model.document.selection;\n let changed = false;\n if (selection.hasAttribute(attributeName)) {\n const modelRange = findAttributeRange(selection.getFirstPosition(), attributeName, selection.getAttribute(attributeName), editor.model);\n const viewRange = editor.editing.mapper.toViewRange(modelRange);\n // There might be multiple view elements in the `viewRange`, for example, when the `a` element is\n // broken by a UIElement.\n for (const item of viewRange.getItems()){\n if (item.is('element', tagName) && !item.hasClass(className)) {\n writer.addClass(className, item);\n highlightedElements.add(item);\n changed = true;\n }\n }\n }\n return changed;\n });\n // Removing the class.\n editor.conversion.for('editingDowncast').add((dispatcher)=>{\n // Make sure the highlight is removed on every possible event, before conversion is started.\n dispatcher.on('insert', removeHighlight, {\n priority: 'highest'\n });\n dispatcher.on('remove', removeHighlight, {\n priority: 'highest'\n });\n dispatcher.on('attribute', removeHighlight, {\n priority: 'highest'\n });\n dispatcher.on('selection', removeHighlight, {\n priority: 'highest'\n });\n function removeHighlight() {\n view.change((writer)=>{\n for (const item of highlightedElements.values()){\n writer.removeClass(className, item);\n highlightedElements.delete(item);\n }\n });\n }\n });\n}\n\nexport { Delete, Input, InsertTextCommand, TextTransformation, TextWatcher, TwoStepCaretMovement, Typing, findAttributeRange, findAttributeRangeBound, getLastTextLine, inlineHighlight };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/utils/changebuffer\n */\n\nimport type {\n\tModel,\n\tBatch,\n\tDocumentChangeEvent,\n\tDocumentSelectionChangeEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport type { EventInfo } from '@ckeditor/ckeditor5-utils';\n\n/**\n * Change buffer allows to group atomic changes (like characters that have been typed) into\n * {@link module:engine/model/batch~Batch batches}.\n *\n * Batches represent single undo steps, hence changes added to one single batch are undone together.\n *\n * The buffer has a configurable limit of atomic changes that it can accommodate. After the limit was\n * exceeded (see {@link ~ChangeBuffer#input}), a new batch is created in {@link ~ChangeBuffer#batch}.\n *\n * To use the change buffer you need to let it know about the number of changes that were added to the batch:\n *\n * ```ts\n * const buffer = new ChangeBuffer( model, LIMIT );\n *\n * // Later on in your feature:\n * buffer.batch.insert( pos, insertedCharacters );\n * buffer.input( insertedCharacters.length );\n * ```\n */\nexport default class ChangeBuffer {\n\t/**\n\t * The model instance.\n\t */\n\tpublic readonly model: Model;\n\n\t/**\n\t * The maximum number of atomic changes which can be contained in one batch.\n\t */\n\tpublic readonly limit: number;\n\n\t/**\n\t * Whether the buffer is locked. A locked buffer cannot be reset unless it gets unlocked.\n\t */\n\tprivate _isLocked: boolean;\n\n\t/**\n\t * The number of atomic changes in the buffer. Once it exceeds the {@link #limit},\n\t * the {@link #batch batch} is set to a new one.\n\t */\n\tprivate _size: number;\n\n\t/**\n\t * The current batch instance.\n\t */\n\tprivate _batch: Batch | null = null;\n\n\t/**\n\t * The callback to document the change event which later needs to be removed.\n\t */\n\tprivate readonly _changeCallback: ( evt: EventInfo, batch: Batch ) => void;\n\n\t/**\n\t * The callback to document selection `change:attribute` and `change:range` events which resets the buffer.\n\t */\n\tprivate readonly _selectionChangeCallback: () => void;\n\n\t/**\n\t * Creates a new instance of the change buffer.\n\t *\n\t * @param limit The maximum number of atomic changes which can be contained in one batch.\n\t */\n\tconstructor( model: Model, limit: number = 20 ) {\n\t\tthis.model = model;\n\t\tthis._size = 0;\n\t\tthis.limit = limit;\n\t\tthis._isLocked = false;\n\n\t\t// The function to be called in order to notify the buffer about batches which appeared in the document.\n\t\t// The callback will check whether it is a new batch and in that case the buffer will be flushed.\n\t\t//\n\t\t// The reason why the buffer needs to be flushed whenever a new batch appears is that the changes added afterwards\n\t\t// should be added to a new batch. For instance, when the user types, then inserts an image, and then types again,\n\t\t// the characters typed after inserting the image should be added to a different batch than the characters typed before.\n\t\tthis._changeCallback = ( evt, batch ) => {\n\t\t\tif ( batch.isLocal && batch.isUndoable && batch !== this._batch ) {\n\t\t\t\tthis._reset( true );\n\t\t\t}\n\t\t};\n\n\t\tthis._selectionChangeCallback = () => {\n\t\t\tthis._reset();\n\t\t};\n\n\t\tthis.model.document.on<DocumentChangeEvent>( 'change', this._changeCallback );\n\n\t\tthis.model.document.selection.on<DocumentSelectionChangeEvent>( 'change:range', this._selectionChangeCallback );\n\t\tthis.model.document.selection.on<DocumentSelectionChangeEvent>( 'change:attribute', this._selectionChangeCallback );\n\t}\n\n\t/**\n\t * The current batch to which a feature should add its operations. Once the {@link #size}\n\t * is reached or exceeds the {@link #limit}, the batch is set to a new instance and the size is reset.\n\t */\n\tpublic get batch(): Batch {\n\t\tif ( !this._batch ) {\n\t\t\tthis._batch = this.model.createBatch( { isTyping: true } );\n\t\t}\n\n\t\treturn this._batch;\n\t}\n\n\t/**\n\t * The number of atomic changes in the buffer. Once it exceeds the {@link #limit},\n\t * the {@link #batch batch} is set to a new one.\n\t */\n\tpublic get size(): number {\n\t\treturn this._size;\n\t}\n\n\t/**\n\t * The input number of changes into the buffer. Once the {@link #size} is\n\t * reached or exceeds the {@link #limit}, the batch is set to a new instance and the size is reset.\n\t *\n\t * @param changeCount The number of atomic changes to input.\n\t */\n\tpublic input( changeCount: number ): void {\n\t\tthis._size += changeCount;\n\n\t\tif ( this._size >= this.limit ) {\n\t\t\tthis._reset( true );\n\t\t}\n\t}\n\n\t/**\n\t * Whether the buffer is locked. A locked buffer cannot be reset unless it gets unlocked.\n\t */\n\tpublic get isLocked(): boolean {\n\t\treturn this._isLocked;\n\t}\n\n\t/**\n\t * Locks the buffer.\n\t */\n\tpublic lock(): void {\n\t\tthis._isLocked = true;\n\t}\n\n\t/**\n\t * Unlocks the buffer.\n\t */\n\tpublic unlock(): void {\n\t\tthis._isLocked = false;\n\t}\n\n\t/**\n\t * Destroys the buffer.\n\t */\n\tpublic destroy(): void {\n\t\tthis.model.document.off( 'change', this._changeCallback );\n\t\tthis.model.document.selection.off( 'change:range', this._selectionChangeCallback );\n\t\tthis.model.document.selection.off( 'change:attribute', this._selectionChangeCallback );\n\t}\n\n\t/**\n\t * Resets the change buffer.\n\t *\n\t * @param ignoreLock Whether internal lock {@link #isLocked} should be ignored.\n\t */\n\tprivate _reset( ignoreLock: boolean = false ): void {\n\t\tif ( !this.isLocked || ignoreLock ) {\n\t\t\tthis._batch = null;\n\t\t\tthis._size = 0;\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/inserttextcommand\n */\n\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\n\nimport ChangeBuffer from './utils/changebuffer.js';\n\nimport type { DocumentSelection, Range, Selection } from '@ckeditor/ckeditor5-engine';\n\n/**\n * The insert text command. Used by the {@link module:typing/input~Input input feature} to handle typing.\n */\nexport default class InsertTextCommand extends Command {\n\t/**\n\t * Typing's change buffer used to group subsequent changes into batches.\n\t */\n\tprivate readonly _buffer: ChangeBuffer;\n\n\t/**\n\t * Creates an instance of the command.\n\t *\n\t * @param undoStepSize The maximum number of atomic changes\n\t * which can be contained in one batch in the command buffer.\n\t */\n\tconstructor( editor: Editor, undoStepSize: number ) {\n\t\tsuper( editor );\n\n\t\tthis._buffer = new ChangeBuffer( editor.model, undoStepSize );\n\n\t\t// Since this command may execute on different selectable than selection, it should be checked directly in execute block.\n\t\tthis._isEnabledBasedOnSelection = false;\n\t}\n\n\t/**\n\t * The current change buffer.\n\t */\n\tpublic get buffer(): ChangeBuffer {\n\t\treturn this._buffer;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._buffer.destroy();\n\t}\n\n\t/**\n\t * Executes the input command. It replaces the content within the given range with the given text.\n\t * Replacing is a two step process, first the content within the range is removed and then the new text is inserted\n\t * at the beginning of the range (which after the removal is a collapsed range).\n\t *\n\t * @fires execute\n\t * @param options The command options.\n\t */\n\tpublic override execute( options: InsertTextCommandOptions = {} ): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\t\tconst text = options.text || '';\n\t\tconst textInsertions = text.length;\n\n\t\tlet selection: Selection | DocumentSelection = doc.selection;\n\n\t\tif ( options.selection ) {\n\t\t\tselection = options.selection;\n\t\t} else if ( options.range ) {\n\t\t\tselection = model.createSelection( options.range );\n\t\t}\n\n\t\t// Stop executing if selectable is in non-editable place.\n\t\tif ( !model.canEditAt( selection ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst resultRange = options.resultRange;\n\n\t\tmodel.enqueueChange( this._buffer.batch, writer => {\n\t\t\tthis._buffer.lock();\n\n\t\t\t// Store selection attributes before deleting old content to preserve formatting and link.\n\t\t\t// This unifies the behavior between DocumentSelection and Selection provided as input option.\n\t\t\tconst selectionAttributes = Array.from( doc.selection.getAttributes() );\n\n\t\t\tmodel.deleteContent( selection );\n\n\t\t\tif ( text ) {\n\t\t\t\tmodel.insertContent( writer.createText( text, selectionAttributes ), selection );\n\t\t\t}\n\n\t\t\tif ( resultRange ) {\n\t\t\t\twriter.setSelection( resultRange );\n\t\t\t} else if ( !selection.is( 'documentSelection' ) ) {\n\t\t\t\twriter.setSelection( selection );\n\t\t\t}\n\n\t\t\tthis._buffer.unlock();\n\n\t\t\tthis._buffer.input( textInsertions );\n\t\t} );\n\t}\n}\n\n/**\n * Interface with parameters for executing InsertTextCommand.\n *\n * Both `range` and `selection` parameters are used for defining selection but should not be used together.\n * If both are defined, only `selection` will be considered.\n */\nexport interface InsertTextCommandOptions {\n\n\t/**\n\t * The text to be inserted.\n\t */\n\ttext?: string;\n\n\t/**\n\t * The selection in which the text is inserted.\n\t * Inserting a text into a selection deletes the current content within selection ranges. If the selection is not specified,\n\t * the current selection in the model will be used instead.\n\t */\n\tselection?: Selection | DocumentSelection;\n\n\t/**\n\t * The range in which the text is inserted. Defaults to the first range in the current selection.\n\t */\n\trange?: Range;\n\n\t/**\n\t * The range where the selection should be placed after the insertion.\n\t * If not specified, the selection will be placed right after the inserted text.\n\t */\n\tresultRange?: Range;\n}\n\nexport interface InsertTextCommandExecuteEvent {\n\tname: 'execute';\n\targs: [\n\t\tdata: [ options: InsertTextCommandOptions ]\n\t];\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/inserttextobserver\n */\n\nimport { env, EventInfo } from '@ckeditor/ckeditor5-utils';\n\nimport {\n\tDomEventData,\n\tObserver,\n\tFocusObserver,\n\ttype EditingView,\n\ttype ViewDocumentCompositionEndEvent,\n\ttype ViewDocumentInputEvent,\n\ttype ViewDocumentSelection,\n\ttype ViewSelection\n} from '@ckeditor/ckeditor5-engine';\n\n// @if CK_DEBUG_TYPING // const { _buildLogMessage } = require( '@ckeditor/ckeditor5-engine/src/dev-utils/utils.js' );\n\nconst TYPING_INPUT_TYPES = [\n\t// For collapsed range:\n\t//\t- This one is a regular typing (all browsers, all systems).\n\t//\t- This one is used by Chrome when typing accented letter – 2nd step when the user selects the accent (Mac).\n\t// For non-collapsed range:\n\t//\t- This one is used by Chrome when typing accented letter – when the selection box first appears (Mac).\n\t//\t- This one is used by Safari when accepting spell check suggestions from the context menu (Mac).\n\t'insertText',\n\n\t// This one is used by Safari when typing accented letter (Mac).\n\t// This one is used by Safari when accepting spell check suggestions from the autocorrection pop-up (Mac).\n\t'insertReplacementText'\n];\n\nconst TYPING_INPUT_TYPES_ANDROID = [\n\t...TYPING_INPUT_TYPES,\n\t'insertCompositionText'\n];\n\n/**\n * Text insertion observer introduces the {@link module:engine/view/document~Document#event:insertText} event.\n */\nexport default class InsertTextObserver extends Observer {\n\t/**\n\t * Instance of the focus observer. Insert text observer calls\n\t * {@link module:engine/view/observer/focusobserver~FocusObserver#flush} to mark the latest focus change as complete.\n\t */\n\tpublic readonly focusObserver: FocusObserver;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( view: EditingView ) {\n\t\tsuper( view );\n\n\t\tthis.focusObserver = view.getObserver( FocusObserver );\n\n\t\t// On Android composition events should immediately be applied to the model. Rendering is not disabled.\n\t\t// On non-Android the model is updated only on composition end.\n\t\t// On Android we can't rely on composition start/end to update model.\n\t\tconst typingInputTypes = env.isAndroid ? TYPING_INPUT_TYPES_ANDROID : TYPING_INPUT_TYPES;\n\n\t\tconst viewDocument = view.document;\n\n\t\tviewDocument.on<ViewDocumentInputEvent>( 'beforeinput', ( evt, data ) => {\n\t\t\tif ( !this.isEnabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { data: text, targetRanges, inputType, domEvent, isComposing } = data;\n\n\t\t\tif ( !typingInputTypes.includes( inputType ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Mark the latest focus change as complete (we are typing in editable after the focus\n\t\t\t// so the selection is in the focused element).\n\t\t\tthis.focusObserver.flush();\n\n\t\t\tconst eventInfo = new EventInfo( viewDocument, 'insertText' );\n\n\t\t\tviewDocument.fire( eventInfo, new DomEventData( view, domEvent, {\n\t\t\t\ttext,\n\t\t\t\tselection: view.createSelection( targetRanges ),\n\t\t\t\tisComposing\n\t\t\t} ) );\n\n\t\t\t// Stop the beforeinput event if `delete` event was stopped.\n\t\t\t// https://github.com/ckeditor/ckeditor5/issues/753\n\t\t\tif ( eventInfo.stop.called ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t} );\n\n\t\t// On Android composition events are immediately applied to the model.\n\t\t// On non-Android the model is updated only on composition end.\n\t\t// On Android we can't rely on composition start/end to update model.\n\t\tif ( !env.isAndroid ) {\n\t\t\t// Note: The priority must be lower than the CompositionObserver handler to call it after the renderer is unblocked.\n\t\t\t// This is important for view to DOM position mapping.\n\t\t\t// This causes the effect of first remove composed DOM and then reapply it after model modification.\n\t\t\tviewDocument.on<ViewDocumentCompositionEndEvent>( 'compositionend', ( evt, { data, domEvent } ) => {\n\t\t\t\tif ( !this.isEnabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// In case of aborted composition.\n\t\t\t\tif ( !data ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'InsertTextObserver',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t`%cFire insertText event, %c${ JSON.stringify( data ) }`,\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t 'color: blue'\n\t\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t\t// How do we know where to insert the composed text?\n\t\t\t\t// 1. The SelectionObserver is blocked and the view is not updated with the composition changes.\n\t\t\t\t// 2. The last moment before it's locked is the `compositionstart` event.\n\t\t\t\t// 3. The `SelectionObserver` is listening for `compositionstart` event and immediately converts\n\t\t\t\t// the selection. Handle this at the low priority so after the rendering is blocked.\n\t\t\t\tviewDocument.fire( 'insertText', new DomEventData( view, domEvent, {\n\t\t\t\t\ttext: data,\n\t\t\t\t\tisComposing: true\n\t\t\t\t} ) );\n\t\t\t}, { priority: 'low' } );\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 * Event fired when the user types text, for instance presses <kbd>A</kbd> or <kbd>?</kbd> in the\n * editing view document.\n *\n * **Note**: This event will **not** fire for keystrokes such as <kbd>Delete</kbd> or <kbd>Enter</kbd>.\n * They have dedicated events, see {@link module:engine/view/document~Document#event:delete} and\n * {@link module:engine/view/document~Document#event:enter} to learn more.\n *\n * **Note**: This event is fired by the {@link module:typing/inserttextobserver~InsertTextObserver input feature}.\n *\n * @eventName module:engine/view/document~Document#insertText\n * @param data The event data.\n */\nexport type ViewDocumentInsertTextEvent = {\n\tname: 'insertText';\n\targs: [ data: InsertTextEventData ];\n};\n\nexport interface InsertTextEventData extends DomEventData {\n\n\t/**\n\t * The text to be inserted.\n\t */\n\ttext: string;\n\n\t/**\n\t * The selection into which the text should be inserted.\n\t * If not specified, the insertion should occur at the current view selection.\n\t */\n\tselection?: ViewSelection | ViewDocumentSelection;\n\n\t/**\n\t * A flag indicating that event was fired during composition.\n\t *\n\t * Corresponds to the\n\t * {@link module:engine/view/document~Document#event:compositionstart},\n\t * {@link module:engine/view/document~Document#event:compositionupdate},\n\t * and {@link module:engine/view/document~Document#event:compositionend } trio.\n\t */\n\tisComposing?: boolean;\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/input\n */\n\nimport { Plugin, type Editor } from '@ckeditor/ckeditor5-core';\nimport { env } from '@ckeditor/ckeditor5-utils';\n\nimport InsertTextCommand, { type InsertTextCommandOptions } from './inserttextcommand.js';\nimport InsertTextObserver, { type ViewDocumentInsertTextEvent } from './inserttextobserver.js';\n\nimport {\n\tLiveRange,\n\t_tryFixingModelRange,\n\ttype Model,\n\ttype Mapper,\n\ttype Element,\n\ttype Range,\n\ttype ViewNode,\n\ttype ViewElement,\n\ttype MutationData,\n\ttype ViewDocumentCompositionStartEvent,\n\ttype ViewDocumentCompositionEndEvent,\n\ttype ViewDocumentKeyDownEvent,\n\ttype ViewDocumentMutationsEvent,\n\ttype ViewDocumentInputEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport { debounce } from 'es-toolkit/compat';\n\n// @if CK_DEBUG_TYPING // const { _debouncedLine, _buildLogMessage } = require( '@ckeditor/ckeditor5-engine/src/dev-utils/utils.js' );\n\n/**\n * Handles text input coming from the keyboard or other input methods.\n */\nexport default class Input extends Plugin {\n\t/**\n\t * The queue of `insertText` command executions that are waiting for the DOM to get updated after beforeinput event.\n\t */\n\tprivate _typingQueue!: TypingQueue;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Input' 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\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst view = editor.editing.view;\n\t\tconst mapper = editor.editing.mapper;\n\t\tconst modelSelection = model.document.selection;\n\n\t\tthis._typingQueue = new TypingQueue( editor );\n\n\t\tview.addObserver( InsertTextObserver );\n\n\t\t// TODO The above default configuration value should be defined using editor.config.define() once it's fixed.\n\t\tconst insertTextCommand = new InsertTextCommand( editor, editor.config.get( 'typing.undoStep' ) || 20 );\n\n\t\t// Register `insertText` command and add `input` command as an alias for backward compatibility.\n\t\teditor.commands.add( 'insertText', insertTextCommand );\n\t\teditor.commands.add( 'input', insertTextCommand );\n\n\t\tthis.listenTo<ViewDocumentInputEvent>( view.document, 'beforeinput', () => {\n\t\t\t// Flush queue on the next beforeinput event because it could happen\n\t\t\t// that the mutation observer does not notice the DOM change in time.\n\t\t\tthis._typingQueue.flush( 'next beforeinput' );\n\t\t}, { priority: 'high' } );\n\n\t\tthis.listenTo<ViewDocumentInsertTextEvent>( view.document, 'insertText', ( evt, data ) => {\n\t\t\tconst { text, selection: viewSelection } = data;\n\n\t\t\t// In case of a synthetic event, make sure that selection is not fake.\n\t\t\tif ( view.document.selection.isFake && viewSelection && view.document.selection.isSimilar( viewSelection ) ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t}\n\n\t\t\t// In case of typing on a non-collapsed range, we have to handle it ourselves as a browser\n\t\t\t// could modify the DOM unpredictably.\n\t\t\t// Noticed cases:\n\t\t\t// * <pre><code>[foo</code></pre><p>]bar</p>\n\t\t\t// * <p>[foo</p><pre>]<code>bar</code></pre>\n\t\t\t// * <p>[foo</p><blockquote><p>]bar</p></blockquote>\n\t\t\t//\n\t\t\t// Especially tricky case is when a code block follows a paragraph as code block on the view side\n\t\t\t// is rendered as a <code> element inside a <pre> element, but only the <code> element is mapped to the model.\n\t\t\t// While mapping view position <pre>]<code> to model, the model position results before the <codeBlock> element,\n\t\t\t// and this triggers selection fixer to cover only text in the previous paragraph.\n\t\t\t//\n\t\t\t// This is safe for composition as those events are not cancellable\n\t\t\t// and the preventDefault() and defaultPrevented are not affected.\n\t\t\tif ( viewSelection && Array.from( viewSelection.getRanges() ).some( range => !range.isCollapsed ) ) {\n\t\t\t\tdata.preventDefault();\n\t\t\t}\n\n\t\t\tif ( !insertTextCommand.isEnabled ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'%cInsertText command is disabled - prevent DOM change.',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-style: italic'\n\t\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t\tdata.preventDefault();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet modelRanges;\n\n\t\t\t// If view selection was specified, translate it to model selection.\n\t\t\tif ( viewSelection ) {\n\t\t\t\tmodelRanges = Array.from( viewSelection.getRanges() )\n\t\t\t\t\t.map( viewRange => mapper.toModelRange( viewRange ) )\n\t\t\t\t\t.map( modelRange => _tryFixingModelRange( modelRange, model.schema ) || modelRange );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tmodelRanges = Array.from( modelSelection.getRanges() );\n\t\t\t}\n\n\t\t\tlet insertText = text;\n\n\t\t\t// Typing in English on Android is firing composition events for the whole typed word.\n\t\t\t// We need to check the target range text to only apply the difference.\n\t\t\tif ( env.isAndroid ) {\n\t\t\t\tconst selectedText = Array.from( modelRanges[ 0 ].getItems() ).reduce( ( rangeText, node ) => {\n\t\t\t\t\treturn rangeText + ( node.is( '$textProxy' ) ? node.data : '' );\n\t\t\t\t}, '' );\n\n\t\t\t\tif ( selectedText ) {\n\t\t\t\t\tif ( selectedText.length <= insertText.length ) {\n\t\t\t\t\t\tif ( insertText.startsWith( selectedText ) ) {\n\t\t\t\t\t\t\tinsertText = insertText.substring( selectedText.length );\n\t\t\t\t\t\t\t( modelRanges[ 0 ] as any ).start = modelRanges[ 0 ].start.getShiftedBy( selectedText.length );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( selectedText.startsWith( insertText ) ) {\n\t\t\t\t\t\t\t// TODO this should be mapped as delete?\n\t\t\t\t\t\t\t( modelRanges[ 0 ] as any ).start = modelRanges[ 0 ].start.getShiftedBy( insertText.length );\n\t\t\t\t\t\t\tinsertText = '';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( insertText.length == 0 && modelRanges[ 0 ].isCollapsed ) {\n\t\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n\t\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'%cIgnore insertion of an empty data to the collapsed range.',\n\t\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-style: italic'\n\t\t\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Note: the TypingQueue stores live-ranges internally as RTC could change the model while waiting for mutations.\n\t\t\tconst commandData: InsertTextCommandOptions = {\n\t\t\t\ttext: insertText,\n\t\t\t\tselection: model.createSelection( modelRanges )\n\t\t\t};\n\n\t\t\t// This is a beforeinput event, so we need to wait until the browser updates the DOM,\n\t\t\t// and we could apply changes to the model and verify if the DOM is valid.\n\t\t\t// The browser applies changes to the DOM not immediately on beforeinput event.\n\t\t\t// We just wait for mutation observer to notice changes or as a fallback a timeout.\n\t\t\t//\n\t\t\t// Previously we were cancelling the non-composition events, but it caused issues especially in Safari.\n\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t`%cQueue insertText:%c \"${ commandData.text }\"%c ` +\n\t\t\t// @if CK_DEBUG_TYPING // \t\t`[${ commandData.selection.getFirstPosition().path }]-` +\n\t\t\t// @if CK_DEBUG_TYPING // \t\t`[${ commandData.selection.getLastPosition().path }]` +\n\t\t\t// @if CK_DEBUG_TYPING // \t\t` queue size: ${ this._typingQueue.length + 1 }`,\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'color: blue',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t''\n\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\tthis._typingQueue.push( commandData, Boolean( data.isComposing ) );\n\n\t\t\tif ( data.domEvent.defaultPrevented ) {\n\t\t\t\tthis._typingQueue.flush( 'beforeinput default prevented' );\n\t\t\t}\n\t\t} );\n\n\t\t// Delete selected content on composition start.\n\t\tif ( env.isAndroid ) {\n\t\t\t// On Android with English keyboard, the composition starts just by putting caret\n\t\t\t// at the word end or by selecting a table column. This is not a real composition started.\n\t\t\t// Trigger delete content on first composition key pressed.\n\t\t\tthis.listenTo<ViewDocumentKeyDownEvent>( view.document, 'keydown', ( evt, data ) => {\n\t\t\t\tif ( modelSelection.isCollapsed || data.keyCode != 229 || !view.document.isComposing ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconst firstPositionPath = modelSelection.getFirstPosition()!.path;\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconst lastPositionPath = modelSelection.getLastPosition()!.path;\n\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'%cKeyDown 229%c -> model.deleteContent() ' +\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t`[${ firstPositionPath }]-[${ lastPositionPath }]`,\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t''\n\t\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t\tdeleteSelectionContent( model, insertTextCommand );\n\t\t\t} );\n\t\t} else {\n\t\t\t// Note: The priority must precede the CompositionObserver handler to call it before\n\t\t\t// the renderer is blocked, because we want to render this change.\n\t\t\tthis.listenTo<ViewDocumentCompositionStartEvent>( view.document, 'compositionstart', () => {\n\t\t\t\tif ( modelSelection.isCollapsed ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconst firstPositionPath = modelSelection.getFirstPosition()!.path;\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconst lastPositionPath = modelSelection.getLastPosition()!.path;\n\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'%cComposition start%c -> model.deleteContent() ' +\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t`[${ firstPositionPath }]-[${ lastPositionPath }]`,\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t\tdeleteSelectionContent( model, insertTextCommand );\n\t\t\t}, { priority: 'high' } );\n\t\t}\n\n\t\t// Apply changes to the model as they are applied to the DOM by the browser.\n\t\t// On beforeinput event, the DOM is not yet modified. We wait for detected mutations to apply model changes.\n\t\tthis.listenTo<ViewDocumentMutationsEvent>( view.document, 'mutations', ( evt, { mutations } ) => {\n\t\t\t// Check if mutations are relevant for queued changes.\n\t\t\tif ( this._typingQueue.hasAffectedElements() ) {\n\t\t\t\tfor ( const { node } of mutations ) {\n\t\t\t\t\tconst viewElement = findMappedViewAncestor( node, mapper );\n\t\t\t\t\tconst modelElement = mapper.toModelElement( viewElement )!;\n\n\t\t\t\t\tif ( this._typingQueue.isElementAffected( modelElement ) ) {\n\t\t\t\t\t\tthis._typingQueue.flush( 'mutations' );\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'%cMutations not related to the composition.',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-style: italic'\n\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t// @if CK_DEBUG_TYPING // }\n\t\t} );\n\n\t\t// Make sure that all changes are applied to the model before the end of composition.\n\t\tthis.listenTo<ViewDocumentCompositionEndEvent>( view.document, 'compositionend', () => {\n\t\t\tthis._typingQueue.flush( 'before composition end' );\n\t\t}, { priority: 'high' } );\n\n\t\t// Trigger mutations check after the composition completes to fix all DOM changes that got ignored during composition.\n\t\t// On Android, the Renderer is not disabled while composing. While updating DOM nodes, we ignore some changes\n\t\t// that are not that important (like NBSP vs. plain space character) and could break the composition flow.\n\t\t// After composition is completed, we trigger additional `mutations` event for elements affected by the composition\n\t\t// so the Renderer can adjust the DOM to the expected structure without breaking the composition.\n\t\tthis.listenTo<ViewDocumentCompositionEndEvent>( view.document, 'compositionend', () => {\n\t\t\t// There could be new item queued on the composition end, so flush it.\n\t\t\tthis._typingQueue.flush( 'after composition end' );\n\n\t\t\tconst mutations: Array<MutationData> = [];\n\n\t\t\tif ( this._typingQueue.hasAffectedElements() ) {\n\t\t\t\tfor ( const element of this._typingQueue.flushAffectedElements() ) {\n\t\t\t\t\tconst viewElement = mapper.toViewElement( element );\n\n\t\t\t\t\tif ( !viewElement ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tmutations.push( { type: 'children', node: viewElement } );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Fire composition mutations, if any.\n\t\t\t//\n\t\t\t// For non-Android:\n\t\t\t// After the composition end, we need to verify if there are no left-overs.\n\t\t\t// Listening at the lowest priority, so after the `InsertTextObserver` added above (all composed text\n\t\t\t// should already be applied to the model, view, and DOM).\n\t\t\t// On non-Android the `Renderer` is blocked while the user is composing, but the `MutationObserver` still collects\n\t\t\t// mutated nodes and fires `mutations` events.\n\t\t\t// Those events are recorded by the `Renderer` but not applied to the DOM while composing.\n\t\t\t// We need to trigger those checks (and fixes) once again but this time without specifying the exact mutations\n\t\t\t// since they are already recorded by the `Renderer`.\n\t\t\t// It in most cases just clears the internal record of mutated text nodes\n\t\t\t// since all changes should already be applied to the DOM.\n\t\t\t// This is especially needed when a user cancels composition, so we can clear nodes marked to sync.\n\t\t\tif ( mutations.length || !env.isAndroid ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.group( ..._buildLogMessage( this, 'Input',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'%cFire post-composition mutation fixes.',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold'\n\t\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t\tview.document.fire<ViewDocumentMutationsEvent>( 'mutations', { mutations } );\n\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.groupEnd();\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\t\t\t}\n\t\t}, { priority: 'lowest' } );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._typingQueue.destroy();\n\t}\n}\n\n/**\n * The queue of `insertText` command executions that are waiting for the DOM to get updated after beforeinput event.\n */\nclass TypingQueue {\n\t/**\n\t * The editor instance.\n\t */\n\tpublic editor: Editor;\n\n\t/**\n\t * Debounced queue flush as a safety mechanism for cases of mutation observer not triggering.\n\t */\n\tpublic flushDebounced = debounce( () => this.flush( 'timeout' ), 50 );\n\n\t/**\n\t * The queue of `insertText` command executions that are waiting for the DOM to get updated after beforeinput event.\n\t */\n\tprivate _queue: Array<InsertTextCommandLiveOptions> = [];\n\n\t/**\n\t * Whether there is any composition enqueued or plain typing only.\n\t */\n\tprivate _isComposing = false;\n\n\t/**\n\t * A set of model elements. The typing happened in those elements. It's used for mutations check.\n\t */\n\tprivate _affectedElements = new Set<Element>();\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tthis.editor = editor;\n\t}\n\n\t/**\n\t * Destroys the helper object.\n\t */\n\tpublic destroy(): void {\n\t\tthis.flushDebounced.cancel();\n\t\tthis._affectedElements.clear();\n\n\t\twhile ( this._queue.length ) {\n\t\t\tthis.shift();\n\t\t}\n\t}\n\n\t/**\n\t * Returns the size of the queue.\n\t */\n\tpublic get length(): number {\n\t\treturn this._queue.length;\n\t}\n\n\t/**\n\t * Push next insertText command data to the queue.\n\t */\n\tpublic push( commandData: InsertTextCommandOptions, isComposing: boolean ): void {\n\t\tconst commandLiveData: InsertTextCommandLiveOptions = {\n\t\t\ttext: commandData.text\n\t\t};\n\n\t\tif ( commandData.selection ) {\n\t\t\tcommandLiveData.selectionRanges = [];\n\n\t\t\tfor ( const range of commandData.selection.getRanges() ) {\n\t\t\t\tcommandLiveData.selectionRanges.push( LiveRange.fromRange( range ) );\n\n\t\t\t\t// Keep reference to the model element for later mutation checks.\n\t\t\t\tthis._affectedElements.add( range.start.parent as Element );\n\t\t\t}\n\t\t}\n\n\t\tthis._queue.push( commandLiveData );\n\t\tthis._isComposing ||= isComposing;\n\t\tthis.flushDebounced();\n\t}\n\n\t/**\n\t * Shift the first item from the insertText command data queue.\n\t */\n\tpublic shift(): InsertTextCommandOptions {\n\t\tconst commandLiveData = this._queue.shift()!;\n\t\tconst commandData: InsertTextCommandOptions = {\n\t\t\ttext: commandLiveData.text\n\t\t};\n\n\t\tif ( commandLiveData.selectionRanges ) {\n\t\t\tconst ranges = commandLiveData.selectionRanges\n\t\t\t\t.map( liveRange => detachLiveRange( liveRange ) )\n\t\t\t\t.filter( ( range ): range is Range => !!range );\n\n\t\t\tif ( ranges.length ) {\n\t\t\t\tcommandData.selection = this.editor.model.createSelection( ranges );\n\t\t\t}\n\t\t}\n\n\t\treturn commandData;\n\t}\n\n\t/**\n\t * Applies all queued insertText command executions.\n\t *\n\t * @param reason Used only for debugging.\n\t */\n\tpublic flush( reason: string ): void { // eslint-disable-line @typescript-eslint/no-unused-vars\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst view = editor.editing.view;\n\n\t\tthis.flushDebounced.cancel();\n\n\t\tif ( !this._queue.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.group( ..._buildLogMessage( this, 'Input',\n\t\t// @if CK_DEBUG_TYPING // \t\t`%cFlush insertText queue on ${ reason }.`,\n\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold'\n\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t// @if CK_DEBUG_TYPING // }\n\n\t\tconst insertTextCommand = editor.commands.get( 'insertText' )!;\n\t\tconst buffer = insertTextCommand.buffer;\n\n\t\tmodel.enqueueChange( buffer.batch, () => {\n\t\t\tbuffer.lock();\n\n\t\t\twhile ( this._queue.length ) {\n\t\t\t\tconst commandData = this.shift();\n\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t`%cExecute queued insertText:%c \"${ commandData.text }\"%c ` +\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t\t`[${ commandData.selection.getFirstPosition().path }]-` +\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t\t`[${ commandData.selection.getLastPosition().path }]`,\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'font-weight: bold',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'color: blue',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t''\n\t\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\t\teditor.execute( 'insertText', commandData );\n\t\t\t}\n\n\t\t\tbuffer.unlock();\n\n\t\t\tif ( !this._isComposing ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'Input',\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t'Clear affected elements set'\n\t\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t\t// @if CK_DEBUG_TYPING // }\n\t\t\t\tthis._affectedElements.clear();\n\t\t\t}\n\n\t\t\tthis._isComposing = false;\n\t\t} );\n\n\t\tview.scrollToTheSelection();\n\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t// @if CK_DEBUG_TYPING // \tconsole.groupEnd();\n\t\t// @if CK_DEBUG_TYPING // }\n\t}\n\n\t/**\n\t * Returns `true` if the given model element is related to recent typing.\n\t */\n\tpublic isElementAffected( element: Element ): boolean {\n\t\treturn this._affectedElements.has( element );\n\t}\n\n\t/**\n\t * Returns `true` if there are any affected elements in the queue.\n\t */\n\tpublic hasAffectedElements(): boolean {\n\t\treturn this._affectedElements.size > 0;\n\t}\n\n\t/**\n\t * Returns an array of typing-related elements and clears the internal list.\n\t */\n\tpublic flushAffectedElements(): Array<Element> {\n\t\tconst result = Array.from( this._affectedElements );\n\n\t\tthis._affectedElements.clear();\n\n\t\treturn result;\n\t}\n}\n\n/**\n * Deletes the content selected by the document selection at the start of composition.\n */\nfunction deleteSelectionContent( model: Model, insertTextCommand: InsertTextCommand ): void {\n\t// By relying on the state of the input command we allow disabling the entire input easily\n\t// by just disabling the input command. We could’ve used here the delete command but that\n\t// would mean requiring the delete feature which would block loading one without the other.\n\t// We could also check the editor.isReadOnly property, but that wouldn't allow to block\n\t// the input without blocking other features.\n\tif ( !insertTextCommand.isEnabled ) {\n\t\treturn;\n\t}\n\n\tconst buffer = insertTextCommand.buffer;\n\n\tbuffer.lock();\n\n\tmodel.enqueueChange( buffer.batch, () => {\n\t\tmodel.deleteContent( model.document.selection );\n\t} );\n\n\tbuffer.unlock();\n}\n\n/**\n * Detaches a LiveRange and returns the static range from it.\n */\nfunction detachLiveRange( liveRange: LiveRange ): Range | null {\n\tconst range = liveRange.toRange();\n\n\tliveRange.detach();\n\n\tif ( range.root.rootName == '$graveyard' ) {\n\t\treturn null;\n\t}\n\n\treturn range;\n}\n\n/**\n * For the given `viewNode`, finds and returns the closest ancestor of this node that has a mapping to the model.\n */\nfunction findMappedViewAncestor( viewNode: ViewNode, mapper: Mapper ): ViewElement {\n\tlet node = ( viewNode.is( '$text' ) ? viewNode.parent : viewNode ) as ViewElement;\n\n\twhile ( !mapper.toModelElement( node ) ) {\n\t\tnode = node.parent as ViewElement;\n\t}\n\n\treturn node;\n}\n\n/**\n * The insertText command data stored as LiveRange-s.\n */\ntype InsertTextCommandLiveOptions = {\n\ttext?: string;\n\tselectionRanges?: Array<LiveRange>;\n};\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/deletecommand\n */\n\nimport { Command, type Editor } from '@ckeditor/ckeditor5-core';\nimport { count } from '@ckeditor/ckeditor5-utils';\nimport type { DocumentSelection, Element, Selection, Writer } from '@ckeditor/ckeditor5-engine';\n\nimport ChangeBuffer from './utils/changebuffer.js';\n\n// @if CK_DEBUG_TYPING // const { _buildLogMessage } = require( '@ckeditor/ckeditor5-engine/src/dev-utils/utils.js' );\n\n/**\n * The delete command. Used by the {@link module:typing/delete~Delete delete feature} to handle the <kbd>Delete</kbd> and\n * <kbd>Backspace</kbd> keys.\n */\nexport default class DeleteCommand extends Command {\n\t/**\n\t * The directionality of the delete describing in what direction it should\n\t * consume the content when the selection is collapsed.\n\t */\n\tpublic readonly direction: 'forward' | 'backward';\n\n\t/**\n\t * Delete's change buffer used to group subsequent changes into batches.\n\t */\n\tprivate readonly _buffer: ChangeBuffer;\n\n\t/**\n\t * Creates an instance of the command.\n\t *\n\t * @param direction The directionality of the delete describing in what direction it\n\t * should consume the content when the selection is collapsed.\n\t */\n\tconstructor( editor: Editor, direction: 'forward' | 'backward' ) {\n\t\tsuper( editor );\n\n\t\tthis.direction = direction;\n\t\tthis._buffer = new ChangeBuffer( editor.model, editor.config.get( 'typing.undoStep' ) );\n\n\t\t// Since this command may execute on different selectable than selection, it should be checked directly in execute block.\n\t\tthis._isEnabledBasedOnSelection = false;\n\t}\n\n\t/**\n\t * The current change buffer.\n\t */\n\tpublic get buffer(): ChangeBuffer {\n\t\treturn this._buffer;\n\t}\n\n\t/**\n\t * Executes the delete command. Depending on whether the selection is collapsed or not, deletes its content\n\t * or a piece of content in the {@link #direction defined direction}.\n\t *\n\t * @fires execute\n\t * @param options The command options.\n\t * @param options.unit See {@link module:engine/model/utils/modifyselection~modifySelection}'s options.\n\t * @param options.sequence A number describing which subsequent delete event it is without the key being released.\n\t * See the {@link module:engine/view/document~Document#event:delete} event data.\n\t * @param options.selection Selection to remove. If not set, current model selection will be used.\n\t */\n\tpublic override execute( options: {\n\t\tunit?: 'character' | 'codePoint' | 'word';\n\t\tsequence?: number;\n\t\tselection?: Selection | DocumentSelection;\n\t} = {} ): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\n\t\tmodel.enqueueChange( this._buffer.batch, writer => {\n\t\t\tthis._buffer.lock();\n\n\t\t\tconst selection = writer.createSelection( options.selection || doc.selection );\n\n\t\t\t// Don't execute command when selection is in non-editable place.\n\t\t\tif ( !model.canEditAt( selection ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst sequence = options.sequence || 1;\n\n\t\t\t// Do not replace the whole selected content if selection was collapsed.\n\t\t\t// This prevents such situation:\n\t\t\t//\n\t\t\t// <h1></h1><p>[]</p>\t--> <h1>[</h1><p>]</p> \t\t--> <p></p>\n\t\t\t// starting content\t\t--> after `modifySelection`\t--> after `deleteContent`.\n\t\t\tconst doNotResetEntireContent = selection.isCollapsed;\n\n\t\t\t// Try to extend the selection in the specified direction.\n\t\t\tif ( selection.isCollapsed ) {\n\t\t\t\tmodel.modifySelection( selection, {\n\t\t\t\t\tdirection: this.direction,\n\t\t\t\t\tunit: options.unit,\n\t\t\t\t\ttreatEmojiAsSingleUnit: true\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Check if deleting in an empty editor. See #61.\n\t\t\tif ( this._shouldEntireContentBeReplacedWithParagraph( sequence ) ) {\n\t\t\t\tthis._replaceEntireContentWithParagraph( writer );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Check if deleting in the first empty block.\n\t\t\t// See https://github.com/ckeditor/ckeditor5/issues/8137.\n\t\t\tif ( this._shouldReplaceFirstBlockWithParagraph( selection, sequence ) ) {\n\t\t\t\tthis.editor.execute( 'paragraph', { selection } );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If selection is still collapsed, then there's nothing to delete.\n\t\t\tif ( selection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet changeCount = 0;\n\n\t\t\tselection.getFirstRange()!.getMinimalFlatRanges().forEach( range => {\n\t\t\t\tchangeCount += count(\n\t\t\t\t\trange.getWalker( { singleCharacters: true, ignoreElementEnd: true, shallow: true } )\n\t\t\t\t);\n\t\t\t} );\n\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.log( ..._buildLogMessage( this, 'DeleteCommand',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'Delete content',\n\t\t\t// @if CK_DEBUG_TYPING // \t\t`[${ selection.getFirstPosition()!.path }]-[${ selection.getLastPosition()!.path }]`,\n\t\t\t// @if CK_DEBUG_TYPING // \t\toptions\n\t\t\t// @if CK_DEBUG_TYPING // \t) );\n\t\t\t// @if CK_DEBUG_TYPING // }\n\n\t\t\tmodel.deleteContent( selection, {\n\t\t\t\tdoNotResetEntireContent,\n\t\t\t\tdirection: this.direction\n\t\t\t} );\n\n\t\t\tthis._buffer.input( changeCount );\n\n\t\t\twriter.setSelection( selection );\n\n\t\t\tthis._buffer.unlock();\n\t\t} );\n\t}\n\n\t/**\n\t * If the user keeps <kbd>Backspace</kbd> or <kbd>Delete</kbd> key pressed, the content of the current\n\t * editable will be cleared. However, this will not yet lead to resetting the remaining block to a paragraph\n\t * (which happens e.g. when the user does <kbd>Ctrl</kbd> + <kbd>A</kbd>, <kbd>Backspace</kbd>).\n\t *\n\t * But, if the user pressed the key in an empty editable for the first time,\n\t * we want to replace the entire content with a paragraph if:\n\t *\n\t * * the current limit element is empty,\n\t * * the paragraph is allowed in the limit element,\n\t * * the limit doesn't already have a paragraph inside.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5-typing/issues/61.\n\t *\n\t * @param sequence A number describing which subsequent delete event it is without the key being released.\n\t */\n\tprivate _shouldEntireContentBeReplacedWithParagraph( sequence: number ): boolean {\n\t\t// Does nothing if user pressed and held the \"Backspace\" or \"Delete\" key.\n\t\tif ( sequence > 1 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\t\tconst selection = doc.selection;\n\t\tconst limitElement = model.schema.getLimitElement( selection );\n\n\t\t// If a collapsed selection contains the whole content it means that the content is empty\n\t\t// (from the user perspective).\n\t\tconst limitElementIsEmpty = selection.isCollapsed && selection.containsEntireContent( limitElement );\n\n\t\tif ( !limitElementIsEmpty ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !model.schema.checkChild( limitElement, 'paragraph' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst limitElementFirstChild = limitElement.getChild( 0 );\n\n\t\t// Does nothing if the limit element already contains only a paragraph.\n\t\t// We ignore the case when paragraph might have some inline elements (<p><inlineWidget>[]</inlineWidget></p>)\n\t\t// because we don't support such cases yet and it's unclear whether inlineWidget shouldn't be a limit itself.\n\t\tif ( limitElementFirstChild && limitElementFirstChild.is( 'element', 'paragraph' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * The entire content is replaced with the paragraph. Selection is moved inside the paragraph.\n\t *\n\t * @param writer The model writer.\n\t */\n\tprivate _replaceEntireContentWithParagraph( writer: Writer ): void {\n\t\tconst model = this.editor.model;\n\t\tconst doc = model.document;\n\t\tconst selection = doc.selection;\n\t\tconst limitElement = model.schema.getLimitElement( selection );\n\t\tconst paragraph = writer.createElement( 'paragraph' );\n\n\t\twriter.remove( writer.createRangeIn( limitElement ) );\n\t\twriter.insert( paragraph, limitElement );\n\n\t\twriter.setSelection( paragraph, 0 );\n\t}\n\n\t/**\n\t * Checks if the selection is inside an empty element that is the first child of the limit element\n\t * and should be replaced with a paragraph.\n\t *\n\t * @param selection The selection.\n\t * @param sequence A number describing which subsequent delete event it is without the key being released.\n\t */\n\tprivate _shouldReplaceFirstBlockWithParagraph( selection: Selection, sequence: number ): boolean {\n\t\tconst model = this.editor.model;\n\n\t\t// Does nothing if user pressed and held the \"Backspace\" key or it was a \"Delete\" button.\n\t\tif ( sequence > 1 || this.direction != 'backward' ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( !selection.isCollapsed ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst position = selection.getFirstPosition()!;\n\t\tconst limitElement = model.schema.getLimitElement( position );\n\t\tconst limitElementFirstChild = limitElement.getChild( 0 ) as Element;\n\n\t\t// Only elements that are direct children of the limit element can be replaced.\n\t\t// Unwrapping from a block quote should be handled in a dedicated feature.\n\t\tif ( position.parent != limitElementFirstChild ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// A block should be replaced only if it was empty.\n\t\tif ( !selection.containsEntireContent( limitElementFirstChild ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Replace with a paragraph only if it's allowed there.\n\t\tif ( !model.schema.checkChild( limitElement, 'paragraph' ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Does nothing if the limit element already contains only a paragraph.\n\t\tif ( limitElementFirstChild.name == 'paragraph' ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/deleteobserver\n */\n\nimport {\n\tenv,\n\tkeyCodes,\n\tisInsideCombinedSymbol,\n\tisInsideEmojiSequence,\n\tisInsideSurrogatePair\n} from '@ckeditor/ckeditor5-utils';\nimport {\n\tBubblingEventInfo,\n\tDomEventData,\n\tObserver,\n\ttype BubblingEvent,\n\ttype ViewDocumentInputEvent,\n\ttype ViewDocumentKeyDownEvent,\n\ttype ViewDocumentKeyUpEvent,\n\ttype ViewDocumentSelection,\n\ttype ViewSelection,\n\ttype ViewRange,\n\ttype EditingView\n} from '@ckeditor/ckeditor5-engine';\n\nconst DELETE_CHARACTER = 'character';\nconst DELETE_WORD = 'word';\nconst DELETE_CODE_POINT = 'codePoint';\nconst DELETE_SELECTION = 'selection';\nconst DELETE_BACKWARD = 'backward';\nconst DELETE_FORWARD = 'forward';\n\ntype DeleteEventSpec = {\n\tunit: 'selection' | 'codePoint' | 'character' | 'word';\n\tdirection: 'backward' | 'forward';\n};\n\nconst DELETE_EVENT_TYPES: Record<string, DeleteEventSpec> = {\n\t// --------------------------------------- Backward delete types -----------------------------------------------------\n\n\t// This happens in Safari on Mac when some content is selected and Ctrl + K is pressed.\n\tdeleteContent: {\n\t\tunit: DELETE_SELECTION,\n\n\t\t// According to the Input Events Level 2 spec, this delete type has no direction\n\t\t// but to keep things simple, let's default to backward.\n\t\tdirection: DELETE_BACKWARD\n\t},\n\t// Chrome and Safari on Mac: Backspace or Ctrl + H\n\tdeleteContentBackward: {\n\t\t// This kind of deletions must be done on the code point-level instead of target range provided by the DOM beforeinput event.\n\t\t// Take for instance \"👨‍👩‍👧‍👧\", it equals:\n\t\t//\n\t\t//\t* [ \"👨\", \"ZERO WIDTH JOINER\", \"👩\", \"ZERO WIDTH JOINER\", \"👧\", \"ZERO WIDTH JOINER\", \"👧\" ]\n\t\t//\t* or simply \"\\u{1F468}\\u200D\\u{1F469}\\u200D\\u{1F467}\\u200D\\u{1F467}\"\n\t\t//\n\t\t// The range provided by the browser would cause the entire multi-byte grapheme to disappear while the user\n\t\t// intention when deleting backwards (\"👨‍👩‍👧‍👧[]\", then backspace) is gradual \"decomposition\" (first to \"👨‍👩‍👧‍[]\",\n\t\t// then to \"👨‍👩‍[]\", etc.).\n\t\t//\n\t\t//\t* \"👨‍👩‍👧‍👧[]\" + backward delete (by code point) -> results in \"👨‍👩‍👧[]\", removed the last \"👧\" 👍\n\t\t//\t* \"👨‍👩‍👧‍👧[]\" + backward delete (by character) -> results in \"[]\", removed the whole grapheme 👎\n\t\t//\n\t\t// Deleting by code-point is simply a better UX. See \"deleteContentForward\" to learn more.\n\t\tunit: DELETE_CODE_POINT,\n\t\tdirection: DELETE_BACKWARD\n\t},\n\t// On Mac: Option + Backspace.\n\t// On iOS: Hold the backspace for a while and the whole words will start to disappear.\n\tdeleteWordBackward: {\n\t\tunit: DELETE_WORD,\n\t\tdirection: DELETE_BACKWARD\n\t},\n\t// Safari on Mac: Cmd + Backspace\n\tdeleteHardLineBackward: {\n\t\tunit: DELETE_SELECTION,\n\t\tdirection: DELETE_BACKWARD\n\t},\n\t// Chrome on Mac: Cmd + Backspace.\n\tdeleteSoftLineBackward: {\n\t\tunit: DELETE_SELECTION,\n\t\tdirection: DELETE_BACKWARD\n\t},\n\n\t// --------------------------------------- Forward delete types -----------------------------------------------------\n\n\t// Chrome on Mac: Fn + Backspace or Ctrl + D\n\t// Safari on Mac: Ctrl + K or Ctrl + D\n\tdeleteContentForward: {\n\t\t// Unlike backward delete, this delete must be performed by character instead of by code point, which\n\t\t// provides the best UX for working with accented letters.\n\t\t// Take, for example \"b̂\" (\"\\u0062\\u0302\", or [ \"LATIN SMALL LETTER B\", \"COMBINING CIRCUMFLEX ACCENT\" ]):\n\t\t//\n\t\t//\t* \"b̂[]\" + backward delete (by code point) -> results in \"b[]\", removed the combining mark 👍\n\t\t//\t* \"[]b̂\" + forward delete (by code point) -> results in \"[]^\", a bare combining mark does that not make sense when alone 👎\n\t\t//\t* \"[]b̂\" + forward delete (by character) -> results in \"[]\", removed both \"b\" and the combining mark 👍\n\t\t//\n\t\t// See: \"deleteContentBackward\" to learn more.\n\t\tunit: DELETE_CHARACTER,\n\t\tdirection: DELETE_FORWARD\n\t},\n\t// On Mac: Fn + Option + Backspace.\n\tdeleteWordForward: {\n\t\tunit: DELETE_WORD,\n\t\tdirection: DELETE_FORWARD\n\t},\n\t// Chrome on Mac: Ctrl + K (you have to disable the Link plugin first, though, because it uses the same keystroke)\n\t// This is weird that it does not work in Safari on Mac despite being listed in the official shortcuts listing\n\t// on Apple's webpage.\n\tdeleteHardLineForward: {\n\t\tunit: DELETE_SELECTION,\n\t\tdirection: DELETE_FORWARD\n\t},\n\t// At this moment there is no known way to trigger this event type but let's keep it for the symmetry with\n\t// deleteSoftLineBackward.\n\tdeleteSoftLineForward: {\n\t\tunit: DELETE_SELECTION,\n\t\tdirection: DELETE_FORWARD\n\t}\n};\n\n/**\n * Delete observer introduces the {@link module:engine/view/document~Document#event:delete} event.\n */\nexport default class DeleteObserver extends Observer {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( view: EditingView ) {\n\t\tsuper( view );\n\n\t\tconst document = view.document;\n\n\t\t// It matters how many subsequent deletions were made, e.g. when the backspace key was pressed and held\n\t\t// by the user for some time. For instance, if such scenario ocurred and the heading the selection was\n\t\t// anchored to was the only content of the editor, it will not be converted into a paragraph (the user\n\t\t// wanted to clean it up, not remove it, it's about UX). Check out the DeleteCommand implementation to learn more.\n\t\t//\n\t\t// Fun fact: Safari on Mac won't fire beforeinput for backspace in an empty heading (only content).\n\t\tlet sequence = 0;\n\n\t\tdocument.on( 'keydown', () => {\n\t\t\tsequence++;\n\t\t} );\n\n\t\tdocument.on( 'keyup', () => {\n\t\t\tsequence = 0;\n\t\t} );\n\n\t\tdocument.on<ViewDocumentInputEvent>( 'beforeinput', ( evt, data ) => {\n\t\t\tif ( !this.isEnabled ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { targetRanges, domEvent, inputType } = data;\n\t\t\tconst deleteEventSpec = DELETE_EVENT_TYPES[ inputType ];\n\n\t\t\tif ( !deleteEventSpec ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst deleteData: Partial<DeleteEventData> = {\n\t\t\t\tdirection: deleteEventSpec.direction,\n\t\t\t\tunit: deleteEventSpec.unit,\n\t\t\t\tsequence\n\t\t\t};\n\n\t\t\tif ( deleteData.unit == DELETE_SELECTION ) {\n\t\t\t\tdeleteData.selectionToRemove = view.createSelection( targetRanges[ 0 ] );\n\t\t\t}\n\n\t\t\t// The default deletion unit for deleteContentBackward is a single code point\n\t\t\t// but if the browser provides a wider target range then we should use it.\n\t\t\tif ( inputType === 'deleteContentBackward' ) {\n\t\t\t\t// On Android, deleteContentBackward has sequence 1 by default.\n\t\t\t\tif ( env.isAndroid ) {\n\t\t\t\t\tdeleteData.sequence = 1;\n\t\t\t\t}\n\n\t\t\t\t// The beforeInput event wants more than a single character to be removed.\n\t\t\t\tif ( shouldUseTargetRanges( targetRanges ) ) {\n\t\t\t\t\tdeleteData.unit = DELETE_SELECTION;\n\t\t\t\t\tdeleteData.selectionToRemove = view.createSelection( targetRanges );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst eventInfo = new BubblingEventInfo( document, 'delete', targetRanges[ 0 ] );\n\n\t\t\tdocument.fire( eventInfo, new DomEventData( view, domEvent, deleteData ) );\n\n\t\t\t// Stop the beforeinput event if `delete` event was stopped.\n\t\t\t// https://github.com/ckeditor/ckeditor5/issues/753\n\t\t\tif ( eventInfo.stop.called ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t} );\n\n\t\t// TODO: to be removed when https://bugs.chromium.org/p/chromium/issues/detail?id=1365311 is solved.\n\t\tif ( env.isBlink ) {\n\t\t\tenableChromeWorkaround( this );\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 * Event fired when the user tries to delete content (e.g. presses <kbd>Delete</kbd> or <kbd>Backspace</kbd>).\n *\n * Note: This event is fired by the {@link module:typing/deleteobserver~DeleteObserver delete observer}\n * (usually registered by the {@link module:typing/delete~Delete delete feature}).\n *\n * @eventName module:engine/view/document~Document#delete\n * @param data The event data.\n */\nexport type ViewDocumentDeleteEvent = BubblingEvent<{\n\tname: 'delete';\n\targs: [ data: DeleteEventData ];\n}>;\n\nexport interface DeleteEventData extends DomEventData<InputEvent> {\n\n\t/**\n\t * The direction in which the deletion should happen.\n\t */\n\tdirection: 'backward' | 'forward';\n\n\t/**\n\t * The \"amount\" of content that should be deleted.\n\t */\n\tunit: 'selection' | 'codePoint' | 'character' | 'word';\n\n\t/**\n\t * A number describing which subsequent delete event it is without the key being released.\n\t * If it's 2 or more it means that the key was pressed and hold.\n\t */\n\tsequence: number;\n\n\t/**\n\t * View selection which content should be removed. If not set,\n\t * current selection should be used.\n\t */\n\tselectionToRemove?: ViewSelection | ViewDocumentSelection;\n}\n\n/**\n * Enables workaround for the issue https://github.com/ckeditor/ckeditor5/issues/11904.\n */\nfunction enableChromeWorkaround( observer: DeleteObserver ) {\n\tconst view = observer.view;\n\tconst document = view.document;\n\n\tlet pressedKeyCode: number | null = null;\n\tlet beforeInputReceived = false;\n\n\tdocument.on<ViewDocumentKeyDownEvent>( 'keydown', ( evt, { keyCode } ) => {\n\t\tpressedKeyCode = keyCode;\n\t\tbeforeInputReceived = false;\n\t} );\n\n\tdocument.on<ViewDocumentKeyUpEvent>( 'keyup', ( evt, { keyCode, domEvent } ) => {\n\t\tconst selection = document.selection;\n\t\tconst shouldFireDeleteEvent = observer.isEnabled &&\n\t\t\tkeyCode == pressedKeyCode &&\n\t\t\tisDeleteKeyCode( keyCode ) &&\n\t\t\t!selection.isCollapsed &&\n\t\t\t!beforeInputReceived;\n\n\t\tpressedKeyCode = null;\n\n\t\tif ( shouldFireDeleteEvent ) {\n\t\t\tconst targetRange = selection.getFirstRange()!;\n\t\t\tconst eventInfo = new BubblingEventInfo( document, 'delete', targetRange );\n\t\t\tconst deleteData: Partial<DeleteEventData> = {\n\t\t\t\tunit: DELETE_SELECTION,\n\t\t\t\tdirection: getDeleteDirection( keyCode ),\n\t\t\t\tselectionToRemove: selection\n\t\t\t};\n\n\t\t\tdocument.fire( eventInfo, new DomEventData( view, domEvent, deleteData ) );\n\t\t}\n\t} );\n\n\tdocument.on<ViewDocumentInputEvent>( 'beforeinput', ( evt, { inputType } ) => {\n\t\tconst deleteEventSpec = DELETE_EVENT_TYPES[ inputType ];\n\t\tconst isMatchingBeforeInput = isDeleteKeyCode( pressedKeyCode ) &&\n\t\t\tdeleteEventSpec &&\n\t\t\tdeleteEventSpec.direction == getDeleteDirection( pressedKeyCode );\n\n\t\tif ( isMatchingBeforeInput ) {\n\t\t\tbeforeInputReceived = true;\n\t\t}\n\t}, { priority: 'high' } );\n\n\tdocument.on<ViewDocumentInputEvent>( 'beforeinput', ( evt, { inputType, data } ) => {\n\t\tconst shouldIgnoreBeforeInput = pressedKeyCode == keyCodes.delete &&\n\t\t\tinputType == 'insertText' &&\n\t\t\tdata == '\\x7f'; // Delete character :P\n\n\t\tif ( shouldIgnoreBeforeInput ) {\n\t\t\tevt.stop();\n\t\t}\n\t}, { priority: 'high' } );\n\n\tfunction isDeleteKeyCode( keyCode: number | null ): boolean {\n\t\treturn keyCode == keyCodes.backspace || keyCode == keyCodes.delete;\n\t}\n\n\tfunction getDeleteDirection( keyCode: number | null ): 'backward' | 'forward' {\n\t\treturn keyCode == keyCodes.backspace ? DELETE_BACKWARD : DELETE_FORWARD;\n\t}\n}\n\n/**\n * Verifies whether the given target ranges cover more than a single character and should be used instead of a single code-point deletion.\n */\nfunction shouldUseTargetRanges( targetRanges: Array<ViewRange> ): boolean {\n\t// The collapsed target range could happen for example while deleting inside an inline filler\n\t// (it's mapped to collapsed position before an inline filler).\n\tif ( targetRanges.length != 1 || targetRanges[ 0 ].isCollapsed ) {\n\t\treturn false;\n\t}\n\n\tconst walker = targetRanges[ 0 ].getWalker( {\n\t\tdirection: 'backward',\n\t\tsingleCharacters: true,\n\t\tignoreElementEnd: true\n\t} );\n\n\tlet count = 0;\n\n\tfor ( const { nextPosition, item } of walker ) {\n\t\tif ( nextPosition.parent.is( '$text' ) ) {\n\t\t\tconst data = nextPosition.parent.data;\n\t\t\tconst offset = nextPosition.offset;\n\n\t\t\t// Count combined symbols and emoji sequences as a single character.\n\t\t\tif (\n\t\t\t\tisInsideSurrogatePair( data, offset ) ||\n\t\t\t\tisInsideCombinedSymbol( data, offset ) ||\n\t\t\t\tisInsideEmojiSequence( data, offset )\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcount++;\n\t\t} else if ( item.is( 'containerElement' ) || item.is( 'emptyElement' ) ) {\n\t\t\tcount++;\n\t\t}\n\n\t\tif ( count > 1 ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/delete\n */\n\nimport { _tryFixingModelRange, BubblingEventInfo, DomEventData, type ViewDocumentKeyDownEvent } from '@ckeditor/ckeditor5-engine';\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport { keyCodes } from '@ckeditor/ckeditor5-utils';\nimport DeleteCommand from './deletecommand.js';\nimport DeleteObserver, { type DeleteEventData, type ViewDocumentDeleteEvent } from './deleteobserver.js';\n\n/**\n * The delete and backspace feature. Handles keys such as <kbd>Delete</kbd> and <kbd>Backspace</kbd>, other\n * keystrokes and user actions that result in deleting content in the editor.\n */\nexport default class Delete extends Plugin {\n\t/**\n\t * Whether pressing backspace should trigger undo action\n\t */\n\tprivate _undoOnBackspace!: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Delete' 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\t/**\n\t * @inheritDoc\n\t */\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 modelDocument = editor.model.document;\n\n\t\tview.addObserver( DeleteObserver );\n\n\t\tthis._undoOnBackspace = false;\n\n\t\tconst deleteForwardCommand = new DeleteCommand( editor, 'forward' );\n\n\t\t// Register `deleteForward` command and add `forwardDelete` command as an alias for backward compatibility.\n\t\teditor.commands.add( 'deleteForward', deleteForwardCommand );\n\t\teditor.commands.add( 'forwardDelete', deleteForwardCommand );\n\n\t\teditor.commands.add( 'delete', new DeleteCommand( editor, 'backward' ) );\n\n\t\tthis.listenTo<ViewDocumentDeleteEvent>( viewDocument, 'delete', ( 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\tconst { direction, sequence, selectionToRemove, unit } = data;\n\t\t\tconst commandName = direction === 'forward' ? 'deleteForward' : 'delete';\n\t\t\tconst commandData: Parameters<DeleteCommand[ 'execute' ]>[ 0 ] = { sequence };\n\n\t\t\tif ( unit == 'selection' ) {\n\t\t\t\tconst modelRanges = Array.from( selectionToRemove!.getRanges() )\n\t\t\t\t\t.map( viewRange => editor.editing.mapper.toModelRange( viewRange ) )\n\t\t\t\t\t.map( modelRange => _tryFixingModelRange( modelRange, editor.model.schema ) || modelRange );\n\n\t\t\t\tcommandData.selection = editor.model.createSelection( modelRanges );\n\t\t\t} else {\n\t\t\t\tcommandData.unit = unit;\n\t\t\t}\n\n\t\t\teditor.execute( commandName, commandData );\n\n\t\t\tview.scrollToTheSelection();\n\t\t}, { priority: 'low' } );\n\n\t\t// Handle the Backspace key while at the beginning of a nested editable. See https://github.com/ckeditor/ckeditor5/issues/17383.\n\t\tthis.listenTo<ViewDocumentKeyDownEvent>( viewDocument, 'keydown', ( evt, data ) => {\n\t\t\tif (\n\t\t\t\tviewDocument.isComposing ||\n\t\t\t\tdata.keyCode != keyCodes.backspace ||\n\t\t\t\t!modelDocument.selection.isCollapsed\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst ancestorLimit = editor.model.schema.getLimitElement( modelDocument.selection );\n\t\t\tconst limitStartPosition = editor.model.createPositionAt( ancestorLimit, 0 );\n\n\t\t\tif ( limitStartPosition.isTouching( modelDocument.selection.getFirstPosition()! ) ) {\n\t\t\t\t// Stop the beforeinput event as it could be invalid.\n\t\t\t\tdata.preventDefault();\n\n\t\t\t\t// Create a fake delete event so all features can act on it and the target range is proper.\n\t\t\t\tconst modelRange = editor.model.schema.getNearestSelectionRange( limitStartPosition, 'forward' );\n\n\t\t\t\tif ( !modelRange ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst viewSelection = view.createSelection( editor.editing.mapper.toViewRange( modelRange ) );\n\t\t\t\tconst targetRange = viewSelection.getFirstRange()!;\n\n\t\t\t\tconst eventInfo = new BubblingEventInfo( document, 'delete', targetRange );\n\t\t\t\tconst deleteData: Partial<DeleteEventData> = {\n\t\t\t\t\tunit: 'selection',\n\t\t\t\t\tdirection: 'backward',\n\t\t\t\t\tselectionToRemove: viewSelection\n\t\t\t\t};\n\n\t\t\t\tviewDocument.fire( eventInfo, new DomEventData( view, data.domEvent, deleteData ) );\n\t\t\t}\n\t\t} );\n\n\t\tif ( this.editor.plugins.has( 'UndoEditing' ) ) {\n\t\t\tthis.listenTo<ViewDocumentDeleteEvent>( viewDocument, 'delete', ( evt, data ) => {\n\t\t\t\tif ( this._undoOnBackspace && data.direction == 'backward' && data.sequence == 1 && data.unit == 'codePoint' ) {\n\t\t\t\t\tthis._undoOnBackspace = false;\n\n\t\t\t\t\teditor.execute( 'undo' );\n\n\t\t\t\t\tdata.preventDefault();\n\t\t\t\t\tevt.stop();\n\t\t\t\t}\n\t\t\t}, { context: '$capture' } );\n\n\t\t\tthis.listenTo( modelDocument, 'change', () => {\n\t\t\t\tthis._undoOnBackspace = false;\n\t\t\t} );\n\t\t}\n\t}\n\n\t/**\n\t * If the next user action after calling this method is pressing backspace, it would undo the last change.\n\t *\n\t * Requires {@link module:undo/undoediting~UndoEditing} plugin. If not loaded, does nothing.\n\t */\n\tpublic requestUndoOnBackspace(): void {\n\t\tif ( this.editor.plugins.has( 'UndoEditing' ) ) {\n\t\t\tthis._undoOnBackspace = true;\n\t\t}\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/typing\n */\n\nimport { Plugin } from '@ckeditor/ckeditor5-core';\nimport Input from './input.js';\nimport Delete from './delete.js';\n\n/**\n * The typing feature. It handles typing.\n *\n * This is a \"glue\" plugin which loads the {@link module:typing/input~Input} and {@link module:typing/delete~Delete}\n * plugins.\n */\nexport default class Typing extends Plugin {\n\tpublic static get requires() {\n\t\treturn [ Input, Delete ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Typing' 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","/**\n * @license Copyright (c) 2003-2025, 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 typing/utils/getlasttextline\n */\n\nimport type { Model, Range } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Returns the last text line from the given range.\n *\n * \"The last text line\" is understood as text (from one or more text nodes) which is limited either by a parent block\n * or by inline elements (e.g. `<softBreak>`).\n *\n * ```ts\n * const rangeToCheck = model.createRange(\n * \tmodel.createPositionAt( paragraph, 0 ),\n * \tmodel.createPositionAt( paragraph, 'end' )\n * );\n *\n * const { text, range } = getLastTextLine( rangeToCheck, model );\n * ```\n *\n * For model below, the returned `text` will be \"Foo bar baz\" and `range` will be set on whole `<paragraph>` content:\n *\n * ```xml\n * <paragraph>Foo bar baz<paragraph>\n * ```\n *\n * However, in below case, `text` will be set to \"baz\" and `range` will be set only on \"baz\".\n *\n * ```xml\n * <paragraph>Foo<softBreak></softBreak>bar<softBreak></softBreak>baz<paragraph>\n * ```\n */\nexport default function getLastTextLine( range: Range, model: Model ): LastTextLineData {\n\tlet start = range.start;\n\n\tconst text = Array.from( range.getWalker( { ignoreElementEnd: false } ) ).reduce( ( rangeText, { item } ) => {\n\t\t// Trim text to a last occurrence of an inline element and update range start.\n\t\tif ( !( item.is( '$text' ) || item.is( '$textProxy' ) ) ) {\n\t\t\tstart = model.createPositionAfter( item );\n\n\t\t\treturn '';\n\t\t}\n\n\t\treturn rangeText + item.data;\n\t}, '' );\n\n\treturn { text, range: model.createRange( start, range.end ) };\n}\n\n/**\n * The value returned by {@link module:typing/utils/getlasttextline~getLastTextLine}.\n */\nexport type LastTextLineData = {\n\n\t/**\n\t * The text from the text nodes in the last text line.\n\t */\n\ttext: string;\n\n\t/**\n\t * The range set on the text nodes in the last text line.\n\t */\n\trange: Range;\n};\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/textwatcher\n */\n\nimport { ObservableMixin, type ObservableChangeEvent } from '@ckeditor/ckeditor5-utils';\nimport getLastTextLine from './utils/getlasttextline.js';\n\nimport type {\n\tBatch,\n\tModel,\n\tRange,\n\tDocumentChangeEvent,\n\tDocumentSelectionChangeEvent\n} from '@ckeditor/ckeditor5-engine';\n\n/**\n * The text watcher feature.\n *\n * Fires the {@link module:typing/textwatcher~TextWatcher#event:matched:data `matched:data`},\n * {@link module:typing/textwatcher~TextWatcher#event:matched:selection `matched:selection`} and\n * {@link module:typing/textwatcher~TextWatcher#event:unmatched `unmatched`} events on typing or selection changes.\n */\nexport default class TextWatcher extends /* #__PURE__ */ ObservableMixin() {\n\t/**\n\t * The editor's model.\n\t */\n\tpublic readonly model: Model;\n\n\t/**\n\t * The function used to match the text.\n\t *\n\t * The test callback can return 3 values:\n\t *\n\t * * `false` if there is no match,\n\t * * `true` if there is a match,\n\t * * an object if there is a match and we want to pass some additional information to the {@link #event:matched:data} event.\n\t */\n\tpublic testCallback: ( text: string ) => unknown;\n\n\t/**\n\t * Whether there is a match currently.\n\t */\n\tprivate _hasMatch: boolean;\n\n\t/**\n\t * Flag indicating whether the `TextWatcher` instance is enabled or disabled.\n\t * A disabled TextWatcher will not evaluate text.\n\t *\n\t * To disable TextWatcher:\n\t *\n\t * ```ts\n\t * const watcher = new TextWatcher( editor.model, testCallback );\n\t *\n\t * // After this a testCallback will not be called.\n\t * watcher.isEnabled = false;\n\t * ```\n\t */\n\tdeclare public isEnabled: boolean;\n\n\t/**\n\t * Creates a text watcher instance.\n\t *\n\t * @param testCallback See {@link module:typing/textwatcher~TextWatcher#testCallback}.\n\t */\n\tconstructor( model: Model, testCallback: ( text: string ) => unknown ) {\n\t\tsuper();\n\n\t\tthis.model = model;\n\t\tthis.testCallback = testCallback;\n\t\tthis._hasMatch = false;\n\n\t\tthis.set( 'isEnabled', true );\n\n\t\t// Toggle text watching on isEnabled state change.\n\t\tthis.on<ObservableChangeEvent>( 'change:isEnabled', () => {\n\t\t\tif ( this.isEnabled ) {\n\t\t\t\tthis._startListening();\n\t\t\t} else {\n\t\t\t\tthis.stopListening( model.document.selection );\n\t\t\t\tthis.stopListening( model.document );\n\t\t\t}\n\t\t} );\n\n\t\tthis._startListening();\n\t}\n\n\t/**\n\t * Flag indicating whether there is a match currently.\n\t */\n\tpublic get hasMatch(): boolean {\n\t\treturn this._hasMatch;\n\t}\n\n\t/**\n\t * Starts listening to the editor for typing and selection events.\n\t */\n\tprivate _startListening(): void {\n\t\tconst model = this.model;\n\t\tconst document = model.document;\n\n\t\tthis.listenTo<DocumentSelectionChangeEvent>( document.selection, 'change:range', ( evt, { directChange } ) => {\n\t\t\t// Indirect changes (i.e. when the user types or external changes are applied) are handled in the document's change event.\n\t\t\tif ( !directChange ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Act only on collapsed selection.\n\t\t\tif ( !document.selection.isCollapsed ) {\n\t\t\t\tif ( this.hasMatch ) {\n\t\t\t\t\tthis.fire( 'unmatched' );\n\t\t\t\t\tthis._hasMatch = false;\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._evaluateTextBeforeSelection( 'selection' );\n\t\t} );\n\n\t\tthis.listenTo<DocumentChangeEvent>( document, 'change:data', ( evt, batch ) => {\n\t\t\tif ( batch.isUndo || !batch.isLocal ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._evaluateTextBeforeSelection( 'data', { batch } );\n\t\t} );\n\t}\n\n\t/**\n\t * Checks the editor content for matched text.\n\t *\n\t * @fires matched:data\n\t * @fires matched:selection\n\t * @fires unmatched\n\t *\n\t * @param suffix A suffix used for generating the event name.\n\t * @param data Data object for event.\n\t */\n\tprivate _evaluateTextBeforeSelection( suffix: 'data' | 'selection', data: { batch?: Batch } = {} ): void {\n\t\tconst model = this.model;\n\t\tconst document = model.document;\n\t\tconst selection = document.selection;\n\n\t\tconst rangeBeforeSelection = model.createRange( model.createPositionAt( selection.focus!.parent, 0 ), selection.focus! );\n\n\t\tconst { text, range } = getLastTextLine( rangeBeforeSelection, model );\n\n\t\tconst testResult = this.testCallback( text );\n\n\t\tif ( !testResult && this.hasMatch ) {\n\t\t\tthis.fire<TextWatcherUnmatchedEvent>( 'unmatched' );\n\t\t}\n\n\t\tthis._hasMatch = !!testResult;\n\n\t\tif ( testResult ) {\n\t\t\tconst eventData = Object.assign( data, { text, range } );\n\n\t\t\t// If the test callback returns an object with additional data, assign the data as well.\n\t\t\tif ( typeof testResult == 'object' ) {\n\t\t\t\tObject.assign( eventData, testResult );\n\t\t\t}\n\n\t\t\tthis.fire<TextWatcherMatchedEvent>( `matched:${ suffix }`, eventData );\n\t\t}\n\t}\n}\n\nexport type TextWatcherMatchedEvent<TCallbackResult extends Record<string, unknown> = Record<string, unknown>> = {\n\tname: 'matched' | 'matched:data' | 'matched:selection';\n\targs: [ {\n\t\ttext: string;\n\t\trange: Range;\n\t\tbatch?: Batch;\n\t} & TCallbackResult ];\n};\n\n/**\n * Fired whenever the text watcher found a match for data changes.\n *\n * @eventName ~TextWatcher#matched:data\n * @param data Event data.\n * @param data.testResult The additional data returned from the {@link module:typing/textwatcher~TextWatcher#testCallback}.\n */\nexport type TextWatcherMatchedDataEvent<TCallbackResult extends Record<string, unknown>> = {\n\tname: 'matched:data';\n\targs: [ data: TextWatcherMatchedDataEventData & TCallbackResult ];\n};\n\nexport interface TextWatcherMatchedDataEventData {\n\n\t/**\n\t * The full text before selection to which the regexp was applied.\n\t */\n\ttext: string;\n\n\t/**\n\t * The range representing the position of the `data.text`.\n\t */\n\trange: Range;\n\n\tbatch: Batch;\n}\n\n/**\n * Fired whenever the text watcher found a match for selection changes.\n *\n * @eventName ~TextWatcher#matched:selection\n * @param data Event data.\n * @param data.testResult The additional data returned from the {@link module:typing/textwatcher~TextWatcher#testCallback}.\n */\nexport type TextWatcherMatchedSelectionEvent<TCallbackResult extends Record<string, unknown>> = {\n\tname: 'matched:selection';\n\targs: [ data: TextWatcherMatchedSelectionEventData & TCallbackResult ];\n};\n\nexport interface TextWatcherMatchedSelectionEventData {\n\n\t/**\n\t * The full text before selection.\n\t */\n\ttext: string;\n\n\t/**\n\t * The range representing the position of the `data.text`.\n\t */\n\trange: Range;\n}\n\n/**\n * Fired whenever the text does not match anymore. Fired only when the text watcher found a match.\n *\n * @eventName ~TextWatcher#unmatched\n */\nexport type TextWatcherUnmatchedEvent = {\n\tname: 'unmatched';\n\targs: [];\n};\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/twostepcaretmovement\n */\n\nimport { Plugin, type Editor } from '@ckeditor/ckeditor5-core';\n\nimport { keyCodes } from '@ckeditor/ckeditor5-utils';\n\nimport {\n\tMouseObserver,\n\tTouchObserver,\n\ttype DocumentSelection,\n\ttype DocumentSelectionChangeRangeEvent,\n\ttype DomEventData,\n\ttype Model,\n\ttype Position,\n\ttype ViewDocumentArrowKeyEvent,\n\ttype ViewDocumentMouseDownEvent,\n\ttype ViewDocumentSelectionChangeEvent,\n\ttype ViewDocumentTouchStartEvent,\n\ttype ModelInsertContentEvent,\n\ttype ModelDeleteContentEvent\n} from '@ckeditor/ckeditor5-engine';\n\nimport type { ViewDocumentDeleteEvent } from './deleteobserver.js';\n\n/**\n * This plugin enables the two-step caret (phantom) movement behavior for\n * {@link module:typing/twostepcaretmovement~TwoStepCaretMovement#registerAttribute registered attributes}\n * on arrow right (<kbd>→</kbd>) and left (<kbd>←</kbd>) key press.\n *\n * Thanks to this (phantom) caret movement the user is able to type before/after as well as at the\n * beginning/end of an attribute.\n *\n * **Note:** This plugin support right–to–left (Arabic, Hebrew, etc.) content by mirroring its behavior\n * but for the sake of simplicity examples showcase only left–to–right use–cases.\n *\n * # Forward movement\n *\n * ## \"Entering\" an attribute:\n *\n * When this plugin is enabled and registered for the `a` attribute and the selection is right before it\n * (at the attribute boundary), pressing the right arrow key will not move the selection but update its\n * attributes accordingly:\n *\n * * When enabled:\n *\n * ```xml\n * foo{}<$text a=\"true\">bar</$text>\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * foo<$text a=\"true\">{}bar</$text>\n * ```\n *\n * * When disabled:\n *\n * ```xml\n * foo{}<$text a=\"true\">bar</$text>\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * foo<$text a=\"true\">b{}ar</$text>\n * ```\n *\n *\n * ## \"Leaving\" an attribute:\n *\n * * When enabled:\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text>baz\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar</$text>{}baz\n * ```\n *\n * * When disabled:\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text>baz\n * ```\n *\n * \t<kbd>→</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar</$text>b{}az\n * ```\n *\n * # Backward movement\n *\n * * When enabled:\n *\n * ```xml\n * <$text a=\"true\">bar</$text>{}baz\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text>baz\n * ```\n *\n * * When disabled:\n *\n * ```xml\n * <$text a=\"true\">bar</$text>{}baz\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\">ba{}r</$text>b{}az\n * ```\n *\n * # Multiple attributes\n *\n * * When enabled and many attributes starts or ends at the same position:\n *\n * ```xml\n * <$text a=\"true\" b=\"true\">bar</$text>{}baz\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\" b=\"true\">bar{}</$text>baz\n * ```\n *\n * * When enabled and one procedes another:\n *\n * ```xml\n * <$text a=\"true\">bar</$text><$text b=\"true\">{}bar</$text>\n * ```\n *\n * \t<kbd>←</kbd>\n *\n * ```xml\n * <$text a=\"true\">bar{}</$text><$text b=\"true\">bar</$text>\n * ```\n *\n */\nexport default class TwoStepCaretMovement extends Plugin {\n\t/**\n\t * A set of attributes to handle.\n\t */\n\tprivate attributes: Set<string>;\n\n\t/**\n\t * The current UID of the overridden gravity, as returned by\n\t * {@link module:engine/model/writer~Writer#overrideSelectionGravity}.\n\t */\n\tprivate _overrideUid: string | null;\n\n\t/**\n\t * A flag indicating that the automatic gravity restoration should not happen upon the next\n\t * gravity restoration.\n\t * {@link module:engine/model/selection~Selection#event:change:range} event.\n\t */\n\n\tprivate _isNextGravityRestorationSkipped = false;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TwoStepCaretMovement' 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\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis.attributes = new Set();\n\t\tthis._overrideUid = null;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst view = editor.editing.view;\n\t\tconst locale = editor.locale;\n\n\t\tconst modelSelection = model.document.selection;\n\n\t\t// Listen to keyboard events and handle the caret movement according to the 2-step caret logic.\n\t\tthis.listenTo<ViewDocumentArrowKeyEvent>( view.document, 'arrowKey', ( evt, data ) => {\n\t\t\t// This implementation works only for collapsed selection.\n\t\t\tif ( !modelSelection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// When user tries to expand the selection or jump over the whole word or to the beginning/end then\n\t\t\t// two-steps movement is not necessary.\n\t\t\tif ( data.shiftKey || data.altKey || data.ctrlKey ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst arrowRightPressed = data.keyCode == keyCodes.arrowright;\n\t\t\tconst arrowLeftPressed = data.keyCode == keyCodes.arrowleft;\n\n\t\t\t// When neither left or right arrow has been pressed then do noting.\n\t\t\tif ( !arrowRightPressed && !arrowLeftPressed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst contentDirection = locale.contentLanguageDirection;\n\t\t\tlet isMovementHandled = false;\n\n\t\t\tif ( ( contentDirection === 'ltr' && arrowRightPressed ) || ( contentDirection === 'rtl' && arrowLeftPressed ) ) {\n\t\t\t\tisMovementHandled = this._handleForwardMovement( data );\n\t\t\t} else {\n\t\t\t\tisMovementHandled = this._handleBackwardMovement( data );\n\t\t\t}\n\n\t\t\t// Stop the keydown event if the two-step caret movement handled it. Avoid collisions\n\t\t\t// with other features which may also take over the caret movement (e.g. Widget).\n\t\t\tif ( isMovementHandled === true ) {\n\t\t\t\tevt.stop();\n\t\t\t}\n\t\t}, { context: '$text', priority: 'highest' } );\n\n\t\t// The automatic gravity restoration logic.\n\t\tthis.listenTo<DocumentSelectionChangeRangeEvent>( modelSelection, 'change:range', ( evt, data ) => {\n\t\t\t// Skipping the automatic restoration is needed if the selection should change\n\t\t\t// but the gravity must remain overridden afterwards. See the #handleBackwardMovement\n\t\t\t// to learn more.\n\t\t\tif ( this._isNextGravityRestorationSkipped ) {\n\t\t\t\tthis._isNextGravityRestorationSkipped = false;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Skip automatic restore when the gravity is not overridden — simply, there's nothing to restore\n\t\t\t// at this moment.\n\t\t\tif ( !this._isGravityOverridden ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Skip automatic restore when the change is indirect AND the selection is at the attribute boundary.\n\t\t\t// It means that e.g. if the change was external (collaboration) and the user had their\n\t\t\t// selection around the link, its gravity should remain intact in this change:range event.\n\t\t\tif ( !data.directChange && isBetweenDifferentAttributes( modelSelection.getFirstPosition()!, this.attributes ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._restoreGravity();\n\t\t} );\n\n\t\t// Handle a click at the beginning/end of a two-step element.\n\t\tthis._enableClickingAfterNode();\n\n\t\t// Change the attributes of the selection in certain situations after the two-step node was inserted into the document.\n\t\tthis._enableInsertContentSelectionAttributesFixer();\n\n\t\t// Handle removing the content after the two-step node.\n\t\tthis._handleDeleteContentAfterNode();\n\t}\n\n\t/**\n\t * Registers a given attribute for the two-step caret movement.\n\t *\n\t * @param attribute Name of the attribute to handle.\n\t */\n\tpublic registerAttribute( attribute: string ): void {\n\t\tthis.attributes.add( attribute );\n\t}\n\n\t/**\n\t * Updates the document selection and the view according to the two–step caret movement state\n\t * when moving **forwards**. Executed upon `keypress` in the {@link module:engine/view/view~View}.\n\t *\n\t * @internal\n\t * @param eventData Data of the key press.\n\t * @returns `true` when the handler prevented caret movement.\n\t */\n\tpublic _handleForwardMovement( eventData?: DomEventData ): boolean {\n\t\tconst attributes = this.attributes;\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst position = selection.getFirstPosition()!;\n\n\t\t// DON'T ENGAGE 2-SCM if gravity is already overridden. It means that we just entered\n\t\t//\n\t\t// \t\t<paragraph>foo<$text attribute>{}bar</$text>baz</paragraph>\n\t\t//\n\t\t// or left the attribute\n\t\t//\n\t\t// \t\t<paragraph>foo<$text attribute>bar</$text>{}baz</paragraph>\n\t\t//\n\t\t// and the gravity will be restored automatically.\n\t\tif ( this._isGravityOverridden ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// DON'T ENGAGE 2-SCM when the selection is at the beginning of the block AND already has the\n\t\t// attribute:\n\t\t// * when the selection was initially set there using the mouse,\n\t\t// * when the editor has just started\n\t\t//\n\t\t//\t\t<paragraph><$text attribute>{}bar</$text>baz</paragraph>\n\t\t//\n\t\tif ( position.isAtStart && hasAnyAttribute( selection, attributes ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// ENGAGE 2-SCM When at least one of the observed attributes changes its value (incl. starts, ends).\n\t\t//\n\t\t//\t\t<paragraph>foo<$text attribute>bar{}</$text>baz</paragraph>\n\t\t//\t\t<paragraph>foo<$text attribute>bar{}</$text><$text otherAttribute>baz</$text></paragraph>\n\t\t//\t\t<paragraph>foo<$text attribute=1>bar{}</$text><$text attribute=2>baz</$text></paragraph>\n\t\t//\t\t<paragraph>foo{}<$text attribute>bar</$text>baz</paragraph>\n\t\t//\n\t\tif ( isBetweenDifferentAttributes( position, attributes ) ) {\n\t\t\tif ( eventData ) {\n\t\t\t\tpreventCaretMovement( eventData );\n\t\t\t}\n\n\t\t\t// CLEAR 2-SCM attributes if we are at the end of one 2-SCM and before\n\t\t\t// the next one with a different value of the same attribute.\n\t\t\t//\n\t\t\t//\t\t<paragraph>foo<$text attribute=1>bar{}</$text><$text attribute=2>bar</$text>baz</paragraph>\n\t\t\t//\n\t\t\tif (\n\t\t\t\thasAnyAttribute( selection, attributes ) &&\n\t\t\t\tisBetweenDifferentAttributes( position, attributes, true )\n\t\t\t) {\n\t\t\t\tclearSelectionAttributes( model, attributes );\n\t\t\t} else {\n\t\t\t\tthis._overrideGravity();\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Updates the document selection and the view according to the two–step caret movement state\n\t * when moving **backwards**. Executed upon `keypress` in the {@link module:engine/view/view~View}.\n\t *\n\t * @internal\n\t * @param eventData Data of the key press.\n\t * @returns `true` when the handler prevented caret movement\n\t */\n\tpublic _handleBackwardMovement( eventData?: DomEventData ): boolean {\n\t\tconst attributes = this.attributes;\n\t\tconst model = this.editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst position = selection.getFirstPosition()!;\n\n\t\t// When the gravity is already overridden (by this plugin), it means we are on the two-step position.\n\t\t// Prevent the movement, restore the gravity and update selection attributes.\n\t\t//\n\t\t//\t\t<paragraph>foo<$text attribute=1>bar</$text><$text attribute=2>{}baz</$text></paragraph>\n\t\t//\t\t<paragraph>foo<$text attribute>bar</$text><$text otherAttribute>{}baz</$text></paragraph>\n\t\t//\t\t<paragraph>foo<$text attribute>{}bar</$text>baz</paragraph>\n\t\t//\t\t<paragraph>foo<$text attribute>bar</$text>{}baz</paragraph>\n\t\t//\n\t\tif ( this._isGravityOverridden ) {\n\t\t\tif ( eventData ) {\n\t\t\t\tpreventCaretMovement( eventData );\n\t\t\t}\n\n\t\t\tthis._restoreGravity();\n\n\t\t\t// CLEAR 2-SCM attributes if we are at the end of one 2-SCM and before\n\t\t\t// the next one with a different value of the same attribute.\n\t\t\t//\n\t\t\t//\t\t<paragraph>foo<$text attribute=1>bar</$text><$text attribute=2>{}bar</$text>baz</paragraph>\n\t\t\t//\n\t\t\tif ( isBetweenDifferentAttributes( position, attributes, true ) ) {\n\t\t\t\tclearSelectionAttributes( model, attributes );\n\t\t\t} else {\n\t\t\t\tsetSelectionAttributesFromTheNodeBefore( model, attributes, position );\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\t// REMOVE SELECTION ATTRIBUTE when restoring gravity towards a non-existent content at the\n\t\t\t// beginning of the block.\n\t\t\t//\n\t\t\t// \t\t<paragraph>{}<$text attribute>bar</$text></paragraph>\n\t\t\t//\n\t\t\tif ( position.isAtStart ) {\n\t\t\t\tif ( hasAnyAttribute( selection, attributes ) ) {\n\t\t\t\t\tif ( eventData ) {\n\t\t\t\t\t\tpreventCaretMovement( eventData );\n\t\t\t\t\t}\n\n\t\t\t\t\tsetSelectionAttributesFromTheNodeBefore( model, attributes, position );\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// SET 2-SCM attributes if we are between nodes with the same attribute but with different values.\n\t\t\t//\n\t\t\t//\t\t<paragraph>foo<$text attribute=1>bar</$text>[]<$text attribute=2>bar</$text>baz</paragraph>\n\t\t\t//\n\t\t\tif (\n\t\t\t\t!hasAnyAttribute( selection, attributes ) &&\n\t\t\t\tisBetweenDifferentAttributes( position, attributes, true )\n\t\t\t) {\n\t\t\t\tif ( eventData ) {\n\t\t\t\t\tpreventCaretMovement( eventData );\n\t\t\t\t}\n\n\t\t\t\tsetSelectionAttributesFromTheNodeBefore( model, attributes, position );\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// When we are moving from natural gravity, to the position of the 2SCM, we need to override the gravity,\n\t\t\t// and make sure it won't be restored. Unless it's at the end of the block and an observed attribute.\n\t\t\t// We need to check if the caret is a one position before the attribute boundary:\n\t\t\t//\n\t\t\t//\t\t<paragraph>foo<$text attribute=1>bar</$text><$text attribute=2>b{}az</$text></paragraph>\n\t\t\t//\t\t<paragraph>foo<$text attribute>bar</$text><$text otherAttribute>b{}az</$text></paragraph>\n\t\t\t//\t\t<paragraph>foo<$text attribute>b{}ar</$text>baz</paragraph>\n\t\t\t//\t\t<paragraph>foo<$text attribute>bar</$text>b{}az</paragraph>\n\t\t\t//\n\t\t\tif ( isStepAfterAnyAttributeBoundary( position, attributes ) ) {\n\t\t\t\t// ENGAGE 2-SCM if the selection has no attribute. This may happen when the user\n\t\t\t\t// left the attribute using a FORWARD 2-SCM.\n\t\t\t\t//\n\t\t\t\t// \t\t<paragraph><$text attribute>bar</$text>{}</paragraph>\n\t\t\t\t//\n\t\t\t\tif (\n\t\t\t\t\tposition.isAtEnd &&\n\t\t\t\t\t!hasAnyAttribute( selection, attributes ) &&\n\t\t\t\t\tisBetweenDifferentAttributes( position, attributes )\n\t\t\t\t) {\n\t\t\t\t\tif ( eventData ) {\n\t\t\t\t\t\tpreventCaretMovement( eventData );\n\t\t\t\t\t}\n\n\t\t\t\t\tsetSelectionAttributesFromTheNodeBefore( model, attributes, position );\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Skip the automatic gravity restore upon the next selection#change:range event.\n\t\t\t\t// If not skipped, it would automatically restore the gravity, which should remain\n\t\t\t\t// overridden.\n\t\t\t\tthis._isNextGravityRestorationSkipped = true;\n\t\t\t\tthis._overrideGravity();\n\n\t\t\t\t// Don't return \"true\" here because we didn't call _preventCaretMovement.\n\t\t\t\t// Returning here will destabilize the filler logic, which also listens to\n\t\t\t\t// keydown (and the event would be stopped).\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * Starts listening to {@link module:engine/view/document~Document#event:mousedown} and\n\t * {@link module:engine/view/document~Document#event:selectionChange} and puts the selection before/after a 2-step node\n\t * if clicked at the beginning/ending of the 2-step node.\n\t *\n\t * The purpose of this action is to allow typing around the 2-step node directly after a click.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5/issues/1016.\n\t */\n\tprivate _enableClickingAfterNode(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst document = editor.editing.view.document;\n\n\t\teditor.editing.view.addObserver( MouseObserver );\n\t\teditor.editing.view.addObserver( TouchObserver );\n\n\t\tlet touched = false;\n\t\tlet clicked = false;\n\n\t\t// This event should be fired before selection on mobile devices.\n\t\tthis.listenTo<ViewDocumentTouchStartEvent>( document, 'touchstart', () => {\n\t\t\tclicked = false;\n\t\t\ttouched = true;\n\t\t} );\n\n\t\t// Track mouse click event.\n\t\t// Keep in mind that it's often called after the selection change on iOS devices.\n\t\t// On the Android devices, it's called before the selection change.\n\t\t// That's why we watch `touchstart` event on mobile and set `touched` flag, as it's fired before the selection change.\n\t\t// See more: https://github.com/ckeditor/ckeditor5/issues/17171\n\t\tthis.listenTo<ViewDocumentMouseDownEvent>( document, 'mousedown', () => {\n\t\t\tclicked = true;\n\t\t} );\n\n\t\t// When the selection has changed...\n\t\tthis.listenTo<ViewDocumentSelectionChangeEvent>( document, 'selectionChange', () => {\n\t\t\tconst attributes = this.attributes;\n\n\t\t\tif ( !clicked && !touched ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// ...and it was caused by the click or touch...\n\t\t\tclicked = false;\n\t\t\ttouched = false;\n\n\t\t\t// ...and no text is selected...\n\t\t\tif ( !selection.isCollapsed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// ...and clicked text is the 2-step node...\n\t\t\tif ( !hasAnyAttribute( selection, attributes ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst position = selection.getFirstPosition()!;\n\n\t\t\tif ( !isBetweenDifferentAttributes( position, attributes ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// The selection at the start of a block would use surrounding attributes\n\t\t\t// from text after the selection so just clear 2-SCM attributes.\n\t\t\t//\n\t\t\t// Also, clear attributes for selection between same attribute with different values.\n\t\t\tif (\n\t\t\t\tposition.isAtStart ||\n\t\t\t\tisBetweenDifferentAttributes( position, attributes, true )\n\t\t\t) {\n\t\t\t\tclearSelectionAttributes( model, attributes );\n\t\t\t}\n\t\t\telse if ( !this._isGravityOverridden ) {\n\t\t\t\tthis._overrideGravity();\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Starts listening to {@link module:engine/model/model~Model#event:insertContent} and corrects the model\n\t * selection attributes if the selection is at the end of a two-step node after inserting the content.\n\t *\n\t * The purpose of this action is to improve the overall UX because the user is no longer \"trapped\" by the\n\t * two-step attribute of the selection, and they can type a \"clean\" (`linkHref`–less) text right away.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5/issues/6053.\n\t */\n\tprivate _enableInsertContentSelectionAttributesFixer(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst attributes = this.attributes;\n\n\t\tthis.listenTo<ModelInsertContentEvent>( model, 'insertContent', () => {\n\t\t\tconst position = selection.getFirstPosition()!;\n\n\t\t\tif (\n\t\t\t\thasAnyAttribute( selection, attributes ) &&\n\t\t\t\tisBetweenDifferentAttributes( position, attributes )\n\t\t\t) {\n\t\t\t\tclearSelectionAttributes( model, attributes );\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\t}\n\n\t/**\n\t * Starts listening to {@link module:engine/model/model~Model#deleteContent} and checks whether\n\t * removing a content right after the tow-step attribute.\n\t *\n\t * If so, the selection should not preserve the two-step attribute. However, if\n\t * the {@link module:typing/twostepcaretmovement~TwoStepCaretMovement} plugin is active and\n\t * the selection has the two-step attribute due to overridden gravity (at the end), the two-step attribute should stay untouched.\n\t *\n\t * The purpose of this action is to allow removing the link text and keep the selection outside the link.\n\t *\n\t * See https://github.com/ckeditor/ckeditor5/issues/7521.\n\t */\n\tprivate _handleDeleteContentAfterNode(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst selection = model.document.selection;\n\t\tconst view = editor.editing.view;\n\n\t\tlet isBackspace = false;\n\t\tlet shouldPreserveAttributes = false;\n\n\t\t// Detect pressing `Backspace`.\n\t\tthis.listenTo<ViewDocumentDeleteEvent>( view.document, 'delete', ( evt, data ) => {\n\t\t\tisBackspace = data.direction === 'backward';\n\t\t}, { priority: 'high' } );\n\n\t\t// Before removing the content, check whether the selection is inside a two-step attribute.\n\t\t// If so, we want to preserve those attributes.\n\t\tthis.listenTo<ModelDeleteContentEvent>( model, 'deleteContent', () => {\n\t\t\tif ( !isBackspace ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst position = selection.getFirstPosition()!;\n\n\t\t\tshouldPreserveAttributes = hasAnyAttribute( selection, this.attributes ) &&\n\t\t\t\t!isStepAfterAnyAttributeBoundary( position, this.attributes );\n\t\t}, { priority: 'high' } );\n\n\t\t// After removing the content, check whether the current selection should preserve the `linkHref` attribute.\n\t\tthis.listenTo<ModelDeleteContentEvent>( model, 'deleteContent', () => {\n\t\t\tif ( !isBackspace ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tisBackspace = false;\n\n\t\t\t// Do not escape two-step attribute if it was inside it before content deletion.\n\t\t\tif ( shouldPreserveAttributes ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Use `model.enqueueChange()` in order to execute the callback at the end of the changes process.\n\t\t\teditor.model.enqueueChange( () => {\n\t\t\t\tconst position = selection.getFirstPosition()!;\n\n\t\t\t\tif (\n\t\t\t\t\thasAnyAttribute( selection, this.attributes ) &&\n\t\t\t\t\tisBetweenDifferentAttributes( position, this.attributes )\n\t\t\t\t) {\n\t\t\t\t\tif ( position.isAtStart || isBetweenDifferentAttributes( position, this.attributes, true ) ) {\n\t\t\t\t\t\tclearSelectionAttributes( model, this.attributes );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( !this._isGravityOverridden ) {\n\t\t\t\t\t\tthis._overrideGravity();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}, { priority: 'low' } );\n\t}\n\n\t/**\n\t * `true` when the gravity is overridden for the plugin.\n\t */\n\tprivate get _isGravityOverridden(): boolean {\n\t\treturn !!this._overrideUid;\n\t}\n\n\t/**\n\t * Overrides the gravity using the {@link module:engine/model/writer~Writer model writer}\n\t * and stores the information about this fact in the {@link #_overrideUid}.\n\t *\n\t * A shorthand for {@link module:engine/model/writer~Writer#overrideSelectionGravity}.\n\t */\n\tprivate _overrideGravity(): void {\n\t\tthis._overrideUid = this.editor.model.change( writer => {\n\t\t\treturn writer.overrideSelectionGravity();\n\t\t} );\n\t}\n\n\t/**\n\t * Restores the gravity using the {@link module:engine/model/writer~Writer model writer}.\n\t *\n\t * A shorthand for {@link module:engine/model/writer~Writer#restoreSelectionGravity}.\n\t */\n\tprivate _restoreGravity(): void {\n\t\tthis.editor.model.change( writer => {\n\t\t\twriter.restoreSelectionGravity( this._overrideUid! );\n\t\t\tthis._overrideUid = null;\n\t\t} );\n\t}\n}\n\n/**\n * Checks whether the selection has any of given attributes.\n */\nfunction hasAnyAttribute( selection: DocumentSelection, attributes: Set<string> ): boolean {\n\tfor ( const observedAttribute of attributes ) {\n\t\tif ( selection.hasAttribute( observedAttribute ) ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Applies the given attributes to the current selection using using the\n * values from the node before the current position. Uses\n * the {@link module:engine/model/writer~Writer model writer}.\n */\nfunction setSelectionAttributesFromTheNodeBefore( model: Model, attributes: Set<string>, position: Position ) {\n\tconst nodeBefore = position.nodeBefore;\n\n\tmodel.change( writer => {\n\t\tif ( nodeBefore ) {\n\t\t\tconst attributes: Array<[string, unknown]> = [];\n\t\t\tconst isInlineObject = model.schema.isObject( nodeBefore ) && model.schema.isInline( nodeBefore );\n\n\t\t\tfor ( const [ key, value ] of nodeBefore.getAttributes() ) {\n\t\t\t\tif (\n\t\t\t\t\tmodel.schema.checkAttribute( '$text', key ) &&\n\t\t\t\t\t( !isInlineObject || model.schema.getAttributeProperties( key ).copyFromObject !== false )\n\t\t\t\t) {\n\t\t\t\t\tattributes.push( [ key, value ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twriter.setSelectionAttribute( attributes );\n\t\t} else {\n\t\t\twriter.removeSelectionAttribute( attributes );\n\t\t}\n\t} );\n}\n\n/**\n * Removes 2-SCM attributes from the selection.\n */\nfunction clearSelectionAttributes( model: Model, attributes: Set<string> ) {\n\tmodel.change( writer => {\n\t\twriter.removeSelectionAttribute( attributes );\n\t} );\n}\n\n/**\n * Prevents the caret movement in the view by calling `preventDefault` on the event data.\n *\n * @alias data.preventDefault\n */\nfunction preventCaretMovement( data: DomEventData ) {\n\tdata.preventDefault();\n}\n\n/**\n * Checks whether the step before `isBetweenDifferentAttributes()`.\n */\nfunction isStepAfterAnyAttributeBoundary( position: Position, attributes: Set<string> ): boolean {\n\tconst positionBefore = position.getShiftedBy( -1 );\n\treturn isBetweenDifferentAttributes( positionBefore, attributes );\n}\n\n/**\n * Checks whether the given position is between different values of given attributes.\n */\nfunction isBetweenDifferentAttributes( position: Position, attributes: Set<string>, isStrict: boolean = false ): boolean {\n\tconst { nodeBefore, nodeAfter } = position;\n\n\tfor ( const observedAttribute of attributes ) {\n\t\tconst attrBefore = nodeBefore ? nodeBefore.getAttribute( observedAttribute ) : undefined;\n\t\tconst attrAfter = nodeAfter ? nodeAfter.getAttribute( observedAttribute ) : undefined;\n\n\t\tif ( isStrict && ( attrBefore === undefined || attrAfter === undefined ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( attrAfter !== attrBefore ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/texttransformation\n */\n\nimport {\n\tPlugin,\n\ttype Editor\n} from '@ckeditor/ckeditor5-core';\n\nimport type { Position } from '@ckeditor/ckeditor5-engine';\n\nimport TextWatcher, { type TextWatcherMatchedDataEvent } from './textwatcher.js';\nimport type { TextTransformationConfig, TextTransformationDescription } from './typingconfig.js';\nimport type Delete from './delete.js';\n\nimport { escapeRegExp } from 'es-toolkit/compat';\n\n// All named transformations.\nconst TRANSFORMATIONS: Record<string, TextTransformationDescription> = {\n\t// Common symbols:\n\tcopyright: { from: '(c)', to: '©' },\n\tregisteredTrademark: { from: '(r)', to: '®' },\n\ttrademark: { from: '(tm)', to: '™' },\n\n\t// Mathematical:\n\toneHalf: { from: /(^|[^/a-z0-9])(1\\/2)([^/a-z0-9])$/i, to: [ null, '½', null ] },\n\toneThird: { from: /(^|[^/a-z0-9])(1\\/3)([^/a-z0-9])$/i, to: [ null, '⅓', null ] },\n\ttwoThirds: { from: /(^|[^/a-z0-9])(2\\/3)([^/a-z0-9])$/i, to: [ null, '⅔', null ] },\n\toneForth: { from: /(^|[^/a-z0-9])(1\\/4)([^/a-z0-9])$/i, to: [ null, '¼', null ] },\n\tthreeQuarters: { from: /(^|[^/a-z0-9])(3\\/4)([^/a-z0-9])$/i, to: [ null, '¾', null ] },\n\tlessThanOrEqual: { from: '<=', to: '≤' },\n\tgreaterThanOrEqual: { from: '>=', to: '≥' },\n\tnotEqual: { from: '!=', to: '≠' },\n\tarrowLeft: { from: '<-', to: '←' },\n\tarrowRight: { from: '->', to: '→' },\n\n\t// Typography:\n\thorizontalEllipsis: { from: '...', to: '…' },\n\tenDash: { from: /(^| )(--)( )$/, to: [ null, '–', null ] },\n\temDash: { from: /(^| )(---)( )$/, to: [ null, '—', null ] },\n\t// Quotations:\n\t// English, US\n\tquotesPrimary: { from: buildQuotesRegExp( '\"' ), to: [ null, '“', null, '”' ] },\n\tquotesSecondary: { from: buildQuotesRegExp( '\\'' ), to: [ null, '‘', null, '’' ] },\n\n\t// English, UK\n\tquotesPrimaryEnGb: { from: buildQuotesRegExp( '\\'' ), to: [ null, '‘', null, '’' ] },\n\tquotesSecondaryEnGb: { from: buildQuotesRegExp( '\"' ), to: [ null, '“', null, '”' ] },\n\n\t// Polish\n\tquotesPrimaryPl: { from: buildQuotesRegExp( '\"' ), to: [ null, '„', null, '”' ] },\n\tquotesSecondaryPl: { from: buildQuotesRegExp( '\\'' ), to: [ null, '‚', null, '’' ] }\n};\n\n// Transformation groups.\nconst TRANSFORMATION_GROUPS: Record<string, Array<string>> = {\n\tsymbols: [ 'copyright', 'registeredTrademark', 'trademark' ],\n\tmathematical: [\n\t\t'oneHalf', 'oneThird', 'twoThirds', 'oneForth', 'threeQuarters',\n\t\t'lessThanOrEqual', 'greaterThanOrEqual', 'notEqual',\n\t\t'arrowLeft', 'arrowRight'\n\t],\n\ttypography: [ 'horizontalEllipsis', 'enDash', 'emDash' ],\n\tquotes: [ 'quotesPrimary', 'quotesSecondary' ]\n};\n\n// A set of default transformations provided by the feature.\nconst DEFAULT_TRANSFORMATIONS = [\n\t'symbols',\n\t'mathematical',\n\t'typography',\n\t'quotes'\n];\n\n/**\n * The text transformation plugin.\n */\nexport default class TextTransformation extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ 'Delete', 'Input' ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'TextTransformation' 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\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'typing', {\n\t\t\ttransformations: {\n\t\t\t\tinclude: DEFAULT_TRANSFORMATIONS\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst model = this.editor.model;\n\t\tconst modelSelection = model.document.selection;\n\n\t\tmodelSelection.on( 'change:range', () => {\n\t\t\t// Disable plugin when selection is inside a code block.\n\t\t\tthis.isEnabled = !modelSelection.anchor!.parent.is( 'element', 'codeBlock' );\n\t\t} );\n\n\t\tthis._enableTransformationWatchers();\n\t}\n\n\t/**\n\t * Create new TextWatcher listening to the editor for typing and selection events.\n\t */\n\tprivate _enableTransformationWatchers(): void {\n\t\tconst editor = this.editor;\n\t\tconst model = editor.model;\n\t\tconst deletePlugin: Delete = editor.plugins.get( 'Delete' );\n\t\tconst normalizedTransformations = normalizeTransformations( editor.config.get( 'typing.transformations' )! );\n\n\t\tconst testCallback = ( text: string ) => {\n\t\t\tfor ( const normalizedTransformation of normalizedTransformations ) {\n\t\t\t\tconst from = normalizedTransformation.from;\n\t\t\t\tconst match = from.test( text );\n\n\t\t\t\tif ( match ) {\n\t\t\t\t\treturn { normalizedTransformation };\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst watcher = new TextWatcher( editor.model, testCallback );\n\n\t\twatcher.on<TextWatcherMatchedDataEvent<{\n\t\t\tnormalizedTransformation: NormalizedTransformationConfig;\n\t\t}>>( 'matched:data', ( evt, data ) => {\n\t\t\tif ( !data.batch.isTyping ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { from, to } = data.normalizedTransformation;\n\n\t\t\tconst matches = from.exec( data.text )!;\n\t\t\tconst replaces = to( matches.slice( 1 ) );\n\n\t\t\tconst matchedRange = data.range;\n\n\t\t\tlet changeIndex = matches.index;\n\n\t\t\tmodel.enqueueChange( writer => {\n\t\t\t\tfor ( let i = 1; i < matches.length; i++ ) {\n\t\t\t\t\tconst match = matches[ i ];\n\t\t\t\t\tconst replaceWith = replaces[ i - 1 ];\n\n\t\t\t\t\tif ( replaceWith == null ) {\n\t\t\t\t\t\tchangeIndex += match.length;\n\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst replacePosition = matchedRange.start.getShiftedBy( changeIndex );\n\t\t\t\t\tconst replaceRange = model.createRange( replacePosition, replacePosition.getShiftedBy( match.length ) );\n\t\t\t\t\tconst attributes = getTextAttributesAfterPosition( replacePosition );\n\n\t\t\t\t\tmodel.insertContent( writer.createText( replaceWith, attributes ), replaceRange );\n\n\t\t\t\t\tchangeIndex += replaceWith.length;\n\t\t\t\t}\n\n\t\t\t\tmodel.enqueueChange( () => {\n\t\t\t\t\tdeletePlugin.requestUndoOnBackspace();\n\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\n\t\twatcher.bind( 'isEnabled' ).to( this );\n\t}\n}\n\n/**\n * Normalizes the configuration `from` parameter value.\n * The normalized value for the `from` parameter is a RegExp instance. If the passed `from` is already a RegExp instance,\n * it is returned unchanged.\n */\nfunction normalizeFrom( from: string | RegExp ): RegExp {\n\tif ( typeof from == 'string' ) {\n\t\treturn new RegExp( `(${ escapeRegExp( from ) })$` );\n\t}\n\n\t// `from` is already a regular expression.\n\treturn from;\n}\n\n/**\n * Normalizes the configuration `to` parameter value.\n * The normalized value for the `to` parameter is a function that takes an array and returns an array. See more in the\n * configuration description. If the passed `to` is already a function, it is returned unchanged.\n */\nfunction normalizeTo( to: TextTransformationDescription[ 'to' ] ) {\n\tif ( typeof to == 'string' ) {\n\t\treturn () => [ to ];\n\t} else if ( to instanceof Array ) {\n\t\treturn () => to;\n\t}\n\n\t// `to` is already a function.\n\treturn to;\n}\n\n/**\n * For given `position` returns attributes for the text that is after that position.\n * The text can be in the same text node as the position (`foo[]bar`) or in the next text node (`foo[]<$text bold=\"true\">bar</$text>`).\n */\nfunction getTextAttributesAfterPosition( position: Position ) {\n\tconst textNode = position.textNode ? position.textNode : position.nodeAfter;\n\n\treturn textNode!.getAttributes();\n}\n\n/**\n * Returns a RegExp pattern string that detects a sentence inside a quote.\n *\n * @param quoteCharacter The character to create a pattern for.\n */\nfunction buildQuotesRegExp( quoteCharacter: string ): RegExp {\n\treturn new RegExp( `(^|\\\\s)(${ quoteCharacter })([^${ quoteCharacter }]*)(${ quoteCharacter })$` );\n}\n\n/**\n * Reads text transformation config and returns normalized array of transformations objects.\n */\nfunction normalizeTransformations( config: TextTransformationConfig ): Array<NormalizedTransformationConfig> {\n\tconst extra = config.extra || [];\n\tconst remove = config.remove || [];\n\tconst isNotRemoved = ( transformation: TextTransformationDescription | string ) => !remove.includes( transformation );\n\n\tconst configured = config.include.concat( extra ).filter( isNotRemoved );\n\n\treturn expandGroupsAndRemoveDuplicates( configured )\n\t\t.filter( isNotRemoved ) // Filter out 'remove' transformations as they might be set in group.\n\t\t.map( transformation => (\n\t\t\ttypeof transformation == 'string' && TRANSFORMATIONS[ transformation ] ? TRANSFORMATIONS[ transformation ] : transformation )\n\t\t)\n\t\t// Filter out transformations set as string that has not been found.\n\t\t.filter( ( transformation ): transformation is TextTransformationDescription => typeof transformation === 'object' )\n\t\t.map( transformation => ( {\n\t\t\tfrom: normalizeFrom( transformation.from ),\n\t\t\tto: normalizeTo( transformation.to )\n\t\t} ) );\n}\n\n/**\n * Reads definitions and expands named groups if needed to transformation names.\n * This method also removes duplicated named transformations if any.\n */\nfunction expandGroupsAndRemoveDuplicates(\n\tdefinitions: Array<TextTransformationDescription | string>\n): Array<TextTransformationDescription | string> {\n\t// Set is using to make sure that transformation names are not duplicated.\n\tconst definedTransformations = new Set<TextTransformationDescription | string>();\n\n\tfor ( const transformationOrGroup of definitions ) {\n\t\tif ( typeof transformationOrGroup == 'string' && TRANSFORMATION_GROUPS[ transformationOrGroup ] ) {\n\t\t\tfor ( const transformation of TRANSFORMATION_GROUPS[ transformationOrGroup ] ) {\n\t\t\t\tdefinedTransformations.add( transformation );\n\t\t\t}\n\t\t} else {\n\t\t\tdefinedTransformations.add( transformationOrGroup );\n\t\t}\n\t}\n\n\treturn Array.from( definedTransformations );\n}\n\ntype NormalizedTransformationConfig = {\n\tfrom: RegExp;\n\tto: ( matches: Array<string> ) => Array<string | null>;\n};\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/utils/findattributerange\n */\n\nimport type { Position, Model, Range } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Returns a model range that covers all consecutive nodes with the same `attributeName` and its `value`\n * that intersect the given `position`.\n *\n * It can be used e.g. to get the entire range on which the `linkHref` attribute needs to be changed when having a\n * selection inside a link.\n *\n * @param position The start position.\n * @param attributeName The attribute name.\n * @param value The attribute value.\n * @param model The model instance.\n * @returns The link range.\n */\nexport default function findAttributeRange(\n\tposition: Position,\n\tattributeName: string,\n\tvalue: unknown,\n\tmodel: Model\n): Range {\n\treturn model.createRange(\n\t\tfindAttributeRangeBound( position, attributeName, value, true, model ),\n\t\tfindAttributeRangeBound( position, attributeName, value, false, model )\n\t);\n}\n\n/**\n * Walks forward or backward (depends on the `lookBack` flag), node by node, as long as they have the same attribute value\n * and returns a position just before or after (depends on the `lookBack` flag) the last matched node.\n *\n * @param position The start position.\n * @param attributeName The attribute name.\n * @param value The attribute value.\n * @param lookBack Whether the walk direction is forward (`false`) or backward (`true`).\n * @returns The position just before the last matched node.\n */\nexport function findAttributeRangeBound(\n\tposition: Position,\n\tattributeName: string,\n\tvalue: unknown,\n\tlookBack: boolean,\n\tmodel: Model\n): Position {\n\t// Get node before or after position (depends on `lookBack` flag).\n\t// When position is inside text node then start searching from text node.\n\tlet node = position.textNode || ( lookBack ? position.nodeBefore : position.nodeAfter );\n\n\tlet lastNode = null;\n\n\twhile ( node && node.getAttribute( attributeName ) == value ) {\n\t\tlastNode = node;\n\t\tnode = lookBack ? node.previousSibling : node.nextSibling;\n\t}\n\n\treturn lastNode ? model.createPositionAt( lastNode, lookBack ? 'before' : 'after' ) : position;\n}\n","/**\n * @license Copyright (c) 2003-2025, 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 typing/utils/inlinehighlight\n */\n\nimport findAttributeRange from './findattributerange.js';\nimport type { Editor } from '@ckeditor/ckeditor5-core';\nimport type { ViewElement } from '@ckeditor/ckeditor5-engine';\n\n/**\n * Adds a visual highlight style to an attribute element in which the selection is anchored.\n * Together with two-step caret movement, they indicate that the user is typing inside the element.\n *\n * Highlight is turned on by adding the given class to the attribute element in the view:\n *\n * * The class is removed before the conversion has started, as callbacks added with the `'highest'` priority\n * to {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher} events.\n * * The class is added in the view post fixer, after other changes in the model tree were converted to the view.\n *\n * This way, adding and removing the highlight does not interfere with conversion.\n *\n * Usage:\n *\n * ```ts\n * import inlineHighlight from '@ckeditor/ckeditor5-typing/src/utils/inlinehighlight';\n *\n * // Make `ck-link_selected` class be applied on an `a` element\n * // whenever the corresponding `linkHref` attribute element is selected.\n * inlineHighlight( editor, 'linkHref', 'a', 'ck-link_selected' );\n * ```\n *\n * @param editor The editor instance.\n * @param attributeName The attribute name to check.\n * @param tagName The tagName of a view item.\n * @param className The class name to apply in the view.\n */\nexport default function inlineHighlight(\n\teditor: Editor,\n\tattributeName: string,\n\ttagName: string,\n\tclassName: string\n): void {\n\tconst view = editor.editing.view;\n\tconst highlightedElements = new Set<ViewElement>();\n\n\t// Adding the class.\n\tview.document.registerPostFixer( writer => {\n\t\tconst selection = editor.model.document.selection;\n\t\tlet changed = false;\n\n\t\tif ( selection.hasAttribute( attributeName ) ) {\n\t\t\tconst modelRange = findAttributeRange(\n\t\t\t\tselection.getFirstPosition()!,\n\t\t\t\tattributeName,\n\t\t\t\tselection.getAttribute( attributeName ),\n\t\t\t\teditor.model\n\t\t\t);\n\t\t\tconst viewRange = editor.editing.mapper.toViewRange( modelRange );\n\n\t\t\t// There might be multiple view elements in the `viewRange`, for example, when the `a` element is\n\t\t\t// broken by a UIElement.\n\t\t\tfor ( const item of viewRange.getItems() ) {\n\t\t\t\tif ( item.is( 'element', tagName ) && !item.hasClass( className ) ) {\n\t\t\t\t\twriter.addClass( className, item );\n\t\t\t\t\thighlightedElements.add( item );\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t} );\n\n\t// Removing the class.\n\teditor.conversion.for( 'editingDowncast' ).add( dispatcher => {\n\t\t// Make sure the highlight is removed on every possible event, before conversion is started.\n\t\tdispatcher.on( 'insert', removeHighlight, { priority: 'highest' } );\n\t\tdispatcher.on( 'remove', removeHighlight, { priority: 'highest' } );\n\t\tdispatcher.on( 'attribute', removeHighlight, { priority: 'highest' } );\n\t\tdispatcher.on( 'selection', removeHighlight, { priority: 'highest' } );\n\n\t\tfunction removeHighlight() {\n\t\t\tview.change( writer => {\n\t\t\t\tfor ( const item of highlightedElements.values() ) {\n\t\t\t\t\twriter.removeClass( className, item );\n\t\t\t\t\thighlightedElements.delete( item );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t} );\n}\n"]}