@ckeditor/ckeditor5-find-and-replace 46.0.0-alpha.3 → 46.0.0-alpha.5
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 +1 -1
- package/package.json +6 -6
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.js","../src/ui/findandreplaceformview.ts","../src/findandreplaceui.ts","../src/findcommand.ts","../src/findandreplacestate.ts","../src/replacecommandbase.ts","../src/replacecommand.ts","../src/replaceallcommand.ts","../src/findnextcommand.ts","../src/findpreviouscommand.ts","../src/findandreplaceutils.ts","../src/findandreplaceediting.ts","../src/findandreplace.ts"],"names":["FindAndReplaceFormView","View","children","_findInputView","_replaceInputView","_findButtonView","_findPrevButtonView","_findNextButtonView","_advancedOptionsCollapsibleView","_matchCaseSwitchView","_wholeWordsOnlySwitchView","_replaceButtonView","_replaceAllButtonView","_inputsDivView","_actionButtonsDivView","_focusTracker","_keystrokes","_focusables","focusCycler","locale","t","createCollection","set","bind","to","matchCount","isDirty","_createInputField","_createButton","label","class","icon","IconPreviousArrow","keystroke","tooltip","_createInputsDiv","_createMatchCaseSwitch","_createWholeWordsOnlySwitch","_createAdvancedOptionsCollapsible","withText","_createActionButtonsDiv","FocusTracker","KeystrokeHandler","ViewCollection","FocusCycler","focusables","focusTracker","keystrokeHandler","actions","focusPrevious","focusNext","addMany","setTemplate","tag","attributes","tabindex","render","submitHandler","view","_initFocusCycling","_initKeystrokeHandling","destroy","focus","direction","focusLast","focusFirst","reset","errorText","_textToFind","fieldView","element","value","_textToReplace","inputsDivView","on","delegate","findPrevious","findNext","_injectFindResultsCounter","replace","resultsFound","isEnabled","isFocused","_onFindButtonExecute","fire","searchText","matchCase","_matchCase","wholeWords","_wholeWordsOnly","bindTemplate","resultsCounterView","highlightOffset","if","text","updateFindInputPadding","inputElement","isVisible","counterWidth","Rect","width","paddingPropertyName","uiLanguageDirection","style","priority","template","push","collapsible","CollapsibleView","isCollapsed","actionsDivView","replaceAll","replaceText","matchCaseSwitchButton","SwitchButtonView","wholeWordsOnlySwitchButton","childViews","buttonView","forEach","v","add","stopPropagation","data","stopPropagationAndPreventDefault","preventDefault","listenTo","event","target","_areCommandsEnabled","options","button","ButtonView","className","labeledInput","LabeledFieldView","createLabeledInputText","FindAndReplaceUI","Plugin","requires","Dialog","pluginName","isOfficialPlugin","formView","editor","config","define","init","isUiUsingDropdown","get","findCommand","commands","ui","componentFactory","_createDropdown","_createDialogButtonForToolbar","keystrokes","cancelEvent","DropdownView","dropdownButtonView","isOn","plugins","_createDialogButtonForMenuBar","accessibility","addKeystrokeInfos","dropdownView","createDropdown","once","_createFormView","FormHeaderView","panelView","name","isOpen","_setupFormView","IconFindReplace","dialog","id","hide","_showDialog","MenuBarMenuListItemButtonView","dialogPlugin","role","isToggleable","ButtonClass","show","title","content","position","DialogViewPosition","EDITOR_TOP_SIDE","onShow","onHide","CssTransitionDisablerMixin","findAndReplaceEditing","editingState","state","results","length","findNextCommand","findPreviousCommand","replaceCommand","replaceAllCommand","evt","disableCssTransitions","select","enableCssTransitions","FindCommand","Command","_state","affectsData","execute","callbackOrText","model","findAndReplaceUtils","findCallback","callbackSearchText","args","findByTextCallback","oldCallback","result","document","getRootNames","reduce","currentResults","rootName","updateFindResultFromRange","createRangeIn","getRoot","clear","highlightedResult","lastSearchCallback","matchWholeWords","FindAndReplaceState","ObservableMixin","Collection","eventInfo","removed","index","Array","from","highlightedResultRemoved","change","writer","removedResult","markers","has","marker","removeMarker","nextHighlightedIndex","refreshHighlightOffset","oldMatchId","split","oldMarker","highlightedOffset","sortSearchResultsByMarkerPositions","indexOf","sortMapping","before","same","after","different","flatMap","filter","getStart","root","sort","a","b","compareWith","FindReplaceCommandBase","_isEnabledBasedOnSelection","_replace","replacementText","range","getRange","canEditAt","remove","textAttributes","item","getItems","is","getAttributes","insertContent","createText","ReplaceCommand","oldHighlightOffset","Math","max","sortedResults","ReplaceAllCommand","newText","textToReplace","searchResult","FindNextCommand","refresh","currentIndex","getIndex","nextIndex","FindPreviousCommand","previousIndex","FindAndReplaceUtils","startResults","checkIfResultAlreadyOnList","find","markerItem","resultsMarker","resultRange","markerRange","isEqual","type","schema","checkChild","foundItems","rangeToText","foundItem","resultId","uid","addMarker","usingOperation","createRange","createPositionAt","start","end","findInsertIndex","shallow","rangeText","node","searchTerm","flags","regExpQuery","escapeRegExp","nonLetterGroup","RegExp","test","regExp","matches","matchAll","map","regexpMatchToFindResult","resultsList","markerToInsert","isBefore","matchResult","lastGroupIndex","startOffset","HIGHLIGHT_CLASS","FindAndReplaceEditing","_defineConverters","_defineCommands","newValue","oldValue","newMatchId","scrollToHighlightedResult","domConverter","editing","viewRange","mapper","toViewRange","scrollViewportToShowTarget","viewRangeToDom","viewportOffset","debouncedScrollListener","debounce","cancel","isSearchActive","_onDocumentChange","stopListening","findAttributes","_isSearchActive","stop","conversion","for","markerToHighlight","markerName","classes","changedNodes","Set","removedMarkers","changes","differ","getChanges","changedMarkers","getChangedMarkers","nodeAfter","isInline","parent","getMarkersAtPosition","markerAtChange","newRange","markersInNode","getMarkersIntersectingRange","changedSearchResults","nodeToCheck","changedNodeSearchResults","createRangeOn","markerToCheck","FindAndReplace"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Plugin, Command } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { IconPreviousArrow, IconFindReplace } from '@ckeditor/ckeditor5-icons/dist/index.js';\nimport { View, ViewCollection, FocusCycler, submitHandler, CollapsibleView, SwitchButtonView, ButtonView, LabeledFieldView, createLabeledInputText, Dialog, DropdownView, createDropdown, FormHeaderView, MenuBarMenuListItemButtonView, DialogViewPosition, CssTransitionDisablerMixin } from '@ckeditor/ckeditor5-ui/dist/index.js';\nimport { FocusTracker, KeystrokeHandler, isVisible, Rect, ObservableMixin, Collection, uid, scrollViewportToShowTarget } from '@ckeditor/ckeditor5-utils/dist/index.js';\nimport { escapeRegExp, debounce } from 'es-toolkit/compat';\n\n/**\n * The find and replace form view class.\n *\n * See {@link module:find-and-replace/ui/findandreplaceformview~FindAndReplaceFormView}.\n */ class FindAndReplaceFormView extends View {\n /**\n\t * A collection of child views.\n\t */ children;\n /**\n\t * The find in text input view that stores the searched string.\n\t *\n\t * @internal\n\t */ _findInputView;\n /**\n\t * The replace input view.\n\t */ _replaceInputView;\n /**\n\t * The find button view that initializes the search process.\n\t */ _findButtonView;\n /**\n\t * The find previous button view.\n\t */ _findPrevButtonView;\n /**\n\t * The find next button view.\n\t */ _findNextButtonView;\n /**\n\t * A collapsible view aggregating the advanced search options.\n\t */ _advancedOptionsCollapsibleView;\n /**\n\t * A switch button view controlling the \"Match case\" option.\n\t */ _matchCaseSwitchView;\n /**\n\t * A switch button view controlling the \"Whole words only\" option.\n\t */ _wholeWordsOnlySwitchView;\n /**\n\t * The replace button view.\n\t */ _replaceButtonView;\n /**\n\t * The replace all button view.\n\t */ _replaceAllButtonView;\n /**\n\t * The `div` aggregating the inputs.\n\t */ _inputsDivView;\n /**\n\t * The `div` aggregating the action buttons.\n\t */ _actionButtonsDivView;\n /**\n\t * Tracks information about the DOM focus in the form.\n\t */ _focusTracker;\n /**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */ _keystrokes;\n /**\n\t * A collection of views that can be focused in the form.\n\t */ _focusables;\n /**\n\t * Helps cycling over {@link #_focusables} in the form.\n\t */ focusCycler;\n /**\n\t * Creates a view of find and replace form.\n\t *\n\t * @param locale The localization services instance.\n\t */ constructor(locale){\n super(locale);\n const t = locale.t;\n this.children = this.createCollection();\n this.set('matchCount', 0);\n this.set('highlightOffset', 0);\n this.set('isDirty', false);\n this.set('_areCommandsEnabled', {});\n this.set('_resultsCounterText', '');\n this.set('_matchCase', false);\n this.set('_wholeWordsOnly', false);\n this.bind('_searchResultsFound').to(this, 'matchCount', this, 'isDirty', (matchCount, isDirty)=>{\n return matchCount > 0 && !isDirty;\n });\n this._findInputView = this._createInputField(t('Find in text…'));\n this._findPrevButtonView = this._createButton({\n label: t('Previous result'),\n class: 'ck-button-prev',\n icon: IconPreviousArrow,\n keystroke: 'Shift+F3',\n tooltip: true\n });\n this._findNextButtonView = this._createButton({\n label: t('Next result'),\n class: 'ck-button-next',\n icon: IconPreviousArrow,\n keystroke: 'F3',\n tooltip: true\n });\n this._replaceInputView = this._createInputField(t('Replace with…'), 'ck-labeled-field-replace');\n this._inputsDivView = this._createInputsDiv();\n this._matchCaseSwitchView = this._createMatchCaseSwitch();\n this._wholeWordsOnlySwitchView = this._createWholeWordsOnlySwitch();\n this._advancedOptionsCollapsibleView = this._createAdvancedOptionsCollapsible();\n this._replaceAllButtonView = this._createButton({\n label: t('Replace all'),\n class: 'ck-button-replaceall',\n withText: true\n });\n this._replaceButtonView = this._createButton({\n label: t('Replace'),\n class: 'ck-button-replace',\n withText: true\n });\n this._findButtonView = this._createButton({\n label: t('Find'),\n class: 'ck-button-find ck-button-action',\n withText: true\n });\n this._actionButtonsDivView = this._createActionButtonsDiv();\n this._focusTracker = new FocusTracker();\n this._keystrokes = new KeystrokeHandler();\n this._focusables = new ViewCollection();\n this.focusCycler = new FocusCycler({\n focusables: this._focusables,\n focusTracker: this._focusTracker,\n keystrokeHandler: this._keystrokes,\n actions: {\n // Navigate form fields backwards using the <kbd>Shift</kbd> + <kbd>Tab</kbd> keystroke.\n focusPrevious: 'shift + tab',\n // Navigate form fields forwards using the <kbd>Tab</kbd> key.\n focusNext: 'tab'\n }\n });\n this.children.addMany([\n this._inputsDivView,\n this._advancedOptionsCollapsibleView,\n this._actionButtonsDivView\n ]);\n this.setTemplate({\n tag: 'form',\n attributes: {\n class: [\n 'ck',\n 'ck-find-and-replace-form'\n ],\n tabindex: '-1'\n },\n children: this.children\n });\n }\n /**\n\t * @inheritDoc\n\t */ render() {\n super.render();\n submitHandler({\n view: this\n });\n this._initFocusCycling();\n this._initKeystrokeHandling();\n }\n /**\n\t * @inheritDoc\n\t */ destroy() {\n super.destroy();\n this._focusTracker.destroy();\n this._keystrokes.destroy();\n }\n /**\n\t * @inheritDoc\n\t */ focus(direction) {\n if (direction === -1) {\n this.focusCycler.focusLast();\n } else {\n this.focusCycler.focusFirst();\n }\n }\n /**\n\t * Resets the form before re-appearing.\n\t *\n\t * It clears error messages, hides the match counter and disables the replace feature\n\t * until the next hit of the \"Find\" button.\n\t *\n\t * **Note**: It does not reset inputs and options, though. This way the form works better in editors with\n\t * disappearing toolbar (e.g. BalloonEditor): hiding the toolbar by accident (together with the find and replace UI)\n\t * does not require filling the entire form again.\n\t */ reset() {\n this._findInputView.errorText = null;\n this.isDirty = true;\n }\n /**\n\t * Returns the value of the find input.\n\t */ get _textToFind() {\n return this._findInputView.fieldView.element.value;\n }\n /**\n\t * Returns the value of the replace input.\n\t */ get _textToReplace() {\n return this._replaceInputView.fieldView.element.value;\n }\n /**\n\t * Configures and returns the `<div>` aggregating all form inputs.\n\t */ _createInputsDiv() {\n const locale = this.locale;\n const t = locale.t;\n const inputsDivView = new View(locale);\n // Typing in the find field invalidates all previous results (the form is \"dirty\").\n this._findInputView.fieldView.on('input', ()=>{\n this.isDirty = true;\n });\n // Pressing prev/next buttons fires related event on the form.\n this._findPrevButtonView.delegate('execute').to(this, 'findPrevious');\n this._findNextButtonView.delegate('execute').to(this, 'findNext');\n // Prev/next buttons will be disabled when related editor command gets disabled.\n this._findPrevButtonView.bind('isEnabled').to(this, '_areCommandsEnabled', ({ findPrevious })=>findPrevious);\n this._findNextButtonView.bind('isEnabled').to(this, '_areCommandsEnabled', ({ findNext })=>findNext);\n this._injectFindResultsCounter();\n this._replaceInputView.bind('isEnabled').to(this, '_areCommandsEnabled', this, '_searchResultsFound', ({ replace }, resultsFound)=>replace && resultsFound);\n this._replaceInputView.bind('infoText').to(this._replaceInputView, 'isEnabled', this._replaceInputView, 'isFocused', (isEnabled, isFocused)=>{\n if (isEnabled || !isFocused) {\n return '';\n }\n return t('Tip: Find some text first in order to replace it.');\n });\n inputsDivView.setTemplate({\n tag: 'div',\n attributes: {\n class: [\n 'ck',\n 'ck-find-and-replace-form__inputs'\n ]\n },\n children: [\n this._findInputView,\n this._findPrevButtonView,\n this._findNextButtonView,\n this._replaceInputView\n ]\n });\n return inputsDivView;\n }\n /**\n\t * The action performed when the {@link #_findButtonView} is pressed.\n\t */ _onFindButtonExecute() {\n // When hitting \"Find\" in an empty input, an error should be displayed.\n // Also, if the form was \"dirty\", it should remain so.\n if (!this._textToFind) {\n const t = this.t;\n this._findInputView.errorText = t('Text to find must not be empty.');\n return;\n }\n // Hitting \"Find\" automatically clears the dirty state.\n this.isDirty = false;\n this.fire('findNext', {\n searchText: this._textToFind,\n matchCase: this._matchCase,\n wholeWords: this._wholeWordsOnly\n });\n }\n /**\n\t * Configures an injects the find results counter displaying a \"N of M\" label of the {@link #_findInputView}.\n\t */ _injectFindResultsCounter() {\n const locale = this.locale;\n const t = locale.t;\n const bind = this.bindTemplate;\n const resultsCounterView = new View(this.locale);\n this.bind('_resultsCounterText').to(this, 'highlightOffset', this, 'matchCount', (highlightOffset, matchCount)=>t('%0 of %1', [\n highlightOffset,\n matchCount\n ]));\n resultsCounterView.setTemplate({\n tag: 'span',\n attributes: {\n class: [\n 'ck',\n 'ck-results-counter',\n // The counter only makes sense when the field text corresponds to search results in the editing.\n bind.if('isDirty', 'ck-hidden')\n ]\n },\n children: [\n {\n text: bind.to('_resultsCounterText')\n }\n ]\n });\n // The whole idea is that when the text of the counter changes, its width also increases/decreases and\n // it consumes more or less space over the input. The input, on the other hand, should adjust it's right\n // padding so its *entire* text always remains visible and available to the user.\n const updateFindInputPadding = ()=>{\n const inputElement = this._findInputView.fieldView.element;\n // Don't adjust the padding if the input (also: counter) were not rendered or not inserted into DOM yet.\n if (!inputElement || !isVisible(inputElement)) {\n return;\n }\n const counterWidth = new Rect(resultsCounterView.element).width;\n const paddingPropertyName = locale.uiLanguageDirection === 'ltr' ? 'paddingRight' : 'paddingLeft';\n if (!counterWidth) {\n inputElement.style[paddingPropertyName] = '';\n } else {\n inputElement.style[paddingPropertyName] = `calc( 2 * var(--ck-spacing-standard) + ${counterWidth}px )`;\n }\n };\n // Adjust the input padding when the text of the counter changes, for instance \"1 of 200\" is narrower than \"123 of 200\".\n // Using \"low\" priority to let the text be set by the template binding first.\n this.on('change:_resultsCounterText', updateFindInputPadding, {\n priority: 'low'\n });\n // Adjust the input padding when the counter shows or hides. When hidden, there should be no padding. When it shows, the\n // padding should be set according to the text of the counter.\n // Using \"low\" priority to let the text be set by the template binding first.\n this.on('change:isDirty', updateFindInputPadding, {\n priority: 'low'\n });\n // Put the counter element next to the <input> in the find field.\n this._findInputView.template.children[0].children.push(resultsCounterView);\n }\n /**\n\t * Creates the collapsible view aggregating the advanced search options.\n\t */ _createAdvancedOptionsCollapsible() {\n const t = this.locale.t;\n const collapsible = new CollapsibleView(this.locale, [\n this._matchCaseSwitchView,\n this._wholeWordsOnlySwitchView\n ]);\n collapsible.set({\n label: t('Advanced options'),\n isCollapsed: true\n });\n return collapsible;\n }\n /**\n\t * Configures and returns the `<div>` element aggregating all form action buttons.\n\t */ _createActionButtonsDiv() {\n const actionsDivView = new View(this.locale);\n this._replaceButtonView.bind('isEnabled').to(this, '_areCommandsEnabled', this, '_searchResultsFound', ({ replace }, resultsFound)=>replace && resultsFound);\n this._replaceAllButtonView.bind('isEnabled').to(this, '_areCommandsEnabled', this, '_searchResultsFound', ({ replaceAll }, resultsFound)=>replaceAll && resultsFound);\n this._replaceButtonView.on('execute', ()=>{\n this.fire('replace', {\n searchText: this._textToFind,\n replaceText: this._textToReplace\n });\n });\n this._replaceAllButtonView.on('execute', ()=>{\n this.fire('replaceAll', {\n searchText: this._textToFind,\n replaceText: this._textToReplace\n });\n this.focus();\n });\n this._findButtonView.on('execute', this._onFindButtonExecute.bind(this));\n actionsDivView.setTemplate({\n tag: 'div',\n attributes: {\n class: [\n 'ck',\n 'ck-find-and-replace-form__actions'\n ]\n },\n children: [\n this._replaceAllButtonView,\n this._replaceButtonView,\n this._findButtonView\n ]\n });\n return actionsDivView;\n }\n /**\n\t * Creates, configures and returns and instance of a dropdown allowing users to narrow\n\t * the search criteria down. The dropdown has a list with switch buttons for each option.\n\t */ _createMatchCaseSwitch() {\n const t = this.locale.t;\n const matchCaseSwitchButton = new SwitchButtonView(this.locale);\n matchCaseSwitchButton.set({\n label: t('Match case'),\n withText: true\n });\n // Let the switch be controlled by form's observable property.\n matchCaseSwitchButton.bind('isOn').to(this, '_matchCase');\n // // Update the state of the form when a switch is toggled.\n matchCaseSwitchButton.on('execute', ()=>{\n this._matchCase = !this._matchCase;\n // Toggling a switch makes the form dirty because this changes search criteria\n // just like typing text of the find input.\n this.isDirty = true;\n });\n return matchCaseSwitchButton;\n }\n /**\n\t * Creates, configures and returns and instance of a dropdown allowing users to narrow\n\t * the search criteria down. The dropdown has a list with switch buttons for each option.\n\t */ _createWholeWordsOnlySwitch() {\n const t = this.locale.t;\n const wholeWordsOnlySwitchButton = new SwitchButtonView(this.locale);\n wholeWordsOnlySwitchButton.set({\n label: t('Whole words only'),\n withText: true\n });\n // Let the switch be controlled by form's observable property.\n wholeWordsOnlySwitchButton.bind('isOn').to(this, '_wholeWordsOnly');\n // // Update the state of the form when a switch is toggled.\n wholeWordsOnlySwitchButton.on('execute', ()=>{\n this._wholeWordsOnly = !this._wholeWordsOnly;\n // Toggling a switch makes the form dirty because this changes search criteria\n // just like typing text of the find input.\n this.isDirty = true;\n });\n return wholeWordsOnlySwitchButton;\n }\n /**\n\t * Initializes the {@link #_focusables} and {@link #_focusTracker} to allow navigation\n\t * using <kbd>Tab</kbd> and <kbd>Shift</kbd>+<kbd>Tab</kbd> keystrokes in the right order.\n\t */ _initFocusCycling() {\n const childViews = [\n this._findInputView,\n this._findPrevButtonView,\n this._findNextButtonView,\n this._replaceInputView,\n this._advancedOptionsCollapsibleView.buttonView,\n this._matchCaseSwitchView,\n this._wholeWordsOnlySwitchView,\n this._replaceAllButtonView,\n this._replaceButtonView,\n this._findButtonView\n ];\n childViews.forEach((v)=>{\n // Register the view as focusable.\n this._focusables.add(v);\n // Register the view in the focus tracker.\n this._focusTracker.add(v.element);\n });\n }\n /**\n\t * Initializes the keystroke handling in the form.\n\t */ _initKeystrokeHandling() {\n const stopPropagation = (data)=>data.stopPropagation();\n const stopPropagationAndPreventDefault = (data)=>{\n data.stopPropagation();\n data.preventDefault();\n };\n // Start listening for the keystrokes coming from #element.\n this._keystrokes.listenTo(this.element);\n // Find the next result upon F3.\n this._keystrokes.set('f3', (event)=>{\n stopPropagationAndPreventDefault(event);\n this._findNextButtonView.fire('execute');\n });\n // Find the previous result upon F3.\n this._keystrokes.set('shift+f3', (event)=>{\n stopPropagationAndPreventDefault(event);\n this._findPrevButtonView.fire('execute');\n });\n // Find or replace upon pressing Enter in the find and replace fields.\n this._keystrokes.set('enter', (event)=>{\n const target = event.target;\n if (target === this._findInputView.fieldView.element) {\n if (this._areCommandsEnabled.findNext) {\n this._findNextButtonView.fire('execute');\n } else {\n this._findButtonView.fire('execute');\n }\n stopPropagationAndPreventDefault(event);\n } else if (target === this._replaceInputView.fieldView.element && !this.isDirty) {\n this._replaceButtonView.fire('execute');\n stopPropagationAndPreventDefault(event);\n }\n });\n // Find previous upon pressing Shift+Enter in the find field.\n this._keystrokes.set('shift+enter', (event)=>{\n const target = event.target;\n if (target !== this._findInputView.fieldView.element) {\n return;\n }\n if (this._areCommandsEnabled.findPrevious) {\n this._findPrevButtonView.fire('execute');\n } else {\n this._findButtonView.fire('execute');\n }\n stopPropagationAndPreventDefault(event);\n });\n // Since the form is in the dropdown panel which is a child of the toolbar, the toolbar's\n // keystroke handler would take over the key management in the URL input.\n // We need to prevent this ASAP. Otherwise, the basic caret movement using the arrow keys will be impossible.\n this._keystrokes.set('arrowright', stopPropagation);\n this._keystrokes.set('arrowleft', stopPropagation);\n this._keystrokes.set('arrowup', stopPropagation);\n this._keystrokes.set('arrowdown', stopPropagation);\n }\n /**\n\t * Creates a button view.\n\t *\n\t * @param options The properties of the `ButtonView`.\n\t * @returns The button view instance.\n\t */ _createButton(options) {\n const button = new ButtonView(this.locale);\n button.set(options);\n return button;\n }\n /**\n\t * Creates a labeled input view.\n\t *\n\t * @param label The input label.\n\t * @returns The labeled input view instance.\n\t */ _createInputField(label, className) {\n const labeledInput = new LabeledFieldView(this.locale, createLabeledInputText);\n labeledInput.label = label;\n labeledInput.class = className;\n return labeledInput;\n }\n}\n\n/**\n * The default find and replace UI.\n *\n * It registers the `'findAndReplace'` UI button in the editor's {@link module:ui/componentfactory~ComponentFactory component factory}.\n * that uses the {@link module:find-and-replace/findandreplace~FindAndReplace FindAndReplace} plugin API.\n */ class FindAndReplaceUI extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n Dialog\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'FindAndReplaceUI';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * A reference to the find and replace form view.\n\t */ formView;\n /**\n\t * @inheritDoc\n\t */ constructor(editor){\n super(editor);\n editor.config.define('findAndReplace.uiType', 'dialog');\n this.formView = null;\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const isUiUsingDropdown = editor.config.get('findAndReplace.uiType') === 'dropdown';\n const findCommand = editor.commands.get('find');\n const t = this.editor.t;\n // Register the toolbar component: dropdown or button (that opens a dialog).\n editor.ui.componentFactory.add('findAndReplace', ()=>{\n let view;\n if (isUiUsingDropdown) {\n view = this._createDropdown();\n // Button should be disabled when in source editing mode. See #10001.\n view.bind('isEnabled').to(findCommand);\n } else {\n view = this._createDialogButtonForToolbar();\n }\n editor.keystrokes.set('Ctrl+F', (data, cancelEvent)=>{\n if (!findCommand.isEnabled) {\n return;\n }\n if (view instanceof DropdownView) {\n const dropdownButtonView = view.buttonView;\n if (!dropdownButtonView.isOn) {\n dropdownButtonView.fire('execute');\n }\n } else {\n if (view.isOn) {\n // If the dialog is open, do not close it. Instead focus it.\n // Unfortunately we can't simply use:\n // \tthis.formView!.focus();\n // because it would always move focus to the first input field, which we don't want.\n editor.plugins.get('Dialog').view.focus();\n } else {\n view.fire('execute');\n }\n }\n cancelEvent();\n });\n return view;\n });\n if (!isUiUsingDropdown) {\n editor.ui.componentFactory.add('menuBar:findAndReplace', ()=>{\n return this._createDialogButtonForMenuBar();\n });\n }\n // Add the information about the keystroke to the accessibility database.\n editor.accessibility.addKeystrokeInfos({\n keystrokes: [\n {\n label: t('Find in the document'),\n keystroke: 'CTRL+F'\n }\n ]\n });\n }\n /**\n\t * Creates a dropdown containing the find and replace form.\n\t */ _createDropdown() {\n const editor = this.editor;\n const t = editor.locale.t;\n const dropdownView = createDropdown(editor.locale);\n dropdownView.once('change:isOpen', ()=>{\n this.formView = this._createFormView();\n this.formView.children.add(new FormHeaderView(editor.locale, {\n label: t('Find and replace')\n }), 0);\n dropdownView.panelView.children.add(this.formView);\n });\n // Every time a dropdown is opened, the search text field should get focused and selected for better UX.\n // Note: Using the low priority here to make sure the following listener starts working after\n // the default action of the drop-down is executed (i.e. the panel showed up). Otherwise,\n // the invisible form/input cannot be focused/selected.\n //\n // Each time a dropdown is closed, move the focus back to the find and replace toolbar button\n // and let the find and replace editing feature know that all search results can be invalidated\n // and no longer should be marked in the content.\n dropdownView.on('change:isOpen', (event, name, isOpen)=>{\n if (isOpen) {\n this._setupFormView();\n } else {\n this.fire('searchReseted');\n }\n }, {\n priority: 'low'\n });\n dropdownView.buttonView.set({\n icon: IconFindReplace,\n label: t('Find and replace'),\n keystroke: 'CTRL+F',\n tooltip: true\n });\n return dropdownView;\n }\n /**\n\t * Creates a button that opens a dialog with the find and replace form.\n\t */ _createDialogButtonForToolbar() {\n const editor = this.editor;\n const buttonView = this._createButton(ButtonView);\n const dialog = editor.plugins.get('Dialog');\n buttonView.set({\n tooltip: true\n });\n // Button should be on when the find and replace dialog is opened.\n buttonView.bind('isOn').to(dialog, 'id', (id)=>id === 'findAndReplace');\n // Every time a dialog is opened, the search text field should get focused and selected for better UX.\n // Each time a dialog is closed, move the focus back to the find and replace toolbar button\n // and let the find and replace editing feature know that all search results can be invalidated\n // and no longer should be marked in the content.\n buttonView.on('execute', ()=>{\n if (buttonView.isOn) {\n dialog.hide();\n } else {\n this._showDialog();\n }\n });\n return buttonView;\n }\n /**\n\t * Creates a button for for menu bar that will show find and replace dialog.\n\t */ _createDialogButtonForMenuBar() {\n const buttonView = this._createButton(MenuBarMenuListItemButtonView);\n const dialogPlugin = this.editor.plugins.get('Dialog');\n const dialog = this.editor.plugins.get('Dialog');\n buttonView.set({\n role: 'menuitemcheckbox',\n isToggleable: true\n });\n // Button should be on when the find and replace dialog is opened.\n buttonView.bind('isOn').to(dialog, 'id', (id)=>id === 'findAndReplace');\n buttonView.on('execute', ()=>{\n if (dialogPlugin.id === 'findAndReplace') {\n dialogPlugin.hide();\n return;\n }\n this._showDialog();\n });\n return buttonView;\n }\n /**\n\t * Creates a button for find and replace command to use either in toolbar or in menu bar.\n\t */ _createButton(ButtonClass) {\n const editor = this.editor;\n const findCommand = editor.commands.get('find');\n const buttonView = new ButtonClass(editor.locale);\n const t = editor.locale.t;\n // Button should be disabled when in source editing mode. See #10001.\n buttonView.bind('isEnabled').to(findCommand);\n buttonView.set({\n icon: IconFindReplace,\n label: t('Find and replace'),\n keystroke: 'CTRL+F'\n });\n return buttonView;\n }\n /**\n\t * Shows the find and replace dialog.\n\t */ _showDialog() {\n const editor = this.editor;\n const dialog = editor.plugins.get('Dialog');\n const t = editor.locale.t;\n if (!this.formView) {\n this.formView = this._createFormView();\n }\n dialog.show({\n id: 'findAndReplace',\n title: t('Find and replace'),\n content: this.formView,\n position: DialogViewPosition.EDITOR_TOP_SIDE,\n onShow: ()=>{\n this._setupFormView();\n },\n onHide: ()=>{\n this.fire('searchReseted');\n }\n });\n }\n /**\n\t * Sets up the form view for the findN and replace.\n\t */ _createFormView() {\n const editor = this.editor;\n const formView = new (CssTransitionDisablerMixin(FindAndReplaceFormView))(editor.locale);\n const commands = editor.commands;\n const findAndReplaceEditing = this.editor.plugins.get('FindAndReplaceEditing');\n const editingState = findAndReplaceEditing.state;\n formView.bind('highlightOffset').to(editingState, 'highlightedOffset');\n // Let the form know how many results were found in total.\n formView.listenTo(editingState.results, 'change', ()=>{\n formView.matchCount = editingState.results.length;\n });\n // Command states are used to enable/disable individual form controls.\n // To keep things simple, instead of binding 4 individual observables, there's only one that combines every\n // commands' isEnabled state. Yes, it will change more often but this simplifies the structure of the form.\n const findNextCommand = commands.get('findNext');\n const findPreviousCommand = commands.get('findPrevious');\n const replaceCommand = commands.get('replace');\n const replaceAllCommand = commands.get('replaceAll');\n formView.bind('_areCommandsEnabled').to(findNextCommand, 'isEnabled', findPreviousCommand, 'isEnabled', replaceCommand, 'isEnabled', replaceAllCommand, 'isEnabled', (findNext, findPrevious, replace, replaceAll)=>({\n findNext,\n findPrevious,\n replace,\n replaceAll\n }));\n // The UI plugin works as an interface between the form and the editing part of the feature.\n formView.delegate('findNext', 'findPrevious', 'replace', 'replaceAll').to(this);\n // Let the feature know that search results are no longer relevant because the user changed the searched phrase\n // (or options) but didn't hit the \"Find\" button yet (e.g. still typing).\n formView.on('change:isDirty', (evt, data, isDirty)=>{\n if (isDirty) {\n this.fire('searchReseted');\n }\n });\n return formView;\n }\n /**\n\t * Clears the find and replace form and focuses the search text field.\n\t */ _setupFormView() {\n this.formView.disableCssTransitions();\n this.formView.reset();\n this.formView._findInputView.fieldView.select();\n this.formView.enableCssTransitions();\n }\n}\n\n/**\n * The find command. It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */ class FindCommand extends Command {\n /**\n\t * The find and replace state object used for command operations.\n\t */ _state;\n /**\n\t * Creates a new `FindCommand` instance.\n\t *\n\t * @param editor The editor on which this command will be used.\n\t * @param state An object to hold plugin state.\n\t */ constructor(editor, state){\n super(editor);\n // The find command is always enabled.\n this.isEnabled = true;\n // It does not affect data so should be enabled in read-only mode.\n this.affectsData = false;\n this._state = state;\n }\n /**\n\t * Executes the command.\n\t *\n\t * @param callbackOrText\n\t * @param options Options object.\n\t * @param options.matchCase If set to `true`, the letter case will be matched.\n\t * @param options.wholeWords If set to `true`, only whole words that match `callbackOrText` will be matched.\n\t *\n\t * @fires execute\n\t */ execute(callbackOrText, { matchCase, wholeWords } = {}) {\n const { editor } = this;\n const { model } = editor;\n const findAndReplaceUtils = editor.plugins.get('FindAndReplaceUtils');\n let findCallback;\n let callbackSearchText = '';\n // Allow to execute `find()` on a plugin with a keyword only.\n if (typeof callbackOrText === 'string') {\n findCallback = (...args)=>({\n results: findAndReplaceUtils.findByTextCallback(callbackOrText, {\n matchCase,\n wholeWords\n })(...args),\n searchText: callbackOrText\n });\n } else {\n findCallback = callbackOrText;\n }\n // Wrap the callback to get the search text that will be assigned to the state.\n const oldCallback = findCallback;\n findCallback = (...args)=>{\n const result = oldCallback(...args);\n if (result && 'searchText' in result) {\n callbackSearchText = result.searchText;\n }\n return result;\n };\n // Initial search is done on all nodes in all roots inside the content.\n const results = model.document.getRootNames().reduce((currentResults, rootName)=>findAndReplaceUtils.updateFindResultFromRange(model.createRangeIn(model.document.getRoot(rootName)), model, findCallback, currentResults), null);\n this._state.clear(model);\n this._state.results.addMany(results);\n this._state.highlightedResult = results.get(0);\n this._state.searchText = callbackSearchText;\n if (findCallback) {\n this._state.lastSearchCallback = findCallback;\n }\n this._state.matchCase = !!matchCase;\n this._state.matchWholeWords = !!wholeWords;\n return {\n results,\n findCallback\n };\n }\n}\n\n/**\n * The object storing find and replace plugin state for a given editor instance.\n */ class FindAndReplaceState extends /* #__PURE__ */ ObservableMixin() {\n /**\n\t * Creates an instance of the state.\n\t */ constructor(model){\n super();\n this.set('results', new Collection());\n this.set('highlightedResult', null);\n this.set('highlightedOffset', 0);\n this.set('searchText', '');\n this.set('replaceText', '');\n this.set('lastSearchCallback', null);\n this.set('matchCase', false);\n this.set('matchWholeWords', false);\n this.results.on('change', (eventInfo, { removed, index })=>{\n if (Array.from(removed).length) {\n let highlightedResultRemoved = false;\n model.change((writer)=>{\n for (const removedResult of removed){\n if (this.highlightedResult === removedResult) {\n highlightedResultRemoved = true;\n }\n if (model.markers.has(removedResult.marker.name)) {\n writer.removeMarker(removedResult.marker);\n }\n }\n });\n if (highlightedResultRemoved) {\n const nextHighlightedIndex = index >= this.results.length ? 0 : index;\n this.highlightedResult = this.results.get(nextHighlightedIndex);\n }\n }\n });\n this.on('change:highlightedResult', ()=>{\n this.refreshHighlightOffset(model);\n });\n }\n /**\n\t * Cleans the state up and removes markers from the model.\n\t */ clear(model) {\n this.searchText = '';\n model.change((writer)=>{\n if (this.highlightedResult) {\n const oldMatchId = this.highlightedResult.marker.name.split(':')[1];\n const oldMarker = model.markers.get(`findResultHighlighted:${oldMatchId}`);\n if (oldMarker) {\n writer.removeMarker(oldMarker);\n }\n }\n [\n ...this.results\n ].forEach(({ marker })=>{\n writer.removeMarker(marker);\n });\n });\n this.results.clear();\n }\n /**\n\t * Refreshes the highlight result offset based on it's index within the result list.\n\t */ refreshHighlightOffset(model) {\n const { highlightedResult, results } = this;\n if (highlightedResult) {\n this.highlightedOffset = sortSearchResultsByMarkerPositions(model, [\n ...results\n ]).indexOf(highlightedResult) + 1;\n } else {\n this.highlightedOffset = 0;\n }\n }\n}\n/**\n * Sorts search results by marker positions. Make sure that the results are sorted in the same order as they appear in the document\n * to avoid issues with the `find next` command. Apparently, the order of the results in the state might be different than the order\n * of the markers in the model.\n *\n * @internal\n */ function sortSearchResultsByMarkerPositions(model, results) {\n const sortMapping = {\n before: -1,\n same: 0,\n after: 1,\n different: 1\n };\n // `compareWith` doesn't play well with multi-root documents, so we need to sort results by root name first\n // and then sort them within each root. It prevents \"random\" order of results when the document has multiple roots.\n // See more: https://github.com/ckeditor/ckeditor5/pull/17292#issuecomment-2442084549\n return model.document.getRootNames().flatMap((rootName)=>results.filter((result)=>result.marker.getStart().root.rootName === rootName).sort((a, b)=>sortMapping[a.marker.getStart().compareWith(b.marker.getStart())]));\n}\n\nclass FindReplaceCommandBase extends Command {\n /**\n\t * The find and replace state object used for command operations.\n\t */ _state;\n /**\n\t * Creates a new `ReplaceCommand` instance.\n\t *\n\t * @param editor Editor on which this command will be used.\n\t * @param state An object to hold plugin state.\n\t */ constructor(editor, state){\n super(editor);\n // The replace command is always enabled.\n this.isEnabled = true;\n this._state = state;\n // Since this command executes on particular result independent of selection, it should be checked directly in execute block.\n this._isEnabledBasedOnSelection = false;\n }\n /**\n\t * Common logic for both `replace` commands.\n\t * Replace a given find result by a string or a callback.\n\t *\n\t * @param result A single result from the find command.\n\t */ _replace(replacementText, result) {\n const { model } = this.editor;\n const range = result.marker.getRange();\n // Don't replace a result that is in non-editable place.\n if (!model.canEditAt(range)) {\n return;\n }\n model.change((writer)=>{\n // Don't replace a result (marker) that found its way into the $graveyard (e.g. removed by collaborators).\n if (range.root.rootName === '$graveyard') {\n this._state.results.remove(result);\n return;\n }\n let textAttributes = {};\n for (const item of range.getItems()){\n if (item.is('$text') || item.is('$textProxy')) {\n textAttributes = item.getAttributes();\n break;\n }\n }\n model.insertContent(writer.createText(replacementText, textAttributes), range);\n if (this._state.results.has(result)) {\n this._state.results.remove(result);\n }\n });\n }\n}\n\n/**\n * The replace command. It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */ class ReplaceCommand extends FindReplaceCommandBase {\n /**\n\t * Replace a given find result by a string or a callback.\n\t *\n\t * @param result A single result from the find command.\n\t *\n\t * @fires execute\n\t */ execute(replacementText, result) {\n // We save highlight offset here, as the information about the highlighted result will be lost after the changes.\n //\n // It happens because result list is partially regenerated if the result is removed from the paragraph.\n // Partially means that all sibling result items that are placed in the same paragraph are removed and added again,\n // which causes the highlighted result to be malformed (usually it's set to first but it's not guaranteed).\n //\n // While this saving can be done in editing state, it's better to keep it here, as it's a part of the command logic\n // and might be super tricky to implement in multi-root documents.\n //\n // Keep in mind that the highlighted offset is indexed from 1, as it's displayed to the user. It's why we subtract 1 here.\n //\n // More info: https://github.com/ckeditor/ckeditor5/issues/16648\n const oldHighlightOffset = Math.max(this._state.highlightedOffset - 1, 0);\n this._replace(replacementText, result);\n // Let's revert the highlight offset to the previous value.\n if (this._state.results.length) {\n // Highlight offset operates on sorted array, so we need to sort the results first.\n // It's not guaranteed that items in state results are sorted, usually they are, but it's not guaranteed when\n // the result is removed from the paragraph with other highlighted results.\n const sortedResults = sortSearchResultsByMarkerPositions(this.editor.model, [\n ...this._state.results\n ]);\n // Just make sure that we don't overflow the results array, so use modulo.\n this._state.highlightedResult = sortedResults[oldHighlightOffset % sortedResults.length];\n }\n }\n}\n\n/**\n * The replace all command. It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */ class ReplaceAllCommand extends FindReplaceCommandBase {\n /**\n\t * Replaces all the occurrences of `textToReplace` with a given `newText` string.\n\t *\n\t * ```ts\n\t *\treplaceAllCommand.execute( 'replaceAll', 'new text replacement', 'text to replace' );\n\t * ```\n\t *\n\t * Alternatively you can call it from editor instance:\n\t *\n\t * ```ts\n\t *\teditor.execute( 'replaceAll', 'new text', 'old text' );\n\t * ```\n\t *\n\t * @param newText Text that will be inserted to the editor for each match.\n\t * @param textToReplace Text to be replaced or a collection of matches\n\t * as returned by the find command.\n\t *\n\t * @fires module:core/command~Command#event:execute\n\t */ execute(newText, textToReplace) {\n const { editor } = this;\n const { model } = editor;\n const findAndReplaceUtils = editor.plugins.get('FindAndReplaceUtils');\n const results = textToReplace instanceof Collection ? textToReplace : model.document.getRootNames().reduce((currentResults, rootName)=>findAndReplaceUtils.updateFindResultFromRange(model.createRangeIn(model.document.getRoot(rootName)), model, findAndReplaceUtils.findByTextCallback(textToReplace, this._state), currentResults), null);\n if (results.length) {\n // Wrapped in single change will batch it into one transaction.\n model.change(()=>{\n [\n ...results\n ].forEach((searchResult)=>{\n // Just reuse logic from the replace command to replace a single match.\n this._replace(newText, searchResult);\n });\n });\n }\n }\n}\n\n/**\n * The find next command. Moves the highlight to the next search result.\n *\n * It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */ class FindNextCommand extends Command {\n /**\n\t * The find and replace state object used for command operations.\n\t */ _state;\n /**\n\t * Creates a new `FindNextCommand` instance.\n\t *\n\t * @param editor The editor on which this command will be used.\n\t * @param state An object to hold plugin state.\n\t */ constructor(editor, state){\n super(editor);\n // It does not affect data so should be enabled in read-only mode.\n this.affectsData = false;\n this._state = state;\n this.isEnabled = false;\n this.listenTo(this._state.results, 'change', ()=>{\n this.isEnabled = this._state.results.length > 1;\n });\n }\n /**\n\t * @inheritDoc\n\t */ refresh() {\n this.isEnabled = this._state.results.length > 1;\n }\n /**\n\t * @inheritDoc\n\t */ execute() {\n const results = this._state.results;\n const currentIndex = results.getIndex(this._state.highlightedResult);\n const nextIndex = currentIndex + 1 >= results.length ? 0 : currentIndex + 1;\n this._state.highlightedResult = this._state.results.get(nextIndex);\n }\n}\n\n/**\n * The find previous command. Moves the highlight to the previous search result.\n *\n * It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */ class FindPreviousCommand extends FindNextCommand {\n /**\n\t * @inheritDoc\n\t */ execute() {\n const results = this._state.results;\n const currentIndex = results.getIndex(this._state.highlightedResult);\n const previousIndex = currentIndex - 1 < 0 ? this._state.results.length - 1 : currentIndex - 1;\n this._state.highlightedResult = this._state.results.get(previousIndex);\n }\n}\n\n/**\n * A set of helpers related to find and replace.\n */ class FindAndReplaceUtils extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'FindAndReplaceUtils';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * Executes findCallback and updates search results list.\n\t *\n\t * @param range The model range to scan for matches.\n\t * @param model The model.\n\t * @param findCallback The callback that should return `true` if provided text matches the search term.\n\t * @param startResults An optional collection of find matches that the function should\n\t * start with. This would be a collection returned by a previous `updateFindResultFromRange()` call.\n\t * @returns A collection of objects describing find match.\n\t *\n\t * An example structure:\n\t *\n\t * ```js\n\t * {\n\t *\tid: resultId,\n\t *\tlabel: foundItem.label,\n\t *\tmarker\n\t *\t}\n\t * ```\n\t */ updateFindResultFromRange(range, model, findCallback, startResults) {\n const results = startResults || new Collection();\n const checkIfResultAlreadyOnList = (marker)=>results.find((markerItem)=>{\n const { marker: resultsMarker } = markerItem;\n const resultRange = resultsMarker.getRange();\n const markerRange = marker.getRange();\n return resultRange.isEqual(markerRange);\n });\n model.change((writer)=>{\n [\n ...range\n ].forEach(({ type, item })=>{\n if (type === 'elementStart') {\n if (model.schema.checkChild(item, '$text')) {\n let foundItems = findCallback({\n item,\n text: this.rangeToText(model.createRangeIn(item))\n });\n if (!foundItems) {\n return;\n }\n if ('results' in foundItems) {\n foundItems = foundItems.results;\n }\n foundItems.forEach((foundItem)=>{\n const resultId = `findResult:${uid()}`;\n const marker = writer.addMarker(resultId, {\n usingOperation: false,\n affectsData: false,\n range: writer.createRange(writer.createPositionAt(item, foundItem.start), writer.createPositionAt(item, foundItem.end))\n });\n const index = findInsertIndex(results, marker);\n if (!checkIfResultAlreadyOnList(marker)) {\n results.add({\n id: resultId,\n label: foundItem.label,\n marker\n }, index);\n }\n });\n }\n }\n });\n });\n return results;\n }\n /**\n\t * Returns text representation of a range. The returned text length should be the same as range length.\n\t * In order to achieve this, this function will replace inline elements (text-line) as new line character (\"\\n\").\n\t *\n\t * @param range The model range.\n\t * @returns The text content of the provided range.\n\t */ rangeToText(range) {\n return Array.from(range.getItems({\n shallow: true\n })).reduce((rangeText, node)=>{\n // Trim text to a last occurrence of an inline element and update range start.\n if (!(node.is('$text') || node.is('$textProxy'))) {\n // Editor has only one inline element defined in schema: `<softBreak>` which is treated as new line character in blocks.\n // Special handling might be needed for other inline elements (inline widgets).\n return `${rangeText}\\n`;\n }\n return rangeText + node.data;\n }, '');\n }\n /**\n\t * Creates a text matching callback for a specified search term and matching options.\n\t *\n\t * @param searchTerm The search term.\n\t * @param options Matching options.\n\t * \t- options.matchCase=false If set to `true` letter casing will be ignored.\n\t * \t- options.wholeWords=false If set to `true` only whole words that match `callbackOrText` will be matched.\n\t */ findByTextCallback(searchTerm, options) {\n let flags = 'gu';\n if (!options.matchCase) {\n flags += 'i';\n }\n let regExpQuery = `(${escapeRegExp(searchTerm)})`;\n if (options.wholeWords) {\n const nonLetterGroup = '[^a-zA-Z\\u00C0-\\u024F\\u1E00-\\u1EFF]';\n if (!new RegExp('^' + nonLetterGroup).test(searchTerm)) {\n regExpQuery = `(^|${nonLetterGroup}|_)${regExpQuery}`;\n }\n if (!new RegExp(nonLetterGroup + '$').test(searchTerm)) {\n regExpQuery = `${regExpQuery}(?=_|${nonLetterGroup}|$)`;\n }\n }\n const regExp = new RegExp(regExpQuery, flags);\n function findCallback({ text }) {\n const matches = [\n ...text.matchAll(regExp)\n ];\n return matches.map(regexpMatchToFindResult);\n }\n return findCallback;\n }\n}\n// Finds the appropriate index in the resultsList Collection.\nfunction findInsertIndex(resultsList, markerToInsert) {\n const result = resultsList.find(({ marker })=>{\n return markerToInsert.getStart().isBefore(marker.getStart());\n });\n return result ? resultsList.getIndex(result) : resultsList.length;\n}\n/**\n * Maps RegExp match result to find result.\n */ function regexpMatchToFindResult(matchResult) {\n const lastGroupIndex = matchResult.length - 1;\n let startOffset = matchResult.index;\n // Searches with match all flag have an extra matching group with empty string or white space matched before the word.\n // If the search term starts with the space already, there is no extra group even with match all flag on.\n if (matchResult.length === 3) {\n startOffset += matchResult[1].length;\n }\n return {\n label: matchResult[lastGroupIndex],\n start: startOffset,\n end: startOffset + matchResult[lastGroupIndex].length\n };\n}\n\nconst HIGHLIGHT_CLASS = 'ck-find-result_selected';\n/**\n * Implements the editing part for find and replace plugin. For example conversion, commands etc.\n */ class FindAndReplaceEditing extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n FindAndReplaceUtils\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'FindAndReplaceEditing';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * An object storing the find and replace state within a given editor instance.\n\t */ state;\n /**\n\t * @inheritDoc\n\t */ init() {\n this.state = new FindAndReplaceState(this.editor.model);\n this.set('_isSearchActive', false);\n this._defineConverters();\n this._defineCommands();\n this.listenTo(this.state, 'change:highlightedResult', (eventInfo, name, newValue, oldValue)=>{\n const { model } = this.editor;\n model.change((writer)=>{\n if (oldValue) {\n const oldMatchId = oldValue.marker.name.split(':')[1];\n const oldMarker = model.markers.get(`findResultHighlighted:${oldMatchId}`);\n if (oldMarker) {\n writer.removeMarker(oldMarker);\n }\n }\n if (newValue) {\n const newMatchId = newValue.marker.name.split(':')[1];\n writer.addMarker(`findResultHighlighted:${newMatchId}`, {\n usingOperation: false,\n affectsData: false,\n range: newValue.marker.getRange()\n });\n }\n });\n });\n /* istanbul ignore next -- @preserve */ const scrollToHighlightedResult = (eventInfo, name, newValue)=>{\n if (newValue) {\n const domConverter = this.editor.editing.view.domConverter;\n const viewRange = this.editor.editing.mapper.toViewRange(newValue.marker.getRange());\n scrollViewportToShowTarget({\n target: domConverter.viewRangeToDom(viewRange),\n viewportOffset: 40\n });\n }\n };\n const debouncedScrollListener = debounce(scrollToHighlightedResult.bind(this), 32);\n // Debounce scroll as highlight might be changed very frequently, e.g. when there's a replace all command.\n this.listenTo(this.state, 'change:highlightedResult', debouncedScrollListener, {\n priority: 'low'\n });\n // It's possible that the editor will get destroyed before debounced call kicks in.\n // This would result with accessing a view three that is no longer in DOM.\n this.listenTo(this.editor, 'destroy', debouncedScrollListener.cancel);\n this.on('change:_isSearchActive', (evt, name, isSearchActive)=>{\n if (isSearchActive) {\n this.listenTo(this.editor.model.document, 'change:data', this._onDocumentChange);\n } else {\n this.stopListening(this.editor.model.document, 'change:data', this._onDocumentChange);\n }\n });\n }\n /**\n\t * Initiate a search.\n\t */ find(callbackOrText, findAttributes) {\n this._isSearchActive = true;\n this.editor.execute('find', callbackOrText, findAttributes);\n return this.state.results;\n }\n /**\n\t * Stops active results from updating, and clears out the results.\n\t */ stop() {\n this.state.clear(this.editor.model);\n this._isSearchActive = false;\n }\n /**\n\t * Sets up the commands.\n\t */ _defineCommands() {\n this.editor.commands.add('find', new FindCommand(this.editor, this.state));\n this.editor.commands.add('findNext', new FindNextCommand(this.editor, this.state));\n this.editor.commands.add('findPrevious', new FindPreviousCommand(this.editor, this.state));\n this.editor.commands.add('replace', new ReplaceCommand(this.editor, this.state));\n this.editor.commands.add('replaceAll', new ReplaceAllCommand(this.editor, this.state));\n }\n /**\n\t * Sets up the marker downcast converters for search results highlighting.\n\t */ _defineConverters() {\n const { editor } = this;\n // Setup the marker highlighting conversion.\n editor.conversion.for('editingDowncast').markerToHighlight({\n model: 'findResult',\n view: ({ markerName })=>{\n const [, id] = markerName.split(':');\n // Marker removal from the view has a bug: https://github.com/ckeditor/ckeditor5/issues/7499\n // A minimal option is to return a new object for each converted marker...\n return {\n name: 'span',\n classes: [\n 'ck-find-result'\n ],\n attributes: {\n // ...however, adding a unique attribute should be future-proof..\n 'data-find-result': id\n }\n };\n }\n });\n editor.conversion.for('editingDowncast').markerToHighlight({\n model: 'findResultHighlighted',\n view: ({ markerName })=>{\n const [, id] = markerName.split(':');\n // Marker removal from the view has a bug: https://github.com/ckeditor/ckeditor5/issues/7499\n // A minimal option is to return a new object for each converted marker...\n return {\n name: 'span',\n classes: [\n HIGHLIGHT_CLASS\n ],\n attributes: {\n // ...however, adding a unique attribute should be future-proof..\n 'data-find-result': id\n }\n };\n }\n });\n }\n /**\n\t * Reacts to document changes in order to update search list.\n\t */ _onDocumentChange = ()=>{\n const changedNodes = new Set();\n const removedMarkers = new Set();\n const model = this.editor.model;\n const { results } = this.state;\n const changes = model.document.differ.getChanges();\n const changedMarkers = model.document.differ.getChangedMarkers();\n // Get nodes in which changes happened to re-run a search callback on them.\n changes.forEach((change)=>{\n if (!change.position) {\n return;\n }\n if (change.name === '$text' || change.position.nodeAfter && model.schema.isInline(change.position.nodeAfter)) {\n changedNodes.add(change.position.parent);\n [\n ...model.markers.getMarkersAtPosition(change.position)\n ].forEach((markerAtChange)=>{\n removedMarkers.add(markerAtChange.name);\n });\n } else if (change.type === 'insert' && change.position.nodeAfter) {\n changedNodes.add(change.position.nodeAfter);\n }\n });\n // Get markers from removed nodes also.\n changedMarkers.forEach(({ name, data: { newRange } })=>{\n if (newRange && newRange.start.root.rootName === '$graveyard') {\n removedMarkers.add(name);\n }\n });\n // Get markers from the updated nodes and remove all (search will be re-run on these nodes).\n changedNodes.forEach((node)=>{\n const markersInNode = [\n ...model.markers.getMarkersIntersectingRange(model.createRangeIn(node))\n ];\n markersInNode.forEach((marker)=>removedMarkers.add(marker.name));\n });\n // Remove results from the changed part of content.\n removedMarkers.forEach((markerName)=>{\n if (!results.has(markerName)) {\n return;\n }\n if (results.get(markerName) === this.state.highlightedResult) {\n this.state.highlightedResult = null;\n }\n results.remove(markerName);\n });\n // Run search callback again on updated nodes.\n const changedSearchResults = [];\n const findAndReplaceUtils = this.editor.plugins.get('FindAndReplaceUtils');\n changedNodes.forEach((nodeToCheck)=>{\n const changedNodeSearchResults = findAndReplaceUtils.updateFindResultFromRange(model.createRangeOn(nodeToCheck), model, this.state.lastSearchCallback, results);\n changedSearchResults.push(...changedNodeSearchResults);\n });\n changedMarkers.forEach((markerToCheck)=>{\n // Handle search result highlight update when T&C plugin is active.\n // Lookup is performed only on newly inserted markers.\n if (markerToCheck.data.newRange) {\n const changedNodeSearchResults = findAndReplaceUtils.updateFindResultFromRange(markerToCheck.data.newRange, model, this.state.lastSearchCallback, results);\n changedSearchResults.push(...changedNodeSearchResults);\n }\n });\n if (!this.state.highlightedResult && changedSearchResults.length) {\n // If there are found phrases but none is selected, select the first one.\n this.state.highlightedResult = changedSearchResults[0];\n } else {\n // If there is already highlight item then refresh highlight offset after appending new items.\n this.state.refreshHighlightOffset(model);\n }\n };\n}\n\n/**\n * The find and replace plugin.\n *\n * For a detailed overview, check the {@glink features/find-and-replace Find and replace feature documentation}.\n *\n * This is a \"glue\" plugin which loads the following plugins:\n *\n * * The {@link module:find-and-replace/findandreplaceediting~FindAndReplaceEditing find and replace editing feature},\n * * The {@link module:find-and-replace/findandreplaceui~FindAndReplaceUI find and replace UI feature}\n */ class FindAndReplace extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n FindAndReplaceEditing,\n FindAndReplaceUI\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'FindAndReplace';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const ui = this.editor.plugins.get('FindAndReplaceUI');\n const findAndReplaceEditing = this.editor.plugins.get('FindAndReplaceEditing');\n const state = findAndReplaceEditing.state;\n ui.on('findNext', (event, data)=>{\n // Data is contained only for the \"find\" button.\n if (data) {\n state.searchText = data.searchText;\n findAndReplaceEditing.find(data.searchText, data);\n } else {\n // Find next arrow button press.\n this.editor.execute('findNext');\n }\n });\n ui.on('findPrevious', (event, data)=>{\n if (data && state.searchText !== data.searchText) {\n findAndReplaceEditing.find(data.searchText);\n } else {\n // Subsequent calls.\n this.editor.execute('findPrevious');\n }\n });\n ui.on('replace', (event, data)=>{\n if (state.searchText !== data.searchText) {\n findAndReplaceEditing.find(data.searchText);\n }\n const highlightedResult = state.highlightedResult;\n if (highlightedResult) {\n this.editor.execute('replace', data.replaceText, highlightedResult);\n }\n });\n ui.on('replaceAll', (event, data)=>{\n // The state hadn't been yet built for this search text.\n if (state.searchText !== data.searchText) {\n findAndReplaceEditing.find(data.searchText);\n }\n this.editor.execute('replaceAll', data.replaceText, state.results);\n });\n // Reset the state when the user invalidated last search results, for instance,\n // by starting typing another search query or changing options.\n ui.on('searchReseted', ()=>{\n state.clear(this.editor.model);\n findAndReplaceEditing.stop();\n });\n }\n}\n\nexport { FindAndReplace, FindAndReplaceEditing, FindAndReplaceFormView, FindAndReplaceState, FindAndReplaceUI, FindAndReplaceUtils, FindCommand, FindNextCommand, FindPreviousCommand, FindReplaceCommandBase, ReplaceAllCommand, ReplaceCommand, sortSearchResultsByMarkerPositions as _sortFindResultsByMarkerPositions };\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 find-and-replace/ui/findandreplaceformview\n */\n\nimport {\n\tView,\n\tButtonView,\n\tLabeledFieldView,\n\n\tFocusCycler,\n\tcreateLabeledInputText,\n\tsubmitHandler,\n\tViewCollection,\n\n\ttype Template,\n\ttype InputView,\n\ttype FocusableView,\n\tSwitchButtonView,\n\tCollapsibleView\n} from 'ckeditor5/src/ui.js';\n\nimport {\n\tFocusTracker,\n\tKeystrokeHandler,\n\tRect,\n\tisVisible,\n\ttype Locale\n} from 'ckeditor5/src/utils.js';\n\n// See: #8833.\n// eslint-disable-next-line ckeditor5-rules/ckeditor-imports\nimport '@ckeditor/ckeditor5-ui/theme/components/responsive-form/responsiveform.css';\nimport '../../theme/findandreplaceform.css';\nimport { IconPreviousArrow } from 'ckeditor5/src/icons.js';\n\n/**\n * The find and replace form view class.\n *\n * See {@link module:find-and-replace/ui/findandreplaceformview~FindAndReplaceFormView}.\n */\nexport class FindAndReplaceFormView extends View {\n\t/**\n\t * A collection of child views.\n\t */\n\tpublic children: ViewCollection;\n\n\t/**\n\t * Stores the number of matched search results.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public matchCount: number;\n\n\t/**\n\t * The offset of currently highlighted search result in {@link #matchCount matched results}.\n\t *\n\t * @observable\n\t */\n\tdeclare public readonly highlightOffset: number;\n\n\t/**\n\t * `true` when the search params (find text, options) has been changed by the user since\n\t * the last time find was executed. `false` otherwise.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public isDirty: boolean;\n\n\t/**\n\t * A live object with the aggregated `isEnabled` states of editor commands related to find and\n\t * replace. For instance, it may look as follows:\n\t *\n\t * ```json\n\t * {\n\t * \tfindNext: true,\n\t * \tfindPrevious: true,\n\t * \treplace: false,\n\t * \treplaceAll: false\n\t * }\n\t * ```\n\t *\n\t * @internal\n\t * @observable\n\t */\n\tdeclare public readonly _areCommandsEnabled: Record<string, boolean>;\n\n\t/**\n\t * The content of the counter label displaying the index of the current highlighted match\n\t * on top of the find input, for instance \"3 of 50\".\n\t *\n\t * @internal\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public _resultsCounterText: string;\n\n\t/**\n\t * The flag reflecting the state of the \"Match case\" switch button in the search options\n\t * dropdown.\n\t *\n\t * @internal\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public _matchCase: boolean;\n\n\t/**\n\t * The flag reflecting the state of the \"Whole words only\" switch button in the search options\n\t * dropdown.\n\t *\n\t * @internal\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public _wholeWordsOnly: boolean;\n\n\t/**\n\t * This flag is set `true` when some matches were found and the user didn't change the search\n\t * params (text to find, options) yet. This is only possible immediately after hitting the \"Find\" button.\n\t * `false` when there were no matches (see {@link #matchCount}) or the user changed the params (see {@link #isDirty}).\n\t *\n\t * It is used to control the enabled state of the replace UI (input and buttons); replacing text is only possible\n\t * if this flag is `true`.\n\t *\n\t * @internal\n\t * @observable\n\t */\n\tdeclare public readonly _searchResultsFound: boolean;\n\n\t/**\n\t * The find in text input view that stores the searched string.\n\t *\n\t * @internal\n\t */\n\tpublic readonly _findInputView: LabeledFieldView<InputView>;\n\n\t/**\n\t * The replace input view.\n\t */\n\tprivate readonly _replaceInputView: LabeledFieldView;\n\n\t/**\n\t * The find button view that initializes the search process.\n\t */\n\tprivate readonly _findButtonView: ButtonView;\n\n\t/**\n\t * The find previous button view.\n\t */\n\tprivate readonly _findPrevButtonView: ButtonView;\n\n\t/**\n\t * The find next button view.\n\t */\n\tprivate readonly _findNextButtonView: ButtonView;\n\n\t/**\n\t * A collapsible view aggregating the advanced search options.\n\t */\n\tprivate readonly _advancedOptionsCollapsibleView: CollapsibleView;\n\n\t/**\n\t * A switch button view controlling the \"Match case\" option.\n\t */\n\tprivate readonly _matchCaseSwitchView: SwitchButtonView;\n\n\t/**\n\t * A switch button view controlling the \"Whole words only\" option.\n\t */\n\tprivate readonly _wholeWordsOnlySwitchView: SwitchButtonView;\n\n\t/**\n\t * The replace button view.\n\t */\n\tprivate readonly _replaceButtonView: ButtonView;\n\n\t/**\n\t * The replace all button view.\n\t */\n\tprivate readonly _replaceAllButtonView: ButtonView;\n\n\t/**\n\t * The `div` aggregating the inputs.\n\t */\n\tprivate readonly _inputsDivView: View;\n\n\t/**\n\t * The `div` aggregating the action buttons.\n\t */\n\tprivate readonly _actionButtonsDivView: View;\n\n\t/**\n\t * Tracks information about the DOM focus in the form.\n\t */\n\tprivate readonly _focusTracker: FocusTracker;\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tprivate readonly _keystrokes: KeystrokeHandler;\n\n\t/**\n\t * A collection of views that can be focused in the form.\n\t */\n\tprivate readonly _focusables: ViewCollection<FocusableView>;\n\n\t/**\n\t * Helps cycling over {@link #_focusables} in the form.\n\t */\n\tpublic readonly focusCycler: FocusCycler;\n\n\tpublic declare locale: Locale;\n\n\t/**\n\t * Creates a view of find and replace form.\n\t *\n\t * @param locale The localization services instance.\n\t */\n\tconstructor( locale: Locale ) {\n\t\tsuper( locale );\n\n\t\tconst t = locale.t;\n\n\t\tthis.children = this.createCollection();\n\n\t\tthis.set( 'matchCount', 0 );\n\n\t\tthis.set( 'highlightOffset', 0 );\n\n\t\tthis.set( 'isDirty', false );\n\n\t\tthis.set( '_areCommandsEnabled', {} );\n\n\t\tthis.set( '_resultsCounterText', '' );\n\n\t\tthis.set( '_matchCase', false );\n\n\t\tthis.set( '_wholeWordsOnly', false );\n\n\t\tthis.bind( '_searchResultsFound' ).to(\n\t\t\tthis, 'matchCount',\n\t\t\tthis, 'isDirty',\n\t\t\t( matchCount, isDirty ) => {\n\t\t\t\treturn matchCount > 0 && !isDirty;\n\t\t\t}\n\t\t);\n\n\t\tthis._findInputView = this._createInputField( t( 'Find in text…' ) );\n\n\t\tthis._findPrevButtonView = this._createButton( {\n\t\t\tlabel: t( 'Previous result' ),\n\t\t\tclass: 'ck-button-prev',\n\t\t\ticon: IconPreviousArrow,\n\t\t\tkeystroke: 'Shift+F3',\n\t\t\ttooltip: true\n\t\t} );\n\n\t\tthis._findNextButtonView = this._createButton( {\n\t\t\tlabel: t( 'Next result' ),\n\t\t\tclass: 'ck-button-next',\n\t\t\ticon: IconPreviousArrow,\n\t\t\tkeystroke: 'F3',\n\t\t\ttooltip: true\n\t\t} );\n\n\t\tthis._replaceInputView = this._createInputField( t( 'Replace with…' ), 'ck-labeled-field-replace' );\n\n\t\tthis._inputsDivView = this._createInputsDiv();\n\n\t\tthis._matchCaseSwitchView = this._createMatchCaseSwitch();\n\t\tthis._wholeWordsOnlySwitchView = this._createWholeWordsOnlySwitch();\n\n\t\tthis._advancedOptionsCollapsibleView = this._createAdvancedOptionsCollapsible();\n\n\t\tthis._replaceAllButtonView = this._createButton( {\n\t\t\tlabel: t( 'Replace all' ),\n\t\t\tclass: 'ck-button-replaceall',\n\t\t\twithText: true\n\t\t} );\n\n\t\tthis._replaceButtonView = this._createButton( {\n\t\t\tlabel: t( 'Replace' ),\n\t\t\tclass: 'ck-button-replace',\n\t\t\twithText: true\n\t\t} );\n\n\t\tthis._findButtonView = this._createButton( {\n\t\t\tlabel: t( 'Find' ),\n\t\t\tclass: 'ck-button-find ck-button-action',\n\t\t\twithText: true\n\t\t} );\n\n\t\tthis._actionButtonsDivView = this._createActionButtonsDiv();\n\n\t\tthis._focusTracker = new FocusTracker();\n\n\t\tthis._keystrokes = new KeystrokeHandler();\n\n\t\tthis._focusables = new ViewCollection();\n\n\t\tthis.focusCycler = new FocusCycler( {\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this._focusTracker,\n\t\t\tkeystrokeHandler: this._keystrokes,\n\t\t\tactions: {\n\t\t\t\t// Navigate form fields backwards using the <kbd>Shift</kbd> + <kbd>Tab</kbd> keystroke.\n\t\t\t\tfocusPrevious: 'shift + tab',\n\n\t\t\t\t// Navigate form fields forwards using the <kbd>Tab</kbd> key.\n\t\t\t\tfocusNext: 'tab'\n\t\t\t}\n\t\t} );\n\n\t\tthis.children.addMany( [\n\t\t\tthis._inputsDivView,\n\t\t\tthis._advancedOptionsCollapsibleView,\n\t\t\tthis._actionButtonsDivView\n\t\t] );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'form',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-find-and-replace-form'\n\t\t\t\t],\n\n\t\t\t\ttabindex: '-1'\n\t\t\t},\n\t\t\tchildren: this.children\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tsubmitHandler( { view: this } );\n\n\t\tthis._initFocusCycling();\n\t\tthis._initKeystrokeHandling();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._focusTracker.destroy();\n\t\tthis._keystrokes.destroy();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic focus( direction?: 1 | -1 ): void {\n\t\tif ( direction === -1 ) {\n\t\t\tthis.focusCycler.focusLast();\n\t\t} else {\n\t\t\tthis.focusCycler.focusFirst();\n\t\t}\n\t}\n\n\t/**\n\t * Resets the form before re-appearing.\n\t *\n\t * It clears error messages, hides the match counter and disables the replace feature\n\t * until the next hit of the \"Find\" button.\n\t *\n\t * **Note**: It does not reset inputs and options, though. This way the form works better in editors with\n\t * disappearing toolbar (e.g. BalloonEditor): hiding the toolbar by accident (together with the find and replace UI)\n\t * does not require filling the entire form again.\n\t */\n\tpublic reset(): void {\n\t\tthis._findInputView.errorText = null;\n\t\tthis.isDirty = true;\n\t}\n\n\t/**\n\t * Returns the value of the find input.\n\t */\n\tprivate get _textToFind(): string {\n\t\treturn ( this._findInputView.fieldView.element as HTMLInputElement ).value;\n\t}\n\n\t/**\n\t * Returns the value of the replace input.\n\t */\n\tprivate get _textToReplace() {\n\t\treturn ( this._replaceInputView.fieldView.element as HTMLInputElement ).value;\n\t}\n\n\t/**\n\t * Configures and returns the `<div>` aggregating all form inputs.\n\t */\n\tprivate _createInputsDiv(): View {\n\t\tconst locale = this.locale;\n\t\tconst t = locale.t;\n\t\tconst inputsDivView = new View( locale );\n\n\t\t// Typing in the find field invalidates all previous results (the form is \"dirty\").\n\t\tthis._findInputView.fieldView.on( 'input', () => {\n\t\t\tthis.isDirty = true;\n\t\t} );\n\n\t\t// Pressing prev/next buttons fires related event on the form.\n\t\tthis._findPrevButtonView.delegate( 'execute' ).to( this, 'findPrevious' );\n\t\tthis._findNextButtonView.delegate( 'execute' ).to( this, 'findNext' );\n\n\t\t// Prev/next buttons will be disabled when related editor command gets disabled.\n\t\tthis._findPrevButtonView.bind( 'isEnabled' ).to( this, '_areCommandsEnabled', ( { findPrevious } ) => findPrevious );\n\t\tthis._findNextButtonView.bind( 'isEnabled' ).to( this, '_areCommandsEnabled', ( { findNext } ) => findNext );\n\n\t\tthis._injectFindResultsCounter();\n\n\t\tthis._replaceInputView.bind( 'isEnabled' ).to(\n\t\t\tthis, '_areCommandsEnabled',\n\t\t\tthis, '_searchResultsFound',\n\t\t\t( { replace }, resultsFound ) => replace && resultsFound );\n\n\t\tthis._replaceInputView.bind( 'infoText' ).to(\n\t\t\tthis._replaceInputView, 'isEnabled',\n\t\t\tthis._replaceInputView, 'isFocused',\n\t\t\t( isEnabled, isFocused ) => {\n\t\t\t\tif ( isEnabled || !isFocused ) {\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\treturn t( 'Tip: Find some text first in order to replace it.' );\n\t\t\t} );\n\n\t\tinputsDivView.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [ 'ck', 'ck-find-and-replace-form__inputs' ]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\tthis._findInputView,\n\t\t\t\tthis._findPrevButtonView,\n\t\t\t\tthis._findNextButtonView,\n\t\t\t\tthis._replaceInputView\n\t\t\t]\n\t\t} );\n\n\t\treturn inputsDivView;\n\t}\n\n\t/**\n\t * The action performed when the {@link #_findButtonView} is pressed.\n\t */\n\tprivate _onFindButtonExecute() {\n\t\t// When hitting \"Find\" in an empty input, an error should be displayed.\n\t\t// Also, if the form was \"dirty\", it should remain so.\n\t\tif ( !this._textToFind ) {\n\t\t\tconst t = this.t!;\n\n\t\t\tthis._findInputView.errorText = t( 'Text to find must not be empty.' );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Hitting \"Find\" automatically clears the dirty state.\n\t\tthis.isDirty = false;\n\n\t\tthis.fire<FindNextEvent>( 'findNext', {\n\t\t\tsearchText: this._textToFind,\n\t\t\tmatchCase: this._matchCase,\n\t\t\twholeWords: this._wholeWordsOnly\n\t\t} );\n\t}\n\n\t/**\n\t * Configures an injects the find results counter displaying a \"N of M\" label of the {@link #_findInputView}.\n\t */\n\tprivate _injectFindResultsCounter() {\n\t\tconst locale = this.locale;\n\t\tconst t = locale.t;\n\t\tconst bind = this.bindTemplate;\n\t\tconst resultsCounterView = new View( this.locale );\n\n\t\tthis.bind( '_resultsCounterText' ).to( this, 'highlightOffset', this, 'matchCount',\n\t\t\t( highlightOffset, matchCount ) => t( '%0 of %1', [ highlightOffset, matchCount ] )\n\t\t);\n\n\t\tresultsCounterView.setTemplate( {\n\t\t\ttag: 'span',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-results-counter',\n\t\t\t\t\t// The counter only makes sense when the field text corresponds to search results in the editing.\n\t\t\t\t\tbind.if( 'isDirty', 'ck-hidden' )\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\ttext: bind.to( '_resultsCounterText' )\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\n\t\t// The whole idea is that when the text of the counter changes, its width also increases/decreases and\n\t\t// it consumes more or less space over the input. The input, on the other hand, should adjust it's right\n\t\t// padding so its *entire* text always remains visible and available to the user.\n\t\tconst updateFindInputPadding = () => {\n\t\t\tconst inputElement = this._findInputView.fieldView.element;\n\n\t\t\t// Don't adjust the padding if the input (also: counter) were not rendered or not inserted into DOM yet.\n\t\t\tif ( !inputElement || !isVisible( inputElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst counterWidth = new Rect( resultsCounterView.element! ).width;\n\t\t\tconst paddingPropertyName = locale.uiLanguageDirection === 'ltr' ? 'paddingRight' : 'paddingLeft';\n\n\t\t\tif ( !counterWidth ) {\n\t\t\t\tinputElement.style[ paddingPropertyName ] = '';\n\t\t\t} else {\n\t\t\t\tinputElement.style[ paddingPropertyName ] = `calc( 2 * var(--ck-spacing-standard) + ${ counterWidth }px )`;\n\t\t\t}\n\t\t};\n\n\t\t// Adjust the input padding when the text of the counter changes, for instance \"1 of 200\" is narrower than \"123 of 200\".\n\t\t// Using \"low\" priority to let the text be set by the template binding first.\n\t\tthis.on( 'change:_resultsCounterText', updateFindInputPadding, { priority: 'low' } );\n\n\t\t// Adjust the input padding when the counter shows or hides. When hidden, there should be no padding. When it shows, the\n\t\t// padding should be set according to the text of the counter.\n\t\t// Using \"low\" priority to let the text be set by the template binding first.\n\t\tthis.on( 'change:isDirty', updateFindInputPadding, { priority: 'low' } );\n\n\t\t// Put the counter element next to the <input> in the find field.\n\t\t( this._findInputView.template!.children![ 0 ] as Template ).children!.push( resultsCounterView );\n\t}\n\n\t/**\n\t * Creates the collapsible view aggregating the advanced search options.\n\t */\n\tprivate _createAdvancedOptionsCollapsible(): CollapsibleView {\n\t\tconst t = this.locale.t;\n\t\tconst collapsible = new CollapsibleView( this.locale, [\n\t\t\tthis._matchCaseSwitchView,\n\t\t\tthis._wholeWordsOnlySwitchView\n\t\t] );\n\n\t\tcollapsible.set( {\n\t\t\tlabel: t( 'Advanced options' ),\n\t\t\tisCollapsed: true\n\t\t} );\n\n\t\treturn collapsible;\n\t}\n\n\t/**\n\t * Configures and returns the `<div>` element aggregating all form action buttons.\n\t */\n\tprivate _createActionButtonsDiv(): View {\n\t\tconst actionsDivView = new View( this.locale );\n\n\t\tthis._replaceButtonView.bind( 'isEnabled' ).to(\n\t\t\tthis, '_areCommandsEnabled',\n\t\t\tthis, '_searchResultsFound',\n\t\t\t( { replace }, resultsFound ) => replace && resultsFound );\n\n\t\tthis._replaceAllButtonView.bind( 'isEnabled' ).to(\n\t\t\tthis, '_areCommandsEnabled',\n\t\t\tthis, '_searchResultsFound',\n\t\t\t( { replaceAll }, resultsFound ) => replaceAll && resultsFound );\n\n\t\tthis._replaceButtonView.on( 'execute', () => {\n\t\t\tthis.fire( 'replace', {\n\t\t\t\tsearchText: this._textToFind,\n\t\t\t\treplaceText: this._textToReplace\n\t\t\t} );\n\t\t} );\n\n\t\tthis._replaceAllButtonView.on( 'execute', () => {\n\t\t\tthis.fire( 'replaceAll', {\n\t\t\t\tsearchText: this._textToFind,\n\t\t\t\treplaceText: this._textToReplace\n\t\t\t} );\n\n\t\t\tthis.focus();\n\t\t} );\n\n\t\tthis._findButtonView.on( 'execute', this._onFindButtonExecute.bind( this ) );\n\n\t\tactionsDivView.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [ 'ck', 'ck-find-and-replace-form__actions' ]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\tthis._replaceAllButtonView,\n\t\t\t\tthis._replaceButtonView,\n\t\t\t\tthis._findButtonView\n\t\t\t]\n\t\t} );\n\n\t\treturn actionsDivView;\n\t}\n\n\t/**\n\t * Creates, configures and returns and instance of a dropdown allowing users to narrow\n\t * the search criteria down. The dropdown has a list with switch buttons for each option.\n\t */\n\tprivate _createMatchCaseSwitch(): SwitchButtonView {\n\t\tconst t = this.locale.t;\n\n\t\tconst matchCaseSwitchButton = new SwitchButtonView( this.locale );\n\n\t\tmatchCaseSwitchButton.set( {\n\t\t\tlabel: t( 'Match case' ),\n\t\t\twithText: true\n\t\t} );\n\n\t\t// Let the switch be controlled by form's observable property.\n\t\tmatchCaseSwitchButton.bind( 'isOn' ).to( this, '_matchCase' );\n\n\t\t// // Update the state of the form when a switch is toggled.\n\t\tmatchCaseSwitchButton.on( 'execute', () => {\n\t\t\tthis._matchCase = !this._matchCase;\n\t\t\t// Toggling a switch makes the form dirty because this changes search criteria\n\t\t\t// just like typing text of the find input.\n\t\t\tthis.isDirty = true;\n\t\t} );\n\n\t\treturn matchCaseSwitchButton;\n\t}\n\n\t/**\n\t * Creates, configures and returns and instance of a dropdown allowing users to narrow\n\t * the search criteria down. The dropdown has a list with switch buttons for each option.\n\t */\n\tprivate _createWholeWordsOnlySwitch(): SwitchButtonView {\n\t\tconst t = this.locale.t;\n\n\t\tconst wholeWordsOnlySwitchButton = new SwitchButtonView( this.locale );\n\n\t\twholeWordsOnlySwitchButton.set( {\n\t\t\tlabel: t( 'Whole words only' ),\n\t\t\twithText: true\n\t\t} );\n\n\t\t// Let the switch be controlled by form's observable property.\n\t\twholeWordsOnlySwitchButton.bind( 'isOn' ).to( this, '_wholeWordsOnly' );\n\n\t\t// // Update the state of the form when a switch is toggled.\n\t\twholeWordsOnlySwitchButton.on( 'execute', () => {\n\t\t\tthis._wholeWordsOnly = !this._wholeWordsOnly;\n\t\t\t// Toggling a switch makes the form dirty because this changes search criteria\n\t\t\t// just like typing text of the find input.\n\t\t\tthis.isDirty = true;\n\t\t} );\n\n\t\treturn wholeWordsOnlySwitchButton;\n\t}\n\n\t/**\n\t * Initializes the {@link #_focusables} and {@link #_focusTracker} to allow navigation\n\t * using <kbd>Tab</kbd> and <kbd>Shift</kbd>+<kbd>Tab</kbd> keystrokes in the right order.\n\t */\n\tprivate _initFocusCycling() {\n\t\tconst childViews = [\n\t\t\tthis._findInputView,\n\t\t\tthis._findPrevButtonView,\n\t\t\tthis._findNextButtonView,\n\t\t\tthis._replaceInputView,\n\t\t\tthis._advancedOptionsCollapsibleView.buttonView,\n\t\t\tthis._matchCaseSwitchView,\n\t\t\tthis._wholeWordsOnlySwitchView,\n\t\t\tthis._replaceAllButtonView,\n\t\t\tthis._replaceButtonView,\n\t\t\tthis._findButtonView\n\t\t];\n\n\t\tchildViews.forEach( v => {\n\t\t\t// Register the view as focusable.\n\t\t\tthis._focusables.add( v );\n\n\t\t\t// Register the view in the focus tracker.\n\t\t\tthis._focusTracker.add( v.element! );\n\t\t} );\n\t}\n\n\t/**\n\t * Initializes the keystroke handling in the form.\n\t */\n\tprivate _initKeystrokeHandling() {\n\t\tconst stopPropagation = ( data: Event ) => data.stopPropagation();\n\t\tconst stopPropagationAndPreventDefault = ( data: Event ) => {\n\t\t\tdata.stopPropagation();\n\t\t\tdata.preventDefault();\n\t\t};\n\n\t\t// Start listening for the keystrokes coming from #element.\n\t\tthis._keystrokes.listenTo( this.element! );\n\n\t\t// Find the next result upon F3.\n\t\tthis._keystrokes.set( 'f3', event => {\n\t\t\tstopPropagationAndPreventDefault( event );\n\n\t\t\tthis._findNextButtonView.fire( 'execute' );\n\t\t} );\n\n\t\t// Find the previous result upon F3.\n\t\tthis._keystrokes.set( 'shift+f3', event => {\n\t\t\tstopPropagationAndPreventDefault( event );\n\n\t\t\tthis._findPrevButtonView.fire( 'execute' );\n\t\t} );\n\n\t\t// Find or replace upon pressing Enter in the find and replace fields.\n\t\tthis._keystrokes.set( 'enter', event => {\n\t\t\tconst target = event.target;\n\n\t\t\tif ( target === this._findInputView.fieldView.element ) {\n\t\t\t\tif ( this._areCommandsEnabled.findNext ) {\n\t\t\t\t\tthis._findNextButtonView.fire( 'execute' );\n\t\t\t\t} else {\n\t\t\t\t\tthis._findButtonView.fire( 'execute' );\n\t\t\t\t}\n\t\t\t\tstopPropagationAndPreventDefault( event );\n\t\t\t} else if ( target === this._replaceInputView.fieldView.element && !this.isDirty ) {\n\t\t\t\tthis._replaceButtonView.fire( 'execute' );\n\t\t\t\tstopPropagationAndPreventDefault( event );\n\t\t\t}\n\t\t} );\n\n\t\t// Find previous upon pressing Shift+Enter in the find field.\n\t\tthis._keystrokes.set( 'shift+enter', event => {\n\t\t\tconst target = event.target;\n\n\t\t\tif ( target !== this._findInputView.fieldView.element ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._areCommandsEnabled.findPrevious ) {\n\t\t\t\tthis._findPrevButtonView.fire( 'execute' );\n\t\t\t} else {\n\t\t\t\tthis._findButtonView.fire( 'execute' );\n\t\t\t}\n\n\t\t\tstopPropagationAndPreventDefault( event );\n\t\t} );\n\n\t\t// Since the form is in the dropdown panel which is a child of the toolbar, the toolbar's\n\t\t// keystroke handler would take over the key management in the URL input.\n\t\t// We need to prevent this ASAP. Otherwise, the basic caret movement using the arrow keys will be impossible.\n\t\tthis._keystrokes.set( 'arrowright', stopPropagation );\n\t\tthis._keystrokes.set( 'arrowleft', stopPropagation );\n\t\tthis._keystrokes.set( 'arrowup', stopPropagation );\n\t\tthis._keystrokes.set( 'arrowdown', stopPropagation );\n\t}\n\n\t/**\n\t * Creates a button view.\n\t *\n\t * @param options The properties of the `ButtonView`.\n\t * @returns The button view instance.\n\t */\n\tprivate _createButton( options: object ): ButtonView {\n\t\tconst button = new ButtonView( this.locale );\n\n\t\tbutton.set( options );\n\n\t\treturn button;\n\t}\n\n\t/**\n\t * Creates a labeled input view.\n\t *\n\t * @param label The input label.\n\t * @returns The labeled input view instance.\n\t */\n\tprivate _createInputField( label: string, className?: string ): LabeledFieldView<InputView> {\n\t\tconst labeledInput = new LabeledFieldView( this.locale, createLabeledInputText );\n\n\t\tlabeledInput.label = label;\n\t\tlabeledInput.class = className;\n\n\t\treturn labeledInput;\n\t}\n}\n\n/**\n * Fired when the find next button is triggered.\n *\n * @eventName ~FindAndReplaceFormView#findNext\n * @param data The event data.\n */\nexport type FindNextEvent = {\n\tname: 'findNext';\n\targs: [ data?: FindNextEventData ];\n};\n\nexport type FindNextEventData = FindEventBaseData & {\n\tmatchCase: boolean;\n\twholeWords: boolean;\n};\n\n/**\n * Fired when the find previous button is triggered.\n *\n * @eventName ~FindAndReplaceFormView#findPrevious\n * @param data The event data.\n */\nexport type FindPreviousEvent = {\n\tname: 'findPrevious';\n\targs: [ data?: FindEventBaseData ];\n};\n\n/**\n * Base type for all find/replace events.\n */\nexport type FindEventBaseData = {\n\tsearchText: string;\n};\n\n/**\n * Fired when the replace button is triggered.\n *\n * @eventName ~FindAndReplaceFormView#replace\n * @param data The event data.\n */\nexport type ReplaceEvent = {\n\tname: 'replace';\n\targs: [ data: ReplaceEventData ];\n};\n\nexport type ReplaceEventData = FindEventBaseData & {\n\treplaceText: string;\n};\n\n/**\n * Fired when the replaceAll button is triggered.\n *\n * @eventName ~FindAndReplaceFormView#replaceAll\n * @param data The event data.\n */\nexport type ReplaceAllEvent = {\n\tname: 'replaceAll';\n\targs: [ data: ReplaceEventData ];\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 find-and-replace/findandreplaceui\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core.js';\nimport { IconFindReplace } from 'ckeditor5/src/icons.js';\nimport {\n\tButtonView,\n\tMenuBarMenuListItemButtonView,\n\tDialog,\n\tDialogViewPosition,\n\tcreateDropdown,\n\tDropdownView,\n\tFormHeaderView,\n\tCssTransitionDisablerMixin,\n\ttype ViewWithCssTransitionDisabler\n} from 'ckeditor5/src/ui.js';\nimport { FindAndReplaceFormView } from './ui/findandreplaceformview.js';\nimport { type FindAndReplaceEditing } from './findandreplaceediting.js';\nimport { type FindNextCommand } from './findnextcommand.js';\nimport { type FindPreviousCommand } from './findpreviouscommand.js';\nimport { type ReplaceCommand } from './replacecommand.js';\nimport { type ReplaceAllCommand } from './replaceallcommand.js';\n\n/**\n * The default find and replace UI.\n *\n * It registers the `'findAndReplace'` UI button in the editor's {@link module:ui/componentfactory~ComponentFactory component factory}.\n * that uses the {@link module:find-and-replace/findandreplace~FindAndReplace FindAndReplace} plugin API.\n */\nexport class FindAndReplaceUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ Dialog ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FindAndReplaceUI' 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 * A reference to the find and replace form view.\n\t */\n\tpublic formView: FindAndReplaceFormView & ViewWithCssTransitionDisabler | null;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'findAndReplace.uiType', 'dialog' );\n\n\t\tthis.formView = null;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst isUiUsingDropdown = editor.config.get( 'findAndReplace.uiType' ) === 'dropdown';\n\t\tconst findCommand = editor.commands.get( 'find' )!;\n\t\tconst t = this.editor.t;\n\n\t\t// Register the toolbar component: dropdown or button (that opens a dialog).\n\t\teditor.ui.componentFactory.add( 'findAndReplace', () => {\n\t\t\tlet view: DropdownView | ButtonView;\n\n\t\t\tif ( isUiUsingDropdown ) {\n\t\t\t\tview = this._createDropdown();\n\n\t\t\t\t// Button should be disabled when in source editing mode. See #10001.\n\t\t\t\tview.bind( 'isEnabled' ).to( findCommand );\n\t\t\t} else {\n\t\t\t\tview = this._createDialogButtonForToolbar();\n\t\t\t}\n\n\t\t\teditor.keystrokes.set( 'Ctrl+F', ( data, cancelEvent ) => {\n\t\t\t\tif ( !findCommand.isEnabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( view instanceof DropdownView ) {\n\t\t\t\t\tconst dropdownButtonView = view.buttonView;\n\n\t\t\t\t\tif ( !dropdownButtonView.isOn ) {\n\t\t\t\t\t\tdropdownButtonView.fire( 'execute' );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif ( view.isOn ) {\n\t\t\t\t\t\t// If the dialog is open, do not close it. Instead focus it.\n\t\t\t\t\t\t// Unfortunately we can't simply use:\n\t\t\t\t\t\t// \tthis.formView!.focus();\n\t\t\t\t\t\t// because it would always move focus to the first input field, which we don't want.\n\t\t\t\t\t\teditor.plugins.get( 'Dialog' ).view!.focus();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tview.fire( 'execute' );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcancelEvent();\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\n\t\tif ( !isUiUsingDropdown ) {\n\t\t\teditor.ui.componentFactory.add( 'menuBar:findAndReplace', () => {\n\t\t\t\treturn this._createDialogButtonForMenuBar();\n\t\t\t} );\n\t\t}\n\n\t\t// Add the information about the keystroke to the accessibility database.\n\t\teditor.accessibility.addKeystrokeInfos( {\n\t\t\tkeystrokes: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Find in the document' ),\n\t\t\t\t\tkeystroke: 'CTRL+F'\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * Creates a dropdown containing the find and replace form.\n\t */\n\tprivate _createDropdown(): DropdownView {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.locale.t;\n\t\tconst dropdownView = createDropdown( editor.locale );\n\n\t\tdropdownView.once( 'change:isOpen', () => {\n\t\t\tthis.formView = this._createFormView();\n\t\t\tthis.formView.children.add(\n\t\t\t\tnew FormHeaderView( editor.locale, {\n\t\t\t\t\tlabel: t( 'Find and replace' )\n\t\t\t\t} ),\n\t\t\t\t0\n\t\t\t);\n\n\t\t\tdropdownView.panelView.children.add( this.formView );\n\t\t} );\n\n\t\t// Every time a dropdown is opened, the search text field should get focused and selected for better UX.\n\t\t// Note: Using the low priority here to make sure the following listener starts working after\n\t\t// the default action of the drop-down is executed (i.e. the panel showed up). Otherwise,\n\t\t// the invisible form/input cannot be focused/selected.\n\t\t//\n\t\t// Each time a dropdown is closed, move the focus back to the find and replace toolbar button\n\t\t// and let the find and replace editing feature know that all search results can be invalidated\n\t\t// and no longer should be marked in the content.\n\t\tdropdownView.on( 'change:isOpen', ( event, name, isOpen ) => {\n\t\t\tif ( isOpen ) {\n\t\t\t\tthis._setupFormView();\n\t\t\t} else {\n\t\t\t\tthis.fire( 'searchReseted' );\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\n\t\tdropdownView.buttonView.set( {\n\t\t\ticon: IconFindReplace,\n\t\t\tlabel: t( 'Find and replace' ),\n\t\t\tkeystroke: 'CTRL+F',\n\t\t\ttooltip: true\n\t\t} );\n\n\t\treturn dropdownView;\n\t}\n\n\t/**\n\t * Creates a button that opens a dialog with the find and replace form.\n\t */\n\tprivate _createDialogButtonForToolbar(): ButtonView {\n\t\tconst editor = this.editor;\n\t\tconst buttonView = this._createButton( ButtonView );\n\t\tconst dialog = editor.plugins.get( 'Dialog' );\n\n\t\tbuttonView.set( {\n\t\t\ttooltip: true\n\t\t} );\n\n\t\t// Button should be on when the find and replace dialog is opened.\n\t\tbuttonView.bind( 'isOn' ).to( dialog, 'id', id => id === 'findAndReplace' );\n\n\t\t// Every time a dialog is opened, the search text field should get focused and selected for better UX.\n\t\t// Each time a dialog is closed, move the focus back to the find and replace toolbar button\n\t\t// and let the find and replace editing feature know that all search results can be invalidated\n\t\t// and no longer should be marked in the content.\n\t\tbuttonView.on( 'execute', () => {\n\t\t\tif ( buttonView.isOn ) {\n\t\t\t\tdialog.hide();\n\t\t\t} else {\n\t\t\t\tthis._showDialog();\n\t\t\t}\n\t\t} );\n\n\t\treturn buttonView;\n\t}\n\n\t/**\n\t * Creates a button for for menu bar that will show find and replace dialog.\n\t */\n\tprivate _createDialogButtonForMenuBar(): MenuBarMenuListItemButtonView {\n\t\tconst buttonView = this._createButton( MenuBarMenuListItemButtonView );\n\t\tconst dialogPlugin = this.editor.plugins.get( 'Dialog' );\n\t\tconst dialog = this.editor.plugins.get( 'Dialog' );\n\n\t\tbuttonView.set( {\n\t\t\trole: 'menuitemcheckbox',\n\t\t\tisToggleable: true\n\t\t} );\n\n\t\t// Button should be on when the find and replace dialog is opened.\n\t\tbuttonView.bind( 'isOn' ).to( dialog, 'id', id => id === 'findAndReplace' );\n\n\t\tbuttonView.on( 'execute', () => {\n\t\t\tif ( dialogPlugin.id === 'findAndReplace' ) {\n\t\t\t\tdialogPlugin.hide();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._showDialog();\n\t\t} );\n\n\t\treturn buttonView;\n\t}\n\n\t/**\n\t * Creates a button for find and replace command to use either in toolbar or in menu bar.\n\t */\n\tprivate _createButton<T extends typeof ButtonView | typeof MenuBarMenuListItemButtonView>( ButtonClass: T ): InstanceType<T> {\n\t\tconst editor = this.editor;\n\t\tconst findCommand = editor.commands.get( 'find' )!;\n\t\tconst buttonView = new ButtonClass( editor.locale ) as InstanceType<T>;\n\t\tconst t = editor.locale.t;\n\n\t\t// Button should be disabled when in source editing mode. See #10001.\n\t\tbuttonView.bind( 'isEnabled' ).to( findCommand );\n\n\t\tbuttonView.set( {\n\t\t\ticon: IconFindReplace,\n\t\t\tlabel: t( 'Find and replace' ),\n\t\t\tkeystroke: 'CTRL+F'\n\t\t} );\n\n\t\treturn buttonView;\n\t}\n\n\t/**\n\t * Shows the find and replace dialog.\n\t */\n\tprivate _showDialog(): void {\n\t\tconst editor = this.editor;\n\t\tconst dialog = editor.plugins.get( 'Dialog' );\n\t\tconst t = editor.locale.t;\n\n\t\tif ( !this.formView ) {\n\t\t\tthis.formView = this._createFormView();\n\t\t}\n\n\t\tdialog.show( {\n\t\t\tid: 'findAndReplace',\n\t\t\ttitle: t( 'Find and replace' ),\n\t\t\tcontent: this.formView,\n\t\t\tposition: DialogViewPosition.EDITOR_TOP_SIDE,\n\t\t\tonShow: () => {\n\t\t\t\tthis._setupFormView();\n\t\t\t},\n\n\t\t\tonHide: () => {\n\t\t\t\tthis.fire( 'searchReseted' );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Sets up the form view for the findN and replace.\n\t */\n\tprivate _createFormView(): FindAndReplaceFormView & ViewWithCssTransitionDisabler {\n\t\tconst editor = this.editor;\n\t\tconst formView = new ( CssTransitionDisablerMixin( FindAndReplaceFormView ) )( editor.locale );\n\t\tconst commands = editor.commands;\n\t\tconst findAndReplaceEditing: FindAndReplaceEditing = this.editor.plugins.get( 'FindAndReplaceEditing' );\n\t\tconst editingState = findAndReplaceEditing.state!;\n\n\t\tformView.bind( 'highlightOffset' ).to( editingState, 'highlightedOffset' );\n\n\t\t// Let the form know how many results were found in total.\n\t\tformView.listenTo( editingState.results, 'change', () => {\n\t\t\tformView.matchCount = editingState.results.length;\n\t\t} );\n\n\t\t// Command states are used to enable/disable individual form controls.\n\t\t// To keep things simple, instead of binding 4 individual observables, there's only one that combines every\n\t\t// commands' isEnabled state. Yes, it will change more often but this simplifies the structure of the form.\n\t\tconst findNextCommand: FindNextCommand = commands.get( 'findNext' )!;\n\t\tconst findPreviousCommand: FindPreviousCommand = commands.get( 'findPrevious' )!;\n\t\tconst replaceCommand: ReplaceCommand = commands.get( 'replace' )!;\n\t\tconst replaceAllCommand: ReplaceAllCommand = commands.get( 'replaceAll' )!;\n\t\tformView.bind( '_areCommandsEnabled' ).to(\n\t\t\tfindNextCommand, 'isEnabled',\n\t\t\tfindPreviousCommand, 'isEnabled',\n\t\t\treplaceCommand, 'isEnabled',\n\t\t\treplaceAllCommand, 'isEnabled',\n\t\t\t( findNext, findPrevious, replace, replaceAll ) => ( { findNext, findPrevious, replace, replaceAll } )\n\t\t);\n\n\t\t// The UI plugin works as an interface between the form and the editing part of the feature.\n\t\tformView.delegate( 'findNext', 'findPrevious', 'replace', 'replaceAll' ).to( this );\n\n\t\t// Let the feature know that search results are no longer relevant because the user changed the searched phrase\n\t\t// (or options) but didn't hit the \"Find\" button yet (e.g. still typing).\n\t\tformView.on( 'change:isDirty', ( evt, data, isDirty ) => {\n\t\t\tif ( isDirty ) {\n\t\t\t\tthis.fire( 'searchReseted' );\n\t\t\t}\n\t\t} );\n\n\t\treturn formView;\n\t}\n\n\t/**\n\t * Clears the find and replace form and focuses the search text field.\n\t */\n\tprivate _setupFormView(): void {\n\t\tthis.formView!.disableCssTransitions();\n\t\tthis.formView!.reset();\n\t\tthis.formView!._findInputView.fieldView.select();\n\t\tthis.formView!.enableCssTransitions();\n\t}\n}\n\n/**\n * Fired when the UI was reset and the search results marked in the editing root should be invalidated,\n * for instance, because the user changed the searched phrase (or options) but didn't hit\n * the \"Find\" button yet.\n *\n * @eventName ~FindAndReplaceUI#searchReseted\n */\nexport type FindResetedEvent = {\n\tname: 'searchReseted';\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 find-and-replace/findcommand\n*/\n\nimport { Command, type Editor } from 'ckeditor5/src/core.js';\nimport type { Collection } from 'ckeditor5/src/utils.js';\n\nimport type { FindAndReplaceState, FindCallback } from './findandreplacestate.js';\nimport type { FindResultType } from './findandreplace.js';\nimport { type FindAndReplaceUtils } from './findandreplaceutils.js';\n\n/**\n * The find command. It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */\nexport class FindCommand extends Command {\n\t/**\n\t * The find and replace state object used for command operations.\n\t */\n\tprivate _state: FindAndReplaceState;\n\n\t/**\n\t * Creates a new `FindCommand` instance.\n\t *\n\t * @param editor The editor on which this command will be used.\n\t * @param state An object to hold plugin state.\n\t */\n\tconstructor( editor: Editor, state: FindAndReplaceState ) {\n\t\tsuper( editor );\n\n\t\t// The find command is always enabled.\n\t\tthis.isEnabled = true;\n\n\t\t// It does not affect data so should be enabled in read-only mode.\n\t\tthis.affectsData = false;\n\n\t\tthis._state = state;\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @param callbackOrText\n\t * @param options Options object.\n\t * @param options.matchCase If set to `true`, the letter case will be matched.\n\t * @param options.wholeWords If set to `true`, only whole words that match `callbackOrText` will be matched.\n\t *\n\t * @fires execute\n\t */\n\tpublic override execute(\n\t\tcallbackOrText: string | FindCallback,\n\t\t{ matchCase, wholeWords }: FindAttributes = {}\n\t): { results: Collection<FindResultType>; findCallback: FindCallback } {\n\t\tconst { editor } = this;\n\t\tconst { model } = editor;\n\t\tconst findAndReplaceUtils: FindAndReplaceUtils = editor.plugins.get( 'FindAndReplaceUtils' );\n\n\t\tlet findCallback: FindCallback | undefined;\n\t\tlet callbackSearchText: string = '';\n\n\t\t// Allow to execute `find()` on a plugin with a keyword only.\n\t\tif ( typeof callbackOrText === 'string' ) {\n\t\t\tfindCallback = ( ...args ) => ( {\n\t\t\t\tresults: findAndReplaceUtils.findByTextCallback( callbackOrText, { matchCase, wholeWords } )( ...args ),\n\t\t\t\tsearchText: callbackOrText\n\t\t\t} );\n\t\t} else {\n\t\t\tfindCallback = callbackOrText;\n\t\t}\n\n\t\t// Wrap the callback to get the search text that will be assigned to the state.\n\t\tconst oldCallback = findCallback;\n\n\t\tfindCallback = ( ...args ) => {\n\t\t\tconst result = oldCallback( ...args );\n\n\t\t\tif ( result && 'searchText' in result ) {\n\t\t\t\tcallbackSearchText = result.searchText;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\n\t\t// Initial search is done on all nodes in all roots inside the content.\n\t\tconst results = model.document.getRootNames()\n\t\t\t.reduce( ( ( currentResults: Collection<FindResultType> | null, rootName ) => findAndReplaceUtils.updateFindResultFromRange(\n\t\t\t\tmodel.createRangeIn( model.document.getRoot( rootName )! ),\n\t\t\t\tmodel,\n\t\t\t\tfindCallback!,\n\t\t\t\tcurrentResults\n\t\t\t) ), null )!;\n\n\t\tthis._state.clear( model );\n\t\tthis._state.results.addMany( results );\n\t\tthis._state.highlightedResult = results.get( 0 );\n\t\tthis._state.searchText = callbackSearchText;\n\n\t\tif ( findCallback ) {\n\t\t\tthis._state.lastSearchCallback = findCallback;\n\t\t}\n\n\t\tthis._state.matchCase = !!matchCase;\n\t\tthis._state.matchWholeWords = !!wholeWords;\n\n\t\treturn {\n\t\t\tresults,\n\t\t\tfindCallback\n\t\t};\n\t}\n}\n\n/**\n * The options object for the find command.\n */\nexport type FindAttributes = { matchCase?: boolean; wholeWords?: boolean };\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 find-and-replace/findandreplacestate\n */\n\nimport type { Model, ModelItem } from 'ckeditor5/src/engine.js';\nimport { ObservableMixin, Collection, type CollectionChangeEvent, type ObservableChangeEvent } from 'ckeditor5/src/utils.js';\nimport type { FindResultType } from './findandreplace.js';\n\n/**\n * The object storing find and replace plugin state for a given editor instance.\n */\nexport class FindAndReplaceState extends /* #__PURE__ */ ObservableMixin() {\n\t/**\n\t * A collection of find matches.\n\t *\n\t * @observable\n\t */\n\tdeclare public results: Collection<FindResultType>;\n\n\t/**\n\t * Currently highlighted search result in {@link #results matched results}.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public highlightedResult: FindResultType | null;\n\n\t/**\n\t * Currently highlighted search result offset in {@link #results matched results}.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public highlightedOffset: number;\n\n\t/**\n\t * Searched text value.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public searchText: string;\n\n\t/**\n\t * The most recent search callback used by the feature to find matches.\n\t * It is used to re-run the search when user modifies the editor content.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public lastSearchCallback: FindCallback | null;\n\n\t/**\n\t * Replace text value.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public replaceText: string;\n\n\t/**\n\t * Indicates whether the matchCase checkbox has been checked.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public matchCase: boolean;\n\n\t/**\n\t * Indicates whether the matchWholeWords checkbox has been checked.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public matchWholeWords: boolean;\n\n\t/**\n\t * Creates an instance of the state.\n\t */\n\tpublic constructor( model: Model ) {\n\t\tsuper();\n\n\t\tthis.set( 'results', new Collection() );\n\t\tthis.set( 'highlightedResult', null );\n\t\tthis.set( 'highlightedOffset', 0 );\n\t\tthis.set( 'searchText', '' );\n\t\tthis.set( 'replaceText', '' );\n\t\tthis.set( 'lastSearchCallback', null );\n\t\tthis.set( 'matchCase', false );\n\t\tthis.set( 'matchWholeWords', false );\n\n\t\tthis.results.on<CollectionChangeEvent<FindResultType>>( 'change', ( eventInfo, { removed, index } ) => {\n\t\t\tif ( Array.from( removed ).length ) {\n\t\t\t\tlet highlightedResultRemoved = false;\n\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\tfor ( const removedResult of removed ) {\n\t\t\t\t\t\tif ( this.highlightedResult === removedResult ) {\n\t\t\t\t\t\t\thighlightedResultRemoved = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( model.markers.has( removedResult.marker!.name ) ) {\n\t\t\t\t\t\t\twriter.removeMarker( removedResult.marker! );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tif ( highlightedResultRemoved ) {\n\t\t\t\t\tconst nextHighlightedIndex = index >= this.results.length ? 0 : index;\n\t\t\t\t\tthis.highlightedResult = this.results.get( nextHighlightedIndex );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tthis.on<ObservableChangeEvent<FindResultType | null>>( 'change:highlightedResult', ( ) => {\n\t\t\tthis.refreshHighlightOffset( model );\n\t\t} );\n\t}\n\n\t/**\n\t * Cleans the state up and removes markers from the model.\n\t */\n\tpublic clear( model: Model ): void {\n\t\tthis.searchText = '';\n\n\t\tmodel.change( writer => {\n\t\t\tif ( this.highlightedResult ) {\n\t\t\t\tconst oldMatchId = this.highlightedResult.marker!.name.split( ':' )[ 1 ];\n\t\t\t\tconst oldMarker = model.markers.get( `findResultHighlighted:${ oldMatchId }` );\n\n\t\t\t\tif ( oldMarker ) {\n\t\t\t\t\twriter.removeMarker( oldMarker );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t[ ...this.results ].forEach( ( { marker } ) => {\n\t\t\t\twriter.removeMarker( marker! );\n\t\t\t} );\n\t\t} );\n\n\t\tthis.results.clear();\n\t}\n\n\t/**\n\t * Refreshes the highlight result offset based on it's index within the result list.\n\t */\n\tpublic refreshHighlightOffset( model: Model ): void {\n\t\tconst { highlightedResult, results } = this;\n\n\t\tif ( highlightedResult ) {\n\t\t\tthis.highlightedOffset = sortSearchResultsByMarkerPositions( model, [ ...results ] ).indexOf( highlightedResult ) + 1;\n\t\t} else {\n\t\t\tthis.highlightedOffset = 0;\n\t\t}\n\t}\n}\n\n/**\n * Sorts search results by marker positions. Make sure that the results are sorted in the same order as they appear in the document\n * to avoid issues with the `find next` command. Apparently, the order of the results in the state might be different than the order\n * of the markers in the model.\n *\n * @internal\n */\nexport function sortSearchResultsByMarkerPositions( model: Model, results: Array<FindResultType> ): Array<FindResultType> {\n\tconst sortMapping = { before: -1, same: 0, after: 1, different: 1 };\n\n\t// `compareWith` doesn't play well with multi-root documents, so we need to sort results by root name first\n\t// and then sort them within each root. It prevents \"random\" order of results when the document has multiple roots.\n\t// See more: https://github.com/ckeditor/ckeditor5/pull/17292#issuecomment-2442084549\n\treturn model.document.getRootNames().flatMap( rootName =>\n\t\tresults\n\t\t\t.filter( result => result.marker!.getStart().root.rootName === rootName )\n\t\t\t.sort( ( a, b ) => sortMapping[ a.marker!.getStart().compareWith( b.marker!.getStart() ) ] )\n\t);\n}\n\n/**\n * The callback function used to find matches in the document.\n */\nexport type FindCallback = ( { item, text }: { item: ModelItem; text: string } ) => FindCallbackResultObject | FindCallbackResult;\n\n/**\n * Represents the result of a find callback.\n *\n * The `searchText` attribute in the result object is used to determine if the search text has changed.\n * If returned `searchText` is different than the last search text, the search results will be invalidated\n * while searching for next item and the search will start from the beginning of the document.\n */\nexport type FindCallbackResultObject = {\n\tresults: Array<FindResultType>;\n\tsearchText: string;\n};\n\n/**\n * Represents the result of a find callback.\n *\n * @deprecated Use `FindCallbackResultObject` instead.\n */\nexport type FindCallbackResult = Array<FindResultType>;\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 find-and-replace/replacecommandbase\n*/\n\nimport { Command, type Editor } from 'ckeditor5/src/core.js';\nimport type { FindResultType } from './findandreplace.js';\nimport { type FindAndReplaceState } from './findandreplacestate.js';\n\nexport abstract class FindReplaceCommandBase extends Command {\n\t/**\n\t * The find and replace state object used for command operations.\n\t */\n\tprotected _state: FindAndReplaceState;\n\n\t/**\n\t * Creates a new `ReplaceCommand` instance.\n\t *\n\t * @param editor Editor on which this command will be used.\n\t * @param state An object to hold plugin state.\n\t */\n\tconstructor( editor: Editor, state: FindAndReplaceState ) {\n\t\tsuper( editor );\n\n\t\t// The replace command is always enabled.\n\t\tthis.isEnabled = true;\n\n\t\tthis._state = state;\n\n\t\t// Since this command executes on particular result independent of selection, it should be checked directly in execute block.\n\t\tthis._isEnabledBasedOnSelection = false;\n\t}\n\n\tpublic abstract override execute( ...args: Array<unknown> ): void;\n\n\t/**\n\t * Common logic for both `replace` commands.\n\t * Replace a given find result by a string or a callback.\n\t *\n\t * @param result A single result from the find command.\n\t */\n\tprotected _replace( replacementText: string, result: FindResultType ): void {\n\t\tconst { model } = this.editor;\n\n\t\tconst range = result.marker!.getRange();\n\n\t\t// Don't replace a result that is in non-editable place.\n\t\tif ( !model.canEditAt( range ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tmodel.change( writer => {\n\t\t\t// Don't replace a result (marker) that found its way into the $graveyard (e.g. removed by collaborators).\n\t\t\tif ( range.root.rootName === '$graveyard' ) {\n\t\t\t\tthis._state.results.remove( result );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet textAttributes = {};\n\n\t\t\tfor ( const item of range.getItems() ) {\n\t\t\t\tif ( item.is( '$text' ) || item.is( '$textProxy' ) ) {\n\t\t\t\t\ttextAttributes = item.getAttributes();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmodel.insertContent( writer.createText( replacementText, textAttributes ), range );\n\n\t\t\tif ( this._state.results.has( result ) ) {\n\t\t\t\tthis._state.results.remove( result );\n\t\t\t}\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 find-and-replace/replacecommand\n*/\n\nimport type { FindResultType } from './findandreplace.js';\nimport { sortSearchResultsByMarkerPositions } from './findandreplacestate.js';\nimport { FindReplaceCommandBase } from './replacecommandbase.js';\n\n/**\n * The replace command. It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */\nexport class ReplaceCommand extends FindReplaceCommandBase {\n\t/**\n\t * Replace a given find result by a string or a callback.\n\t *\n\t * @param result A single result from the find command.\n\t *\n\t * @fires execute\n\t */\n\tpublic override execute( replacementText: string, result: FindResultType ): void {\n\t\t// We save highlight offset here, as the information about the highlighted result will be lost after the changes.\n\t\t//\n\t\t// It happens because result list is partially regenerated if the result is removed from the paragraph.\n\t\t// Partially means that all sibling result items that are placed in the same paragraph are removed and added again,\n\t\t// which causes the highlighted result to be malformed (usually it's set to first but it's not guaranteed).\n\t\t//\n\t\t// While this saving can be done in editing state, it's better to keep it here, as it's a part of the command logic\n\t\t// and might be super tricky to implement in multi-root documents.\n\t\t//\n\t\t// Keep in mind that the highlighted offset is indexed from 1, as it's displayed to the user. It's why we subtract 1 here.\n\t\t//\n\t\t// More info: https://github.com/ckeditor/ckeditor5/issues/16648\n\t\tconst oldHighlightOffset = Math.max( this._state!.highlightedOffset - 1, 0 );\n\n\t\tthis._replace( replacementText, result );\n\n\t\t// Let's revert the highlight offset to the previous value.\n\t\tif ( this._state!.results.length ) {\n\t\t\t// Highlight offset operates on sorted array, so we need to sort the results first.\n\t\t\t// It's not guaranteed that items in state results are sorted, usually they are, but it's not guaranteed when\n\t\t\t// the result is removed from the paragraph with other highlighted results.\n\t\t\tconst sortedResults = sortSearchResultsByMarkerPositions( this.editor.model, [ ...this._state!.results ] );\n\n\t\t\t// Just make sure that we don't overflow the results array, so use modulo.\n\t\t\tthis._state!.highlightedResult = sortedResults[ oldHighlightOffset % sortedResults.length ];\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 find-and-replace/replaceallcommand\n */\n\nimport { Collection } from 'ckeditor5/src/utils.js';\nimport type { FindResultType } from './findandreplace.js';\nimport { type FindAndReplaceUtils } from './findandreplaceutils.js';\nimport { FindReplaceCommandBase } from './replacecommandbase.js';\n\n/**\n * The replace all command. It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */\nexport class ReplaceAllCommand extends FindReplaceCommandBase {\n\t/**\n\t * Replaces all the occurrences of `textToReplace` with a given `newText` string.\n\t *\n\t * ```ts\n\t *\treplaceAllCommand.execute( 'replaceAll', 'new text replacement', 'text to replace' );\n\t * ```\n\t *\n\t * Alternatively you can call it from editor instance:\n\t *\n\t * ```ts\n\t *\teditor.execute( 'replaceAll', 'new text', 'old text' );\n\t * ```\n\t *\n\t * @param newText Text that will be inserted to the editor for each match.\n\t * @param textToReplace Text to be replaced or a collection of matches\n\t * as returned by the find command.\n\t *\n\t * @fires module:core/command~Command#event:execute\n\t */\n\tpublic override execute( newText: string, textToReplace: string | Collection<FindResultType> ): void {\n\t\tconst { editor } = this;\n\t\tconst { model } = editor;\n\t\tconst findAndReplaceUtils: FindAndReplaceUtils = editor.plugins.get( 'FindAndReplaceUtils' );\n\n\t\tconst results = textToReplace instanceof Collection ?\n\t\t\ttextToReplace : model.document.getRootNames()\n\t\t\t\t.reduce( ( ( currentResults: Collection<FindResultType> | null, rootName ) => findAndReplaceUtils.updateFindResultFromRange(\n\t\t\t\t\tmodel.createRangeIn( model.document.getRoot( rootName )! ),\n\t\t\t\t\tmodel,\n\t\t\t\t\tfindAndReplaceUtils.findByTextCallback( textToReplace, this._state ),\n\t\t\t\t\tcurrentResults\n\t\t\t\t) ), null as Collection<FindResultType> | null )!;\n\n\t\tif ( results.length ) {\n\t\t\t// Wrapped in single change will batch it into one transaction.\n\t\t\tmodel.change( () => {\n\t\t\t\t[ ...results ].forEach( searchResult => {\n\t\t\t\t\t// Just reuse logic from the replace command to replace a single match.\n\t\t\t\t\tthis._replace( newText, searchResult );\n\t\t\t\t} );\n\t\t\t} );\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 find-and-replace/findnextcommand\n*/\n\nimport { Command, type Editor } from 'ckeditor5/src/core.js';\nimport { type FindAndReplaceState } from './findandreplacestate.js';\n\n/**\n * The find next command. Moves the highlight to the next search result.\n *\n * It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */\nexport class FindNextCommand extends Command {\n\t/**\n\t * The find and replace state object used for command operations.\n\t */\n\tprotected _state: FindAndReplaceState;\n\n\t/**\n\t * Creates a new `FindNextCommand` instance.\n\t *\n\t * @param editor The editor on which this command will be used.\n\t * @param state An object to hold plugin state.\n\t */\n\tconstructor( editor: Editor, state: FindAndReplaceState ) {\n\t\tsuper( editor );\n\n\t\t// It does not affect data so should be enabled in read-only mode.\n\t\tthis.affectsData = false;\n\n\t\tthis._state = state;\n\n\t\tthis.isEnabled = false;\n\n\t\tthis.listenTo( this._state.results, 'change', () => {\n\t\t\tthis.isEnabled = this._state.results.length > 1;\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tthis.isEnabled = this._state.results.length > 1;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tconst results = this._state.results;\n\t\tconst currentIndex = results.getIndex( this._state.highlightedResult! );\n\t\tconst nextIndex = currentIndex + 1 >= results.length ?\n\t\t\t0 : currentIndex + 1;\n\n\t\tthis._state.highlightedResult = this._state.results.get( nextIndex );\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 find-and-replace/findpreviouscommand\n*/\n\nimport { FindNextCommand } from './findnextcommand.js';\n\n/**\n * The find previous command. Moves the highlight to the previous search result.\n *\n * It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */\nexport class FindPreviousCommand extends FindNextCommand {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tconst results = this._state.results;\n\t\tconst currentIndex = results.getIndex( this._state.highlightedResult! );\n\t\tconst previousIndex = currentIndex - 1 < 0 ?\n\t\t\tthis._state.results.length - 1 : currentIndex - 1;\n\n\t\tthis._state.highlightedResult = this._state.results.get( previousIndex );\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 find-and-replace/findandreplaceutils\n */\n\nimport type { ModelElement, ModelItem, Marker, Model, ModelRange } from 'ckeditor5/src/engine.js';\nimport { Plugin } from 'ckeditor5/src/core.js';\nimport { Collection, uid } from 'ckeditor5/src/utils.js';\nimport { escapeRegExp } from 'es-toolkit/compat';\nimport type { FindResultType } from './findandreplace.js';\n\n/**\n * A set of helpers related to find and replace.\n */\nexport class FindAndReplaceUtils extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FindAndReplaceUtils' 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 * Executes findCallback and updates search results list.\n\t *\n\t * @param range The model range to scan for matches.\n\t * @param model The model.\n\t * @param findCallback The callback that should return `true` if provided text matches the search term.\n\t * @param startResults An optional collection of find matches that the function should\n\t * start with. This would be a collection returned by a previous `updateFindResultFromRange()` call.\n\t * @returns A collection of objects describing find match.\n\t *\n\t * An example structure:\n\t *\n\t * ```js\n\t * {\n\t *\tid: resultId,\n\t *\tlabel: foundItem.label,\n\t *\tmarker\n\t *\t}\n\t * ```\n\t */\n\tpublic updateFindResultFromRange(\n\t\trange: ModelRange,\n\t\tmodel: Model,\n\t\tfindCallback: ( { item, text }: { item: ModelItem; text: string } ) => Array<FindResultType> | { results: Array<FindResultType> },\n\t\tstartResults: Collection<FindResultType> | null\n\t): Collection<FindResultType> {\n\t\tconst results = startResults || new Collection();\n\n\t\tconst checkIfResultAlreadyOnList = ( marker: Marker ) => results.find(\n\t\t\tmarkerItem => {\n\t\t\t\tconst { marker: resultsMarker } = markerItem;\n\n\t\t\t\tconst resultRange = resultsMarker!.getRange();\n\t\t\t\tconst markerRange = marker.getRange();\n\n\t\t\t\treturn resultRange.isEqual( markerRange );\n\t\t\t}\n\t\t);\n\n\t\tmodel.change( writer => {\n\t\t\t[ ...range ].forEach( ( { type, item } ) => {\n\t\t\t\tif ( type === 'elementStart' ) {\n\t\t\t\t\tif ( model.schema.checkChild( item, '$text' ) ) {\n\t\t\t\t\t\tlet foundItems = findCallback( {\n\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\ttext: this.rangeToText( model.createRangeIn( item as ModelElement ) )\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tif ( !foundItems ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( 'results' in foundItems ) {\n\t\t\t\t\t\t\tfoundItems = foundItems.results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfoundItems.forEach( foundItem => {\n\t\t\t\t\t\t\tconst resultId = `findResult:${ uid() }`;\n\t\t\t\t\t\t\tconst marker = writer.addMarker( resultId, {\n\t\t\t\t\t\t\t\tusingOperation: false,\n\t\t\t\t\t\t\t\taffectsData: false,\n\t\t\t\t\t\t\t\trange: writer.createRange(\n\t\t\t\t\t\t\t\t\twriter.createPositionAt( item, foundItem.start ),\n\t\t\t\t\t\t\t\t\twriter.createPositionAt( item, foundItem.end )\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\tconst index = findInsertIndex( results, marker );\n\n\t\t\t\t\t\t\tif ( !checkIfResultAlreadyOnList( marker ) ) {\n\t\t\t\t\t\t\t\tresults.add(\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: resultId,\n\t\t\t\t\t\t\t\t\t\tlabel: foundItem.label,\n\t\t\t\t\t\t\t\t\t\tmarker\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t\treturn results;\n\t}\n\n\t/**\n\t * Returns text representation of a range. The returned text length should be the same as range length.\n\t * In order to achieve this, this function will replace inline elements (text-line) as new line character (\"\\n\").\n\t *\n\t * @param range The model range.\n\t * @returns The text content of the provided range.\n\t */\n\tpublic rangeToText( range: ModelRange ): string {\n\t\treturn Array.from( range.getItems( { shallow: true } ) ).reduce( ( rangeText, node ) => {\n\t\t\t// Trim text to a last occurrence of an inline element and update range start.\n\t\t\tif ( !( node.is( '$text' ) || node.is( '$textProxy' ) ) ) {\n\t\t\t\t// Editor has only one inline element defined in schema: `<softBreak>` which is treated as new line character in blocks.\n\t\t\t\t// Special handling might be needed for other inline elements (inline widgets).\n\t\t\t\treturn `${ rangeText }\\n`;\n\t\t\t}\n\n\t\t\treturn rangeText + node.data;\n\t\t}, '' );\n\t}\n\n\t/**\n\t * Creates a text matching callback for a specified search term and matching options.\n\t *\n\t * @param searchTerm The search term.\n\t * @param options Matching options.\n\t * \t- options.matchCase=false If set to `true` letter casing will be ignored.\n\t * \t- options.wholeWords=false If set to `true` only whole words that match `callbackOrText` will be matched.\n\t */\n\tpublic findByTextCallback(\n\t\tsearchTerm: string,\n\t\toptions: { matchCase?: boolean; wholeWords?: boolean }\n\t): ( { item, text }: { item: ModelItem; text: string } ) => Array<FindResultType> {\n\t\tlet flags = 'gu';\n\n\t\tif ( !options.matchCase ) {\n\t\t\tflags += 'i';\n\t\t}\n\n\t\tlet regExpQuery = `(${ escapeRegExp( searchTerm ) })`;\n\n\t\tif ( options.wholeWords ) {\n\t\t\tconst nonLetterGroup = '[^a-zA-Z\\u00C0-\\u024F\\u1E00-\\u1EFF]';\n\n\t\t\tif ( !new RegExp( '^' + nonLetterGroup ).test( searchTerm ) ) {\n\t\t\t\tregExpQuery = `(^|${ nonLetterGroup }|_)${ regExpQuery }`;\n\t\t\t}\n\n\t\t\tif ( !new RegExp( nonLetterGroup + '$' ).test( searchTerm ) ) {\n\t\t\t\tregExpQuery = `${ regExpQuery }(?=_|${ nonLetterGroup }|$)`;\n\t\t\t}\n\t\t}\n\n\t\tconst regExp = new RegExp( regExpQuery, flags );\n\n\t\tfunction findCallback( { text }: { text: string } ) {\n\t\t\tconst matches = [ ...text.matchAll( regExp ) ];\n\n\t\t\treturn matches.map( regexpMatchToFindResult );\n\t\t}\n\n\t\treturn findCallback;\n\t}\n}\n\n// Finds the appropriate index in the resultsList Collection.\nfunction findInsertIndex( resultsList: Collection<any>, markerToInsert: Marker ) {\n\tconst result = resultsList.find( ( { marker } ) => {\n\t\treturn markerToInsert.getStart().isBefore( marker.getStart() );\n\t} );\n\n\treturn result ? resultsList.getIndex( result ) : resultsList.length;\n}\n\n/**\n * Maps RegExp match result to find result.\n */\nfunction regexpMatchToFindResult( matchResult: RegExpMatchArray ): FindResultType {\n\tconst lastGroupIndex = matchResult.length - 1;\n\n\tlet startOffset = matchResult.index!;\n\n\t// Searches with match all flag have an extra matching group with empty string or white space matched before the word.\n\t// If the search term starts with the space already, there is no extra group even with match all flag on.\n\tif ( matchResult.length === 3 ) {\n\t\tstartOffset += matchResult[ 1 ].length;\n\t}\n\n\treturn {\n\t\tlabel: matchResult[ lastGroupIndex ],\n\t\tstart: startOffset,\n\t\tend: startOffset + matchResult[ lastGroupIndex ].length\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 find-and-replace/findandreplaceediting\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\nimport type { DifferItem, DifferItemAttribute, ModelElement, ModelNode } from 'ckeditor5/src/engine.js';\nimport {\n\tscrollViewportToShowTarget,\n\ttype Collection,\n\ttype GetCallback,\n\ttype ObservableChangeEvent\n} from 'ckeditor5/src/utils.js';\n\nimport { FindCommand, type FindAttributes } from './findcommand.js';\nimport { ReplaceCommand } from './replacecommand.js';\nimport { ReplaceAllCommand } from './replaceallcommand.js';\nimport { FindNextCommand } from './findnextcommand.js';\nimport { FindPreviousCommand } from './findpreviouscommand.js';\nimport { FindAndReplaceState, type FindCallback } from './findandreplacestate.js';\nimport { FindAndReplaceUtils } from './findandreplaceutils.js';\nimport type { FindResultType } from './findandreplace.js';\n\nimport { debounce } from 'es-toolkit/compat';\n\nimport '../theme/findandreplace.css';\n\nconst HIGHLIGHT_CLASS = 'ck-find-result_selected';\n\n/**\n * Implements the editing part for find and replace plugin. For example conversion, commands etc.\n */\nexport class FindAndReplaceEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ FindAndReplaceUtils ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FindAndReplaceEditing' 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 * An object storing the find and replace state within a given editor instance.\n\t */\n\tpublic state?: FindAndReplaceState;\n\n\t/**\n\t * A flag that indicates that the user has started a search and the editor is listening for changes\n\t * to the text on which it will perform an automatic search. Among other things, the mode is activated\n\t * when the user first clicks 'Find' button and then later deactivated when the modal or search dropdown is closed.\n\t *\n\t * @internal\n\t */\n\tpublic declare _isSearchActive: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tthis.state = new FindAndReplaceState( this.editor.model );\n\t\tthis.set( '_isSearchActive', false );\n\n\t\tthis._defineConverters();\n\t\tthis._defineCommands();\n\n\t\tthis.listenTo( this.state, 'change:highlightedResult', ( eventInfo, name, newValue, oldValue ) => {\n\t\t\tconst { model } = this.editor;\n\n\t\t\tmodel.change( writer => {\n\t\t\t\tif ( oldValue ) {\n\t\t\t\t\tconst oldMatchId = oldValue.marker.name.split( ':' )[ 1 ];\n\t\t\t\t\tconst oldMarker = model.markers.get( `findResultHighlighted:${ oldMatchId }` );\n\n\t\t\t\t\tif ( oldMarker ) {\n\t\t\t\t\t\twriter.removeMarker( oldMarker );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( newValue ) {\n\t\t\t\t\tconst newMatchId = newValue.marker.name.split( ':' )[ 1 ];\n\t\t\t\t\twriter.addMarker( `findResultHighlighted:${ newMatchId }`, {\n\t\t\t\t\t\tusingOperation: false,\n\t\t\t\t\t\taffectsData: false,\n\t\t\t\t\t\trange: newValue.marker.getRange()\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t\t/* istanbul ignore next -- @preserve */\n\t\tconst scrollToHighlightedResult: GetCallback<ObservableChangeEvent> = ( eventInfo, name, newValue ) => {\n\t\t\tif ( newValue ) {\n\t\t\t\tconst domConverter = this.editor.editing.view.domConverter;\n\t\t\t\tconst viewRange = this.editor.editing.mapper.toViewRange( newValue.marker.getRange() );\n\n\t\t\t\tscrollViewportToShowTarget( {\n\t\t\t\t\ttarget: domConverter.viewRangeToDom( viewRange ),\n\t\t\t\t\tviewportOffset: 40\n\t\t\t\t} );\n\t\t\t}\n\t\t};\n\n\t\tconst debouncedScrollListener = debounce( scrollToHighlightedResult.bind( this ), 32 );\n\t\t// Debounce scroll as highlight might be changed very frequently, e.g. when there's a replace all command.\n\t\tthis.listenTo<ObservableChangeEvent>( this.state, 'change:highlightedResult', debouncedScrollListener, { priority: 'low' } );\n\n\t\t// It's possible that the editor will get destroyed before debounced call kicks in.\n\t\t// This would result with accessing a view three that is no longer in DOM.\n\t\tthis.listenTo( this.editor, 'destroy', debouncedScrollListener.cancel );\n\n\t\tthis.on<ObservableChangeEvent<boolean>>( 'change:_isSearchActive', ( evt, name, isSearchActive ) => {\n\t\t\tif ( isSearchActive ) {\n\t\t\t\tthis.listenTo( this.editor.model.document, 'change:data', this._onDocumentChange );\n\t\t\t} else {\n\t\t\t\tthis.stopListening( this.editor.model.document, 'change:data', this._onDocumentChange );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Initiate a search.\n\t */\n\tpublic find( callbackOrText: string | FindCallback, findAttributes?: FindAttributes ): Collection<FindResultType> {\n\t\tthis._isSearchActive = true;\n\t\tthis.editor.execute( 'find', callbackOrText, findAttributes );\n\n\t\treturn this.state!.results;\n\t}\n\n\t/**\n\t * Stops active results from updating, and clears out the results.\n\t */\n\tpublic stop(): void {\n\t\tthis.state!.clear( this.editor.model );\n\t\tthis._isSearchActive = false;\n\t}\n\n\t/**\n\t * Sets up the commands.\n\t */\n\tprivate _defineCommands(): void {\n\t\tthis.editor.commands.add( 'find', new FindCommand( this.editor, this.state! ) );\n\t\tthis.editor.commands.add( 'findNext', new FindNextCommand( this.editor, this.state! ) );\n\t\tthis.editor.commands.add( 'findPrevious', new FindPreviousCommand( this.editor, this.state! ) );\n\t\tthis.editor.commands.add( 'replace', new ReplaceCommand( this.editor, this.state! ) );\n\t\tthis.editor.commands.add( 'replaceAll', new ReplaceAllCommand( this.editor, this.state! ) );\n\t}\n\n\t/**\n\t * Sets up the marker downcast converters for search results highlighting.\n\t */\n\tprivate _defineConverters(): void {\n\t\tconst { editor } = this;\n\n\t\t// Setup the marker highlighting conversion.\n\t\teditor.conversion.for( 'editingDowncast' ).markerToHighlight( {\n\t\t\tmodel: 'findResult',\n\t\t\tview: ( { markerName } ) => {\n\t\t\t\tconst [ , id ] = markerName.split( ':' );\n\n\t\t\t\t// Marker removal from the view has a bug: https://github.com/ckeditor/ckeditor5/issues/7499\n\t\t\t\t// A minimal option is to return a new object for each converted marker...\n\t\t\t\treturn {\n\t\t\t\t\tname: 'span',\n\t\t\t\t\tclasses: [ 'ck-find-result' ],\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\t// ...however, adding a unique attribute should be future-proof..\n\t\t\t\t\t\t'data-find-result': id\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\teditor.conversion.for( 'editingDowncast' ).markerToHighlight( {\n\t\t\tmodel: 'findResultHighlighted',\n\t\t\tview: ( { markerName } ) => {\n\t\t\t\tconst [ , id ] = markerName.split( ':' );\n\n\t\t\t\t// Marker removal from the view has a bug: https://github.com/ckeditor/ckeditor5/issues/7499\n\t\t\t\t// A minimal option is to return a new object for each converted marker...\n\t\t\t\treturn {\n\t\t\t\t\tname: 'span',\n\t\t\t\t\tclasses: [ HIGHLIGHT_CLASS ],\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\t// ...however, adding a unique attribute should be future-proof..\n\t\t\t\t\t\t'data-find-result': id\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Reacts to document changes in order to update search list.\n\t */\n\tprivate _onDocumentChange = () => {\n\t\tconst changedNodes = new Set<ModelNode>();\n\t\tconst removedMarkers = new Set<string>();\n\t\tconst model = this.editor.model;\n\t\tconst { results } = this.state!;\n\n\t\tconst changes = model.document.differ.getChanges() as Array<Exclude<DifferItem, DifferItemAttribute>>;\n\t\tconst changedMarkers = model.document.differ.getChangedMarkers();\n\n\t\t// Get nodes in which changes happened to re-run a search callback on them.\n\t\tchanges.forEach( change => {\n\t\t\tif ( !change.position ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( change.name === '$text' || ( change.position.nodeAfter && model.schema.isInline( change.position.nodeAfter ) ) ) {\n\t\t\t\tchangedNodes.add( change.position.parent as ModelElement );\n\n\t\t\t\t[ ...model.markers.getMarkersAtPosition( change.position ) ].forEach( markerAtChange => {\n\t\t\t\t\tremovedMarkers.add( markerAtChange.name );\n\t\t\t\t} );\n\t\t\t} else if ( change.type === 'insert' && change.position.nodeAfter ) {\n\t\t\t\tchangedNodes.add( change.position.nodeAfter );\n\t\t\t}\n\t\t} );\n\n\t\t// Get markers from removed nodes also.\n\t\tchangedMarkers.forEach( ( { name, data: { newRange } } ) => {\n\t\t\tif ( newRange && newRange.start.root.rootName === '$graveyard' ) {\n\t\t\t\tremovedMarkers.add( name );\n\t\t\t}\n\t\t} );\n\n\t\t// Get markers from the updated nodes and remove all (search will be re-run on these nodes).\n\t\tchangedNodes.forEach( node => {\n\t\t\tconst markersInNode = [ ...model.markers.getMarkersIntersectingRange( model.createRangeIn( node as ModelElement ) ) ];\n\n\t\t\tmarkersInNode.forEach( marker => removedMarkers.add( marker.name ) );\n\t\t} );\n\n\t\t// Remove results from the changed part of content.\n\t\tremovedMarkers.forEach( markerName => {\n\t\t\tif ( !results.has( markerName ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( results.get( markerName ) === this.state!.highlightedResult ) {\n\t\t\t\tthis.state!.highlightedResult = null;\n\t\t\t}\n\n\t\t\tresults.remove( markerName );\n\t\t} );\n\n\t\t// Run search callback again on updated nodes.\n\t\tconst changedSearchResults: Array<FindResultType> = [];\n\t\tconst findAndReplaceUtils: FindAndReplaceUtils = this.editor.plugins.get( 'FindAndReplaceUtils' );\n\n\t\tchangedNodes.forEach( nodeToCheck => {\n\t\t\tconst changedNodeSearchResults = findAndReplaceUtils.updateFindResultFromRange(\n\t\t\t\tmodel.createRangeOn( nodeToCheck ), model, this.state!.lastSearchCallback!, results\n\t\t\t);\n\n\t\t\tchangedSearchResults.push( ...changedNodeSearchResults );\n\t\t} );\n\n\t\tchangedMarkers.forEach( markerToCheck => {\n\t\t\t// Handle search result highlight update when T&C plugin is active.\n\t\t\t// Lookup is performed only on newly inserted markers.\n\t\t\tif ( markerToCheck.data.newRange ) {\n\t\t\t\tconst changedNodeSearchResults = findAndReplaceUtils.updateFindResultFromRange(\n\t\t\t\t\tmarkerToCheck.data.newRange, model, this.state!.lastSearchCallback!, results\n\t\t\t\t);\n\n\t\t\t\tchangedSearchResults.push( ...changedNodeSearchResults );\n\t\t\t}\n\t\t} );\n\n\t\tif ( !this.state!.highlightedResult && changedSearchResults.length ) {\n\t\t\t// If there are found phrases but none is selected, select the first one.\n\t\t\tthis.state!.highlightedResult = changedSearchResults[ 0 ];\n\t\t} else {\n\t\t\t// If there is already highlight item then refresh highlight offset after appending new items.\n\t\t\tthis.state!.refreshHighlightOffset( model );\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 find-and-replace/findandreplace\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\nimport { FindAndReplaceUI, type FindResetedEvent } from './findandreplaceui.js';\nimport { FindAndReplaceEditing } from './findandreplaceediting.js';\nimport type { Marker } from 'ckeditor5/src/engine.js';\nimport type { FindNextEvent, FindPreviousEvent, ReplaceAllEvent, ReplaceEvent } from './ui/findandreplaceformview.js';\n\nexport type FindResultType = {\n\tid?: string;\n\tlabel?: string;\n\tstart?: number;\n\tend?: number;\n\tmarker?: Marker;\n};\n\n/**\n * The find and replace plugin.\n *\n * For a detailed overview, check the {@glink features/find-and-replace Find and replace feature documentation}.\n *\n * This is a \"glue\" plugin which loads the following plugins:\n *\n * * The {@link module:find-and-replace/findandreplaceediting~FindAndReplaceEditing find and replace editing feature},\n * * The {@link module:find-and-replace/findandreplaceui~FindAndReplaceUI find and replace UI feature}\n */\nexport class FindAndReplace extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ FindAndReplaceEditing, FindAndReplaceUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FindAndReplace' 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 ui = this.editor.plugins.get( 'FindAndReplaceUI' );\n\t\tconst findAndReplaceEditing = this.editor.plugins.get( 'FindAndReplaceEditing' );\n\t\tconst state = findAndReplaceEditing.state!;\n\n\t\tui.on<FindNextEvent>( 'findNext', ( event, data ) => {\n\t\t\t// Data is contained only for the \"find\" button.\n\t\t\tif ( data ) {\n\t\t\t\tstate.searchText = data.searchText;\n\t\t\t\tfindAndReplaceEditing.find( data.searchText, data );\n\t\t\t} else {\n\t\t\t\t// Find next arrow button press.\n\t\t\t\tthis.editor.execute( 'findNext' );\n\t\t\t}\n\t\t} );\n\n\t\tui.on<FindPreviousEvent>( 'findPrevious', ( event, data ) => {\n\t\t\tif ( data && state.searchText !== data.searchText ) {\n\t\t\t\tfindAndReplaceEditing.find( data.searchText );\n\t\t\t} else {\n\t\t\t\t// Subsequent calls.\n\t\t\t\tthis.editor.execute( 'findPrevious' );\n\t\t\t}\n\t\t} );\n\n\t\tui.on<ReplaceEvent>( 'replace', ( event, data ) => {\n\t\t\tif ( state.searchText !== data.searchText ) {\n\t\t\t\tfindAndReplaceEditing.find( data.searchText );\n\t\t\t}\n\n\t\t\tconst highlightedResult = state.highlightedResult;\n\n\t\t\tif ( highlightedResult ) {\n\t\t\t\tthis.editor.execute( 'replace', data.replaceText, highlightedResult );\n\t\t\t}\n\t\t} );\n\n\t\tui.on<ReplaceAllEvent>( 'replaceAll', ( event, data ) => {\n\t\t\t// The state hadn't been yet built for this search text.\n\t\t\tif ( state.searchText !== data.searchText ) {\n\t\t\t\tfindAndReplaceEditing.find( data.searchText );\n\t\t\t}\n\n\t\t\tthis.editor.execute( 'replaceAll', data.replaceText, state.results );\n\t\t} );\n\n\t\t// Reset the state when the user invalidated last search results, for instance,\n\t\t// by starting typing another search query or changing options.\n\t\tui.on<FindResetedEvent>( 'searchReseted', () => {\n\t\t\tstate.clear( this.editor.model );\n\t\t\tfindAndReplaceEditing.stop();\n\t\t} );\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["index.js","../src/ui/findandreplaceformview.ts","../src/findandreplaceui.ts","../src/findcommand.ts","../src/findandreplacestate.ts","../src/replacecommandbase.ts","../src/replacecommand.ts","../src/replaceallcommand.ts","../src/findnextcommand.ts","../src/findpreviouscommand.ts","../src/findandreplaceutils.ts","../src/findandreplaceediting.ts","../src/findandreplace.ts"],"names":["FindAndReplaceFormView","View","children","_findInputView","_replaceInputView","_findButtonView","_findPrevButtonView","_findNextButtonView","_advancedOptionsCollapsibleView","_matchCaseSwitchView","_wholeWordsOnlySwitchView","_replaceButtonView","_replaceAllButtonView","_inputsDivView","_actionButtonsDivView","_focusTracker","_keystrokes","_focusables","focusCycler","locale","t","createCollection","set","bind","to","matchCount","isDirty","_createInputField","_createButton","label","class","icon","IconPreviousArrow","keystroke","tooltip","_createInputsDiv","_createMatchCaseSwitch","_createWholeWordsOnlySwitch","_createAdvancedOptionsCollapsible","withText","_createActionButtonsDiv","FocusTracker","KeystrokeHandler","ViewCollection","FocusCycler","focusables","focusTracker","keystrokeHandler","actions","focusPrevious","focusNext","addMany","setTemplate","tag","attributes","tabindex","render","submitHandler","view","_initFocusCycling","_initKeystrokeHandling","destroy","focus","direction","focusLast","focusFirst","reset","errorText","_textToFind","fieldView","element","value","_textToReplace","inputsDivView","on","delegate","findPrevious","findNext","_injectFindResultsCounter","replace","resultsFound","isEnabled","isFocused","_onFindButtonExecute","fire","searchText","matchCase","_matchCase","wholeWords","_wholeWordsOnly","bindTemplate","resultsCounterView","highlightOffset","if","text","updateFindInputPadding","inputElement","isVisible","counterWidth","Rect","width","paddingPropertyName","uiLanguageDirection","style","priority","template","push","collapsible","CollapsibleView","isCollapsed","actionsDivView","replaceAll","replaceText","matchCaseSwitchButton","SwitchButtonView","wholeWordsOnlySwitchButton","childViews","buttonView","forEach","v","add","stopPropagation","data","stopPropagationAndPreventDefault","preventDefault","listenTo","event","target","_areCommandsEnabled","options","button","ButtonView","className","labeledInput","LabeledFieldView","createLabeledInputText","FindAndReplaceUI","Plugin","requires","Dialog","pluginName","isOfficialPlugin","formView","editor","config","define","init","isUiUsingDropdown","get","findCommand","commands","ui","componentFactory","_createDropdown","_createDialogButtonForToolbar","keystrokes","cancelEvent","DropdownView","dropdownButtonView","isOn","plugins","_createDialogButtonForMenuBar","accessibility","addKeystrokeInfos","dropdownView","createDropdown","once","_createFormView","FormHeaderView","panelView","name","isOpen","_setupFormView","IconFindReplace","dialog","id","hide","_showDialog","MenuBarMenuListItemButtonView","dialogPlugin","role","isToggleable","ButtonClass","show","title","content","position","DialogViewPosition","EDITOR_TOP_SIDE","onShow","onHide","CssTransitionDisablerMixin","findAndReplaceEditing","editingState","state","results","length","findNextCommand","findPreviousCommand","replaceCommand","replaceAllCommand","evt","disableCssTransitions","select","enableCssTransitions","FindCommand","Command","_state","affectsData","execute","callbackOrText","model","findAndReplaceUtils","findCallback","callbackSearchText","args","findByTextCallback","oldCallback","result","document","getRootNames","reduce","currentResults","rootName","updateFindResultFromRange","createRangeIn","getRoot","clear","highlightedResult","lastSearchCallback","matchWholeWords","FindAndReplaceState","ObservableMixin","Collection","eventInfo","removed","index","Array","from","highlightedResultRemoved","change","writer","removedResult","markers","has","marker","removeMarker","nextHighlightedIndex","refreshHighlightOffset","oldMatchId","split","oldMarker","highlightedOffset","sortSearchResultsByMarkerPositions","indexOf","sortMapping","before","same","after","different","flatMap","filter","getStart","root","sort","a","b","compareWith","FindReplaceCommandBase","_isEnabledBasedOnSelection","_replace","replacementText","range","getRange","canEditAt","remove","textAttributes","item","getItems","is","getAttributes","insertContent","createText","ReplaceCommand","oldHighlightOffset","Math","max","sortedResults","ReplaceAllCommand","newText","textToReplace","searchResult","FindNextCommand","refresh","currentIndex","getIndex","nextIndex","FindPreviousCommand","previousIndex","FindAndReplaceUtils","startResults","checkIfResultAlreadyOnList","find","markerItem","resultsMarker","resultRange","markerRange","isEqual","type","schema","checkChild","foundItems","rangeToText","foundItem","resultId","uid","addMarker","usingOperation","createRange","createPositionAt","start","end","findInsertIndex","shallow","rangeText","node","searchTerm","flags","regExpQuery","escapeRegExp","nonLetterGroup","RegExp","test","regExp","matches","matchAll","map","regexpMatchToFindResult","resultsList","markerToInsert","isBefore","matchResult","lastGroupIndex","startOffset","HIGHLIGHT_CLASS","FindAndReplaceEditing","_defineConverters","_defineCommands","newValue","oldValue","newMatchId","scrollToHighlightedResult","domConverter","editing","viewRange","mapper","toViewRange","scrollViewportToShowTarget","viewRangeToDom","viewportOffset","debouncedScrollListener","debounce","cancel","isSearchActive","_onDocumentChange","stopListening","findAttributes","_isSearchActive","stop","conversion","for","markerToHighlight","markerName","classes","changedNodes","Set","removedMarkers","changes","differ","getChanges","changedMarkers","getChangedMarkers","nodeAfter","isInline","parent","getMarkersAtPosition","markerAtChange","newRange","markersInNode","getMarkersIntersectingRange","changedSearchResults","nodeToCheck","changedNodeSearchResults","createRangeOn","markerToCheck","FindAndReplace"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Plugin, Command } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { IconPreviousArrow, IconFindReplace } from '@ckeditor/ckeditor5-icons/dist/index.js';\nimport { View, ViewCollection, FocusCycler, submitHandler, CollapsibleView, SwitchButtonView, ButtonView, LabeledFieldView, createLabeledInputText, Dialog, DropdownView, createDropdown, FormHeaderView, MenuBarMenuListItemButtonView, DialogViewPosition, CssTransitionDisablerMixin } from '@ckeditor/ckeditor5-ui/dist/index.js';\nimport { FocusTracker, KeystrokeHandler, isVisible, Rect, ObservableMixin, Collection, uid, scrollViewportToShowTarget } from '@ckeditor/ckeditor5-utils/dist/index.js';\nimport { escapeRegExp, debounce } from 'es-toolkit/compat';\n\n/**\n * The find and replace form view class.\n *\n * See {@link module:find-and-replace/ui/findandreplaceformview~FindAndReplaceFormView}.\n */ class FindAndReplaceFormView extends View {\n /**\n\t * A collection of child views.\n\t */ children;\n /**\n\t * The find in text input view that stores the searched string.\n\t *\n\t * @internal\n\t */ _findInputView;\n /**\n\t * The replace input view.\n\t */ _replaceInputView;\n /**\n\t * The find button view that initializes the search process.\n\t */ _findButtonView;\n /**\n\t * The find previous button view.\n\t */ _findPrevButtonView;\n /**\n\t * The find next button view.\n\t */ _findNextButtonView;\n /**\n\t * A collapsible view aggregating the advanced search options.\n\t */ _advancedOptionsCollapsibleView;\n /**\n\t * A switch button view controlling the \"Match case\" option.\n\t */ _matchCaseSwitchView;\n /**\n\t * A switch button view controlling the \"Whole words only\" option.\n\t */ _wholeWordsOnlySwitchView;\n /**\n\t * The replace button view.\n\t */ _replaceButtonView;\n /**\n\t * The replace all button view.\n\t */ _replaceAllButtonView;\n /**\n\t * The `div` aggregating the inputs.\n\t */ _inputsDivView;\n /**\n\t * The `div` aggregating the action buttons.\n\t */ _actionButtonsDivView;\n /**\n\t * Tracks information about the DOM focus in the form.\n\t */ _focusTracker;\n /**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */ _keystrokes;\n /**\n\t * A collection of views that can be focused in the form.\n\t */ _focusables;\n /**\n\t * Helps cycling over {@link #_focusables} in the form.\n\t */ focusCycler;\n /**\n\t * Creates a view of find and replace form.\n\t *\n\t * @param locale The localization services instance.\n\t */ constructor(locale){\n super(locale);\n const t = locale.t;\n this.children = this.createCollection();\n this.set('matchCount', 0);\n this.set('highlightOffset', 0);\n this.set('isDirty', false);\n this.set('_areCommandsEnabled', {});\n this.set('_resultsCounterText', '');\n this.set('_matchCase', false);\n this.set('_wholeWordsOnly', false);\n this.bind('_searchResultsFound').to(this, 'matchCount', this, 'isDirty', (matchCount, isDirty)=>{\n return matchCount > 0 && !isDirty;\n });\n this._findInputView = this._createInputField(t('Find in text…'));\n this._findPrevButtonView = this._createButton({\n label: t('Previous result'),\n class: 'ck-button-prev',\n icon: IconPreviousArrow,\n keystroke: 'Shift+F3',\n tooltip: true\n });\n this._findNextButtonView = this._createButton({\n label: t('Next result'),\n class: 'ck-button-next',\n icon: IconPreviousArrow,\n keystroke: 'F3',\n tooltip: true\n });\n this._replaceInputView = this._createInputField(t('Replace with…'), 'ck-labeled-field-replace');\n this._inputsDivView = this._createInputsDiv();\n this._matchCaseSwitchView = this._createMatchCaseSwitch();\n this._wholeWordsOnlySwitchView = this._createWholeWordsOnlySwitch();\n this._advancedOptionsCollapsibleView = this._createAdvancedOptionsCollapsible();\n this._replaceAllButtonView = this._createButton({\n label: t('Replace all'),\n class: 'ck-button-replaceall',\n withText: true\n });\n this._replaceButtonView = this._createButton({\n label: t('Replace'),\n class: 'ck-button-replace',\n withText: true\n });\n this._findButtonView = this._createButton({\n label: t('Find'),\n class: 'ck-button-find ck-button-action',\n withText: true\n });\n this._actionButtonsDivView = this._createActionButtonsDiv();\n this._focusTracker = new FocusTracker();\n this._keystrokes = new KeystrokeHandler();\n this._focusables = new ViewCollection();\n this.focusCycler = new FocusCycler({\n focusables: this._focusables,\n focusTracker: this._focusTracker,\n keystrokeHandler: this._keystrokes,\n actions: {\n // Navigate form fields backwards using the <kbd>Shift</kbd> + <kbd>Tab</kbd> keystroke.\n focusPrevious: 'shift + tab',\n // Navigate form fields forwards using the <kbd>Tab</kbd> key.\n focusNext: 'tab'\n }\n });\n this.children.addMany([\n this._inputsDivView,\n this._advancedOptionsCollapsibleView,\n this._actionButtonsDivView\n ]);\n this.setTemplate({\n tag: 'form',\n attributes: {\n class: [\n 'ck',\n 'ck-find-and-replace-form'\n ],\n tabindex: '-1'\n },\n children: this.children\n });\n }\n /**\n\t * @inheritDoc\n\t */ render() {\n super.render();\n submitHandler({\n view: this\n });\n this._initFocusCycling();\n this._initKeystrokeHandling();\n }\n /**\n\t * @inheritDoc\n\t */ destroy() {\n super.destroy();\n this._focusTracker.destroy();\n this._keystrokes.destroy();\n }\n /**\n\t * @inheritDoc\n\t */ focus(direction) {\n if (direction === -1) {\n this.focusCycler.focusLast();\n } else {\n this.focusCycler.focusFirst();\n }\n }\n /**\n\t * Resets the form before re-appearing.\n\t *\n\t * It clears error messages, hides the match counter and disables the replace feature\n\t * until the next hit of the \"Find\" button.\n\t *\n\t * **Note**: It does not reset inputs and options, though. This way the form works better in editors with\n\t * disappearing toolbar (e.g. BalloonEditor): hiding the toolbar by accident (together with the find and replace UI)\n\t * does not require filling the entire form again.\n\t */ reset() {\n this._findInputView.errorText = null;\n this.isDirty = true;\n }\n /**\n\t * Returns the value of the find input.\n\t */ get _textToFind() {\n return this._findInputView.fieldView.element.value;\n }\n /**\n\t * Returns the value of the replace input.\n\t */ get _textToReplace() {\n return this._replaceInputView.fieldView.element.value;\n }\n /**\n\t * Configures and returns the `<div>` aggregating all form inputs.\n\t */ _createInputsDiv() {\n const locale = this.locale;\n const t = locale.t;\n const inputsDivView = new View(locale);\n // Typing in the find field invalidates all previous results (the form is \"dirty\").\n this._findInputView.fieldView.on('input', ()=>{\n this.isDirty = true;\n });\n // Pressing prev/next buttons fires related event on the form.\n this._findPrevButtonView.delegate('execute').to(this, 'findPrevious');\n this._findNextButtonView.delegate('execute').to(this, 'findNext');\n // Prev/next buttons will be disabled when related editor command gets disabled.\n this._findPrevButtonView.bind('isEnabled').to(this, '_areCommandsEnabled', ({ findPrevious })=>findPrevious);\n this._findNextButtonView.bind('isEnabled').to(this, '_areCommandsEnabled', ({ findNext })=>findNext);\n this._injectFindResultsCounter();\n this._replaceInputView.bind('isEnabled').to(this, '_areCommandsEnabled', this, '_searchResultsFound', ({ replace }, resultsFound)=>replace && resultsFound);\n this._replaceInputView.bind('infoText').to(this._replaceInputView, 'isEnabled', this._replaceInputView, 'isFocused', (isEnabled, isFocused)=>{\n if (isEnabled || !isFocused) {\n return '';\n }\n return t('Tip: Find some text first in order to replace it.');\n });\n inputsDivView.setTemplate({\n tag: 'div',\n attributes: {\n class: [\n 'ck',\n 'ck-find-and-replace-form__inputs'\n ]\n },\n children: [\n this._findInputView,\n this._findPrevButtonView,\n this._findNextButtonView,\n this._replaceInputView\n ]\n });\n return inputsDivView;\n }\n /**\n\t * The action performed when the {@link #_findButtonView} is pressed.\n\t */ _onFindButtonExecute() {\n // When hitting \"Find\" in an empty input, an error should be displayed.\n // Also, if the form was \"dirty\", it should remain so.\n if (!this._textToFind) {\n const t = this.t;\n this._findInputView.errorText = t('Text to find must not be empty.');\n return;\n }\n // Hitting \"Find\" automatically clears the dirty state.\n this.isDirty = false;\n this.fire('findNext', {\n searchText: this._textToFind,\n matchCase: this._matchCase,\n wholeWords: this._wholeWordsOnly\n });\n }\n /**\n\t * Configures an injects the find results counter displaying a \"N of M\" label of the {@link #_findInputView}.\n\t */ _injectFindResultsCounter() {\n const locale = this.locale;\n const t = locale.t;\n const bind = this.bindTemplate;\n const resultsCounterView = new View(this.locale);\n this.bind('_resultsCounterText').to(this, 'highlightOffset', this, 'matchCount', (highlightOffset, matchCount)=>t('%0 of %1', [\n highlightOffset,\n matchCount\n ]));\n resultsCounterView.setTemplate({\n tag: 'span',\n attributes: {\n class: [\n 'ck',\n 'ck-results-counter',\n // The counter only makes sense when the field text corresponds to search results in the editing.\n bind.if('isDirty', 'ck-hidden')\n ]\n },\n children: [\n {\n text: bind.to('_resultsCounterText')\n }\n ]\n });\n // The whole idea is that when the text of the counter changes, its width also increases/decreases and\n // it consumes more or less space over the input. The input, on the other hand, should adjust it's right\n // padding so its *entire* text always remains visible and available to the user.\n const updateFindInputPadding = ()=>{\n const inputElement = this._findInputView.fieldView.element;\n // Don't adjust the padding if the input (also: counter) were not rendered or not inserted into DOM yet.\n if (!inputElement || !isVisible(inputElement)) {\n return;\n }\n const counterWidth = new Rect(resultsCounterView.element).width;\n const paddingPropertyName = locale.uiLanguageDirection === 'ltr' ? 'paddingRight' : 'paddingLeft';\n if (!counterWidth) {\n inputElement.style[paddingPropertyName] = '';\n } else {\n inputElement.style[paddingPropertyName] = `calc( 2 * var(--ck-spacing-standard) + ${counterWidth}px )`;\n }\n };\n // Adjust the input padding when the text of the counter changes, for instance \"1 of 200\" is narrower than \"123 of 200\".\n // Using \"low\" priority to let the text be set by the template binding first.\n this.on('change:_resultsCounterText', updateFindInputPadding, {\n priority: 'low'\n });\n // Adjust the input padding when the counter shows or hides. When hidden, there should be no padding. When it shows, the\n // padding should be set according to the text of the counter.\n // Using \"low\" priority to let the text be set by the template binding first.\n this.on('change:isDirty', updateFindInputPadding, {\n priority: 'low'\n });\n // Put the counter element next to the <input> in the find field.\n this._findInputView.template.children[0].children.push(resultsCounterView);\n }\n /**\n\t * Creates the collapsible view aggregating the advanced search options.\n\t */ _createAdvancedOptionsCollapsible() {\n const t = this.locale.t;\n const collapsible = new CollapsibleView(this.locale, [\n this._matchCaseSwitchView,\n this._wholeWordsOnlySwitchView\n ]);\n collapsible.set({\n label: t('Advanced options'),\n isCollapsed: true\n });\n return collapsible;\n }\n /**\n\t * Configures and returns the `<div>` element aggregating all form action buttons.\n\t */ _createActionButtonsDiv() {\n const actionsDivView = new View(this.locale);\n this._replaceButtonView.bind('isEnabled').to(this, '_areCommandsEnabled', this, '_searchResultsFound', ({ replace }, resultsFound)=>replace && resultsFound);\n this._replaceAllButtonView.bind('isEnabled').to(this, '_areCommandsEnabled', this, '_searchResultsFound', ({ replaceAll }, resultsFound)=>replaceAll && resultsFound);\n this._replaceButtonView.on('execute', ()=>{\n this.fire('replace', {\n searchText: this._textToFind,\n replaceText: this._textToReplace\n });\n });\n this._replaceAllButtonView.on('execute', ()=>{\n this.fire('replaceAll', {\n searchText: this._textToFind,\n replaceText: this._textToReplace\n });\n this.focus();\n });\n this._findButtonView.on('execute', this._onFindButtonExecute.bind(this));\n actionsDivView.setTemplate({\n tag: 'div',\n attributes: {\n class: [\n 'ck',\n 'ck-find-and-replace-form__actions'\n ]\n },\n children: [\n this._replaceAllButtonView,\n this._replaceButtonView,\n this._findButtonView\n ]\n });\n return actionsDivView;\n }\n /**\n\t * Creates, configures and returns and instance of a dropdown allowing users to narrow\n\t * the search criteria down. The dropdown has a list with switch buttons for each option.\n\t */ _createMatchCaseSwitch() {\n const t = this.locale.t;\n const matchCaseSwitchButton = new SwitchButtonView(this.locale);\n matchCaseSwitchButton.set({\n label: t('Match case'),\n withText: true\n });\n // Let the switch be controlled by form's observable property.\n matchCaseSwitchButton.bind('isOn').to(this, '_matchCase');\n // // Update the state of the form when a switch is toggled.\n matchCaseSwitchButton.on('execute', ()=>{\n this._matchCase = !this._matchCase;\n // Toggling a switch makes the form dirty because this changes search criteria\n // just like typing text of the find input.\n this.isDirty = true;\n });\n return matchCaseSwitchButton;\n }\n /**\n\t * Creates, configures and returns and instance of a dropdown allowing users to narrow\n\t * the search criteria down. The dropdown has a list with switch buttons for each option.\n\t */ _createWholeWordsOnlySwitch() {\n const t = this.locale.t;\n const wholeWordsOnlySwitchButton = new SwitchButtonView(this.locale);\n wholeWordsOnlySwitchButton.set({\n label: t('Whole words only'),\n withText: true\n });\n // Let the switch be controlled by form's observable property.\n wholeWordsOnlySwitchButton.bind('isOn').to(this, '_wholeWordsOnly');\n // // Update the state of the form when a switch is toggled.\n wholeWordsOnlySwitchButton.on('execute', ()=>{\n this._wholeWordsOnly = !this._wholeWordsOnly;\n // Toggling a switch makes the form dirty because this changes search criteria\n // just like typing text of the find input.\n this.isDirty = true;\n });\n return wholeWordsOnlySwitchButton;\n }\n /**\n\t * Initializes the {@link #_focusables} and {@link #_focusTracker} to allow navigation\n\t * using <kbd>Tab</kbd> and <kbd>Shift</kbd>+<kbd>Tab</kbd> keystrokes in the right order.\n\t */ _initFocusCycling() {\n const childViews = [\n this._findInputView,\n this._findPrevButtonView,\n this._findNextButtonView,\n this._replaceInputView,\n this._advancedOptionsCollapsibleView.buttonView,\n this._matchCaseSwitchView,\n this._wholeWordsOnlySwitchView,\n this._replaceAllButtonView,\n this._replaceButtonView,\n this._findButtonView\n ];\n childViews.forEach((v)=>{\n // Register the view as focusable.\n this._focusables.add(v);\n // Register the view in the focus tracker.\n this._focusTracker.add(v.element);\n });\n }\n /**\n\t * Initializes the keystroke handling in the form.\n\t */ _initKeystrokeHandling() {\n const stopPropagation = (data)=>data.stopPropagation();\n const stopPropagationAndPreventDefault = (data)=>{\n data.stopPropagation();\n data.preventDefault();\n };\n // Start listening for the keystrokes coming from #element.\n this._keystrokes.listenTo(this.element);\n // Find the next result upon F3.\n this._keystrokes.set('f3', (event)=>{\n stopPropagationAndPreventDefault(event);\n this._findNextButtonView.fire('execute');\n });\n // Find the previous result upon F3.\n this._keystrokes.set('shift+f3', (event)=>{\n stopPropagationAndPreventDefault(event);\n this._findPrevButtonView.fire('execute');\n });\n // Find or replace upon pressing Enter in the find and replace fields.\n this._keystrokes.set('enter', (event)=>{\n const target = event.target;\n if (target === this._findInputView.fieldView.element) {\n if (this._areCommandsEnabled.findNext) {\n this._findNextButtonView.fire('execute');\n } else {\n this._findButtonView.fire('execute');\n }\n stopPropagationAndPreventDefault(event);\n } else if (target === this._replaceInputView.fieldView.element && !this.isDirty) {\n this._replaceButtonView.fire('execute');\n stopPropagationAndPreventDefault(event);\n }\n });\n // Find previous upon pressing Shift+Enter in the find field.\n this._keystrokes.set('shift+enter', (event)=>{\n const target = event.target;\n if (target !== this._findInputView.fieldView.element) {\n return;\n }\n if (this._areCommandsEnabled.findPrevious) {\n this._findPrevButtonView.fire('execute');\n } else {\n this._findButtonView.fire('execute');\n }\n stopPropagationAndPreventDefault(event);\n });\n // Since the form is in the dropdown panel which is a child of the toolbar, the toolbar's\n // keystroke handler would take over the key management in the URL input.\n // We need to prevent this ASAP. Otherwise, the basic caret movement using the arrow keys will be impossible.\n this._keystrokes.set('arrowright', stopPropagation);\n this._keystrokes.set('arrowleft', stopPropagation);\n this._keystrokes.set('arrowup', stopPropagation);\n this._keystrokes.set('arrowdown', stopPropagation);\n }\n /**\n\t * Creates a button view.\n\t *\n\t * @param options The properties of the `ButtonView`.\n\t * @returns The button view instance.\n\t */ _createButton(options) {\n const button = new ButtonView(this.locale);\n button.set(options);\n return button;\n }\n /**\n\t * Creates a labeled input view.\n\t *\n\t * @param label The input label.\n\t * @returns The labeled input view instance.\n\t */ _createInputField(label, className) {\n const labeledInput = new LabeledFieldView(this.locale, createLabeledInputText);\n labeledInput.label = label;\n labeledInput.class = className;\n return labeledInput;\n }\n}\n\n/**\n * The default find and replace UI.\n *\n * It registers the `'findAndReplace'` UI button in the editor's {@link module:ui/componentfactory~ComponentFactory component factory}.\n * that uses the {@link module:find-and-replace/findandreplace~FindAndReplace FindAndReplace} plugin API.\n */ class FindAndReplaceUI extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n Dialog\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'FindAndReplaceUI';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * A reference to the find and replace form view.\n\t */ formView;\n /**\n\t * @inheritDoc\n\t */ constructor(editor){\n super(editor);\n editor.config.define('findAndReplace.uiType', 'dialog');\n this.formView = null;\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const isUiUsingDropdown = editor.config.get('findAndReplace.uiType') === 'dropdown';\n const findCommand = editor.commands.get('find');\n const t = this.editor.t;\n // Register the toolbar component: dropdown or button (that opens a dialog).\n editor.ui.componentFactory.add('findAndReplace', ()=>{\n let view;\n if (isUiUsingDropdown) {\n view = this._createDropdown();\n // Button should be disabled when in source editing mode. See #10001.\n view.bind('isEnabled').to(findCommand);\n } else {\n view = this._createDialogButtonForToolbar();\n }\n editor.keystrokes.set('Ctrl+F', (data, cancelEvent)=>{\n if (!findCommand.isEnabled) {\n return;\n }\n if (view instanceof DropdownView) {\n const dropdownButtonView = view.buttonView;\n if (!dropdownButtonView.isOn) {\n dropdownButtonView.fire('execute');\n }\n } else {\n if (view.isOn) {\n // If the dialog is open, do not close it. Instead focus it.\n // Unfortunately we can't simply use:\n // \tthis.formView!.focus();\n // because it would always move focus to the first input field, which we don't want.\n editor.plugins.get('Dialog').view.focus();\n } else {\n view.fire('execute');\n }\n }\n cancelEvent();\n });\n return view;\n });\n if (!isUiUsingDropdown) {\n editor.ui.componentFactory.add('menuBar:findAndReplace', ()=>{\n return this._createDialogButtonForMenuBar();\n });\n }\n // Add the information about the keystroke to the accessibility database.\n editor.accessibility.addKeystrokeInfos({\n keystrokes: [\n {\n label: t('Find in the document'),\n keystroke: 'CTRL+F'\n }\n ]\n });\n }\n /**\n\t * Creates a dropdown containing the find and replace form.\n\t */ _createDropdown() {\n const editor = this.editor;\n const t = editor.locale.t;\n const dropdownView = createDropdown(editor.locale);\n dropdownView.once('change:isOpen', ()=>{\n this.formView = this._createFormView();\n this.formView.children.add(new FormHeaderView(editor.locale, {\n label: t('Find and replace')\n }), 0);\n dropdownView.panelView.children.add(this.formView);\n });\n // Every time a dropdown is opened, the search text field should get focused and selected for better UX.\n // Note: Using the low priority here to make sure the following listener starts working after\n // the default action of the drop-down is executed (i.e. the panel showed up). Otherwise,\n // the invisible form/input cannot be focused/selected.\n //\n // Each time a dropdown is closed, move the focus back to the find and replace toolbar button\n // and let the find and replace editing feature know that all search results can be invalidated\n // and no longer should be marked in the content.\n dropdownView.on('change:isOpen', (event, name, isOpen)=>{\n if (isOpen) {\n this._setupFormView();\n } else {\n this.fire('searchReseted');\n }\n }, {\n priority: 'low'\n });\n dropdownView.buttonView.set({\n icon: IconFindReplace,\n label: t('Find and replace'),\n keystroke: 'CTRL+F',\n tooltip: true\n });\n return dropdownView;\n }\n /**\n\t * Creates a button that opens a dialog with the find and replace form.\n\t */ _createDialogButtonForToolbar() {\n const editor = this.editor;\n const buttonView = this._createButton(ButtonView);\n const dialog = editor.plugins.get('Dialog');\n buttonView.set({\n tooltip: true\n });\n // Button should be on when the find and replace dialog is opened.\n buttonView.bind('isOn').to(dialog, 'id', (id)=>id === 'findAndReplace');\n // Every time a dialog is opened, the search text field should get focused and selected for better UX.\n // Each time a dialog is closed, move the focus back to the find and replace toolbar button\n // and let the find and replace editing feature know that all search results can be invalidated\n // and no longer should be marked in the content.\n buttonView.on('execute', ()=>{\n if (buttonView.isOn) {\n dialog.hide();\n } else {\n this._showDialog();\n }\n });\n return buttonView;\n }\n /**\n\t * Creates a button for for menu bar that will show find and replace dialog.\n\t */ _createDialogButtonForMenuBar() {\n const buttonView = this._createButton(MenuBarMenuListItemButtonView);\n const dialogPlugin = this.editor.plugins.get('Dialog');\n const dialog = this.editor.plugins.get('Dialog');\n buttonView.set({\n role: 'menuitemcheckbox',\n isToggleable: true\n });\n // Button should be on when the find and replace dialog is opened.\n buttonView.bind('isOn').to(dialog, 'id', (id)=>id === 'findAndReplace');\n buttonView.on('execute', ()=>{\n if (dialogPlugin.id === 'findAndReplace') {\n dialogPlugin.hide();\n return;\n }\n this._showDialog();\n });\n return buttonView;\n }\n /**\n\t * Creates a button for find and replace command to use either in toolbar or in menu bar.\n\t */ _createButton(ButtonClass) {\n const editor = this.editor;\n const findCommand = editor.commands.get('find');\n const buttonView = new ButtonClass(editor.locale);\n const t = editor.locale.t;\n // Button should be disabled when in source editing mode. See #10001.\n buttonView.bind('isEnabled').to(findCommand);\n buttonView.set({\n icon: IconFindReplace,\n label: t('Find and replace'),\n keystroke: 'CTRL+F'\n });\n return buttonView;\n }\n /**\n\t * Shows the find and replace dialog.\n\t */ _showDialog() {\n const editor = this.editor;\n const dialog = editor.plugins.get('Dialog');\n const t = editor.locale.t;\n if (!this.formView) {\n this.formView = this._createFormView();\n }\n dialog.show({\n id: 'findAndReplace',\n title: t('Find and replace'),\n content: this.formView,\n position: DialogViewPosition.EDITOR_TOP_SIDE,\n onShow: ()=>{\n this._setupFormView();\n },\n onHide: ()=>{\n this.fire('searchReseted');\n }\n });\n }\n /**\n\t * Sets up the form view for the findN and replace.\n\t */ _createFormView() {\n const editor = this.editor;\n const formView = new (CssTransitionDisablerMixin(FindAndReplaceFormView))(editor.locale);\n const commands = editor.commands;\n const findAndReplaceEditing = this.editor.plugins.get('FindAndReplaceEditing');\n const editingState = findAndReplaceEditing.state;\n formView.bind('highlightOffset').to(editingState, 'highlightedOffset');\n // Let the form know how many results were found in total.\n formView.listenTo(editingState.results, 'change', ()=>{\n formView.matchCount = editingState.results.length;\n });\n // Command states are used to enable/disable individual form controls.\n // To keep things simple, instead of binding 4 individual observables, there's only one that combines every\n // commands' isEnabled state. Yes, it will change more often but this simplifies the structure of the form.\n const findNextCommand = commands.get('findNext');\n const findPreviousCommand = commands.get('findPrevious');\n const replaceCommand = commands.get('replace');\n const replaceAllCommand = commands.get('replaceAll');\n formView.bind('_areCommandsEnabled').to(findNextCommand, 'isEnabled', findPreviousCommand, 'isEnabled', replaceCommand, 'isEnabled', replaceAllCommand, 'isEnabled', (findNext, findPrevious, replace, replaceAll)=>({\n findNext,\n findPrevious,\n replace,\n replaceAll\n }));\n // The UI plugin works as an interface between the form and the editing part of the feature.\n formView.delegate('findNext', 'findPrevious', 'replace', 'replaceAll').to(this);\n // Let the feature know that search results are no longer relevant because the user changed the searched phrase\n // (or options) but didn't hit the \"Find\" button yet (e.g. still typing).\n formView.on('change:isDirty', (evt, data, isDirty)=>{\n if (isDirty) {\n this.fire('searchReseted');\n }\n });\n return formView;\n }\n /**\n\t * Clears the find and replace form and focuses the search text field.\n\t */ _setupFormView() {\n this.formView.disableCssTransitions();\n this.formView.reset();\n this.formView._findInputView.fieldView.select();\n this.formView.enableCssTransitions();\n }\n}\n\n/**\n * The find command. It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */ class FindCommand extends Command {\n /**\n\t * The find and replace state object used for command operations.\n\t */ _state;\n /**\n\t * Creates a new `FindCommand` instance.\n\t *\n\t * @param editor The editor on which this command will be used.\n\t * @param state An object to hold plugin state.\n\t */ constructor(editor, state){\n super(editor);\n // The find command is always enabled.\n this.isEnabled = true;\n // It does not affect data so should be enabled in read-only mode.\n this.affectsData = false;\n this._state = state;\n }\n /**\n\t * Executes the command.\n\t *\n\t * @param callbackOrText\n\t * @param options Options object.\n\t * @param options.matchCase If set to `true`, the letter case will be matched.\n\t * @param options.wholeWords If set to `true`, only whole words that match `callbackOrText` will be matched.\n\t *\n\t * @fires execute\n\t */ execute(callbackOrText, { matchCase, wholeWords } = {}) {\n const { editor } = this;\n const { model } = editor;\n const findAndReplaceUtils = editor.plugins.get('FindAndReplaceUtils');\n let findCallback;\n let callbackSearchText = '';\n // Allow to execute `find()` on a plugin with a keyword only.\n if (typeof callbackOrText === 'string') {\n findCallback = (...args)=>({\n results: findAndReplaceUtils.findByTextCallback(callbackOrText, {\n matchCase,\n wholeWords\n })(...args),\n searchText: callbackOrText\n });\n } else {\n findCallback = callbackOrText;\n }\n // Wrap the callback to get the search text that will be assigned to the state.\n const oldCallback = findCallback;\n findCallback = (...args)=>{\n const result = oldCallback(...args);\n if (result && 'searchText' in result) {\n callbackSearchText = result.searchText;\n }\n return result;\n };\n // Initial search is done on all nodes in all roots inside the content.\n const results = model.document.getRootNames().reduce((currentResults, rootName)=>findAndReplaceUtils.updateFindResultFromRange(model.createRangeIn(model.document.getRoot(rootName)), model, findCallback, currentResults), null);\n this._state.clear(model);\n this._state.results.addMany(results);\n this._state.highlightedResult = results.get(0);\n this._state.searchText = callbackSearchText;\n if (findCallback) {\n this._state.lastSearchCallback = findCallback;\n }\n this._state.matchCase = !!matchCase;\n this._state.matchWholeWords = !!wholeWords;\n return {\n results,\n findCallback\n };\n }\n}\n\n/**\n * The object storing find and replace plugin state for a given editor instance.\n */ class FindAndReplaceState extends /* #__PURE__ */ ObservableMixin() {\n /**\n\t * Creates an instance of the state.\n\t */ constructor(model){\n super();\n this.set('results', new Collection());\n this.set('highlightedResult', null);\n this.set('highlightedOffset', 0);\n this.set('searchText', '');\n this.set('replaceText', '');\n this.set('lastSearchCallback', null);\n this.set('matchCase', false);\n this.set('matchWholeWords', false);\n this.results.on('change', (eventInfo, { removed, index })=>{\n if (Array.from(removed).length) {\n let highlightedResultRemoved = false;\n model.change((writer)=>{\n for (const removedResult of removed){\n if (this.highlightedResult === removedResult) {\n highlightedResultRemoved = true;\n }\n if (model.markers.has(removedResult.marker.name)) {\n writer.removeMarker(removedResult.marker);\n }\n }\n });\n if (highlightedResultRemoved) {\n const nextHighlightedIndex = index >= this.results.length ? 0 : index;\n this.highlightedResult = this.results.get(nextHighlightedIndex);\n }\n }\n });\n this.on('change:highlightedResult', ()=>{\n this.refreshHighlightOffset(model);\n });\n }\n /**\n\t * Cleans the state up and removes markers from the model.\n\t */ clear(model) {\n this.searchText = '';\n model.change((writer)=>{\n if (this.highlightedResult) {\n const oldMatchId = this.highlightedResult.marker.name.split(':')[1];\n const oldMarker = model.markers.get(`findResultHighlighted:${oldMatchId}`);\n if (oldMarker) {\n writer.removeMarker(oldMarker);\n }\n }\n [\n ...this.results\n ].forEach(({ marker })=>{\n writer.removeMarker(marker);\n });\n });\n this.results.clear();\n }\n /**\n\t * Refreshes the highlight result offset based on it's index within the result list.\n\t */ refreshHighlightOffset(model) {\n const { highlightedResult, results } = this;\n if (highlightedResult) {\n this.highlightedOffset = sortSearchResultsByMarkerPositions(model, [\n ...results\n ]).indexOf(highlightedResult) + 1;\n } else {\n this.highlightedOffset = 0;\n }\n }\n}\n/**\n * Sorts search results by marker positions. Make sure that the results are sorted in the same order as they appear in the document\n * to avoid issues with the `find next` command. Apparently, the order of the results in the state might be different than the order\n * of the markers in the model.\n *\n * @internal\n */ function sortSearchResultsByMarkerPositions(model, results) {\n const sortMapping = {\n before: -1,\n same: 0,\n after: 1,\n different: 1\n };\n // `compareWith` doesn't play well with multi-root documents, so we need to sort results by root name first\n // and then sort them within each root. It prevents \"random\" order of results when the document has multiple roots.\n // See more: https://github.com/ckeditor/ckeditor5/pull/17292#issuecomment-2442084549\n return model.document.getRootNames().flatMap((rootName)=>results.filter((result)=>result.marker.getStart().root.rootName === rootName).sort((a, b)=>sortMapping[a.marker.getStart().compareWith(b.marker.getStart())]));\n}\n\nclass FindReplaceCommandBase extends Command {\n /**\n\t * The find and replace state object used for command operations.\n\t */ _state;\n /**\n\t * Creates a new `ReplaceCommand` instance.\n\t *\n\t * @param editor Editor on which this command will be used.\n\t * @param state An object to hold plugin state.\n\t */ constructor(editor, state){\n super(editor);\n // The replace command is always enabled.\n this.isEnabled = true;\n this._state = state;\n // Since this command executes on particular result independent of selection, it should be checked directly in execute block.\n this._isEnabledBasedOnSelection = false;\n }\n /**\n\t * Common logic for both `replace` commands.\n\t * Replace a given find result by a string or a callback.\n\t *\n\t * @param result A single result from the find command.\n\t */ _replace(replacementText, result) {\n const { model } = this.editor;\n const range = result.marker.getRange();\n // Don't replace a result that is in non-editable place.\n if (!model.canEditAt(range)) {\n return;\n }\n model.change((writer)=>{\n // Don't replace a result (marker) that found its way into the $graveyard (e.g. removed by collaborators).\n if (range.root.rootName === '$graveyard') {\n this._state.results.remove(result);\n return;\n }\n let textAttributes = {};\n for (const item of range.getItems()){\n if (item.is('$text') || item.is('$textProxy')) {\n textAttributes = item.getAttributes();\n break;\n }\n }\n model.insertContent(writer.createText(replacementText, textAttributes), range);\n if (this._state.results.has(result)) {\n this._state.results.remove(result);\n }\n });\n }\n}\n\n/**\n * The replace command. It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */ class ReplaceCommand extends FindReplaceCommandBase {\n /**\n\t * Replace a given find result by a string or a callback.\n\t *\n\t * @param result A single result from the find command.\n\t *\n\t * @fires execute\n\t */ execute(replacementText, result) {\n // We save highlight offset here, as the information about the highlighted result will be lost after the changes.\n //\n // It happens because result list is partially regenerated if the result is removed from the paragraph.\n // Partially means that all sibling result items that are placed in the same paragraph are removed and added again,\n // which causes the highlighted result to be malformed (usually it's set to first but it's not guaranteed).\n //\n // While this saving can be done in editing state, it's better to keep it here, as it's a part of the command logic\n // and might be super tricky to implement in multi-root documents.\n //\n // Keep in mind that the highlighted offset is indexed from 1, as it's displayed to the user. It's why we subtract 1 here.\n //\n // More info: https://github.com/ckeditor/ckeditor5/issues/16648\n const oldHighlightOffset = Math.max(this._state.highlightedOffset - 1, 0);\n this._replace(replacementText, result);\n // Let's revert the highlight offset to the previous value.\n if (this._state.results.length) {\n // Highlight offset operates on sorted array, so we need to sort the results first.\n // It's not guaranteed that items in state results are sorted, usually they are, but it's not guaranteed when\n // the result is removed from the paragraph with other highlighted results.\n const sortedResults = sortSearchResultsByMarkerPositions(this.editor.model, [\n ...this._state.results\n ]);\n // Just make sure that we don't overflow the results array, so use modulo.\n this._state.highlightedResult = sortedResults[oldHighlightOffset % sortedResults.length];\n }\n }\n}\n\n/**\n * The replace all command. It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */ class ReplaceAllCommand extends FindReplaceCommandBase {\n /**\n\t * Replaces all the occurrences of `textToReplace` with a given `newText` string.\n\t *\n\t * ```ts\n\t *\treplaceAllCommand.execute( 'replaceAll', 'new text replacement', 'text to replace' );\n\t * ```\n\t *\n\t * Alternatively you can call it from editor instance:\n\t *\n\t * ```ts\n\t *\teditor.execute( 'replaceAll', 'new text', 'old text' );\n\t * ```\n\t *\n\t * @param newText Text that will be inserted to the editor for each match.\n\t * @param textToReplace Text to be replaced or a collection of matches\n\t * as returned by the find command.\n\t *\n\t * @fires module:core/command~Command#event:execute\n\t */ execute(newText, textToReplace) {\n const { editor } = this;\n const { model } = editor;\n const findAndReplaceUtils = editor.plugins.get('FindAndReplaceUtils');\n const results = textToReplace instanceof Collection ? textToReplace : model.document.getRootNames().reduce((currentResults, rootName)=>findAndReplaceUtils.updateFindResultFromRange(model.createRangeIn(model.document.getRoot(rootName)), model, findAndReplaceUtils.findByTextCallback(textToReplace, this._state), currentResults), null);\n if (results.length) {\n // Wrapped in single change will batch it into one transaction.\n model.change(()=>{\n [\n ...results\n ].forEach((searchResult)=>{\n // Just reuse logic from the replace command to replace a single match.\n this._replace(newText, searchResult);\n });\n });\n }\n }\n}\n\n/**\n * The find next command. Moves the highlight to the next search result.\n *\n * It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */ class FindNextCommand extends Command {\n /**\n\t * The find and replace state object used for command operations.\n\t */ _state;\n /**\n\t * Creates a new `FindNextCommand` instance.\n\t *\n\t * @param editor The editor on which this command will be used.\n\t * @param state An object to hold plugin state.\n\t */ constructor(editor, state){\n super(editor);\n // It does not affect data so should be enabled in read-only mode.\n this.affectsData = false;\n this._state = state;\n this.isEnabled = false;\n this.listenTo(this._state.results, 'change', ()=>{\n this.isEnabled = this._state.results.length > 1;\n });\n }\n /**\n\t * @inheritDoc\n\t */ refresh() {\n this.isEnabled = this._state.results.length > 1;\n }\n /**\n\t * @inheritDoc\n\t */ execute() {\n const results = this._state.results;\n const currentIndex = results.getIndex(this._state.highlightedResult);\n const nextIndex = currentIndex + 1 >= results.length ? 0 : currentIndex + 1;\n this._state.highlightedResult = this._state.results.get(nextIndex);\n }\n}\n\n/**\n * The find previous command. Moves the highlight to the previous search result.\n *\n * It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */ class FindPreviousCommand extends FindNextCommand {\n /**\n\t * @inheritDoc\n\t */ execute() {\n const results = this._state.results;\n const currentIndex = results.getIndex(this._state.highlightedResult);\n const previousIndex = currentIndex - 1 < 0 ? this._state.results.length - 1 : currentIndex - 1;\n this._state.highlightedResult = this._state.results.get(previousIndex);\n }\n}\n\n/**\n * A set of helpers related to find and replace.\n */ class FindAndReplaceUtils extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'FindAndReplaceUtils';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * Executes findCallback and updates search results list.\n\t *\n\t * @param range The model range to scan for matches.\n\t * @param model The model.\n\t * @param findCallback The callback that should return `true` if provided text matches the search term.\n\t * @param startResults An optional collection of find matches that the function should\n\t * start with. This would be a collection returned by a previous `updateFindResultFromRange()` call.\n\t * @returns A collection of objects describing find match.\n\t *\n\t * An example structure:\n\t *\n\t * ```js\n\t * {\n\t *\tid: resultId,\n\t *\tlabel: foundItem.label,\n\t *\tmarker\n\t *\t}\n\t * ```\n\t */ updateFindResultFromRange(range, model, findCallback, startResults) {\n const results = startResults || new Collection();\n const checkIfResultAlreadyOnList = (marker)=>results.find((markerItem)=>{\n const { marker: resultsMarker } = markerItem;\n const resultRange = resultsMarker.getRange();\n const markerRange = marker.getRange();\n return resultRange.isEqual(markerRange);\n });\n model.change((writer)=>{\n [\n ...range\n ].forEach(({ type, item })=>{\n if (type === 'elementStart') {\n if (model.schema.checkChild(item, '$text')) {\n let foundItems = findCallback({\n item,\n text: this.rangeToText(model.createRangeIn(item))\n });\n if (!foundItems) {\n return;\n }\n if ('results' in foundItems) {\n foundItems = foundItems.results;\n }\n foundItems.forEach((foundItem)=>{\n const resultId = `findResult:${uid()}`;\n const marker = writer.addMarker(resultId, {\n usingOperation: false,\n affectsData: false,\n range: writer.createRange(writer.createPositionAt(item, foundItem.start), writer.createPositionAt(item, foundItem.end))\n });\n const index = findInsertIndex(results, marker);\n if (!checkIfResultAlreadyOnList(marker)) {\n results.add({\n id: resultId,\n label: foundItem.label,\n marker\n }, index);\n }\n });\n }\n }\n });\n });\n return results;\n }\n /**\n\t * Returns text representation of a range. The returned text length should be the same as range length.\n\t * In order to achieve this, this function will replace inline elements (text-line) as new line character (\"\\n\").\n\t *\n\t * @param range The model range.\n\t * @returns The text content of the provided range.\n\t */ rangeToText(range) {\n return Array.from(range.getItems({\n shallow: true\n })).reduce((rangeText, node)=>{\n // Trim text to a last occurrence of an inline element and update range start.\n if (!(node.is('$text') || node.is('$textProxy'))) {\n // Editor has only one inline element defined in schema: `<softBreak>` which is treated as new line character in blocks.\n // Special handling might be needed for other inline elements (inline widgets).\n return `${rangeText}\\n`;\n }\n return rangeText + node.data;\n }, '');\n }\n /**\n\t * Creates a text matching callback for a specified search term and matching options.\n\t *\n\t * @param searchTerm The search term.\n\t * @param options Matching options.\n\t * \t- options.matchCase=false If set to `true` letter casing will be ignored.\n\t * \t- options.wholeWords=false If set to `true` only whole words that match `callbackOrText` will be matched.\n\t */ findByTextCallback(searchTerm, options) {\n let flags = 'gu';\n if (!options.matchCase) {\n flags += 'i';\n }\n let regExpQuery = `(${escapeRegExp(searchTerm)})`;\n if (options.wholeWords) {\n const nonLetterGroup = '[^a-zA-Z\\u00C0-\\u024F\\u1E00-\\u1EFF]';\n if (!new RegExp('^' + nonLetterGroup).test(searchTerm)) {\n regExpQuery = `(^|${nonLetterGroup}|_)${regExpQuery}`;\n }\n if (!new RegExp(nonLetterGroup + '$').test(searchTerm)) {\n regExpQuery = `${regExpQuery}(?=_|${nonLetterGroup}|$)`;\n }\n }\n const regExp = new RegExp(regExpQuery, flags);\n function findCallback({ text }) {\n const matches = [\n ...text.matchAll(regExp)\n ];\n return matches.map(regexpMatchToFindResult);\n }\n return findCallback;\n }\n}\n// Finds the appropriate index in the resultsList Collection.\nfunction findInsertIndex(resultsList, markerToInsert) {\n const result = resultsList.find(({ marker })=>{\n return markerToInsert.getStart().isBefore(marker.getStart());\n });\n return result ? resultsList.getIndex(result) : resultsList.length;\n}\n/**\n * Maps RegExp match result to find result.\n */ function regexpMatchToFindResult(matchResult) {\n const lastGroupIndex = matchResult.length - 1;\n let startOffset = matchResult.index;\n // Searches with match all flag have an extra matching group with empty string or white space matched before the word.\n // If the search term starts with the space already, there is no extra group even with match all flag on.\n if (matchResult.length === 3) {\n startOffset += matchResult[1].length;\n }\n return {\n label: matchResult[lastGroupIndex],\n start: startOffset,\n end: startOffset + matchResult[lastGroupIndex].length\n };\n}\n\nconst HIGHLIGHT_CLASS = 'ck-find-result_selected';\n/**\n * Implements the editing part for find and replace plugin. For example conversion, commands etc.\n */ class FindAndReplaceEditing extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n FindAndReplaceUtils\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'FindAndReplaceEditing';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * An object storing the find and replace state within a given editor instance.\n\t */ state;\n /**\n\t * @inheritDoc\n\t */ init() {\n this.state = new FindAndReplaceState(this.editor.model);\n this.set('_isSearchActive', false);\n this._defineConverters();\n this._defineCommands();\n this.listenTo(this.state, 'change:highlightedResult', (eventInfo, name, newValue, oldValue)=>{\n const { model } = this.editor;\n model.change((writer)=>{\n if (oldValue) {\n const oldMatchId = oldValue.marker.name.split(':')[1];\n const oldMarker = model.markers.get(`findResultHighlighted:${oldMatchId}`);\n if (oldMarker) {\n writer.removeMarker(oldMarker);\n }\n }\n if (newValue) {\n const newMatchId = newValue.marker.name.split(':')[1];\n writer.addMarker(`findResultHighlighted:${newMatchId}`, {\n usingOperation: false,\n affectsData: false,\n range: newValue.marker.getRange()\n });\n }\n });\n });\n /* istanbul ignore next -- @preserve */ const scrollToHighlightedResult = (eventInfo, name, newValue)=>{\n if (newValue) {\n const domConverter = this.editor.editing.view.domConverter;\n const viewRange = this.editor.editing.mapper.toViewRange(newValue.marker.getRange());\n scrollViewportToShowTarget({\n target: domConverter.viewRangeToDom(viewRange),\n viewportOffset: 40\n });\n }\n };\n const debouncedScrollListener = debounce(scrollToHighlightedResult.bind(this), 32);\n // Debounce scroll as highlight might be changed very frequently, e.g. when there's a replace all command.\n this.listenTo(this.state, 'change:highlightedResult', debouncedScrollListener, {\n priority: 'low'\n });\n // It's possible that the editor will get destroyed before debounced call kicks in.\n // This would result with accessing a view three that is no longer in DOM.\n this.listenTo(this.editor, 'destroy', debouncedScrollListener.cancel);\n this.on('change:_isSearchActive', (evt, name, isSearchActive)=>{\n if (isSearchActive) {\n this.listenTo(this.editor.model.document, 'change:data', this._onDocumentChange);\n } else {\n this.stopListening(this.editor.model.document, 'change:data', this._onDocumentChange);\n }\n });\n }\n /**\n\t * Initiate a search.\n\t */ find(callbackOrText, findAttributes) {\n this._isSearchActive = true;\n this.editor.execute('find', callbackOrText, findAttributes);\n return this.state.results;\n }\n /**\n\t * Stops active results from updating, and clears out the results.\n\t */ stop() {\n this.state.clear(this.editor.model);\n this._isSearchActive = false;\n }\n /**\n\t * Sets up the commands.\n\t */ _defineCommands() {\n this.editor.commands.add('find', new FindCommand(this.editor, this.state));\n this.editor.commands.add('findNext', new FindNextCommand(this.editor, this.state));\n this.editor.commands.add('findPrevious', new FindPreviousCommand(this.editor, this.state));\n this.editor.commands.add('replace', new ReplaceCommand(this.editor, this.state));\n this.editor.commands.add('replaceAll', new ReplaceAllCommand(this.editor, this.state));\n }\n /**\n\t * Sets up the marker downcast converters for search results highlighting.\n\t */ _defineConverters() {\n const { editor } = this;\n // Setup the marker highlighting conversion.\n editor.conversion.for('editingDowncast').markerToHighlight({\n model: 'findResult',\n view: ({ markerName })=>{\n const [, id] = markerName.split(':');\n // Marker removal from the view has a bug: https://github.com/ckeditor/ckeditor5/issues/7499\n // A minimal option is to return a new object for each converted marker...\n return {\n name: 'span',\n classes: [\n 'ck-find-result'\n ],\n attributes: {\n // ...however, adding a unique attribute should be future-proof..\n 'data-find-result': id\n }\n };\n }\n });\n editor.conversion.for('editingDowncast').markerToHighlight({\n model: 'findResultHighlighted',\n view: ({ markerName })=>{\n const [, id] = markerName.split(':');\n // Marker removal from the view has a bug: https://github.com/ckeditor/ckeditor5/issues/7499\n // A minimal option is to return a new object for each converted marker...\n return {\n name: 'span',\n classes: [\n HIGHLIGHT_CLASS\n ],\n attributes: {\n // ...however, adding a unique attribute should be future-proof..\n 'data-find-result': id\n }\n };\n }\n });\n }\n /**\n\t * Reacts to document changes in order to update search list.\n\t */ _onDocumentChange = ()=>{\n const changedNodes = new Set();\n const removedMarkers = new Set();\n const model = this.editor.model;\n const { results } = this.state;\n const changes = model.document.differ.getChanges();\n const changedMarkers = model.document.differ.getChangedMarkers();\n // Get nodes in which changes happened to re-run a search callback on them.\n changes.forEach((change)=>{\n if (!change.position) {\n return;\n }\n if (change.name === '$text' || change.position.nodeAfter && model.schema.isInline(change.position.nodeAfter)) {\n changedNodes.add(change.position.parent);\n [\n ...model.markers.getMarkersAtPosition(change.position)\n ].forEach((markerAtChange)=>{\n removedMarkers.add(markerAtChange.name);\n });\n } else if (change.type === 'insert' && change.position.nodeAfter) {\n changedNodes.add(change.position.nodeAfter);\n }\n });\n // Get markers from removed nodes also.\n changedMarkers.forEach(({ name, data: { newRange } })=>{\n if (newRange && newRange.start.root.rootName === '$graveyard') {\n removedMarkers.add(name);\n }\n });\n // Get markers from the updated nodes and remove all (search will be re-run on these nodes).\n changedNodes.forEach((node)=>{\n const markersInNode = [\n ...model.markers.getMarkersIntersectingRange(model.createRangeIn(node))\n ];\n markersInNode.forEach((marker)=>removedMarkers.add(marker.name));\n });\n // Remove results from the changed part of content.\n removedMarkers.forEach((markerName)=>{\n if (!results.has(markerName)) {\n return;\n }\n if (results.get(markerName) === this.state.highlightedResult) {\n this.state.highlightedResult = null;\n }\n results.remove(markerName);\n });\n // Run search callback again on updated nodes.\n const changedSearchResults = [];\n const findAndReplaceUtils = this.editor.plugins.get('FindAndReplaceUtils');\n changedNodes.forEach((nodeToCheck)=>{\n const changedNodeSearchResults = findAndReplaceUtils.updateFindResultFromRange(model.createRangeOn(nodeToCheck), model, this.state.lastSearchCallback, results);\n changedSearchResults.push(...changedNodeSearchResults);\n });\n changedMarkers.forEach((markerToCheck)=>{\n // Handle search result highlight update when T&C plugin is active.\n // Lookup is performed only on newly inserted markers.\n if (markerToCheck.data.newRange) {\n const changedNodeSearchResults = findAndReplaceUtils.updateFindResultFromRange(markerToCheck.data.newRange, model, this.state.lastSearchCallback, results);\n changedSearchResults.push(...changedNodeSearchResults);\n }\n });\n if (!this.state.highlightedResult && changedSearchResults.length) {\n // If there are found phrases but none is selected, select the first one.\n this.state.highlightedResult = changedSearchResults[0];\n } else {\n // If there is already highlight item then refresh highlight offset after appending new items.\n this.state.refreshHighlightOffset(model);\n }\n };\n}\n\n/**\n * The find and replace plugin.\n *\n * For a detailed overview, check the {@glink features/find-and-replace Find and replace feature documentation}.\n *\n * This is a \"glue\" plugin which loads the following plugins:\n *\n * * The {@link module:find-and-replace/findandreplaceediting~FindAndReplaceEditing find and replace editing feature},\n * * The {@link module:find-and-replace/findandreplaceui~FindAndReplaceUI find and replace UI feature}\n */ class FindAndReplace extends Plugin {\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n FindAndReplaceEditing,\n FindAndReplaceUI\n ];\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'FindAndReplace';\n }\n /**\n\t * @inheritDoc\n\t */ static get isOfficialPlugin() {\n return true;\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const ui = this.editor.plugins.get('FindAndReplaceUI');\n const findAndReplaceEditing = this.editor.plugins.get('FindAndReplaceEditing');\n const state = findAndReplaceEditing.state;\n ui.on('findNext', (event, data)=>{\n // Data is contained only for the \"find\" button.\n if (data) {\n state.searchText = data.searchText;\n findAndReplaceEditing.find(data.searchText, data);\n } else {\n // Find next arrow button press.\n this.editor.execute('findNext');\n }\n });\n ui.on('findPrevious', (event, data)=>{\n if (data && state.searchText !== data.searchText) {\n findAndReplaceEditing.find(data.searchText);\n } else {\n // Subsequent calls.\n this.editor.execute('findPrevious');\n }\n });\n ui.on('replace', (event, data)=>{\n if (state.searchText !== data.searchText) {\n findAndReplaceEditing.find(data.searchText);\n }\n const highlightedResult = state.highlightedResult;\n if (highlightedResult) {\n this.editor.execute('replace', data.replaceText, highlightedResult);\n }\n });\n ui.on('replaceAll', (event, data)=>{\n // The state hadn't been yet built for this search text.\n if (state.searchText !== data.searchText) {\n findAndReplaceEditing.find(data.searchText);\n }\n this.editor.execute('replaceAll', data.replaceText, state.results);\n });\n // Reset the state when the user invalidated last search results, for instance,\n // by starting typing another search query or changing options.\n ui.on('searchReseted', ()=>{\n state.clear(this.editor.model);\n findAndReplaceEditing.stop();\n });\n }\n}\n\nexport { FindAndReplace, FindAndReplaceEditing, FindAndReplaceFormView, FindAndReplaceState, FindAndReplaceUI, FindAndReplaceUtils, FindCommand, FindNextCommand, FindPreviousCommand, FindReplaceCommandBase, ReplaceAllCommand, ReplaceCommand, sortSearchResultsByMarkerPositions as _sortFindResultsByMarkerPositions };\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 find-and-replace/ui/findandreplaceformview\n */\n\nimport {\n\tView,\n\tButtonView,\n\tLabeledFieldView,\n\n\tFocusCycler,\n\tcreateLabeledInputText,\n\tsubmitHandler,\n\tViewCollection,\n\n\ttype Template,\n\ttype InputView,\n\ttype FocusableView,\n\tSwitchButtonView,\n\tCollapsibleView\n} from 'ckeditor5/src/ui.js';\n\nimport {\n\tFocusTracker,\n\tKeystrokeHandler,\n\tRect,\n\tisVisible,\n\ttype Locale\n} from 'ckeditor5/src/utils.js';\n\n// See: #8833.\n// eslint-disable-next-line ckeditor5-rules/ckeditor-imports\nimport '@ckeditor/ckeditor5-ui/theme/components/responsive-form/responsiveform.css';\nimport '../../theme/findandreplaceform.css';\nimport { IconPreviousArrow } from 'ckeditor5/src/icons.js';\n\n/**\n * The find and replace form view class.\n *\n * See {@link module:find-and-replace/ui/findandreplaceformview~FindAndReplaceFormView}.\n */\nexport class FindAndReplaceFormView extends View {\n\t/**\n\t * A collection of child views.\n\t */\n\tpublic children: ViewCollection;\n\n\t/**\n\t * Stores the number of matched search results.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public matchCount: number;\n\n\t/**\n\t * The offset of currently highlighted search result in {@link #matchCount matched results}.\n\t *\n\t * @observable\n\t */\n\tdeclare public readonly highlightOffset: number;\n\n\t/**\n\t * `true` when the search params (find text, options) has been changed by the user since\n\t * the last time find was executed. `false` otherwise.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public isDirty: boolean;\n\n\t/**\n\t * A live object with the aggregated `isEnabled` states of editor commands related to find and\n\t * replace. For instance, it may look as follows:\n\t *\n\t * ```json\n\t * {\n\t * \tfindNext: true,\n\t * \tfindPrevious: true,\n\t * \treplace: false,\n\t * \treplaceAll: false\n\t * }\n\t * ```\n\t *\n\t * @internal\n\t * @observable\n\t */\n\tdeclare public readonly _areCommandsEnabled: Record<string, boolean>;\n\n\t/**\n\t * The content of the counter label displaying the index of the current highlighted match\n\t * on top of the find input, for instance \"3 of 50\".\n\t *\n\t * @internal\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public _resultsCounterText: string;\n\n\t/**\n\t * The flag reflecting the state of the \"Match case\" switch button in the search options\n\t * dropdown.\n\t *\n\t * @internal\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public _matchCase: boolean;\n\n\t/**\n\t * The flag reflecting the state of the \"Whole words only\" switch button in the search options\n\t * dropdown.\n\t *\n\t * @internal\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public _wholeWordsOnly: boolean;\n\n\t/**\n\t * This flag is set `true` when some matches were found and the user didn't change the search\n\t * params (text to find, options) yet. This is only possible immediately after hitting the \"Find\" button.\n\t * `false` when there were no matches (see {@link #matchCount}) or the user changed the params (see {@link #isDirty}).\n\t *\n\t * It is used to control the enabled state of the replace UI (input and buttons); replacing text is only possible\n\t * if this flag is `true`.\n\t *\n\t * @internal\n\t * @observable\n\t */\n\tdeclare public readonly _searchResultsFound: boolean;\n\n\t/**\n\t * The find in text input view that stores the searched string.\n\t *\n\t * @internal\n\t */\n\tpublic readonly _findInputView: LabeledFieldView<InputView>;\n\n\t/**\n\t * The replace input view.\n\t */\n\tprivate readonly _replaceInputView: LabeledFieldView;\n\n\t/**\n\t * The find button view that initializes the search process.\n\t */\n\tprivate readonly _findButtonView: ButtonView;\n\n\t/**\n\t * The find previous button view.\n\t */\n\tprivate readonly _findPrevButtonView: ButtonView;\n\n\t/**\n\t * The find next button view.\n\t */\n\tprivate readonly _findNextButtonView: ButtonView;\n\n\t/**\n\t * A collapsible view aggregating the advanced search options.\n\t */\n\tprivate readonly _advancedOptionsCollapsibleView: CollapsibleView;\n\n\t/**\n\t * A switch button view controlling the \"Match case\" option.\n\t */\n\tprivate readonly _matchCaseSwitchView: SwitchButtonView;\n\n\t/**\n\t * A switch button view controlling the \"Whole words only\" option.\n\t */\n\tprivate readonly _wholeWordsOnlySwitchView: SwitchButtonView;\n\n\t/**\n\t * The replace button view.\n\t */\n\tprivate readonly _replaceButtonView: ButtonView;\n\n\t/**\n\t * The replace all button view.\n\t */\n\tprivate readonly _replaceAllButtonView: ButtonView;\n\n\t/**\n\t * The `div` aggregating the inputs.\n\t */\n\tprivate readonly _inputsDivView: View;\n\n\t/**\n\t * The `div` aggregating the action buttons.\n\t */\n\tprivate readonly _actionButtonsDivView: View;\n\n\t/**\n\t * Tracks information about the DOM focus in the form.\n\t */\n\tprivate readonly _focusTracker: FocusTracker;\n\n\t/**\n\t * An instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.\n\t */\n\tprivate readonly _keystrokes: KeystrokeHandler;\n\n\t/**\n\t * A collection of views that can be focused in the form.\n\t */\n\tprivate readonly _focusables: ViewCollection<FocusableView>;\n\n\t/**\n\t * Helps cycling over {@link #_focusables} in the form.\n\t */\n\tpublic readonly focusCycler: FocusCycler;\n\n\tpublic declare locale: Locale;\n\n\t/**\n\t * Creates a view of find and replace form.\n\t *\n\t * @param locale The localization services instance.\n\t */\n\tconstructor( locale: Locale ) {\n\t\tsuper( locale );\n\n\t\tconst t = locale.t;\n\n\t\tthis.children = this.createCollection();\n\n\t\tthis.set( 'matchCount', 0 );\n\n\t\tthis.set( 'highlightOffset', 0 );\n\n\t\tthis.set( 'isDirty', false );\n\n\t\tthis.set( '_areCommandsEnabled', {} );\n\n\t\tthis.set( '_resultsCounterText', '' );\n\n\t\tthis.set( '_matchCase', false );\n\n\t\tthis.set( '_wholeWordsOnly', false );\n\n\t\tthis.bind( '_searchResultsFound' ).to(\n\t\t\tthis, 'matchCount',\n\t\t\tthis, 'isDirty',\n\t\t\t( matchCount, isDirty ) => {\n\t\t\t\treturn matchCount > 0 && !isDirty;\n\t\t\t}\n\t\t);\n\n\t\tthis._findInputView = this._createInputField( t( 'Find in text…' ) );\n\n\t\tthis._findPrevButtonView = this._createButton( {\n\t\t\tlabel: t( 'Previous result' ),\n\t\t\tclass: 'ck-button-prev',\n\t\t\ticon: IconPreviousArrow,\n\t\t\tkeystroke: 'Shift+F3',\n\t\t\ttooltip: true\n\t\t} );\n\n\t\tthis._findNextButtonView = this._createButton( {\n\t\t\tlabel: t( 'Next result' ),\n\t\t\tclass: 'ck-button-next',\n\t\t\ticon: IconPreviousArrow,\n\t\t\tkeystroke: 'F3',\n\t\t\ttooltip: true\n\t\t} );\n\n\t\tthis._replaceInputView = this._createInputField( t( 'Replace with…' ), 'ck-labeled-field-replace' );\n\n\t\tthis._inputsDivView = this._createInputsDiv();\n\n\t\tthis._matchCaseSwitchView = this._createMatchCaseSwitch();\n\t\tthis._wholeWordsOnlySwitchView = this._createWholeWordsOnlySwitch();\n\n\t\tthis._advancedOptionsCollapsibleView = this._createAdvancedOptionsCollapsible();\n\n\t\tthis._replaceAllButtonView = this._createButton( {\n\t\t\tlabel: t( 'Replace all' ),\n\t\t\tclass: 'ck-button-replaceall',\n\t\t\twithText: true\n\t\t} );\n\n\t\tthis._replaceButtonView = this._createButton( {\n\t\t\tlabel: t( 'Replace' ),\n\t\t\tclass: 'ck-button-replace',\n\t\t\twithText: true\n\t\t} );\n\n\t\tthis._findButtonView = this._createButton( {\n\t\t\tlabel: t( 'Find' ),\n\t\t\tclass: 'ck-button-find ck-button-action',\n\t\t\twithText: true\n\t\t} );\n\n\t\tthis._actionButtonsDivView = this._createActionButtonsDiv();\n\n\t\tthis._focusTracker = new FocusTracker();\n\n\t\tthis._keystrokes = new KeystrokeHandler();\n\n\t\tthis._focusables = new ViewCollection();\n\n\t\tthis.focusCycler = new FocusCycler( {\n\t\t\tfocusables: this._focusables,\n\t\t\tfocusTracker: this._focusTracker,\n\t\t\tkeystrokeHandler: this._keystrokes,\n\t\t\tactions: {\n\t\t\t\t// Navigate form fields backwards using the <kbd>Shift</kbd> + <kbd>Tab</kbd> keystroke.\n\t\t\t\tfocusPrevious: 'shift + tab',\n\n\t\t\t\t// Navigate form fields forwards using the <kbd>Tab</kbd> key.\n\t\t\t\tfocusNext: 'tab'\n\t\t\t}\n\t\t} );\n\n\t\tthis.children.addMany( [\n\t\t\tthis._inputsDivView,\n\t\t\tthis._advancedOptionsCollapsibleView,\n\t\t\tthis._actionButtonsDivView\n\t\t] );\n\n\t\tthis.setTemplate( {\n\t\t\ttag: 'form',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-find-and-replace-form'\n\t\t\t\t],\n\n\t\t\t\ttabindex: '-1'\n\t\t\t},\n\t\t\tchildren: this.children\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override render(): void {\n\t\tsuper.render();\n\n\t\tsubmitHandler( { view: this } );\n\n\t\tthis._initFocusCycling();\n\t\tthis._initKeystrokeHandling();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override destroy(): void {\n\t\tsuper.destroy();\n\n\t\tthis._focusTracker.destroy();\n\t\tthis._keystrokes.destroy();\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic focus( direction?: 1 | -1 ): void {\n\t\tif ( direction === -1 ) {\n\t\t\tthis.focusCycler.focusLast();\n\t\t} else {\n\t\t\tthis.focusCycler.focusFirst();\n\t\t}\n\t}\n\n\t/**\n\t * Resets the form before re-appearing.\n\t *\n\t * It clears error messages, hides the match counter and disables the replace feature\n\t * until the next hit of the \"Find\" button.\n\t *\n\t * **Note**: It does not reset inputs and options, though. This way the form works better in editors with\n\t * disappearing toolbar (e.g. BalloonEditor): hiding the toolbar by accident (together with the find and replace UI)\n\t * does not require filling the entire form again.\n\t */\n\tpublic reset(): void {\n\t\tthis._findInputView.errorText = null;\n\t\tthis.isDirty = true;\n\t}\n\n\t/**\n\t * Returns the value of the find input.\n\t */\n\tprivate get _textToFind(): string {\n\t\treturn ( this._findInputView.fieldView.element as HTMLInputElement ).value;\n\t}\n\n\t/**\n\t * Returns the value of the replace input.\n\t */\n\tprivate get _textToReplace() {\n\t\treturn ( this._replaceInputView.fieldView.element as HTMLInputElement ).value;\n\t}\n\n\t/**\n\t * Configures and returns the `<div>` aggregating all form inputs.\n\t */\n\tprivate _createInputsDiv(): View {\n\t\tconst locale = this.locale;\n\t\tconst t = locale.t;\n\t\tconst inputsDivView = new View( locale );\n\n\t\t// Typing in the find field invalidates all previous results (the form is \"dirty\").\n\t\tthis._findInputView.fieldView.on( 'input', () => {\n\t\t\tthis.isDirty = true;\n\t\t} );\n\n\t\t// Pressing prev/next buttons fires related event on the form.\n\t\tthis._findPrevButtonView.delegate( 'execute' ).to( this, 'findPrevious' );\n\t\tthis._findNextButtonView.delegate( 'execute' ).to( this, 'findNext' );\n\n\t\t// Prev/next buttons will be disabled when related editor command gets disabled.\n\t\tthis._findPrevButtonView.bind( 'isEnabled' ).to( this, '_areCommandsEnabled', ( { findPrevious } ) => findPrevious );\n\t\tthis._findNextButtonView.bind( 'isEnabled' ).to( this, '_areCommandsEnabled', ( { findNext } ) => findNext );\n\n\t\tthis._injectFindResultsCounter();\n\n\t\tthis._replaceInputView.bind( 'isEnabled' ).to(\n\t\t\tthis, '_areCommandsEnabled',\n\t\t\tthis, '_searchResultsFound',\n\t\t\t( { replace }, resultsFound ) => replace && resultsFound );\n\n\t\tthis._replaceInputView.bind( 'infoText' ).to(\n\t\t\tthis._replaceInputView, 'isEnabled',\n\t\t\tthis._replaceInputView, 'isFocused',\n\t\t\t( isEnabled, isFocused ) => {\n\t\t\t\tif ( isEnabled || !isFocused ) {\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\n\t\t\t\treturn t( 'Tip: Find some text first in order to replace it.' );\n\t\t\t} );\n\n\t\tinputsDivView.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [ 'ck', 'ck-find-and-replace-form__inputs' ]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\tthis._findInputView,\n\t\t\t\tthis._findPrevButtonView,\n\t\t\t\tthis._findNextButtonView,\n\t\t\t\tthis._replaceInputView\n\t\t\t]\n\t\t} );\n\n\t\treturn inputsDivView;\n\t}\n\n\t/**\n\t * The action performed when the {@link #_findButtonView} is pressed.\n\t */\n\tprivate _onFindButtonExecute() {\n\t\t// When hitting \"Find\" in an empty input, an error should be displayed.\n\t\t// Also, if the form was \"dirty\", it should remain so.\n\t\tif ( !this._textToFind ) {\n\t\t\tconst t = this.t!;\n\n\t\t\tthis._findInputView.errorText = t( 'Text to find must not be empty.' );\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Hitting \"Find\" automatically clears the dirty state.\n\t\tthis.isDirty = false;\n\n\t\tthis.fire<FindNextEvent>( 'findNext', {\n\t\t\tsearchText: this._textToFind,\n\t\t\tmatchCase: this._matchCase,\n\t\t\twholeWords: this._wholeWordsOnly\n\t\t} );\n\t}\n\n\t/**\n\t * Configures an injects the find results counter displaying a \"N of M\" label of the {@link #_findInputView}.\n\t */\n\tprivate _injectFindResultsCounter() {\n\t\tconst locale = this.locale;\n\t\tconst t = locale.t;\n\t\tconst bind = this.bindTemplate;\n\t\tconst resultsCounterView = new View( this.locale );\n\n\t\tthis.bind( '_resultsCounterText' ).to( this, 'highlightOffset', this, 'matchCount',\n\t\t\t( highlightOffset, matchCount ) => t( '%0 of %1', [ highlightOffset, matchCount ] )\n\t\t);\n\n\t\tresultsCounterView.setTemplate( {\n\t\t\ttag: 'span',\n\t\t\tattributes: {\n\t\t\t\tclass: [\n\t\t\t\t\t'ck',\n\t\t\t\t\t'ck-results-counter',\n\t\t\t\t\t// The counter only makes sense when the field text corresponds to search results in the editing.\n\t\t\t\t\tbind.if( 'isDirty', 'ck-hidden' )\n\t\t\t\t]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\ttext: bind.to( '_resultsCounterText' )\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\n\t\t// The whole idea is that when the text of the counter changes, its width also increases/decreases and\n\t\t// it consumes more or less space over the input. The input, on the other hand, should adjust it's right\n\t\t// padding so its *entire* text always remains visible and available to the user.\n\t\tconst updateFindInputPadding = () => {\n\t\t\tconst inputElement = this._findInputView.fieldView.element;\n\n\t\t\t// Don't adjust the padding if the input (also: counter) were not rendered or not inserted into DOM yet.\n\t\t\tif ( !inputElement || !isVisible( inputElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst counterWidth = new Rect( resultsCounterView.element! ).width;\n\t\t\tconst paddingPropertyName = locale.uiLanguageDirection === 'ltr' ? 'paddingRight' : 'paddingLeft';\n\n\t\t\tif ( !counterWidth ) {\n\t\t\t\tinputElement.style[ paddingPropertyName ] = '';\n\t\t\t} else {\n\t\t\t\tinputElement.style[ paddingPropertyName ] = `calc( 2 * var(--ck-spacing-standard) + ${ counterWidth }px )`;\n\t\t\t}\n\t\t};\n\n\t\t// Adjust the input padding when the text of the counter changes, for instance \"1 of 200\" is narrower than \"123 of 200\".\n\t\t// Using \"low\" priority to let the text be set by the template binding first.\n\t\tthis.on( 'change:_resultsCounterText', updateFindInputPadding, { priority: 'low' } );\n\n\t\t// Adjust the input padding when the counter shows or hides. When hidden, there should be no padding. When it shows, the\n\t\t// padding should be set according to the text of the counter.\n\t\t// Using \"low\" priority to let the text be set by the template binding first.\n\t\tthis.on( 'change:isDirty', updateFindInputPadding, { priority: 'low' } );\n\n\t\t// Put the counter element next to the <input> in the find field.\n\t\t( this._findInputView.template!.children![ 0 ] as Template ).children!.push( resultsCounterView );\n\t}\n\n\t/**\n\t * Creates the collapsible view aggregating the advanced search options.\n\t */\n\tprivate _createAdvancedOptionsCollapsible(): CollapsibleView {\n\t\tconst t = this.locale.t;\n\t\tconst collapsible = new CollapsibleView( this.locale, [\n\t\t\tthis._matchCaseSwitchView,\n\t\t\tthis._wholeWordsOnlySwitchView\n\t\t] );\n\n\t\tcollapsible.set( {\n\t\t\tlabel: t( 'Advanced options' ),\n\t\t\tisCollapsed: true\n\t\t} );\n\n\t\treturn collapsible;\n\t}\n\n\t/**\n\t * Configures and returns the `<div>` element aggregating all form action buttons.\n\t */\n\tprivate _createActionButtonsDiv(): View {\n\t\tconst actionsDivView = new View( this.locale );\n\n\t\tthis._replaceButtonView.bind( 'isEnabled' ).to(\n\t\t\tthis, '_areCommandsEnabled',\n\t\t\tthis, '_searchResultsFound',\n\t\t\t( { replace }, resultsFound ) => replace && resultsFound );\n\n\t\tthis._replaceAllButtonView.bind( 'isEnabled' ).to(\n\t\t\tthis, '_areCommandsEnabled',\n\t\t\tthis, '_searchResultsFound',\n\t\t\t( { replaceAll }, resultsFound ) => replaceAll && resultsFound );\n\n\t\tthis._replaceButtonView.on( 'execute', () => {\n\t\t\tthis.fire( 'replace', {\n\t\t\t\tsearchText: this._textToFind,\n\t\t\t\treplaceText: this._textToReplace\n\t\t\t} );\n\t\t} );\n\n\t\tthis._replaceAllButtonView.on( 'execute', () => {\n\t\t\tthis.fire( 'replaceAll', {\n\t\t\t\tsearchText: this._textToFind,\n\t\t\t\treplaceText: this._textToReplace\n\t\t\t} );\n\n\t\t\tthis.focus();\n\t\t} );\n\n\t\tthis._findButtonView.on( 'execute', this._onFindButtonExecute.bind( this ) );\n\n\t\tactionsDivView.setTemplate( {\n\t\t\ttag: 'div',\n\t\t\tattributes: {\n\t\t\t\tclass: [ 'ck', 'ck-find-and-replace-form__actions' ]\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\tthis._replaceAllButtonView,\n\t\t\t\tthis._replaceButtonView,\n\t\t\t\tthis._findButtonView\n\t\t\t]\n\t\t} );\n\n\t\treturn actionsDivView;\n\t}\n\n\t/**\n\t * Creates, configures and returns and instance of a dropdown allowing users to narrow\n\t * the search criteria down. The dropdown has a list with switch buttons for each option.\n\t */\n\tprivate _createMatchCaseSwitch(): SwitchButtonView {\n\t\tconst t = this.locale.t;\n\n\t\tconst matchCaseSwitchButton = new SwitchButtonView( this.locale );\n\n\t\tmatchCaseSwitchButton.set( {\n\t\t\tlabel: t( 'Match case' ),\n\t\t\twithText: true\n\t\t} );\n\n\t\t// Let the switch be controlled by form's observable property.\n\t\tmatchCaseSwitchButton.bind( 'isOn' ).to( this, '_matchCase' );\n\n\t\t// // Update the state of the form when a switch is toggled.\n\t\tmatchCaseSwitchButton.on( 'execute', () => {\n\t\t\tthis._matchCase = !this._matchCase;\n\t\t\t// Toggling a switch makes the form dirty because this changes search criteria\n\t\t\t// just like typing text of the find input.\n\t\t\tthis.isDirty = true;\n\t\t} );\n\n\t\treturn matchCaseSwitchButton;\n\t}\n\n\t/**\n\t * Creates, configures and returns and instance of a dropdown allowing users to narrow\n\t * the search criteria down. The dropdown has a list with switch buttons for each option.\n\t */\n\tprivate _createWholeWordsOnlySwitch(): SwitchButtonView {\n\t\tconst t = this.locale.t;\n\n\t\tconst wholeWordsOnlySwitchButton = new SwitchButtonView( this.locale );\n\n\t\twholeWordsOnlySwitchButton.set( {\n\t\t\tlabel: t( 'Whole words only' ),\n\t\t\twithText: true\n\t\t} );\n\n\t\t// Let the switch be controlled by form's observable property.\n\t\twholeWordsOnlySwitchButton.bind( 'isOn' ).to( this, '_wholeWordsOnly' );\n\n\t\t// // Update the state of the form when a switch is toggled.\n\t\twholeWordsOnlySwitchButton.on( 'execute', () => {\n\t\t\tthis._wholeWordsOnly = !this._wholeWordsOnly;\n\t\t\t// Toggling a switch makes the form dirty because this changes search criteria\n\t\t\t// just like typing text of the find input.\n\t\t\tthis.isDirty = true;\n\t\t} );\n\n\t\treturn wholeWordsOnlySwitchButton;\n\t}\n\n\t/**\n\t * Initializes the {@link #_focusables} and {@link #_focusTracker} to allow navigation\n\t * using <kbd>Tab</kbd> and <kbd>Shift</kbd>+<kbd>Tab</kbd> keystrokes in the right order.\n\t */\n\tprivate _initFocusCycling() {\n\t\tconst childViews = [\n\t\t\tthis._findInputView,\n\t\t\tthis._findPrevButtonView,\n\t\t\tthis._findNextButtonView,\n\t\t\tthis._replaceInputView,\n\t\t\tthis._advancedOptionsCollapsibleView.buttonView,\n\t\t\tthis._matchCaseSwitchView,\n\t\t\tthis._wholeWordsOnlySwitchView,\n\t\t\tthis._replaceAllButtonView,\n\t\t\tthis._replaceButtonView,\n\t\t\tthis._findButtonView\n\t\t];\n\n\t\tchildViews.forEach( v => {\n\t\t\t// Register the view as focusable.\n\t\t\tthis._focusables.add( v );\n\n\t\t\t// Register the view in the focus tracker.\n\t\t\tthis._focusTracker.add( v.element! );\n\t\t} );\n\t}\n\n\t/**\n\t * Initializes the keystroke handling in the form.\n\t */\n\tprivate _initKeystrokeHandling() {\n\t\tconst stopPropagation = ( data: Event ) => data.stopPropagation();\n\t\tconst stopPropagationAndPreventDefault = ( data: Event ) => {\n\t\t\tdata.stopPropagation();\n\t\t\tdata.preventDefault();\n\t\t};\n\n\t\t// Start listening for the keystrokes coming from #element.\n\t\tthis._keystrokes.listenTo( this.element! );\n\n\t\t// Find the next result upon F3.\n\t\tthis._keystrokes.set( 'f3', event => {\n\t\t\tstopPropagationAndPreventDefault( event );\n\n\t\t\tthis._findNextButtonView.fire( 'execute' );\n\t\t} );\n\n\t\t// Find the previous result upon F3.\n\t\tthis._keystrokes.set( 'shift+f3', event => {\n\t\t\tstopPropagationAndPreventDefault( event );\n\n\t\t\tthis._findPrevButtonView.fire( 'execute' );\n\t\t} );\n\n\t\t// Find or replace upon pressing Enter in the find and replace fields.\n\t\tthis._keystrokes.set( 'enter', event => {\n\t\t\tconst target = event.target;\n\n\t\t\tif ( target === this._findInputView.fieldView.element ) {\n\t\t\t\tif ( this._areCommandsEnabled.findNext ) {\n\t\t\t\t\tthis._findNextButtonView.fire( 'execute' );\n\t\t\t\t} else {\n\t\t\t\t\tthis._findButtonView.fire( 'execute' );\n\t\t\t\t}\n\t\t\t\tstopPropagationAndPreventDefault( event );\n\t\t\t} else if ( target === this._replaceInputView.fieldView.element && !this.isDirty ) {\n\t\t\t\tthis._replaceButtonView.fire( 'execute' );\n\t\t\t\tstopPropagationAndPreventDefault( event );\n\t\t\t}\n\t\t} );\n\n\t\t// Find previous upon pressing Shift+Enter in the find field.\n\t\tthis._keystrokes.set( 'shift+enter', event => {\n\t\t\tconst target = event.target;\n\n\t\t\tif ( target !== this._findInputView.fieldView.element ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this._areCommandsEnabled.findPrevious ) {\n\t\t\t\tthis._findPrevButtonView.fire( 'execute' );\n\t\t\t} else {\n\t\t\t\tthis._findButtonView.fire( 'execute' );\n\t\t\t}\n\n\t\t\tstopPropagationAndPreventDefault( event );\n\t\t} );\n\n\t\t// Since the form is in the dropdown panel which is a child of the toolbar, the toolbar's\n\t\t// keystroke handler would take over the key management in the URL input.\n\t\t// We need to prevent this ASAP. Otherwise, the basic caret movement using the arrow keys will be impossible.\n\t\tthis._keystrokes.set( 'arrowright', stopPropagation );\n\t\tthis._keystrokes.set( 'arrowleft', stopPropagation );\n\t\tthis._keystrokes.set( 'arrowup', stopPropagation );\n\t\tthis._keystrokes.set( 'arrowdown', stopPropagation );\n\t}\n\n\t/**\n\t * Creates a button view.\n\t *\n\t * @param options The properties of the `ButtonView`.\n\t * @returns The button view instance.\n\t */\n\tprivate _createButton( options: object ): ButtonView {\n\t\tconst button = new ButtonView( this.locale );\n\n\t\tbutton.set( options );\n\n\t\treturn button;\n\t}\n\n\t/**\n\t * Creates a labeled input view.\n\t *\n\t * @param label The input label.\n\t * @returns The labeled input view instance.\n\t */\n\tprivate _createInputField( label: string, className?: string ): LabeledFieldView<InputView> {\n\t\tconst labeledInput = new LabeledFieldView( this.locale, createLabeledInputText );\n\n\t\tlabeledInput.label = label;\n\t\tlabeledInput.class = className;\n\n\t\treturn labeledInput;\n\t}\n}\n\n/**\n * Fired when the find next button is triggered.\n *\n * @eventName ~FindAndReplaceFormView#findNext\n * @param data The event data.\n */\nexport type FindNextEvent = {\n\tname: 'findNext';\n\targs: [ data?: FindNextEventData ];\n};\n\nexport type FindNextEventData = FindEventBaseData & {\n\tmatchCase: boolean;\n\twholeWords: boolean;\n};\n\n/**\n * Fired when the find previous button is triggered.\n *\n * @eventName ~FindAndReplaceFormView#findPrevious\n * @param data The event data.\n */\nexport type FindPreviousEvent = {\n\tname: 'findPrevious';\n\targs: [ data?: FindEventBaseData ];\n};\n\n/**\n * Base type for all find/replace events.\n */\nexport type FindEventBaseData = {\n\tsearchText: string;\n};\n\n/**\n * Fired when the replace button is triggered.\n *\n * @eventName ~FindAndReplaceFormView#replace\n * @param data The event data.\n */\nexport type ReplaceEvent = {\n\tname: 'replace';\n\targs: [ data: ReplaceEventData ];\n};\n\nexport type ReplaceEventData = FindEventBaseData & {\n\treplaceText: string;\n};\n\n/**\n * Fired when the replaceAll button is triggered.\n *\n * @eventName ~FindAndReplaceFormView#replaceAll\n * @param data The event data.\n */\nexport type ReplaceAllEvent = {\n\tname: 'replaceAll';\n\targs: [ data: ReplaceEventData ];\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 find-and-replace/findandreplaceui\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core.js';\nimport { IconFindReplace } from 'ckeditor5/src/icons.js';\nimport {\n\tButtonView,\n\tMenuBarMenuListItemButtonView,\n\tDialog,\n\tDialogViewPosition,\n\tcreateDropdown,\n\tDropdownView,\n\tFormHeaderView,\n\tCssTransitionDisablerMixin,\n\ttype ViewWithCssTransitionDisabler\n} from 'ckeditor5/src/ui.js';\nimport { FindAndReplaceFormView } from './ui/findandreplaceformview.js';\nimport { type FindAndReplaceEditing } from './findandreplaceediting.js';\nimport { type FindNextCommand } from './findnextcommand.js';\nimport { type FindPreviousCommand } from './findpreviouscommand.js';\nimport { type ReplaceCommand } from './replacecommand.js';\nimport { type ReplaceAllCommand } from './replaceallcommand.js';\n\n/**\n * The default find and replace UI.\n *\n * It registers the `'findAndReplace'` UI button in the editor's {@link module:ui/componentfactory~ComponentFactory component factory}.\n * that uses the {@link module:find-and-replace/findandreplace~FindAndReplace FindAndReplace} plugin API.\n */\nexport class FindAndReplaceUI extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ Dialog ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FindAndReplaceUI' 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 * A reference to the find and replace form view.\n\t */\n\tpublic formView: FindAndReplaceFormView & ViewWithCssTransitionDisabler | null;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.config.define( 'findAndReplace.uiType', 'dialog' );\n\n\t\tthis.formView = null;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst isUiUsingDropdown = editor.config.get( 'findAndReplace.uiType' ) === 'dropdown';\n\t\tconst findCommand = editor.commands.get( 'find' )!;\n\t\tconst t = this.editor.t;\n\n\t\t// Register the toolbar component: dropdown or button (that opens a dialog).\n\t\teditor.ui.componentFactory.add( 'findAndReplace', () => {\n\t\t\tlet view: DropdownView | ButtonView;\n\n\t\t\tif ( isUiUsingDropdown ) {\n\t\t\t\tview = this._createDropdown();\n\n\t\t\t\t// Button should be disabled when in source editing mode. See #10001.\n\t\t\t\tview.bind( 'isEnabled' ).to( findCommand );\n\t\t\t} else {\n\t\t\t\tview = this._createDialogButtonForToolbar();\n\t\t\t}\n\n\t\t\teditor.keystrokes.set( 'Ctrl+F', ( data, cancelEvent ) => {\n\t\t\t\tif ( !findCommand.isEnabled ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( view instanceof DropdownView ) {\n\t\t\t\t\tconst dropdownButtonView = view.buttonView;\n\n\t\t\t\t\tif ( !dropdownButtonView.isOn ) {\n\t\t\t\t\t\tdropdownButtonView.fire( 'execute' );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif ( view.isOn ) {\n\t\t\t\t\t\t// If the dialog is open, do not close it. Instead focus it.\n\t\t\t\t\t\t// Unfortunately we can't simply use:\n\t\t\t\t\t\t// \tthis.formView!.focus();\n\t\t\t\t\t\t// because it would always move focus to the first input field, which we don't want.\n\t\t\t\t\t\teditor.plugins.get( 'Dialog' ).view!.focus();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tview.fire( 'execute' );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcancelEvent();\n\t\t\t} );\n\n\t\t\treturn view;\n\t\t} );\n\n\t\tif ( !isUiUsingDropdown ) {\n\t\t\teditor.ui.componentFactory.add( 'menuBar:findAndReplace', () => {\n\t\t\t\treturn this._createDialogButtonForMenuBar();\n\t\t\t} );\n\t\t}\n\n\t\t// Add the information about the keystroke to the accessibility database.\n\t\teditor.accessibility.addKeystrokeInfos( {\n\t\t\tkeystrokes: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t( 'Find in the document' ),\n\t\t\t\t\tkeystroke: 'CTRL+F'\n\t\t\t\t}\n\t\t\t]\n\t\t} );\n\t}\n\n\t/**\n\t * Creates a dropdown containing the find and replace form.\n\t */\n\tprivate _createDropdown(): DropdownView {\n\t\tconst editor = this.editor;\n\t\tconst t = editor.locale.t;\n\t\tconst dropdownView = createDropdown( editor.locale );\n\n\t\tdropdownView.once( 'change:isOpen', () => {\n\t\t\tthis.formView = this._createFormView();\n\t\t\tthis.formView.children.add(\n\t\t\t\tnew FormHeaderView( editor.locale, {\n\t\t\t\t\tlabel: t( 'Find and replace' )\n\t\t\t\t} ),\n\t\t\t\t0\n\t\t\t);\n\n\t\t\tdropdownView.panelView.children.add( this.formView );\n\t\t} );\n\n\t\t// Every time a dropdown is opened, the search text field should get focused and selected for better UX.\n\t\t// Note: Using the low priority here to make sure the following listener starts working after\n\t\t// the default action of the drop-down is executed (i.e. the panel showed up). Otherwise,\n\t\t// the invisible form/input cannot be focused/selected.\n\t\t//\n\t\t// Each time a dropdown is closed, move the focus back to the find and replace toolbar button\n\t\t// and let the find and replace editing feature know that all search results can be invalidated\n\t\t// and no longer should be marked in the content.\n\t\tdropdownView.on( 'change:isOpen', ( event, name, isOpen ) => {\n\t\t\tif ( isOpen ) {\n\t\t\t\tthis._setupFormView();\n\t\t\t} else {\n\t\t\t\tthis.fire( 'searchReseted' );\n\t\t\t}\n\t\t}, { priority: 'low' } );\n\n\t\tdropdownView.buttonView.set( {\n\t\t\ticon: IconFindReplace,\n\t\t\tlabel: t( 'Find and replace' ),\n\t\t\tkeystroke: 'CTRL+F',\n\t\t\ttooltip: true\n\t\t} );\n\n\t\treturn dropdownView;\n\t}\n\n\t/**\n\t * Creates a button that opens a dialog with the find and replace form.\n\t */\n\tprivate _createDialogButtonForToolbar(): ButtonView {\n\t\tconst editor = this.editor;\n\t\tconst buttonView = this._createButton( ButtonView );\n\t\tconst dialog = editor.plugins.get( 'Dialog' );\n\n\t\tbuttonView.set( {\n\t\t\ttooltip: true\n\t\t} );\n\n\t\t// Button should be on when the find and replace dialog is opened.\n\t\tbuttonView.bind( 'isOn' ).to( dialog, 'id', id => id === 'findAndReplace' );\n\n\t\t// Every time a dialog is opened, the search text field should get focused and selected for better UX.\n\t\t// Each time a dialog is closed, move the focus back to the find and replace toolbar button\n\t\t// and let the find and replace editing feature know that all search results can be invalidated\n\t\t// and no longer should be marked in the content.\n\t\tbuttonView.on( 'execute', () => {\n\t\t\tif ( buttonView.isOn ) {\n\t\t\t\tdialog.hide();\n\t\t\t} else {\n\t\t\t\tthis._showDialog();\n\t\t\t}\n\t\t} );\n\n\t\treturn buttonView;\n\t}\n\n\t/**\n\t * Creates a button for for menu bar that will show find and replace dialog.\n\t */\n\tprivate _createDialogButtonForMenuBar(): MenuBarMenuListItemButtonView {\n\t\tconst buttonView = this._createButton( MenuBarMenuListItemButtonView );\n\t\tconst dialogPlugin = this.editor.plugins.get( 'Dialog' );\n\t\tconst dialog = this.editor.plugins.get( 'Dialog' );\n\n\t\tbuttonView.set( {\n\t\t\trole: 'menuitemcheckbox',\n\t\t\tisToggleable: true\n\t\t} );\n\n\t\t// Button should be on when the find and replace dialog is opened.\n\t\tbuttonView.bind( 'isOn' ).to( dialog, 'id', id => id === 'findAndReplace' );\n\n\t\tbuttonView.on( 'execute', () => {\n\t\t\tif ( dialogPlugin.id === 'findAndReplace' ) {\n\t\t\t\tdialogPlugin.hide();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._showDialog();\n\t\t} );\n\n\t\treturn buttonView;\n\t}\n\n\t/**\n\t * Creates a button for find and replace command to use either in toolbar or in menu bar.\n\t */\n\tprivate _createButton<T extends typeof ButtonView | typeof MenuBarMenuListItemButtonView>( ButtonClass: T ): InstanceType<T> {\n\t\tconst editor = this.editor;\n\t\tconst findCommand = editor.commands.get( 'find' )!;\n\t\tconst buttonView = new ButtonClass( editor.locale ) as InstanceType<T>;\n\t\tconst t = editor.locale.t;\n\n\t\t// Button should be disabled when in source editing mode. See #10001.\n\t\tbuttonView.bind( 'isEnabled' ).to( findCommand );\n\n\t\tbuttonView.set( {\n\t\t\ticon: IconFindReplace,\n\t\t\tlabel: t( 'Find and replace' ),\n\t\t\tkeystroke: 'CTRL+F'\n\t\t} );\n\n\t\treturn buttonView;\n\t}\n\n\t/**\n\t * Shows the find and replace dialog.\n\t */\n\tprivate _showDialog(): void {\n\t\tconst editor = this.editor;\n\t\tconst dialog = editor.plugins.get( 'Dialog' );\n\t\tconst t = editor.locale.t;\n\n\t\tif ( !this.formView ) {\n\t\t\tthis.formView = this._createFormView();\n\t\t}\n\n\t\tdialog.show( {\n\t\t\tid: 'findAndReplace',\n\t\t\ttitle: t( 'Find and replace' ),\n\t\t\tcontent: this.formView,\n\t\t\tposition: DialogViewPosition.EDITOR_TOP_SIDE,\n\t\t\tonShow: () => {\n\t\t\t\tthis._setupFormView();\n\t\t\t},\n\n\t\t\tonHide: () => {\n\t\t\t\tthis.fire( 'searchReseted' );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Sets up the form view for the findN and replace.\n\t */\n\tprivate _createFormView(): FindAndReplaceFormView & ViewWithCssTransitionDisabler {\n\t\tconst editor = this.editor;\n\t\tconst formView = new ( CssTransitionDisablerMixin( FindAndReplaceFormView ) )( editor.locale );\n\t\tconst commands = editor.commands;\n\t\tconst findAndReplaceEditing: FindAndReplaceEditing = this.editor.plugins.get( 'FindAndReplaceEditing' );\n\t\tconst editingState = findAndReplaceEditing.state!;\n\n\t\tformView.bind( 'highlightOffset' ).to( editingState, 'highlightedOffset' );\n\n\t\t// Let the form know how many results were found in total.\n\t\tformView.listenTo( editingState.results, 'change', () => {\n\t\t\tformView.matchCount = editingState.results.length;\n\t\t} );\n\n\t\t// Command states are used to enable/disable individual form controls.\n\t\t// To keep things simple, instead of binding 4 individual observables, there's only one that combines every\n\t\t// commands' isEnabled state. Yes, it will change more often but this simplifies the structure of the form.\n\t\tconst findNextCommand: FindNextCommand = commands.get( 'findNext' )!;\n\t\tconst findPreviousCommand: FindPreviousCommand = commands.get( 'findPrevious' )!;\n\t\tconst replaceCommand: ReplaceCommand = commands.get( 'replace' )!;\n\t\tconst replaceAllCommand: ReplaceAllCommand = commands.get( 'replaceAll' )!;\n\t\tformView.bind( '_areCommandsEnabled' ).to(\n\t\t\tfindNextCommand, 'isEnabled',\n\t\t\tfindPreviousCommand, 'isEnabled',\n\t\t\treplaceCommand, 'isEnabled',\n\t\t\treplaceAllCommand, 'isEnabled',\n\t\t\t( findNext, findPrevious, replace, replaceAll ) => ( { findNext, findPrevious, replace, replaceAll } )\n\t\t);\n\n\t\t// The UI plugin works as an interface between the form and the editing part of the feature.\n\t\tformView.delegate( 'findNext', 'findPrevious', 'replace', 'replaceAll' ).to( this );\n\n\t\t// Let the feature know that search results are no longer relevant because the user changed the searched phrase\n\t\t// (or options) but didn't hit the \"Find\" button yet (e.g. still typing).\n\t\tformView.on( 'change:isDirty', ( evt, data, isDirty ) => {\n\t\t\tif ( isDirty ) {\n\t\t\t\tthis.fire( 'searchReseted' );\n\t\t\t}\n\t\t} );\n\n\t\treturn formView;\n\t}\n\n\t/**\n\t * Clears the find and replace form and focuses the search text field.\n\t */\n\tprivate _setupFormView(): void {\n\t\tthis.formView!.disableCssTransitions();\n\t\tthis.formView!.reset();\n\t\tthis.formView!._findInputView.fieldView.select();\n\t\tthis.formView!.enableCssTransitions();\n\t}\n}\n\n/**\n * Fired when the UI was reset and the search results marked in the editing root should be invalidated,\n * for instance, because the user changed the searched phrase (or options) but didn't hit\n * the \"Find\" button yet.\n *\n * @eventName ~FindAndReplaceUI#searchReseted\n */\nexport type FindResetedEvent = {\n\tname: 'searchReseted';\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 find-and-replace/findcommand\n*/\n\nimport { Command, type Editor } from 'ckeditor5/src/core.js';\nimport type { Collection } from 'ckeditor5/src/utils.js';\n\nimport type { FindAndReplaceState, FindCallback } from './findandreplacestate.js';\nimport type { FindResultType } from './findandreplace.js';\nimport { type FindAndReplaceUtils } from './findandreplaceutils.js';\n\n/**\n * The find command. It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */\nexport class FindCommand extends Command {\n\t/**\n\t * The find and replace state object used for command operations.\n\t */\n\tprivate _state: FindAndReplaceState;\n\n\t/**\n\t * Creates a new `FindCommand` instance.\n\t *\n\t * @param editor The editor on which this command will be used.\n\t * @param state An object to hold plugin state.\n\t */\n\tconstructor( editor: Editor, state: FindAndReplaceState ) {\n\t\tsuper( editor );\n\n\t\t// The find command is always enabled.\n\t\tthis.isEnabled = true;\n\n\t\t// It does not affect data so should be enabled in read-only mode.\n\t\tthis.affectsData = false;\n\n\t\tthis._state = state;\n\t}\n\n\t/**\n\t * Executes the command.\n\t *\n\t * @param callbackOrText\n\t * @param options Options object.\n\t * @param options.matchCase If set to `true`, the letter case will be matched.\n\t * @param options.wholeWords If set to `true`, only whole words that match `callbackOrText` will be matched.\n\t *\n\t * @fires execute\n\t */\n\tpublic override execute(\n\t\tcallbackOrText: string | FindCallback,\n\t\t{ matchCase, wholeWords }: FindAttributes = {}\n\t): { results: Collection<FindResultType>; findCallback: FindCallback } {\n\t\tconst { editor } = this;\n\t\tconst { model } = editor;\n\t\tconst findAndReplaceUtils: FindAndReplaceUtils = editor.plugins.get( 'FindAndReplaceUtils' );\n\n\t\tlet findCallback: FindCallback | undefined;\n\t\tlet callbackSearchText: string = '';\n\n\t\t// Allow to execute `find()` on a plugin with a keyword only.\n\t\tif ( typeof callbackOrText === 'string' ) {\n\t\t\tfindCallback = ( ...args ) => ( {\n\t\t\t\tresults: findAndReplaceUtils.findByTextCallback( callbackOrText, { matchCase, wholeWords } )( ...args ),\n\t\t\t\tsearchText: callbackOrText\n\t\t\t} );\n\t\t} else {\n\t\t\tfindCallback = callbackOrText;\n\t\t}\n\n\t\t// Wrap the callback to get the search text that will be assigned to the state.\n\t\tconst oldCallback = findCallback;\n\n\t\tfindCallback = ( ...args ) => {\n\t\t\tconst result = oldCallback( ...args );\n\n\t\t\tif ( result && 'searchText' in result ) {\n\t\t\t\tcallbackSearchText = result.searchText;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\n\t\t// Initial search is done on all nodes in all roots inside the content.\n\t\tconst results = model.document.getRootNames()\n\t\t\t.reduce( ( ( currentResults: Collection<FindResultType> | null, rootName ) => findAndReplaceUtils.updateFindResultFromRange(\n\t\t\t\tmodel.createRangeIn( model.document.getRoot( rootName )! ),\n\t\t\t\tmodel,\n\t\t\t\tfindCallback!,\n\t\t\t\tcurrentResults\n\t\t\t) ), null )!;\n\n\t\tthis._state.clear( model );\n\t\tthis._state.results.addMany( results );\n\t\tthis._state.highlightedResult = results.get( 0 );\n\t\tthis._state.searchText = callbackSearchText;\n\n\t\tif ( findCallback ) {\n\t\t\tthis._state.lastSearchCallback = findCallback;\n\t\t}\n\n\t\tthis._state.matchCase = !!matchCase;\n\t\tthis._state.matchWholeWords = !!wholeWords;\n\n\t\treturn {\n\t\t\tresults,\n\t\t\tfindCallback\n\t\t};\n\t}\n}\n\n/**\n * The options object for the find command.\n */\nexport type FindAttributes = { matchCase?: boolean; wholeWords?: boolean };\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 find-and-replace/findandreplacestate\n */\n\nimport type { Model, ModelItem } from 'ckeditor5/src/engine.js';\nimport { ObservableMixin, Collection, type CollectionChangeEvent, type ObservableChangeEvent } from 'ckeditor5/src/utils.js';\nimport type { FindResultType } from './findandreplace.js';\n\n/**\n * The object storing find and replace plugin state for a given editor instance.\n */\nexport class FindAndReplaceState extends /* #__PURE__ */ ObservableMixin() {\n\t/**\n\t * A collection of find matches.\n\t *\n\t * @observable\n\t */\n\tdeclare public results: Collection<FindResultType>;\n\n\t/**\n\t * Currently highlighted search result in {@link #results matched results}.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public highlightedResult: FindResultType | null;\n\n\t/**\n\t * Currently highlighted search result offset in {@link #results matched results}.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public highlightedOffset: number;\n\n\t/**\n\t * Searched text value.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public searchText: string;\n\n\t/**\n\t * The most recent search callback used by the feature to find matches.\n\t * It is used to re-run the search when user modifies the editor content.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public lastSearchCallback: FindCallback | null;\n\n\t/**\n\t * Replace text value.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public replaceText: string;\n\n\t/**\n\t * Indicates whether the matchCase checkbox has been checked.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public matchCase: boolean;\n\n\t/**\n\t * Indicates whether the matchWholeWords checkbox has been checked.\n\t *\n\t * @readonly\n\t * @observable\n\t */\n\tdeclare public matchWholeWords: boolean;\n\n\t/**\n\t * Creates an instance of the state.\n\t */\n\tpublic constructor( model: Model ) {\n\t\tsuper();\n\n\t\tthis.set( 'results', new Collection() );\n\t\tthis.set( 'highlightedResult', null );\n\t\tthis.set( 'highlightedOffset', 0 );\n\t\tthis.set( 'searchText', '' );\n\t\tthis.set( 'replaceText', '' );\n\t\tthis.set( 'lastSearchCallback', null );\n\t\tthis.set( 'matchCase', false );\n\t\tthis.set( 'matchWholeWords', false );\n\n\t\tthis.results.on<CollectionChangeEvent<FindResultType>>( 'change', ( eventInfo, { removed, index } ) => {\n\t\t\tif ( Array.from( removed ).length ) {\n\t\t\t\tlet highlightedResultRemoved = false;\n\n\t\t\t\tmodel.change( writer => {\n\t\t\t\t\tfor ( const removedResult of removed ) {\n\t\t\t\t\t\tif ( this.highlightedResult === removedResult ) {\n\t\t\t\t\t\t\thighlightedResultRemoved = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( model.markers.has( removedResult.marker!.name ) ) {\n\t\t\t\t\t\t\twriter.removeMarker( removedResult.marker! );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tif ( highlightedResultRemoved ) {\n\t\t\t\t\tconst nextHighlightedIndex = index >= this.results.length ? 0 : index;\n\t\t\t\t\tthis.highlightedResult = this.results.get( nextHighlightedIndex );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tthis.on<ObservableChangeEvent<FindResultType | null>>( 'change:highlightedResult', ( ) => {\n\t\t\tthis.refreshHighlightOffset( model );\n\t\t} );\n\t}\n\n\t/**\n\t * Cleans the state up and removes markers from the model.\n\t */\n\tpublic clear( model: Model ): void {\n\t\tthis.searchText = '';\n\n\t\tmodel.change( writer => {\n\t\t\tif ( this.highlightedResult ) {\n\t\t\t\tconst oldMatchId = this.highlightedResult.marker!.name.split( ':' )[ 1 ];\n\t\t\t\tconst oldMarker = model.markers.get( `findResultHighlighted:${ oldMatchId }` );\n\n\t\t\t\tif ( oldMarker ) {\n\t\t\t\t\twriter.removeMarker( oldMarker );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t[ ...this.results ].forEach( ( { marker } ) => {\n\t\t\t\twriter.removeMarker( marker! );\n\t\t\t} );\n\t\t} );\n\n\t\tthis.results.clear();\n\t}\n\n\t/**\n\t * Refreshes the highlight result offset based on it's index within the result list.\n\t */\n\tpublic refreshHighlightOffset( model: Model ): void {\n\t\tconst { highlightedResult, results } = this;\n\n\t\tif ( highlightedResult ) {\n\t\t\tthis.highlightedOffset = sortSearchResultsByMarkerPositions( model, [ ...results ] ).indexOf( highlightedResult ) + 1;\n\t\t} else {\n\t\t\tthis.highlightedOffset = 0;\n\t\t}\n\t}\n}\n\n/**\n * Sorts search results by marker positions. Make sure that the results are sorted in the same order as they appear in the document\n * to avoid issues with the `find next` command. Apparently, the order of the results in the state might be different than the order\n * of the markers in the model.\n *\n * @internal\n */\nexport function sortSearchResultsByMarkerPositions( model: Model, results: Array<FindResultType> ): Array<FindResultType> {\n\tconst sortMapping = { before: -1, same: 0, after: 1, different: 1 };\n\n\t// `compareWith` doesn't play well with multi-root documents, so we need to sort results by root name first\n\t// and then sort them within each root. It prevents \"random\" order of results when the document has multiple roots.\n\t// See more: https://github.com/ckeditor/ckeditor5/pull/17292#issuecomment-2442084549\n\treturn model.document.getRootNames().flatMap( rootName =>\n\t\tresults\n\t\t\t.filter( result => result.marker!.getStart().root.rootName === rootName )\n\t\t\t.sort( ( a, b ) => sortMapping[ a.marker!.getStart().compareWith( b.marker!.getStart() ) ] )\n\t);\n}\n\n/**\n * The callback function used to find matches in the document.\n */\nexport type FindCallback = ( { item, text }: { item: ModelItem; text: string } ) => FindCallbackResultObject | FindCallbackResult;\n\n/**\n * Represents the result of a find callback.\n *\n * The `searchText` attribute in the result object is used to determine if the search text has changed.\n * If returned `searchText` is different than the last search text, the search results will be invalidated\n * while searching for next item and the search will start from the beginning of the document.\n */\nexport type FindCallbackResultObject = {\n\tresults: Array<FindResultType>;\n\tsearchText: string;\n};\n\n/**\n * Represents the result of a find callback.\n *\n * @deprecated Use `FindCallbackResultObject` instead.\n */\nexport type FindCallbackResult = Array<FindResultType>;\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 find-and-replace/replacecommandbase\n*/\n\nimport { Command, type Editor } from 'ckeditor5/src/core.js';\nimport type { FindResultType } from './findandreplace.js';\nimport { type FindAndReplaceState } from './findandreplacestate.js';\n\nexport abstract class FindReplaceCommandBase extends Command {\n\t/**\n\t * The find and replace state object used for command operations.\n\t */\n\tprotected _state: FindAndReplaceState;\n\n\t/**\n\t * Creates a new `ReplaceCommand` instance.\n\t *\n\t * @param editor Editor on which this command will be used.\n\t * @param state An object to hold plugin state.\n\t */\n\tconstructor( editor: Editor, state: FindAndReplaceState ) {\n\t\tsuper( editor );\n\n\t\t// The replace command is always enabled.\n\t\tthis.isEnabled = true;\n\n\t\tthis._state = state;\n\n\t\t// Since this command executes on particular result independent of selection, it should be checked directly in execute block.\n\t\tthis._isEnabledBasedOnSelection = false;\n\t}\n\n\tpublic abstract override execute( ...args: Array<unknown> ): void;\n\n\t/**\n\t * Common logic for both `replace` commands.\n\t * Replace a given find result by a string or a callback.\n\t *\n\t * @param result A single result from the find command.\n\t */\n\tprotected _replace( replacementText: string, result: FindResultType ): void {\n\t\tconst { model } = this.editor;\n\n\t\tconst range = result.marker!.getRange();\n\n\t\t// Don't replace a result that is in non-editable place.\n\t\tif ( !model.canEditAt( range ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tmodel.change( writer => {\n\t\t\t// Don't replace a result (marker) that found its way into the $graveyard (e.g. removed by collaborators).\n\t\t\tif ( range.root.rootName === '$graveyard' ) {\n\t\t\t\tthis._state.results.remove( result );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet textAttributes = {};\n\n\t\t\tfor ( const item of range.getItems() ) {\n\t\t\t\tif ( item.is( '$text' ) || item.is( '$textProxy' ) ) {\n\t\t\t\t\ttextAttributes = item.getAttributes();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmodel.insertContent( writer.createText( replacementText, textAttributes ), range );\n\n\t\t\tif ( this._state.results.has( result ) ) {\n\t\t\t\tthis._state.results.remove( result );\n\t\t\t}\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 find-and-replace/replacecommand\n*/\n\nimport type { FindResultType } from './findandreplace.js';\nimport { sortSearchResultsByMarkerPositions } from './findandreplacestate.js';\nimport { FindReplaceCommandBase } from './replacecommandbase.js';\n\n/**\n * The replace command. It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */\nexport class ReplaceCommand extends FindReplaceCommandBase {\n\t/**\n\t * Replace a given find result by a string or a callback.\n\t *\n\t * @param result A single result from the find command.\n\t *\n\t * @fires execute\n\t */\n\tpublic override execute( replacementText: string, result: FindResultType ): void {\n\t\t// We save highlight offset here, as the information about the highlighted result will be lost after the changes.\n\t\t//\n\t\t// It happens because result list is partially regenerated if the result is removed from the paragraph.\n\t\t// Partially means that all sibling result items that are placed in the same paragraph are removed and added again,\n\t\t// which causes the highlighted result to be malformed (usually it's set to first but it's not guaranteed).\n\t\t//\n\t\t// While this saving can be done in editing state, it's better to keep it here, as it's a part of the command logic\n\t\t// and might be super tricky to implement in multi-root documents.\n\t\t//\n\t\t// Keep in mind that the highlighted offset is indexed from 1, as it's displayed to the user. It's why we subtract 1 here.\n\t\t//\n\t\t// More info: https://github.com/ckeditor/ckeditor5/issues/16648\n\t\tconst oldHighlightOffset = Math.max( this._state!.highlightedOffset - 1, 0 );\n\n\t\tthis._replace( replacementText, result );\n\n\t\t// Let's revert the highlight offset to the previous value.\n\t\tif ( this._state!.results.length ) {\n\t\t\t// Highlight offset operates on sorted array, so we need to sort the results first.\n\t\t\t// It's not guaranteed that items in state results are sorted, usually they are, but it's not guaranteed when\n\t\t\t// the result is removed from the paragraph with other highlighted results.\n\t\t\tconst sortedResults = sortSearchResultsByMarkerPositions( this.editor.model, [ ...this._state!.results ] );\n\n\t\t\t// Just make sure that we don't overflow the results array, so use modulo.\n\t\t\tthis._state!.highlightedResult = sortedResults[ oldHighlightOffset % sortedResults.length ];\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 find-and-replace/replaceallcommand\n */\n\nimport { Collection } from 'ckeditor5/src/utils.js';\nimport type { FindResultType } from './findandreplace.js';\nimport { type FindAndReplaceUtils } from './findandreplaceutils.js';\nimport { FindReplaceCommandBase } from './replacecommandbase.js';\n\n/**\n * The replace all command. It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */\nexport class ReplaceAllCommand extends FindReplaceCommandBase {\n\t/**\n\t * Replaces all the occurrences of `textToReplace` with a given `newText` string.\n\t *\n\t * ```ts\n\t *\treplaceAllCommand.execute( 'replaceAll', 'new text replacement', 'text to replace' );\n\t * ```\n\t *\n\t * Alternatively you can call it from editor instance:\n\t *\n\t * ```ts\n\t *\teditor.execute( 'replaceAll', 'new text', 'old text' );\n\t * ```\n\t *\n\t * @param newText Text that will be inserted to the editor for each match.\n\t * @param textToReplace Text to be replaced or a collection of matches\n\t * as returned by the find command.\n\t *\n\t * @fires module:core/command~Command#event:execute\n\t */\n\tpublic override execute( newText: string, textToReplace: string | Collection<FindResultType> ): void {\n\t\tconst { editor } = this;\n\t\tconst { model } = editor;\n\t\tconst findAndReplaceUtils: FindAndReplaceUtils = editor.plugins.get( 'FindAndReplaceUtils' );\n\n\t\tconst results = textToReplace instanceof Collection ?\n\t\t\ttextToReplace : model.document.getRootNames()\n\t\t\t\t.reduce( ( ( currentResults: Collection<FindResultType> | null, rootName ) => findAndReplaceUtils.updateFindResultFromRange(\n\t\t\t\t\tmodel.createRangeIn( model.document.getRoot( rootName )! ),\n\t\t\t\t\tmodel,\n\t\t\t\t\tfindAndReplaceUtils.findByTextCallback( textToReplace, this._state ),\n\t\t\t\t\tcurrentResults\n\t\t\t\t) ), null as Collection<FindResultType> | null )!;\n\n\t\tif ( results.length ) {\n\t\t\t// Wrapped in single change will batch it into one transaction.\n\t\t\tmodel.change( () => {\n\t\t\t\t[ ...results ].forEach( searchResult => {\n\t\t\t\t\t// Just reuse logic from the replace command to replace a single match.\n\t\t\t\t\tthis._replace( newText, searchResult );\n\t\t\t\t} );\n\t\t\t} );\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 find-and-replace/findnextcommand\n*/\n\nimport { Command, type Editor } from 'ckeditor5/src/core.js';\nimport { type FindAndReplaceState } from './findandreplacestate.js';\n\n/**\n * The find next command. Moves the highlight to the next search result.\n *\n * It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */\nexport class FindNextCommand extends Command {\n\t/**\n\t * The find and replace state object used for command operations.\n\t */\n\tprotected _state: FindAndReplaceState;\n\n\t/**\n\t * Creates a new `FindNextCommand` instance.\n\t *\n\t * @param editor The editor on which this command will be used.\n\t * @param state An object to hold plugin state.\n\t */\n\tconstructor( editor: Editor, state: FindAndReplaceState ) {\n\t\tsuper( editor );\n\n\t\t// It does not affect data so should be enabled in read-only mode.\n\t\tthis.affectsData = false;\n\n\t\tthis._state = state;\n\n\t\tthis.isEnabled = false;\n\n\t\tthis.listenTo( this._state.results, 'change', () => {\n\t\t\tthis.isEnabled = this._state.results.length > 1;\n\t\t} );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override refresh(): void {\n\t\tthis.isEnabled = this._state.results.length > 1;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tconst results = this._state.results;\n\t\tconst currentIndex = results.getIndex( this._state.highlightedResult! );\n\t\tconst nextIndex = currentIndex + 1 >= results.length ?\n\t\t\t0 : currentIndex + 1;\n\n\t\tthis._state.highlightedResult = this._state.results.get( nextIndex );\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 find-and-replace/findpreviouscommand\n*/\n\nimport { FindNextCommand } from './findnextcommand.js';\n\n/**\n * The find previous command. Moves the highlight to the previous search result.\n *\n * It is used by the {@link module:find-and-replace/findandreplace~FindAndReplace find and replace feature}.\n */\nexport class FindPreviousCommand extends FindNextCommand {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic override execute(): void {\n\t\tconst results = this._state.results;\n\t\tconst currentIndex = results.getIndex( this._state.highlightedResult! );\n\t\tconst previousIndex = currentIndex - 1 < 0 ?\n\t\t\tthis._state.results.length - 1 : currentIndex - 1;\n\n\t\tthis._state.highlightedResult = this._state.results.get( previousIndex );\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 find-and-replace/findandreplaceutils\n */\n\nimport type { ModelElement, ModelItem, Marker, Model, ModelRange } from 'ckeditor5/src/engine.js';\nimport { Plugin } from 'ckeditor5/src/core.js';\nimport { Collection, uid } from 'ckeditor5/src/utils.js';\nimport { escapeRegExp } from 'es-toolkit/compat';\nimport type { FindResultType } from './findandreplace.js';\n\n/**\n * A set of helpers related to find and replace.\n */\nexport class FindAndReplaceUtils extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FindAndReplaceUtils' 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 * Executes findCallback and updates search results list.\n\t *\n\t * @param range The model range to scan for matches.\n\t * @param model The model.\n\t * @param findCallback The callback that should return `true` if provided text matches the search term.\n\t * @param startResults An optional collection of find matches that the function should\n\t * start with. This would be a collection returned by a previous `updateFindResultFromRange()` call.\n\t * @returns A collection of objects describing find match.\n\t *\n\t * An example structure:\n\t *\n\t * ```js\n\t * {\n\t *\tid: resultId,\n\t *\tlabel: foundItem.label,\n\t *\tmarker\n\t *\t}\n\t * ```\n\t */\n\tpublic updateFindResultFromRange(\n\t\trange: ModelRange,\n\t\tmodel: Model,\n\t\tfindCallback: ( { item, text }: { item: ModelItem; text: string } ) => Array<FindResultType> | { results: Array<FindResultType> },\n\t\tstartResults: Collection<FindResultType> | null\n\t): Collection<FindResultType> {\n\t\tconst results = startResults || new Collection();\n\n\t\tconst checkIfResultAlreadyOnList = ( marker: Marker ) => results.find(\n\t\t\tmarkerItem => {\n\t\t\t\tconst { marker: resultsMarker } = markerItem;\n\n\t\t\t\tconst resultRange = resultsMarker!.getRange();\n\t\t\t\tconst markerRange = marker.getRange();\n\n\t\t\t\treturn resultRange.isEqual( markerRange );\n\t\t\t}\n\t\t);\n\n\t\tmodel.change( writer => {\n\t\t\t[ ...range ].forEach( ( { type, item } ) => {\n\t\t\t\tif ( type === 'elementStart' ) {\n\t\t\t\t\tif ( model.schema.checkChild( item, '$text' ) ) {\n\t\t\t\t\t\tlet foundItems = findCallback( {\n\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\ttext: this.rangeToText( model.createRangeIn( item as ModelElement ) )\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\tif ( !foundItems ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( 'results' in foundItems ) {\n\t\t\t\t\t\t\tfoundItems = foundItems.results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfoundItems.forEach( foundItem => {\n\t\t\t\t\t\t\tconst resultId = `findResult:${ uid() }`;\n\t\t\t\t\t\t\tconst marker = writer.addMarker( resultId, {\n\t\t\t\t\t\t\t\tusingOperation: false,\n\t\t\t\t\t\t\t\taffectsData: false,\n\t\t\t\t\t\t\t\trange: writer.createRange(\n\t\t\t\t\t\t\t\t\twriter.createPositionAt( item, foundItem.start ),\n\t\t\t\t\t\t\t\t\twriter.createPositionAt( item, foundItem.end )\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\tconst index = findInsertIndex( results, marker );\n\n\t\t\t\t\t\t\tif ( !checkIfResultAlreadyOnList( marker ) ) {\n\t\t\t\t\t\t\t\tresults.add(\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: resultId,\n\t\t\t\t\t\t\t\t\t\tlabel: foundItem.label,\n\t\t\t\t\t\t\t\t\t\tmarker\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t\treturn results;\n\t}\n\n\t/**\n\t * Returns text representation of a range. The returned text length should be the same as range length.\n\t * In order to achieve this, this function will replace inline elements (text-line) as new line character (\"\\n\").\n\t *\n\t * @param range The model range.\n\t * @returns The text content of the provided range.\n\t */\n\tpublic rangeToText( range: ModelRange ): string {\n\t\treturn Array.from( range.getItems( { shallow: true } ) ).reduce( ( rangeText, node ) => {\n\t\t\t// Trim text to a last occurrence of an inline element and update range start.\n\t\t\tif ( !( node.is( '$text' ) || node.is( '$textProxy' ) ) ) {\n\t\t\t\t// Editor has only one inline element defined in schema: `<softBreak>` which is treated as new line character in blocks.\n\t\t\t\t// Special handling might be needed for other inline elements (inline widgets).\n\t\t\t\treturn `${ rangeText }\\n`;\n\t\t\t}\n\n\t\t\treturn rangeText + node.data;\n\t\t}, '' );\n\t}\n\n\t/**\n\t * Creates a text matching callback for a specified search term and matching options.\n\t *\n\t * @param searchTerm The search term.\n\t * @param options Matching options.\n\t * \t- options.matchCase=false If set to `true` letter casing will be ignored.\n\t * \t- options.wholeWords=false If set to `true` only whole words that match `callbackOrText` will be matched.\n\t */\n\tpublic findByTextCallback(\n\t\tsearchTerm: string,\n\t\toptions: { matchCase?: boolean; wholeWords?: boolean }\n\t): ( { item, text }: { item: ModelItem; text: string } ) => Array<FindResultType> {\n\t\tlet flags = 'gu';\n\n\t\tif ( !options.matchCase ) {\n\t\t\tflags += 'i';\n\t\t}\n\n\t\tlet regExpQuery = `(${ escapeRegExp( searchTerm ) })`;\n\n\t\tif ( options.wholeWords ) {\n\t\t\tconst nonLetterGroup = '[^a-zA-Z\\u00C0-\\u024F\\u1E00-\\u1EFF]';\n\n\t\t\tif ( !new RegExp( '^' + nonLetterGroup ).test( searchTerm ) ) {\n\t\t\t\tregExpQuery = `(^|${ nonLetterGroup }|_)${ regExpQuery }`;\n\t\t\t}\n\n\t\t\tif ( !new RegExp( nonLetterGroup + '$' ).test( searchTerm ) ) {\n\t\t\t\tregExpQuery = `${ regExpQuery }(?=_|${ nonLetterGroup }|$)`;\n\t\t\t}\n\t\t}\n\n\t\tconst regExp = new RegExp( regExpQuery, flags );\n\n\t\tfunction findCallback( { text }: { text: string } ) {\n\t\t\tconst matches = [ ...text.matchAll( regExp ) ];\n\n\t\t\treturn matches.map( regexpMatchToFindResult );\n\t\t}\n\n\t\treturn findCallback;\n\t}\n}\n\n// Finds the appropriate index in the resultsList Collection.\nfunction findInsertIndex( resultsList: Collection<any>, markerToInsert: Marker ) {\n\tconst result = resultsList.find( ( { marker } ) => {\n\t\treturn markerToInsert.getStart().isBefore( marker.getStart() );\n\t} );\n\n\treturn result ? resultsList.getIndex( result ) : resultsList.length;\n}\n\n/**\n * Maps RegExp match result to find result.\n */\nfunction regexpMatchToFindResult( matchResult: RegExpMatchArray ): FindResultType {\n\tconst lastGroupIndex = matchResult.length - 1;\n\n\tlet startOffset = matchResult.index!;\n\n\t// Searches with match all flag have an extra matching group with empty string or white space matched before the word.\n\t// If the search term starts with the space already, there is no extra group even with match all flag on.\n\tif ( matchResult.length === 3 ) {\n\t\tstartOffset += matchResult[ 1 ].length;\n\t}\n\n\treturn {\n\t\tlabel: matchResult[ lastGroupIndex ],\n\t\tstart: startOffset,\n\t\tend: startOffset + matchResult[ lastGroupIndex ].length\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 find-and-replace/findandreplaceediting\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\nimport type { DifferItem, DifferItemAttribute, ModelElement, ModelNode } from 'ckeditor5/src/engine.js';\nimport {\n\tscrollViewportToShowTarget,\n\ttype Collection,\n\ttype GetCallback,\n\ttype ObservableChangeEvent\n} from 'ckeditor5/src/utils.js';\n\nimport { FindCommand, type FindAttributes } from './findcommand.js';\nimport { ReplaceCommand } from './replacecommand.js';\nimport { ReplaceAllCommand } from './replaceallcommand.js';\nimport { FindNextCommand } from './findnextcommand.js';\nimport { FindPreviousCommand } from './findpreviouscommand.js';\nimport { FindAndReplaceState, type FindCallback } from './findandreplacestate.js';\nimport { FindAndReplaceUtils } from './findandreplaceutils.js';\nimport type { FindResultType } from './findandreplace.js';\n\nimport { debounce } from 'es-toolkit/compat';\n\nimport '../theme/findandreplace.css';\n\nconst HIGHLIGHT_CLASS = 'ck-find-result_selected';\n\n/**\n * Implements the editing part for find and replace plugin. For example conversion, commands etc.\n */\nexport class FindAndReplaceEditing extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ FindAndReplaceUtils ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FindAndReplaceEditing' 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 * An object storing the find and replace state within a given editor instance.\n\t */\n\tpublic state?: FindAndReplaceState;\n\n\t/**\n\t * A flag that indicates that the user has started a search and the editor is listening for changes\n\t * to the text on which it will perform an automatic search. Among other things, the mode is activated\n\t * when the user first clicks 'Find' button and then later deactivated when the modal or search dropdown is closed.\n\t *\n\t * @internal\n\t */\n\tpublic declare _isSearchActive: boolean;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tthis.state = new FindAndReplaceState( this.editor.model );\n\t\tthis.set( '_isSearchActive', false );\n\n\t\tthis._defineConverters();\n\t\tthis._defineCommands();\n\n\t\tthis.listenTo( this.state, 'change:highlightedResult', ( eventInfo, name, newValue, oldValue ) => {\n\t\t\tconst { model } = this.editor;\n\n\t\t\tmodel.change( writer => {\n\t\t\t\tif ( oldValue ) {\n\t\t\t\t\tconst oldMatchId = oldValue.marker.name.split( ':' )[ 1 ];\n\t\t\t\t\tconst oldMarker = model.markers.get( `findResultHighlighted:${ oldMatchId }` );\n\n\t\t\t\t\tif ( oldMarker ) {\n\t\t\t\t\t\twriter.removeMarker( oldMarker );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( newValue ) {\n\t\t\t\t\tconst newMatchId = newValue.marker.name.split( ':' )[ 1 ];\n\t\t\t\t\twriter.addMarker( `findResultHighlighted:${ newMatchId }`, {\n\t\t\t\t\t\tusingOperation: false,\n\t\t\t\t\t\taffectsData: false,\n\t\t\t\t\t\trange: newValue.marker.getRange()\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\n\t\t/* istanbul ignore next -- @preserve */\n\t\tconst scrollToHighlightedResult: GetCallback<ObservableChangeEvent> = ( eventInfo, name, newValue ) => {\n\t\t\tif ( newValue ) {\n\t\t\t\tconst domConverter = this.editor.editing.view.domConverter;\n\t\t\t\tconst viewRange = this.editor.editing.mapper.toViewRange( newValue.marker.getRange() );\n\n\t\t\t\tscrollViewportToShowTarget( {\n\t\t\t\t\ttarget: domConverter.viewRangeToDom( viewRange ),\n\t\t\t\t\tviewportOffset: 40\n\t\t\t\t} );\n\t\t\t}\n\t\t};\n\n\t\tconst debouncedScrollListener = debounce( scrollToHighlightedResult.bind( this ), 32 );\n\t\t// Debounce scroll as highlight might be changed very frequently, e.g. when there's a replace all command.\n\t\tthis.listenTo<ObservableChangeEvent>( this.state, 'change:highlightedResult', debouncedScrollListener, { priority: 'low' } );\n\n\t\t// It's possible that the editor will get destroyed before debounced call kicks in.\n\t\t// This would result with accessing a view three that is no longer in DOM.\n\t\tthis.listenTo( this.editor, 'destroy', debouncedScrollListener.cancel );\n\n\t\tthis.on<ObservableChangeEvent<boolean>>( 'change:_isSearchActive', ( evt, name, isSearchActive ) => {\n\t\t\tif ( isSearchActive ) {\n\t\t\t\tthis.listenTo( this.editor.model.document, 'change:data', this._onDocumentChange );\n\t\t\t} else {\n\t\t\t\tthis.stopListening( this.editor.model.document, 'change:data', this._onDocumentChange );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Initiate a search.\n\t */\n\tpublic find( callbackOrText: string | FindCallback, findAttributes?: FindAttributes ): Collection<FindResultType> {\n\t\tthis._isSearchActive = true;\n\t\tthis.editor.execute( 'find', callbackOrText, findAttributes );\n\n\t\treturn this.state!.results;\n\t}\n\n\t/**\n\t * Stops active results from updating, and clears out the results.\n\t */\n\tpublic stop(): void {\n\t\tthis.state!.clear( this.editor.model );\n\t\tthis._isSearchActive = false;\n\t}\n\n\t/**\n\t * Sets up the commands.\n\t */\n\tprivate _defineCommands(): void {\n\t\tthis.editor.commands.add( 'find', new FindCommand( this.editor, this.state! ) );\n\t\tthis.editor.commands.add( 'findNext', new FindNextCommand( this.editor, this.state! ) );\n\t\tthis.editor.commands.add( 'findPrevious', new FindPreviousCommand( this.editor, this.state! ) );\n\t\tthis.editor.commands.add( 'replace', new ReplaceCommand( this.editor, this.state! ) );\n\t\tthis.editor.commands.add( 'replaceAll', new ReplaceAllCommand( this.editor, this.state! ) );\n\t}\n\n\t/**\n\t * Sets up the marker downcast converters for search results highlighting.\n\t */\n\tprivate _defineConverters(): void {\n\t\tconst { editor } = this;\n\n\t\t// Setup the marker highlighting conversion.\n\t\teditor.conversion.for( 'editingDowncast' ).markerToHighlight( {\n\t\t\tmodel: 'findResult',\n\t\t\tview: ( { markerName } ) => {\n\t\t\t\tconst [ , id ] = markerName.split( ':' );\n\n\t\t\t\t// Marker removal from the view has a bug: https://github.com/ckeditor/ckeditor5/issues/7499\n\t\t\t\t// A minimal option is to return a new object for each converted marker...\n\t\t\t\treturn {\n\t\t\t\t\tname: 'span',\n\t\t\t\t\tclasses: [ 'ck-find-result' ],\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\t// ...however, adding a unique attribute should be future-proof..\n\t\t\t\t\t\t'data-find-result': id\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\n\t\teditor.conversion.for( 'editingDowncast' ).markerToHighlight( {\n\t\t\tmodel: 'findResultHighlighted',\n\t\t\tview: ( { markerName } ) => {\n\t\t\t\tconst [ , id ] = markerName.split( ':' );\n\n\t\t\t\t// Marker removal from the view has a bug: https://github.com/ckeditor/ckeditor5/issues/7499\n\t\t\t\t// A minimal option is to return a new object for each converted marker...\n\t\t\t\treturn {\n\t\t\t\t\tname: 'span',\n\t\t\t\t\tclasses: [ HIGHLIGHT_CLASS ],\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\t// ...however, adding a unique attribute should be future-proof..\n\t\t\t\t\t\t'data-find-result': id\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Reacts to document changes in order to update search list.\n\t */\n\tprivate _onDocumentChange = () => {\n\t\tconst changedNodes = new Set<ModelNode>();\n\t\tconst removedMarkers = new Set<string>();\n\t\tconst model = this.editor.model;\n\t\tconst { results } = this.state!;\n\n\t\tconst changes = model.document.differ.getChanges() as Array<Exclude<DifferItem, DifferItemAttribute>>;\n\t\tconst changedMarkers = model.document.differ.getChangedMarkers();\n\n\t\t// Get nodes in which changes happened to re-run a search callback on them.\n\t\tchanges.forEach( change => {\n\t\t\tif ( !change.position ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( change.name === '$text' || ( change.position.nodeAfter && model.schema.isInline( change.position.nodeAfter ) ) ) {\n\t\t\t\tchangedNodes.add( change.position.parent as ModelElement );\n\n\t\t\t\t[ ...model.markers.getMarkersAtPosition( change.position ) ].forEach( markerAtChange => {\n\t\t\t\t\tremovedMarkers.add( markerAtChange.name );\n\t\t\t\t} );\n\t\t\t} else if ( change.type === 'insert' && change.position.nodeAfter ) {\n\t\t\t\tchangedNodes.add( change.position.nodeAfter );\n\t\t\t}\n\t\t} );\n\n\t\t// Get markers from removed nodes also.\n\t\tchangedMarkers.forEach( ( { name, data: { newRange } } ) => {\n\t\t\tif ( newRange && newRange.start.root.rootName === '$graveyard' ) {\n\t\t\t\tremovedMarkers.add( name );\n\t\t\t}\n\t\t} );\n\n\t\t// Get markers from the updated nodes and remove all (search will be re-run on these nodes).\n\t\tchangedNodes.forEach( node => {\n\t\t\tconst markersInNode = [ ...model.markers.getMarkersIntersectingRange( model.createRangeIn( node as ModelElement ) ) ];\n\n\t\t\tmarkersInNode.forEach( marker => removedMarkers.add( marker.name ) );\n\t\t} );\n\n\t\t// Remove results from the changed part of content.\n\t\tremovedMarkers.forEach( markerName => {\n\t\t\tif ( !results.has( markerName ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( results.get( markerName ) === this.state!.highlightedResult ) {\n\t\t\t\tthis.state!.highlightedResult = null;\n\t\t\t}\n\n\t\t\tresults.remove( markerName );\n\t\t} );\n\n\t\t// Run search callback again on updated nodes.\n\t\tconst changedSearchResults: Array<FindResultType> = [];\n\t\tconst findAndReplaceUtils: FindAndReplaceUtils = this.editor.plugins.get( 'FindAndReplaceUtils' );\n\n\t\tchangedNodes.forEach( nodeToCheck => {\n\t\t\tconst changedNodeSearchResults = findAndReplaceUtils.updateFindResultFromRange(\n\t\t\t\tmodel.createRangeOn( nodeToCheck ), model, this.state!.lastSearchCallback!, results\n\t\t\t);\n\n\t\t\tchangedSearchResults.push( ...changedNodeSearchResults );\n\t\t} );\n\n\t\tchangedMarkers.forEach( markerToCheck => {\n\t\t\t// Handle search result highlight update when T&C plugin is active.\n\t\t\t// Lookup is performed only on newly inserted markers.\n\t\t\tif ( markerToCheck.data.newRange ) {\n\t\t\t\tconst changedNodeSearchResults = findAndReplaceUtils.updateFindResultFromRange(\n\t\t\t\t\tmarkerToCheck.data.newRange, model, this.state!.lastSearchCallback!, results\n\t\t\t\t);\n\n\t\t\t\tchangedSearchResults.push( ...changedNodeSearchResults );\n\t\t\t}\n\t\t} );\n\n\t\tif ( !this.state!.highlightedResult && changedSearchResults.length ) {\n\t\t\t// If there are found phrases but none is selected, select the first one.\n\t\t\tthis.state!.highlightedResult = changedSearchResults[ 0 ];\n\t\t} else {\n\t\t\t// If there is already highlight item then refresh highlight offset after appending new items.\n\t\t\tthis.state!.refreshHighlightOffset( model );\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 find-and-replace/findandreplace\n */\n\nimport { Plugin } from 'ckeditor5/src/core.js';\nimport { FindAndReplaceUI, type FindResetedEvent } from './findandreplaceui.js';\nimport { FindAndReplaceEditing } from './findandreplaceediting.js';\nimport type { Marker } from 'ckeditor5/src/engine.js';\nimport type { FindNextEvent, FindPreviousEvent, ReplaceAllEvent, ReplaceEvent } from './ui/findandreplaceformview.js';\n\nexport type FindResultType = {\n\tid?: string;\n\tlabel?: string;\n\tstart?: number;\n\tend?: number;\n\tmarker?: Marker;\n};\n\n/**\n * The find and replace plugin.\n *\n * For a detailed overview, check the {@glink features/find-and-replace Find and replace feature documentation}.\n *\n * This is a \"glue\" plugin which loads the following plugins:\n *\n * * The {@link module:find-and-replace/findandreplaceediting~FindAndReplaceEditing find and replace editing feature},\n * * The {@link module:find-and-replace/findandreplaceui~FindAndReplaceUI find and replace UI feature}\n */\nexport class FindAndReplace extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ FindAndReplaceEditing, FindAndReplaceUI ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'FindAndReplace' 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 ui = this.editor.plugins.get( 'FindAndReplaceUI' );\n\t\tconst findAndReplaceEditing = this.editor.plugins.get( 'FindAndReplaceEditing' );\n\t\tconst state = findAndReplaceEditing.state!;\n\n\t\tui.on<FindNextEvent>( 'findNext', ( event, data ) => {\n\t\t\t// Data is contained only for the \"find\" button.\n\t\t\tif ( data ) {\n\t\t\t\tstate.searchText = data.searchText;\n\t\t\t\tfindAndReplaceEditing.find( data.searchText, data );\n\t\t\t} else {\n\t\t\t\t// Find next arrow button press.\n\t\t\t\tthis.editor.execute( 'findNext' );\n\t\t\t}\n\t\t} );\n\n\t\tui.on<FindPreviousEvent>( 'findPrevious', ( event, data ) => {\n\t\t\tif ( data && state.searchText !== data.searchText ) {\n\t\t\t\tfindAndReplaceEditing.find( data.searchText );\n\t\t\t} else {\n\t\t\t\t// Subsequent calls.\n\t\t\t\tthis.editor.execute( 'findPrevious' );\n\t\t\t}\n\t\t} );\n\n\t\tui.on<ReplaceEvent>( 'replace', ( event, data ) => {\n\t\t\tif ( state.searchText !== data.searchText ) {\n\t\t\t\tfindAndReplaceEditing.find( data.searchText );\n\t\t\t}\n\n\t\t\tconst highlightedResult = state.highlightedResult;\n\n\t\t\tif ( highlightedResult ) {\n\t\t\t\tthis.editor.execute( 'replace', data.replaceText, highlightedResult );\n\t\t\t}\n\t\t} );\n\n\t\tui.on<ReplaceAllEvent>( 'replaceAll', ( event, data ) => {\n\t\t\t// The state hadn't been yet built for this search text.\n\t\t\tif ( state.searchText !== data.searchText ) {\n\t\t\t\tfindAndReplaceEditing.find( data.searchText );\n\t\t\t}\n\n\t\t\tthis.editor.execute( 'replaceAll', data.replaceText, state.results );\n\t\t} );\n\n\t\t// Reset the state when the user invalidated last search results, for instance,\n\t\t// by starting typing another search query or changing options.\n\t\tui.on<FindResetedEvent>( 'searchReseted', () => {\n\t\t\tstate.clear( this.editor.model );\n\t\t\tfindAndReplaceEditing.stop();\n\t\t} );\n\t}\n}\n"]}
|