@ckeditor/ckeditor5-find-and-replace 30.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/LICENSE.md +17 -0
  2. package/README.md +20 -0
  3. package/build/find-and-replace.js +5 -0
  4. package/build/translations/de.js +1 -0
  5. package/build/translations/gl.js +1 -0
  6. package/build/translations/hu.js +1 -0
  7. package/build/translations/it.js +1 -0
  8. package/build/translations/nl.js +1 -0
  9. package/build/translations/no.js +1 -0
  10. package/build/translations/ru.js +1 -0
  11. package/build/translations/sr-latn.js +1 -0
  12. package/build/translations/sr.js +1 -0
  13. package/build/translations/zh-cn.js +1 -0
  14. package/ckeditor5-metadata.json +18 -0
  15. package/lang/contexts.json +15 -0
  16. package/lang/translations/de.po +69 -0
  17. package/lang/translations/en.po +69 -0
  18. package/lang/translations/gl.po +69 -0
  19. package/lang/translations/hu.po +69 -0
  20. package/lang/translations/it.po +69 -0
  21. package/lang/translations/nl.po +69 -0
  22. package/lang/translations/no.po +69 -0
  23. package/lang/translations/ru.po +69 -0
  24. package/lang/translations/sr-latn.po +69 -0
  25. package/lang/translations/sr.po +69 -0
  26. package/lang/translations/zh-cn.po +69 -0
  27. package/package.json +62 -0
  28. package/src/findandreplace.js +97 -0
  29. package/src/findandreplaceediting.js +254 -0
  30. package/src/findandreplacestate.js +131 -0
  31. package/src/findandreplaceui.js +202 -0
  32. package/src/findcommand.js +95 -0
  33. package/src/findnextcommand.js +67 -0
  34. package/src/findpreviouscommand.js +31 -0
  35. package/src/index.js +10 -0
  36. package/src/replaceallcommand.js +61 -0
  37. package/src/replacecommand.js +69 -0
  38. package/src/ui/findandreplaceformview.js +827 -0
  39. package/src/utils.js +166 -0
  40. package/theme/findandreplace.css +13 -0
  41. package/theme/findandreplaceform.css +17 -0
  42. package/theme/icons/find-replace.svg +1 -0
package/LICENSE.md ADDED
@@ -0,0 +1,17 @@
1
+ Software License Agreement
2
+ ==========================
3
+
4
+ **CKEditor 5 Find and Replace Feature** – https://github.com/ckeditor/ckeditor5-find-and-replace <br>
5
+ Copyright (c) 2003-2021, [CKSource](http://cksource.com) Frederico Knabben. All rights reserved.
6
+
7
+ Licensed under the terms of [GNU General Public License Version 2 or later](http://www.gnu.org/licenses/gpl.html).
8
+
9
+ Sources of Intellectual Property Included in CKEditor
10
+ -----------------------------------------------------
11
+
12
+ Where not otherwise indicated, all CKEditor content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, CKEditor will incorporate work done by developers outside of CKSource with their express permission.
13
+
14
+ Trademarks
15
+ ----------
16
+
17
+ **CKEditor** is a trademark of [CKSource](http://cksource.com) Frederico Knabben. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders.
package/README.md ADDED
@@ -0,0 +1,20 @@
1
+ CKEditor 5 find and replace feature
2
+ ===========================
3
+
4
+ [![npm version](https://badge.fury.io/js/%40ckeditor%2Fckeditor5-find-and-replace.svg)](https://www.npmjs.com/package/@ckeditor/ckeditor5-find-and-replace)
5
+ [![Coverage Status](https://coveralls.io/repos/github/ckeditor/ckeditor5/badge.svg?branch=master)](https://coveralls.io/github/ckeditor/ckeditor5?branch=master)
6
+ [![Build Status](https://travis-ci.com/ckeditor/ckeditor5.svg?branch=master)](https://travis-ci.com/ckeditor/ckeditor5)
7
+
8
+ This package implements the find and replace feature for CKEditor 5.
9
+
10
+ ## Demo
11
+
12
+ Check out the demo in the [find and replace feature guide](https://ckeditor.com/docs/ckeditor5/latest/features/find-and-replace.html#demo).
13
+
14
+ ## Documentation
15
+
16
+ See the [`@ckeditor/ckeditor5-find-and-replace` package](https://ckeditor.com/docs/ckeditor5/latest/api/find-and-replace.html) page in [CKEditor 5 documentation](https://ckeditor.com/docs/ckeditor5/latest/).
17
+
18
+ ## License
19
+
20
+ Licensed under the terms of [GNU General Public License Version 2 or later](http://www.gnu.org/licenses/gpl.html). For full details about the license, please check the `LICENSE.md` file or [https://ckeditor.com/legal/ckeditor-oss-license](https://ckeditor.com/legal/ckeditor-oss-license).
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
3
+ * For licensing, see LICENSE.md.
4
+ */
5
+ !function(e){const t=e.en=e.en||{};t.dictionary=Object.assign(t.dictionary||{},{Find:"Find","Find and replace":"Find and replace","Find in text…":"Find in text…","Match case":"Match case","Next result":"Next result","Previous result":"Previous result",Replace:"Replace","Replace all":"Replace all","Replace with…":"Replace with…","Show options":"Show options","Text to find must not be empty.":"Text to find must not be empty.","Tip: Find some text first in order to replace it.":"Tip: Find some text first in order to replace it.","Whole words only":"Whole words only"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),window.CKEditor5=window.CKEditor5||{},window.CKEditor5.findAndReplace=function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=14)}([function(e,t,i){e.exports=i(3)("./src/ui.js")},function(e,t,i){e.exports=i(3)("./src/core.js")},function(e,t,i){e.exports=i(3)("./src/utils.js")},function(e,t){e.exports=CKEditor5.dll},function(e,t,i){"use strict";var n,r=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},s=function(){var e={};return function(t){if(void 0===e[t]){var i=document.querySelector(t);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}e[t]=i}return e[t]}}(),o=[];function a(e){for(var t=-1,i=0;i<o.length;i++)if(o[i].identifier===e){t=i;break}return t}function c(e,t){for(var i={},n=[],r=0;r<e.length;r++){var s=e[r],c=t.base?s[0]+t.base:s[0],l=i[c]||0,d="".concat(c," ").concat(l);i[c]=l+1;var f=a(d),h={css:s[1],media:s[2],sourceMap:s[3]};-1!==f?(o[f].references++,o[f].updater(h)):o.push({identifier:d,updater:g(h,t),references:1}),n.push(d)}return n}function l(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var r=i.nc;r&&(n.nonce=r)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var o=s(e.insert||"head");if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(t)}return t}var d,f=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function h(e,t,i,n){var r=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=f(t,r);else{var s=document.createTextNode(r),o=e.childNodes;o[t]&&e.removeChild(o[t]),o.length?e.insertBefore(s,o[t]):e.appendChild(s)}}function u(e,t,i){var n=i.css,r=i.media,s=i.sourceMap;if(r?e.setAttribute("media",r):e.removeAttribute("media"),s&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(s))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var p=null,m=0;function g(e,t){var i,n,r;if(t.singleton){var s=m++;i=p||(p=l(t)),n=h.bind(null,i,s,!1),r=h.bind(null,i,s,!0)}else i=l(t),n=u.bind(null,i,t),r=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(i)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else r()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=r());var i=c(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<i.length;n++){var r=a(i[n]);o[r].references--}for(var s=c(e,t),l=0;l<i.length;l++){var d=a(i[l]);0===o[d].references&&(o[d].updater(),o.splice(d,1))}i=s}}}},,function(e,t,i){"use strict";(function(e){var i="object"==typeof e&&e&&e.Object===Object&&e;t.a=i}).call(this,i(11))},function(e,t,i){var n=i(4),r=i(8);"string"==typeof(r=r.__esModule?r.default:r)&&(r=[[e.i,r,""]]);var s={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(r,s);e.exports=r.locals||{}},function(e,t){e.exports='.ck-vertical-form .ck-button:after{content:"";width:0;position:absolute;right:-1px;top:var(--ck-spacing-small);bottom:var(--ck-spacing-small);z-index:1}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{content:"";width:0;position:absolute;right:-1px;top:var(--ck-spacing-small);bottom:var(--ck-spacing-small);z-index:1}}.ck-vertical-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form{padding:var(--ck-spacing-large)}.ck.ck-responsive-form:focus{outline:none}[dir=ltr] .ck.ck-responsive-form>:not(:first-child),[dir=rtl] .ck.ck-responsive-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-responsive-form{padding:0;width:calc(var(--ck-input-text-width)*0.8)}.ck.ck-responsive-form .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) 0}.ck.ck-responsive-form .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-responsive-form .ck-labeled-field-view .ck-labeled-field-view__error{white-space:normal}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){padding:var(--ck-spacing-standard);margin-top:var(--ck-spacing-large);border-radius:0;border:0;border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-responsive-form>.ck-button:last-child,[dir=ltr] .ck.ck-responsive-form>.ck-button:nth-last-child(2),[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2){margin-left:0}.ck.ck-responsive-form>.ck-button:nth-last-child(2):after,[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child:last-of-type,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2):last-of-type{border-right:1px solid var(--ck-color-base-border)}}'},function(e,t,i){var n=i(4),r=i(10);"string"==typeof(r=r.__esModule?r.default:r)&&(r=[[e.i,r,""]]);var s={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(r,s);e.exports=r.locals||{}},function(e,t){e.exports=".ck.ck-find-and-replace-form{max-width:100%}.ck.ck-find-and-replace-form fieldset{display:flex}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find .ck-results-counter{position:absolute}.ck.ck-find-and-replace-form{width:400px}.ck.ck-find-and-replace-form:focus{outline:none}.ck.ck-find-and-replace-form fieldset{flex-direction:row;flex-wrap:nowrap;align-items:center;align-content:stretch;padding:var(--ck-spacing-large);border:0;margin:0}.ck.ck-find-and-replace-form fieldset>.ck-button{flex:0 0 auto}[dir=ltr] .ck.ck-find-and-replace-form fieldset>*+*{margin-left:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-find-and-replace-form fieldset>*+*{margin-right:var(--ck-spacing-standard)}.ck.ck-find-and-replace-form fieldset .ck-labeled-field-view{flex:1 1 auto}.ck.ck-find-and-replace-form fieldset .ck-labeled-field-view .ck-input{width:100%;min-width:50px}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find{align-items:flex-start}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find>.ck-button-find{font-weight:700}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find>.ck-button-find .ck-button__label{padding-left:var(--ck-spacing-large);padding-right:var(--ck-spacing-large)}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find>.ck-button-prev>.ck-icon{transform:rotate(90deg)}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find>.ck-button-next>.ck-icon{transform:rotate(-90deg)}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find .ck-results-counter{top:50%;transform:translateY(-50%)}[dir=ltr] .ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find .ck-results-counter{right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find .ck-results-counter{left:var(--ck-spacing-standard)}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find .ck-results-counter{color:var(--ck-color-base-border)}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__replace{flex-wrap:wrap;justify-content:flex-end;margin-top:calc(var(--ck-spacing-large)*-1)}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__replace>.ck-labeled-field-view{margin-bottom:var(--ck-spacing-large)}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__replace>.ck-options-dropdown{margin-right:auto;margin-left:0}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__replace>.ck-labeled-field-view,.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__replace>.ck-labeled-field-view .ck-input{width:100%}@media screen and (max-width:600px){.ck.ck-find-and-replace-form{width:300px}.ck.ck-find-and-replace-form fieldset{flex-wrap:wrap}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find .ck-labeled-field-view{flex:1 0 auto;width:100%;margin-bottom:var(--ck-spacing-standard)}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find>.ck-button{text-align:center}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find>.ck-button:first-of-type{flex:1 1 auto}[dir=ltr] .ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find>.ck-button:first-of-type{margin-left:0}[dir=rtl] .ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find>.ck-button:first-of-type{margin-right:0}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__find>.ck-button:first-of-type .ck-button__label{width:100%;text-align:center}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__replace>:not(.ck-labeled-field-view){flex:1 1 auto}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__replace>:not(.ck-labeled-field-view).ck-dropdown{flex-grow:0}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__replace>:not(.ck-labeled-field-view).ck-button>.ck-button__label{width:100%;text-align:center}}"},function(e,t){var i;i=function(){return this}();try{i=i||new Function("return this")()}catch(e){"object"==typeof window&&(i=window)}e.exports=i},function(e,t,i){var n=i(4),r=i(13);"string"==typeof(r=r.__esModule?r.default:r)&&(r=[[e.i,r,""]]);var s={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n(r,s);e.exports=r.locals||{}},function(e,t){e.exports=".ck-find-result{background:#ff0;color:var(--ck-color-text)}.ck-find-result_selected{background:#ff9633}"},function(e,t,i){"use strict";i.r(t),i.d(t,"FindAndReplace",(function(){return Ee}));var n=i(1),r=i(0),s=i(2),o=(i(7),i(9),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M11.463 5.187a.888.888 0 1 1 1.254 1.255L9.16 10l3.557 3.557a.888.888 0 1 1-1.254 1.255L7.26 10.61a.888.888 0 0 1 .16-1.382l4.043-4.042z"/></svg>');class a extends r.View{constructor(e){super(e);const t=e.t;this.set("matchCount",0),this.set("highlightOffset",0),this.set("isDirty",!1),this.set("_areCommandsEnabled",{}),this.set("_resultsCounterText",""),this.set("_matchCase",!1),this.set("_wholeWordsOnly",!1),this.bind("_searchResultsFound").to(this,"matchCount",this,"isDirty",(e,t)=>e>0&&!t),this._findInputView=this._createInputField(t("Find in text…")),this._replaceInputView=this._createInputField(t("Replace with…")),this._findButtonView=this._createButton({label:t("Find"),class:"ck-button-find ck-button-action",withText:!0}),this._findPrevButtonView=this._createButton({label:t("Previous result"),class:"ck-button-prev",icon:o,keystroke:"Shift+F3",tooltip:!0}),this._findNextButtonView=this._createButton({label:t("Next result"),class:"ck-button-next",icon:o,keystroke:"F3",tooltip:!0}),this._optionsDropdown=this._createOptionsDropdown(),this._replaceButtonView=this._createButton({label:t("Replace"),class:"ck-button-replace",withText:!0}),this._replaceAllButtonView=this._createButton({label:t("Replace all"),class:"ck-button-replaceall",withText:!0}),this._findFieldsetView=this._createFindFieldset(),this._replaceFieldsetView=this._createReplaceFieldset(),this._focusTracker=new s.FocusTracker,this._keystrokes=new s.KeystrokeHandler,this._focusables=new r.ViewCollection,this._focusCycler=new r.FocusCycler({focusables:this._focusables,focusTracker:this._focusTracker,keystrokeHandler:this._keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-find-and-replace-form"],tabindex:"-1"},children:[new r.FormHeaderView(e,{label:t("Find and replace")}),this._findFieldsetView,this._replaceFieldsetView]}),Object(r.injectCssTransitionDisabler)(this)}render(){super.render(),Object(r.submitHandler)({view:this}),this._initFocusCycling(),this._initKeystrokeHandling()}focus(){this._focusCycler.focusFirst()}reset(){this._findInputView.errorText=null,this.isDirty=!0}get _textToFind(){return this._findInputView.fieldView.element.value}get _textToReplace(){return this._replaceInputView.fieldView.element.value}_createFindFieldset(){const e=this.locale,t=new r.View(e);return this._findInputView.fieldView.on("input",()=>{this.isDirty=!0}),this._findButtonView.on("execute",this._onFindButtonExecute.bind(this)),this._findPrevButtonView.delegate("execute").to(this,"findPrevious"),this._findNextButtonView.delegate("execute").to(this,"findNext"),this._findPrevButtonView.bind("isEnabled").to(this,"_areCommandsEnabled",({findPrevious:e})=>e),this._findNextButtonView.bind("isEnabled").to(this,"_areCommandsEnabled",({findNext:e})=>e),this._injectFindResultsCounter(),t.setTemplate({tag:"fieldset",attributes:{class:["ck","ck-find-and-replace-form__find"]},children:[this._findInputView,this._findButtonView,this._findPrevButtonView,this._findNextButtonView]}),t}_onFindButtonExecute(){if(this._textToFind)this.isDirty=!1,this.fire("findNext",{searchText:this._textToFind,matchCase:this._matchCase,wholeWords:this._wholeWordsOnly});else{const e=this.t;this._findInputView.errorText=e("Text to find must not be empty.")}}_injectFindResultsCounter(){const e=this.locale,t=e.t,i=this.bindTemplate,n=new r.View(e);this.bind("_resultsCounterText").to(this,"highlightOffset",this,"matchCount",(e,i)=>t("%0 of %1",[e,i])),n.setTemplate({tag:"span",attributes:{class:["ck","ck-results-counter",i.if("isDirty","ck-hidden")]},children:[{text:i.to("_resultsCounterText")}]});const o=()=>{const t=this._findInputView.fieldView.element;if(!t||!t.offsetParent)return;const i=new s.Rect(n.element).width,r="ltr"===e.uiLanguageDirection?"paddingRight":"paddingLeft";t.style[r]=i?`calc( 2 * var(--ck-spacing-standard) + ${i}px )`:null};this.on("change:_resultsCounterText",o,{priority:"low"}),this.on("change:isDirty",o,{priority:"low"}),this._findInputView.template.children[0].children.push(n)}_createReplaceFieldset(){const e=this.locale,t=e.t,i=new r.View(e);return this._replaceButtonView.bind("isEnabled").to(this,"_areCommandsEnabled",this,"_searchResultsFound",({replace:e},t)=>e&&t),this._replaceAllButtonView.bind("isEnabled").to(this,"_areCommandsEnabled",this,"_searchResultsFound",({replaceAll:e},t)=>e&&t),this._replaceInputView.bind("isEnabled").to(this,"_areCommandsEnabled",this,"_searchResultsFound",({replace:e},t)=>e&&t),this._replaceInputView.bind("infoText").to(this._replaceInputView,"isEnabled",this._replaceInputView,"isFocused",(e,i)=>e||!i?"":t("Tip: Find some text first in order to replace it.")),this._replaceButtonView.on("execute",()=>{this.fire("replace",{searchText:this._textToFind,replaceText:this._textToReplace})}),this._replaceAllButtonView.on("execute",()=>{this.fire("replaceAll",{searchText:this._textToFind,replaceText:this._textToReplace}),this.focus()}),i.setTemplate({tag:"fieldset",attributes:{class:["ck","ck-find-and-replace-form__replace"]},children:[this._replaceInputView,this._optionsDropdown,this._replaceButtonView,this._replaceAllButtonView]}),i}_createOptionsDropdown(){const e=this.locale,t=e.t,i=Object(r.createDropdown)(e);i.class="ck-options-dropdown",i.buttonView.set({withText:!1,label:t("Show options"),icon:n.icons.cog,tooltip:!0});const o=new r.Model({withText:!0,label:t("Match case"),_isMatchCaseSwitch:!0}),a=new r.Model({withText:!0,label:t("Whole words only")});return o.bind("isOn").to(this,"_matchCase"),a.bind("isOn").to(this,"_wholeWordsOnly"),i.on("execute",e=>{e.source._isMatchCaseSwitch?this._matchCase=!this._matchCase:this._wholeWordsOnly=!this._wholeWordsOnly,this.isDirty=!0}),Object(r.addListToDropdown)(i,new s.Collection([{type:"switchbutton",model:o},{type:"switchbutton",model:a}])),i}_initFocusCycling(){[this._findInputView,this._findButtonView,this._findPrevButtonView,this._findNextButtonView,this._replaceInputView,this._optionsDropdown,this._replaceButtonView,this._replaceAllButtonView].forEach(e=>{this._focusables.add(e),this._focusTracker.add(e.element)})}_initKeystrokeHandling(){const e=e=>e.stopPropagation(),t=e=>{e.stopPropagation(),e.preventDefault()};this._keystrokes.listenTo(this.element),this._keystrokes.set("f3",e=>{t(e),this._findNextButtonView.fire("execute")}),this._keystrokes.set("shift+f3",e=>{t(e),this._findPrevButtonView.fire("execute")}),this._keystrokes.set("enter",e=>{const i=e.target;i===this._findInputView.fieldView.element?(this._areCommandsEnabled.findNext?this._findNextButtonView.fire("execute"):this._findButtonView.fire("execute"),t(e)):i===this._replaceInputView.fieldView.element&&(this._replaceButtonView.fire("execute"),t(e))}),this._keystrokes.set("shift+enter",e=>{e.target===this._findInputView.fieldView.element&&(this._areCommandsEnabled.findPrevious?this._findPrevButtonView.fire("execute"):this._findButtonView.fire("execute"),t(e))}),this._keystrokes.set("arrowright",e),this._keystrokes.set("arrowleft",e),this._keystrokes.set("arrowup",e),this._keystrokes.set("arrowdown",e),this.listenTo(this._findInputView.element,"selectstart",(e,t)=>{t.stopPropagation()},{priority:"high"}),this.listenTo(this._replaceInputView.element,"selectstart",(e,t)=>{t.stopPropagation()},{priority:"high"})}_createButton(e){const t=new r.ButtonView(this.locale);return t.set(e),t}_createInputField(e){const t=new r.LabeledFieldView(this.locale,r.createLabeledInputText);return t.label=e,t}}class c extends n.Plugin{static get pluginName(){return"FindAndReplaceUI"}constructor(e){super(e),this.formView=null}init(){const e=this.editor;e.ui.componentFactory.add("findAndReplace",t=>{const i=Object(r.createDropdown)(t),n=this.formView=new a(e.locale);return i.bind("isEnabled").to(e.commands.get("find")),i.panelView.children.add(n),i.on("change:isOpen",(e,t,i)=>{i?(n.disableCssTransitions(),n.reset(),n._findInputView.fieldView.select(),n.focus(),n.enableCssTransitions()):(n.focus(),this.fire("searchReseted"))},{priority:"low"}),this._setupDropdownButton(i),this._setupFormView(n),i})}_setupDropdownButton(e){const t=this.editor,i=t.locale.t;e.buttonView.set({icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 13.786 1.532-1.286 3.857 4.596a1 1 0 1 1-1.532 1.286l-3.857-4.596z"/><path d="M16.004 8.5a6.5 6.5 0 0 1-9.216 5.905c-1.154-.53-.863-1.415-.663-1.615.194-.194.564-.592 1.635-.141a4.5 4.5 0 0 0 5.89-5.904l-.104-.227 1.332-1.331c.045-.046.196-.041.224.007a6.47 6.47 0 0 1 .902 3.306zm-3.4-5.715c.562.305.742 1.106.354 1.494-.388.388-.995.414-1.476.178a4.5 4.5 0 0 0-6.086 5.882l.114.236-1.348 1.349c-.038.037-.17.022-.198-.023a6.5 6.5 0 0 1 5.54-9.9 6.469 6.469 0 0 1 3.1.784z"/><path d="M4.001 11.93.948 8.877a.2.2 0 0 1 .141-.341h6.106a.2.2 0 0 1 .141.341L4.283 11.93a.2.2 0 0 1-.282 0zm11.083-6.789 3.053 3.053a.2.2 0 0 1-.14.342H11.89a.2.2 0 0 1-.14-.342l3.052-3.053a.2.2 0 0 1 .282 0z"/></svg>',label:i("Find and replace"),keystroke:"CTRL+F",tooltip:!0}),t.keystrokes.set("Ctrl+F",(t,i)=>{e.isOpen=!0,i()})}_setupFormView(e){const t=this.editor.commands,i=this.editor.plugins.get("FindAndReplaceEditing").state,n={before:-1,same:0,after:1};e.bind("highlightOffset").to(i,"highlightedResult",e=>e?Array.from(i.results).sort((e,t)=>n[e.marker.getStart().compareWith(t.marker.getStart())]).indexOf(e)+1:0),e.listenTo(i.results,"change",()=>{e.matchCount=i.results.length}),e.bind("_areCommandsEnabled").to(t.get("findNext"),"isEnabled",t.get("findPrevious"),"isEnabled",t.get("replace"),"isEnabled",t.get("replaceAll"),"isEnabled",(e,t,i,n)=>({findNext:e,findPrevious:t,replace:i,replaceAll:n})),e.delegate("findNext","findPrevious","replace","replaceAll").to(this),e.on("change:isDirty",(e,t,i)=>{i&&this.fire("searchReseted")})}}var l=i(6),d="object"==typeof self&&self&&self.Object===Object&&self,f=l.a||d||Function("return this")(),h=f.Symbol;var u=function(e,t){for(var i=-1,n=null==e?0:e.length,r=Array(n);++i<n;)r[i]=t(e[i],i,e);return r},p=Array.isArray,m=Object.prototype,g=m.hasOwnProperty,k=m.toString,w=h?h.toStringTag:void 0;var b=function(e){var t=g.call(e,w),i=e[w];try{e[w]=void 0;var n=!0}catch(e){}var r=k.call(e);return n&&(t?e[w]=i:delete e[w]),r},_=Object.prototype.toString;var v=function(e){return _.call(e)},x=h?h.toStringTag:void 0;var y=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":x&&x in Object(e)?b(e):v(e)};var T=function(e){return null!=e&&"object"==typeof e};var R=function(e){return"symbol"==typeof e||T(e)&&"[object Symbol]"==y(e)},V=h?h.prototype:void 0,C=V?V.toString:void 0;var I=function e(t){if("string"==typeof t)return t;if(p(t))return u(t,e)+"";if(R(t))return C?C.call(t):"";var i=t+"";return"0"==i&&1/t==-1/0?"-0":i};var E=function(e){return null==e?"":I(e)},F=/[\\^$.*+?()[\]{}|]/g,O=RegExp(F.source);var N=function(e){return(e=E(e))&&O.test(e)?e.replace(F,"\\$&"):e};function A(e,t,i,n){const r=n||new s.Collection;return t.change(n=>{[...e].forEach(({type:e,item:o})=>{if("elementStart"===e&&t.schema.checkChild(o,"$text")){const e=i({item:o,text:B(t.createRangeIn(o))});if(!e)return;e.forEach(e=>{const t="findResult:"+Object(s.uid)(),i=n.addMarker(t,{usingOperation:!1,affectsData:!1,range:n.createRange(n.createPositionAt(o,e.start),n.createPositionAt(o,e.end))}),a=function(e,t){const i=e.find(({marker:e})=>t.getStart().isBefore(e.getStart()));return i?e.getIndex(i):e.length}(r,i);r.add({id:t,label:e.label,marker:i},a)})}})}),r}function B(e){return Array.from(e.getItems()).reduce((e,t)=>t.is("text")||t.is("textProxy")?e+t.data:e+"\n","")}function j(e){const t=e.length-1;let i=e.index;return 3===e.length&&(i+=e[1].length),{label:e[t],start:i,end:i+e[t].length}}function S(e,t){let i="gu";t.matchCase||(i+="i");let n=`(${N(e)})`;if(t.wholeWords){const t="[^a-zA-ZÀ-ɏḀ-ỿ]";new RegExp("^"+t).test(e)||(n=`(^|${t}|_)${n}`),new RegExp(t+"$").test(e)||(n=`${n}(?:_|${t}|$)`)}const r=new RegExp(n,i);return function({text:e}){return[...e.matchAll(r)].map(j)}}class M extends n.Command{constructor(e,t){super(e),this.isEnabled=!0,this._state=t,this.listenTo(e,"change:isReadOnly",()=>{this.clearForceDisabled("readOnlyMode")})}execute(e,{matchCase:t,wholeWords:i}={}){const{editor:n}=this,{model:r}=n;let s;"string"==typeof e?(s=S(e,{matchCase:t,wholeWords:i}),this._state.searchText=e):s=e;const o=r.document.getRootNames().reduce((e,t)=>A(r.createRangeIn(r.document.getRoot(t)),r,s,e),null);return this._state.clear(r),this._state.results.addMany(Array.from(o)),this._state.highlightedResult=o.get(0),"string"==typeof e&&(this._state.searchText=e),this._state.matchCase=!!t,this._state.matchWholeWords=!!i,{results:o,findCallback:s}}}class P extends n.Command{constructor(e,t){super(e),this.isEnabled=!0,this._state=t}execute(e,t){const{model:i}=this.editor;i.change(n=>{const r=t.marker.getRange();let s={};for(const e of r.getItems())if(e.is("$text")||e.is("$textProxy")){s=e.getAttributes();break}i.insertContent(n.createText(e,s),r),this._state.results.has(t)&&this._state.results.remove(t)})}}class D extends P{execute(e,t){const{editor:i}=this,{model:n}=i,r=t instanceof s.Collection?t:n.document.getRootNames().reduce((e,i)=>A(n.createRangeIn(n.document.getRoot(i)),n,S(t,this._state),e),null);r.length&&n.change(()=>{[...r].forEach(t=>{super.execute(e,t)})})}}class W extends n.Command{constructor(e,t){super(e),this._state=t,this.isEnabled=!1,this.listenTo(this._state.results,"change",()=>{this.isEnabled=this._state.results.length>1}),this.listenTo(e,"change:isReadOnly",()=>{this.clearForceDisabled("readOnlyMode")})}refresh(){this.isEnabled=this._state.results.length>1}execute(){const e=this._state.results,t=e.getIndex(this._state.highlightedResult),i=t+1>=e.length?0:t+1;this._state.highlightedResult=this._state.results.get(i)}}class H extends W{execute(){const e=this._state.results.getIndex(this._state.highlightedResult),t=e-1<0?this._state.results.length-1:e-1;this._state.highlightedResult=this._state.results.get(t)}}class L{constructor(e){this.set("results",new s.Collection),this.set("highlightedResult",null),this.set("searchText",""),this.set("replaceText",""),this.set("matchCase",!1),this.set("matchWholeWords",!1),this.results.on("change",(t,{removed:i,index:n})=>{if((i=Array.from(i)).length){let t=!1;if(e.change(n=>{for(const r of i)this.highlightedResult===r&&(t=!0),e.markers.has(r.marker.name)&&n.removeMarker(r.marker)}),t){const e=n>=this.results.length?0:n;this.highlightedResult=this.results.get(e)}}})}clear(e){this.searchText="",e.change(t=>{if(this.highlightedResult){const i=this.highlightedResult.marker.name.split(":")[1],n=e.markers.get("findResultHighlighted:"+i);n&&t.removeMarker(n)}[...this.results].forEach(({marker:e})=>{t.removeMarker(e)})}),this.results.clear()}}function $(e){return"[object Range]"==Object.prototype.toString.apply(e)}function z(e){const t=Object.prototype.toString.apply(e);return"[object Window]"==t||"[object global]"==t}function K(e){return"[object Text]"==Object.prototype.toString.call(e)}Object(s.mix)(L,s.ObservableMixin);var Y=function(e,t){return function(i){return e(t(i))}}(Object.getPrototypeOf,Object),U=Function.prototype,q=Object.prototype,G=U.toString,J=q.hasOwnProperty,X=G.call(Object);var Z=function(e){if(!T(e)||"[object Object]"!=y(e))return!1;var t=Y(e);if(null===t)return!0;var i=J.call(t,"constructor")&&t.constructor;return"function"==typeof i&&i instanceof i&&G.call(i)==X};var Q=function(e){return T(e)&&1===e.nodeType&&!Z(e)};const ee=["top","right","bottom","left","width","height"];class te{constructor(e){const t=$(e);if(Object.defineProperty(this,"_source",{value:e._source||e,writable:!0,enumerable:!1}),Q(e)||t)if(t){const t=te.getDomRangeRects(e);ie(this,te.getBoundingRect(t))}else ie(this,e.getBoundingClientRect());else if(z(e)){const{innerWidth:t,innerHeight:i}=e;ie(this,{top:0,right:t,bottom:i,left:0,width:t,height:i})}else ie(this,e)}clone(){return new te(this)}moveTo(e,t){return this.top=t,this.right=e+this.width,this.bottom=t+this.height,this.left=e,this}moveBy(e,t){return this.top+=t,this.right+=e,this.left+=e,this.bottom+=t,this}getIntersection(e){const t={top:Math.max(this.top,e.top),right:Math.min(this.right,e.right),bottom:Math.min(this.bottom,e.bottom),left:Math.max(this.left,e.left)};return t.width=t.right-t.left,t.height=t.bottom-t.top,t.width<0||t.height<0?null:new te(t)}getIntersectionArea(e){const t=this.getIntersection(e);return t?t.getArea():0}getArea(){return this.width*this.height}getVisible(){const e=this._source;let t=this.clone();if(!ne(e)){let i=e.parentNode||e.commonAncestorContainer;for(;i&&!ne(i);){const e=new te(i),n=t.getIntersection(e);if(!n)return null;n.getArea()<t.getArea()&&(t=n),i=i.parentNode}}return t}isEqual(e){for(const t of ee)if(this[t]!==e[t])return!1;return!0}contains(e){const t=this.getIntersection(e);return!(!t||!t.isEqual(e))}excludeScrollbarsAndBorders(){const e=this._source;let t,i,n;if(z(e))t=e.innerWidth-e.document.documentElement.clientWidth,i=e.innerHeight-e.document.documentElement.clientHeight,n=e.getComputedStyle(e.document.documentElement).direction;else{const r=function(e){const t=e.ownerDocument.defaultView.getComputedStyle(e);return{top:parseInt(t.borderTopWidth,10),right:parseInt(t.borderRightWidth,10),bottom:parseInt(t.borderBottomWidth,10),left:parseInt(t.borderLeftWidth,10)}}(this._source);t=e.offsetWidth-e.clientWidth-r.left-r.right,i=e.offsetHeight-e.clientHeight-r.top-r.bottom,n=e.ownerDocument.defaultView.getComputedStyle(e).direction,this.left+=r.left,this.top+=r.top,this.right-=r.right,this.bottom-=r.bottom,this.width=this.right-this.left,this.height=this.bottom-this.top}return this.width-=t,"ltr"===n?this.right-=t:this.left+=t,this.height-=i,this.bottom-=i,this}static getDomRangeRects(e){const t=[],i=Array.from(e.getClientRects());if(i.length)for(const e of i)t.push(new te(e));else{let i=e.startContainer;K(i)&&(i=i.parentNode);const n=new te(i.getBoundingClientRect());n.right=n.left,n.width=0,t.push(n)}return t}static getBoundingRect(e){const t={left:Number.POSITIVE_INFINITY,top:Number.POSITIVE_INFINITY,right:Number.NEGATIVE_INFINITY,bottom:Number.NEGATIVE_INFINITY};let i=0;for(const n of e)i++,t.left=Math.min(t.left,n.left),t.top=Math.min(t.top,n.top),t.right=Math.max(t.right,n.right),t.bottom=Math.max(t.bottom,n.bottom);return 0==i?null:(t.width=t.right-t.left,t.height=t.bottom-t.top,new te(t))}}function ie(e,t){for(const i of ee)e[i]=t[i]}function ne(e){return!!Q(e)&&e===e.ownerDocument.body}function re({target:e,viewportOffset:t=0}){const i=fe(e);let n=i,r=null;for(;n;){let s;s=he(n==i?e:r),oe(s,()=>ue(e,n));const o=ue(e,n);if(se(n,o,t),n.parent!=n){if(r=n.frameElement,n=n.parent,!r)return}else n=null}}function se(e,t,i){const n=t.clone().moveBy(0,i),r=t.clone().moveBy(0,-i),s=new te(e).excludeScrollbarsAndBorders();if(![r,n].every(e=>s.contains(e))){let{scrollX:o,scrollY:a}=e;ce(r,s)?a-=s.top-t.top+i:ae(n,s)&&(a+=t.bottom-s.bottom+i),le(t,s)?o-=s.left-t.left+i:de(t,s)&&(o+=t.right-s.right+i),e.scrollTo(o,a)}}function oe(e,t){const i=fe(e);let n,r;for(;e!=i.document.body;)r=t(),n=new te(e).excludeScrollbarsAndBorders(),n.contains(r)||(ce(r,n)?e.scrollTop-=n.top-r.top:ae(r,n)&&(e.scrollTop+=r.bottom-n.bottom),le(r,n)?e.scrollLeft-=n.left-r.left:de(r,n)&&(e.scrollLeft+=r.right-n.right)),e=e.parentNode}function ae(e,t){return e.bottom>t.bottom}function ce(e,t){return e.top<t.top}function le(e,t){return e.left<t.left}function de(e,t){return e.right>t.right}function fe(e){return $(e)?e.startContainer.ownerDocument.defaultView:e.ownerDocument.defaultView}function he(e){if($(e)){let t=e.commonAncestorContainer;return K(t)&&(t=t.parentNode),t}return e.parentNode}function ue(e,t){const i=fe(e),n=new te(e);if(i===t)return n;{let e=i;for(;e!=t;){const t=e.frameElement,i=new te(t).excludeScrollbarsAndBorders();n.moveBy(i.left,i.top),e=e.parent}}return n}Object.assign({},{scrollViewportToShowTarget:re,scrollAncestorsToShowTarget:function(e){oe(he(e),()=>new te(e))}});var pe=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},me=function(){return f.Date.now()},ge=/\s/;var ke=function(e){for(var t=e.length;t--&&ge.test(e.charAt(t)););return t},we=/^\s+/;var be=function(e){return e?e.slice(0,ke(e)+1).replace(we,""):e},_e=/^[-+]0x[0-9a-f]+$/i,ve=/^0b[01]+$/i,xe=/^0o[0-7]+$/i,ye=parseInt;var Te=function(e){if("number"==typeof e)return e;if(R(e))return NaN;if(pe(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=pe(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=be(e);var i=ve.test(e);return i||xe.test(e)?ye(e.slice(2),i?2:8):_e.test(e)?NaN:+e},Re=Math.max,Ve=Math.min;var Ce=function(e,t,i){var n,r,s,o,a,c,l=0,d=!1,f=!1,h=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function u(t){var i=n,s=r;return n=r=void 0,l=t,o=e.apply(s,i)}function p(e){return l=e,a=setTimeout(g,t),d?u(e):o}function m(e){var i=e-c;return void 0===c||i>=t||i<0||f&&e-l>=s}function g(){var e=me();if(m(e))return k(e);a=setTimeout(g,function(e){var i=t-(e-c);return f?Ve(i,s-(e-l)):i}(e))}function k(e){return a=void 0,h&&n?u(e):(n=r=void 0,o)}function w(){var e=me(),i=m(e);if(n=arguments,r=this,c=e,i){if(void 0===a)return p(c);if(f)return clearTimeout(a),a=setTimeout(g,t),u(c)}return void 0===a&&(a=setTimeout(g,t)),o}return t=Te(t)||0,pe(i)&&(d=!!i.leading,s=(f="maxWait"in i)?Re(Te(i.maxWait)||0,t):s,h="trailing"in i?!!i.trailing:h),w.cancel=function(){void 0!==a&&clearTimeout(a),l=0,n=c=r=a=void 0},w.flush=function(){return void 0===a?o:k(me())},w};i(12);class Ie extends n.Plugin{static get pluginName(){return"FindAndReplaceEditing"}init(){this._activeResults=null,this.state=new L(this.editor.model),this._defineConverters(),this._defineCommands(),this.listenTo(this.state,"change:highlightedResult",(e,t,i,n)=>{const{model:r}=this.editor;r.change(e=>{if(n){const t=n.marker.name.split(":")[1],i=r.markers.get("findResultHighlighted:"+t);i&&e.removeMarker(i)}if(i){const t=i.marker.name.split(":")[1];e.addMarker("findResultHighlighted:"+t,{usingOperation:!1,affectsData:!1,range:i.marker.getRange()})}})});const e=Ce(function(e,t,i){if(i){const e=this.editor.editing.view.domConverter,t=this.editor.editing.mapper.toViewRange(i.marker.getRange());re({target:e.viewRangeToDom(t),viewportOffset:40})}}.bind(this),32);this.listenTo(this.state,"change:highlightedResult",e,{priority:"low"}),this.listenTo(this.editor,"destroy",e.cancel)}find(e){const{editor:t}=this,{model:i}=t,{findCallback:n,results:r}=t.execute("find",e);return this._activeResults=r,this.listenTo(i.document,"change:data",()=>function(e,t,i){const n=new Set,r=new Set;t.document.differ.getChanges().forEach(e=>{"$text"===e.name||t.schema.isInline(e.position.nodeAfter)?(n.add(e.position.parent),[...t.markers.getMarkersAtPosition(e.position)].forEach(e=>{r.add(e.name)})):"insert"===e.type&&n.add(e.position.nodeAfter)}),t.document.differ.getChangedMarkers().forEach(({name:e,data:{newRange:t}})=>{t&&"$graveyard"===t.start.root.rootName&&r.add(e)}),n.forEach(e=>{[...t.markers.getMarkersIntersectingRange(t.createRangeIn(e))].forEach(e=>r.add(e.name))}),t.change(t=>{r.forEach(i=>{e.has(i)&&e.remove(i),t.removeMarker(i)})}),n.forEach(n=>{A(t.createRangeOn(n),t,i,e)})}(this._activeResults,i,n)),this._activeResults}stop(){this._activeResults&&(this.stopListening(this.editor.model.document),this.state.clear(this.editor.model),this._activeResults=null)}_defineCommands(){this.editor.commands.add("find",new M(this.editor,this.state)),this.editor.commands.add("findNext",new W(this.editor,this.state)),this.editor.commands.add("findPrevious",new H(this.editor,this.state)),this.editor.commands.add("replace",new P(this.editor,this.state)),this.editor.commands.add("replaceAll",new D(this.editor,this.state))}_defineConverters(){const{editor:e}=this;e.conversion.for("editingDowncast").markerToHighlight({model:"findResult",view:({markerName:e})=>{const[,t]=e.split(":");return{name:"span",classes:["ck-find-result"],attributes:{"data-find-result":t}}}}),e.conversion.for("editingDowncast").markerToHighlight({model:"findResultHighlighted",view:({markerName:e})=>{const[,t]=e.split(":");return{name:"span",classes:["ck-find-result_selected"],attributes:{"data-find-result":t}}}})}}class Ee extends n.Plugin{static get requires(){return[Ie,c]}static get pluginName(){return"FindAndReplace"}init(){const e=this.editor.plugins.get("FindAndReplaceUI"),t=this.editor.plugins.get("FindAndReplaceEditing"),i=t.state;e.on("findNext",(e,t)=>{t?(i.searchText=t.searchText,this.editor.execute("find",t.searchText,t)):this.editor.execute("findNext")}),e.on("findPrevious",(e,t)=>{t&&i.searchText!==t.searchText?this.editor.execute("find",t.searchText):this.editor.execute("findPrevious")}),e.on("replace",(e,t)=>{i.searchText!==t.searchText&&this.editor.execute("find",t.searchText);const n=i.highlightedResult;n&&this.editor.execute("replace",t.replaceText,n)}),e.on("replaceAll",(e,t)=>{i.searchText!==t.searchText&&this.editor.execute("find",t.searchText),this.editor.execute("replaceAll",t.replaceText,i.results)}),e.on("searchReseted",()=>{i.clear(this.editor.model),t.stop()})}}}]);
@@ -0,0 +1 @@
1
+ !function(e){const n=e.de=e.de||{};n.dictionary=Object.assign(n.dictionary||{},{Find:"Suchen","Find and replace":"Suchen und ersetzen","Find in text…":"In Text suchen…","Match case":"Groß-/Kleinschreibung beachten","Next result":"Nächstes Ergebnis","Previous result":"Vorheriges Ergebnis",Replace:"Ersetzen","Replace all":"Alle ersetzen","Replace with…":"Ersetzen durch…","Show options":"Optionen anzeigen","Text to find must not be empty.":"Der Suchtext darf nicht leer sein.","Tip: Find some text first in order to replace it.":"Tipp: Zuerst nach Text suchen um diesen zu ersetzen.","Whole words only":"Nur ganze Wörter"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
@@ -0,0 +1 @@
1
+ !function(t){const e=t.gl=t.gl||{};e.dictionary=Object.assign(e.dictionary||{},{Find:"Buscar","Find and replace":"Buscar e substituír","Find in text…":"Buscar no texto…","Match case":"Coincidencia de maiúsculas","Next result":"Seguinte resultado","Previous result":"Resultado anterior",Replace:"Substituír","Replace all":"Substituír todo","Replace with…":"Substituír por…","Show options":"","Text to find must not be empty.":"","Tip: Find some text first in order to replace it.":"","Whole words only":"Só palabras enteiras"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
@@ -0,0 +1 @@
1
+ !function(e){const t=e.hu=e.hu||{};t.dictionary=Object.assign(t.dictionary||{},{Find:"Keresés","Find and replace":"Keresés és csere","Find in text…":"Keresés szövegben...","Match case":"Nagybetű érzékeny","Next result":"Következő találat","Previous result":"Előző találat",Replace:"Csere","Replace all":"Mind cserél","Replace with…":"Csere erre...","Show options":"","Text to find must not be empty.":"","Tip: Find some text first in order to replace it.":"","Whole words only":"Csak teljes szavak"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
@@ -0,0 +1 @@
1
+ !function(t){const i=t.it=t.it||{};i.dictionary=Object.assign(i.dictionary||{},{Find:"Trova","Find and replace":"Trova e sostituisci","Find in text…":"Trova nel testo…","Match case":"Distingui maiuscole e minuscole","Next result":"Risultato successivo","Previous result":"Risultato precedente",Replace:"Sostituisci","Replace all":"Sostituisci tutto","Replace with…":"Sostituisci con…","Show options":"Mostra opzioni","Text to find must not be empty.":"Il testo da cercare non può essere vuoto.","Tip: Find some text first in order to replace it.":"Consiglio: trova il testo prima di sostituirlo.","Whole words only":"Solo parole intere"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
@@ -0,0 +1 @@
1
+ !function(e){const n=e.nl=e.nl||{};n.dictionary=Object.assign(n.dictionary||{},{Find:"Zoeken","Find and replace":"Zoeken en vervangen","Find in text…":"Zoeken in tekst","Match case":"Hoofdlettergevoelig","Next result":"Vorige zoeken","Previous result":"Volgende zoeken",Replace:"Vervangen","Replace all":"Alles vervangen","Replace with…":"Vervangen door","Show options":"Opties tonen","Text to find must not be empty.":"Dit veld mag niet leeg zijn","Tip: Find some text first in order to replace it.":"Tip: zoek eerst de tekst om hem te vervangen","Whole words only":"Alleen volledige woorden"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
@@ -0,0 +1 @@
1
+ !function(t){const e=t.no=t.no||{};e.dictionary=Object.assign(e.dictionary||{},{Find:"Søk","Find and replace":"Søk og erstatt","Find in text…":"Søk i tekst","Match case":"","Next result":"Neste resultat","Previous result":"Forrige resultat",Replace:"Erstatt","Replace all":"Erstatt alt","Replace with…":"","Show options":"","Text to find must not be empty.":"","Tip: Find some text first in order to replace it.":"","Whole words only":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
@@ -0,0 +1 @@
1
+ !function(e){const t=e.ru=e.ru||{};t.dictionary=Object.assign(t.dictionary||{},{Find:"Найти","Find and replace":"Найти и заменить","Find in text…":"Найти в тексте","Match case":"С учетом регистра","Next result":"Следующий результат","Previous result":"Предыдущий результат",Replace:"Заменить","Replace all":"Заменить всё","Replace with…":"Заменить на...","Show options":"","Text to find must not be empty.":"","Tip: Find some text first in order to replace it.":"","Whole words only":"Только слова целиком"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
@@ -0,0 +1 @@
1
+ !function(e){const i=e["sr-latn"]=e["sr-latn"]||{};i.dictionary=Object.assign(i.dictionary||{},{Find:"Pronađji","Find and replace":"Nađji i zameni","Find in text…":"Pronađji u tekstu…","Match case":"Podudaranje slučaj","Next result":"Sledeći rezultat","Previous result":"Prethodni rezultat",Replace:"Zameni","Replace all":"Zameni sve","Replace with…":"Zameni sa…","Show options":"Prikaži opcije","Text to find must not be empty.":"Tekst za pronalaženje ne sme biti prazan.","Tip: Find some text first in order to replace it.":"Savet: Prvo pronađjite neki tekst da biste ga zamenili.","Whole words only":"Samo cele reči"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
@@ -0,0 +1 @@
1
+ !function(e){const t=e.sr=e.sr||{};t.dictionary=Object.assign(t.dictionary||{},{Find:"Пронаћи","Find and replace":"Нађи и замени","Find in text…":"Пронађи у тексту… ","Match case":"Подударање случај ","Next result":"Следећи резултат ","Previous result":"Претходни резултат ",Replace:"Замени","Replace all":"Замени све","Replace with…":"Замени са…","Show options":"Прикажи опције ","Text to find must not be empty.":"Текст за проналажење не сме бити празан.","Tip: Find some text first in order to replace it.":"Савет: Прво пронађите неки текст да бисте га заменили. ","Whole words only":"Само целе речи "})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
@@ -0,0 +1 @@
1
+ !function(e){const t=e["zh-cn"]=e["zh-cn"]||{};t.dictionary=Object.assign(t.dictionary||{},{Find:"查找","Find and replace":"查找和替换","Find in text…":"查找的文本","Match case":"区分大小写","Next result":"下一个匹配项","Previous result":"上一个匹配项",Replace:"替换","Replace all":"全部替换","Replace with…":"替换的文本","Show options":"显示配置","Text to find must not be empty.":"查找的文本不可为空","Tip: Find some text first in order to replace it.":"提示:先查找文本再替换","Whole words only":"单词"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
@@ -0,0 +1,18 @@
1
+ {
2
+ "plugins": [
3
+ {
4
+ "name": "Find and replace",
5
+ "className": "FindAndReplace",
6
+ "path": "src/findandreplace.js",
7
+ "description": "Implements the find and replace function in CKEditor 5.",
8
+ "docs": "features/find-and-replace.html",
9
+ "uiComponents": [
10
+ {
11
+ "type": "SplitButton",
12
+ "name": "findAndReplace",
13
+ "iconPath": "theme/icons/find-replace.svg"
14
+ }
15
+ ]
16
+ }
17
+ ]
18
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "Find and replace": "The tooltip of a find and replace button in the toolbar. Also, the title of the find and replace form.",
3
+ "Find in text…": "The label for the searched text in the find and replace dropdown.",
4
+ "Find": "The label for the find action button in the find and replace dropdown.",
5
+ "Previous result": "The label for the previous result button in the find and replace dropdown.",
6
+ "Next result": "The label for the previous result button in the find and replace dropdown.",
7
+ "Replace": "The label for the (single) replace action button in the find and replace dropdown.",
8
+ "Replace all": "The label for the replace all action button in the find and replace dropdown.",
9
+ "Match case": "The label for the match case checkbox in the find and replace dropdown.",
10
+ "Whole words only": "The label for the whole words only checkbox in the find and replace dropdown.",
11
+ "Replace with…": "The label for the text replacement in the find and replace dropdown.",
12
+ "Text to find must not be empty.": "An error text displayed when user attempted to find an empty text.",
13
+ "Tip: Find some text first in order to replace it.": "A message displayed next to the replace field when disabled but user tries to use it.",
14
+ "Show options": "The label and a tooltip of the options dropdown button in the find and replace form."
15
+ }
@@ -0,0 +1,69 @@
1
+ # Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
2
+ #
3
+ # !!! IMPORTANT !!!
4
+ #
5
+ # Before you edit this file, please keep in mind that contributing to the project
6
+ # translations is possible ONLY via the Transifex online service.
7
+ #
8
+ # To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
9
+ #
10
+ # To learn more, check out the official contributor's guide:
11
+ # https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
12
+ #
13
+ msgid ""
14
+ msgstr ""
15
+ "Language-Team: German (https://www.transifex.com/ckeditor/teams/11143/de/)\n"
16
+ "Language: de\n"
17
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
+
19
+ msgctxt "The tooltip of a find and replace button in the toolbar. Also, the title of the find and replace form."
20
+ msgid "Find and replace"
21
+ msgstr "Suchen und ersetzen"
22
+
23
+ msgctxt "The label for the searched text in the find and replace dropdown."
24
+ msgid "Find in text…"
25
+ msgstr "In Text suchen…"
26
+
27
+ msgctxt "The label for the find action button in the find and replace dropdown."
28
+ msgid "Find"
29
+ msgstr "Suchen"
30
+
31
+ msgctxt "The label for the previous result button in the find and replace dropdown."
32
+ msgid "Previous result"
33
+ msgstr "Vorheriges Ergebnis"
34
+
35
+ msgctxt "The label for the previous result button in the find and replace dropdown."
36
+ msgid "Next result"
37
+ msgstr "Nächstes Ergebnis"
38
+
39
+ msgctxt "The label for the (single) replace action button in the find and replace dropdown."
40
+ msgid "Replace"
41
+ msgstr "Ersetzen"
42
+
43
+ msgctxt "The label for the replace all action button in the find and replace dropdown."
44
+ msgid "Replace all"
45
+ msgstr "Alle ersetzen"
46
+
47
+ msgctxt "The label for the match case checkbox in the find and replace dropdown."
48
+ msgid "Match case"
49
+ msgstr "Groß-/Kleinschreibung beachten"
50
+
51
+ msgctxt "The label for the whole words only checkbox in the find and replace dropdown."
52
+ msgid "Whole words only"
53
+ msgstr "Nur ganze Wörter"
54
+
55
+ msgctxt "The label for the text replacement in the find and replace dropdown."
56
+ msgid "Replace with…"
57
+ msgstr "Ersetzen durch…"
58
+
59
+ msgctxt "An error text displayed when user attempted to find an empty text."
60
+ msgid "Text to find must not be empty."
61
+ msgstr "Der Suchtext darf nicht leer sein."
62
+
63
+ msgctxt "A message displayed next to the replace field when disabled but user tries to use it."
64
+ msgid "Tip: Find some text first in order to replace it."
65
+ msgstr "Tipp: Zuerst nach Text suchen um diesen zu ersetzen."
66
+
67
+ msgctxt "The label and a tooltip of the options dropdown button in the find and replace form."
68
+ msgid "Show options"
69
+ msgstr "Optionen anzeigen"
@@ -0,0 +1,69 @@
1
+ # Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
2
+ #
3
+ # !!! IMPORTANT !!!
4
+ #
5
+ # Before you edit this file, please keep in mind that contributing to the project
6
+ # translations is possible ONLY via the Transifex online service.
7
+ #
8
+ # To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
9
+ #
10
+ # To learn more, check out the official contributor's guide:
11
+ # https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
12
+ #
13
+ msgid ""
14
+ msgstr ""
15
+ "Language: \n"
16
+ "Language-Team: \n"
17
+ "Plural-Forms: \n"
18
+
19
+ msgctxt "The tooltip of a find and replace button in the toolbar. Also, the title of the find and replace form."
20
+ msgid "Find and replace"
21
+ msgstr "Find and replace"
22
+
23
+ msgctxt "The label for the searched text in the find and replace dropdown."
24
+ msgid "Find in text…"
25
+ msgstr "Find in text…"
26
+
27
+ msgctxt "The label for the find action button in the find and replace dropdown."
28
+ msgid "Find"
29
+ msgstr "Find"
30
+
31
+ msgctxt "The label for the previous result button in the find and replace dropdown."
32
+ msgid "Previous result"
33
+ msgstr "Previous result"
34
+
35
+ msgctxt "The label for the previous result button in the find and replace dropdown."
36
+ msgid "Next result"
37
+ msgstr "Next result"
38
+
39
+ msgctxt "The label for the (single) replace action button in the find and replace dropdown."
40
+ msgid "Replace"
41
+ msgstr "Replace"
42
+
43
+ msgctxt "The label for the replace all action button in the find and replace dropdown."
44
+ msgid "Replace all"
45
+ msgstr "Replace all"
46
+
47
+ msgctxt "The label for the match case checkbox in the find and replace dropdown."
48
+ msgid "Match case"
49
+ msgstr "Match case"
50
+
51
+ msgctxt "The label for the whole words only checkbox in the find and replace dropdown."
52
+ msgid "Whole words only"
53
+ msgstr "Whole words only"
54
+
55
+ msgctxt "The label for the text replacement in the find and replace dropdown."
56
+ msgid "Replace with…"
57
+ msgstr "Replace with…"
58
+
59
+ msgctxt "An error text displayed when user attempted to find an empty text."
60
+ msgid "Text to find must not be empty."
61
+ msgstr "Text to find must not be empty."
62
+
63
+ msgctxt "A message displayed next to the replace field when disabled but user tries to use it."
64
+ msgid "Tip: Find some text first in order to replace it."
65
+ msgstr "Tip: Find some text first in order to replace it."
66
+
67
+ msgctxt "The label and a tooltip of the options dropdown button in the find and replace form."
68
+ msgid "Show options"
69
+ msgstr "Show options"
@@ -0,0 +1,69 @@
1
+ # Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
2
+ #
3
+ # !!! IMPORTANT !!!
4
+ #
5
+ # Before you edit this file, please keep in mind that contributing to the project
6
+ # translations is possible ONLY via the Transifex online service.
7
+ #
8
+ # To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
9
+ #
10
+ # To learn more, check out the official contributor's guide:
11
+ # https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
12
+ #
13
+ msgid ""
14
+ msgstr ""
15
+ "Language-Team: Galician (https://www.transifex.com/ckeditor/teams/11143/gl/)\n"
16
+ "Language: gl\n"
17
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
+
19
+ msgctxt "The tooltip of a find and replace button in the toolbar. Also, the title of the find and replace form."
20
+ msgid "Find and replace"
21
+ msgstr "Buscar e substituír"
22
+
23
+ msgctxt "The label for the searched text in the find and replace dropdown."
24
+ msgid "Find in text…"
25
+ msgstr "Buscar no texto…"
26
+
27
+ msgctxt "The label for the find action button in the find and replace dropdown."
28
+ msgid "Find"
29
+ msgstr "Buscar"
30
+
31
+ msgctxt "The label for the previous result button in the find and replace dropdown."
32
+ msgid "Previous result"
33
+ msgstr "Resultado anterior"
34
+
35
+ msgctxt "The label for the previous result button in the find and replace dropdown."
36
+ msgid "Next result"
37
+ msgstr "Seguinte resultado"
38
+
39
+ msgctxt "The label for the (single) replace action button in the find and replace dropdown."
40
+ msgid "Replace"
41
+ msgstr "Substituír"
42
+
43
+ msgctxt "The label for the replace all action button in the find and replace dropdown."
44
+ msgid "Replace all"
45
+ msgstr "Substituír todo"
46
+
47
+ msgctxt "The label for the match case checkbox in the find and replace dropdown."
48
+ msgid "Match case"
49
+ msgstr "Coincidencia de maiúsculas"
50
+
51
+ msgctxt "The label for the whole words only checkbox in the find and replace dropdown."
52
+ msgid "Whole words only"
53
+ msgstr "Só palabras enteiras"
54
+
55
+ msgctxt "The label for the text replacement in the find and replace dropdown."
56
+ msgid "Replace with…"
57
+ msgstr "Substituír por…"
58
+
59
+ msgctxt "An error text displayed when user attempted to find an empty text."
60
+ msgid "Text to find must not be empty."
61
+ msgstr ""
62
+
63
+ msgctxt "A message displayed next to the replace field when disabled but user tries to use it."
64
+ msgid "Tip: Find some text first in order to replace it."
65
+ msgstr ""
66
+
67
+ msgctxt "The label and a tooltip of the options dropdown button in the find and replace form."
68
+ msgid "Show options"
69
+ msgstr ""
@@ -0,0 +1,69 @@
1
+ # Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
2
+ #
3
+ # !!! IMPORTANT !!!
4
+ #
5
+ # Before you edit this file, please keep in mind that contributing to the project
6
+ # translations is possible ONLY via the Transifex online service.
7
+ #
8
+ # To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
9
+ #
10
+ # To learn more, check out the official contributor's guide:
11
+ # https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
12
+ #
13
+ msgid ""
14
+ msgstr ""
15
+ "Language-Team: Hungarian (https://www.transifex.com/ckeditor/teams/11143/hu/)\n"
16
+ "Language: hu\n"
17
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
+
19
+ msgctxt "The tooltip of a find and replace button in the toolbar. Also, the title of the find and replace form."
20
+ msgid "Find and replace"
21
+ msgstr "Keresés és csere"
22
+
23
+ msgctxt "The label for the searched text in the find and replace dropdown."
24
+ msgid "Find in text…"
25
+ msgstr "Keresés szövegben..."
26
+
27
+ msgctxt "The label for the find action button in the find and replace dropdown."
28
+ msgid "Find"
29
+ msgstr "Keresés"
30
+
31
+ msgctxt "The label for the previous result button in the find and replace dropdown."
32
+ msgid "Previous result"
33
+ msgstr "Előző találat"
34
+
35
+ msgctxt "The label for the previous result button in the find and replace dropdown."
36
+ msgid "Next result"
37
+ msgstr "Következő találat"
38
+
39
+ msgctxt "The label for the (single) replace action button in the find and replace dropdown."
40
+ msgid "Replace"
41
+ msgstr "Csere"
42
+
43
+ msgctxt "The label for the replace all action button in the find and replace dropdown."
44
+ msgid "Replace all"
45
+ msgstr "Mind cserél"
46
+
47
+ msgctxt "The label for the match case checkbox in the find and replace dropdown."
48
+ msgid "Match case"
49
+ msgstr "Nagybetű érzékeny"
50
+
51
+ msgctxt "The label for the whole words only checkbox in the find and replace dropdown."
52
+ msgid "Whole words only"
53
+ msgstr "Csak teljes szavak"
54
+
55
+ msgctxt "The label for the text replacement in the find and replace dropdown."
56
+ msgid "Replace with…"
57
+ msgstr "Csere erre..."
58
+
59
+ msgctxt "An error text displayed when user attempted to find an empty text."
60
+ msgid "Text to find must not be empty."
61
+ msgstr ""
62
+
63
+ msgctxt "A message displayed next to the replace field when disabled but user tries to use it."
64
+ msgid "Tip: Find some text first in order to replace it."
65
+ msgstr ""
66
+
67
+ msgctxt "The label and a tooltip of the options dropdown button in the find and replace form."
68
+ msgid "Show options"
69
+ msgstr ""
@@ -0,0 +1,69 @@
1
+ # Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
2
+ #
3
+ # !!! IMPORTANT !!!
4
+ #
5
+ # Before you edit this file, please keep in mind that contributing to the project
6
+ # translations is possible ONLY via the Transifex online service.
7
+ #
8
+ # To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
9
+ #
10
+ # To learn more, check out the official contributor's guide:
11
+ # https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
12
+ #
13
+ msgid ""
14
+ msgstr ""
15
+ "Language-Team: Italian (https://www.transifex.com/ckeditor/teams/11143/it/)\n"
16
+ "Language: it\n"
17
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
+
19
+ msgctxt "The tooltip of a find and replace button in the toolbar. Also, the title of the find and replace form."
20
+ msgid "Find and replace"
21
+ msgstr "Trova e sostituisci"
22
+
23
+ msgctxt "The label for the searched text in the find and replace dropdown."
24
+ msgid "Find in text…"
25
+ msgstr "Trova nel testo…"
26
+
27
+ msgctxt "The label for the find action button in the find and replace dropdown."
28
+ msgid "Find"
29
+ msgstr "Trova"
30
+
31
+ msgctxt "The label for the previous result button in the find and replace dropdown."
32
+ msgid "Previous result"
33
+ msgstr "Risultato precedente"
34
+
35
+ msgctxt "The label for the previous result button in the find and replace dropdown."
36
+ msgid "Next result"
37
+ msgstr "Risultato successivo"
38
+
39
+ msgctxt "The label for the (single) replace action button in the find and replace dropdown."
40
+ msgid "Replace"
41
+ msgstr "Sostituisci"
42
+
43
+ msgctxt "The label for the replace all action button in the find and replace dropdown."
44
+ msgid "Replace all"
45
+ msgstr "Sostituisci tutto"
46
+
47
+ msgctxt "The label for the match case checkbox in the find and replace dropdown."
48
+ msgid "Match case"
49
+ msgstr "Distingui maiuscole e minuscole"
50
+
51
+ msgctxt "The label for the whole words only checkbox in the find and replace dropdown."
52
+ msgid "Whole words only"
53
+ msgstr "Solo parole intere"
54
+
55
+ msgctxt "The label for the text replacement in the find and replace dropdown."
56
+ msgid "Replace with…"
57
+ msgstr "Sostituisci con…"
58
+
59
+ msgctxt "An error text displayed when user attempted to find an empty text."
60
+ msgid "Text to find must not be empty."
61
+ msgstr "Il testo da cercare non può essere vuoto."
62
+
63
+ msgctxt "A message displayed next to the replace field when disabled but user tries to use it."
64
+ msgid "Tip: Find some text first in order to replace it."
65
+ msgstr "Consiglio: trova il testo prima di sostituirlo."
66
+
67
+ msgctxt "The label and a tooltip of the options dropdown button in the find and replace form."
68
+ msgid "Show options"
69
+ msgstr "Mostra opzioni"
@@ -0,0 +1,69 @@
1
+ # Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
2
+ #
3
+ # !!! IMPORTANT !!!
4
+ #
5
+ # Before you edit this file, please keep in mind that contributing to the project
6
+ # translations is possible ONLY via the Transifex online service.
7
+ #
8
+ # To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
9
+ #
10
+ # To learn more, check out the official contributor's guide:
11
+ # https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
12
+ #
13
+ msgid ""
14
+ msgstr ""
15
+ "Language-Team: Dutch (https://www.transifex.com/ckeditor/teams/11143/nl/)\n"
16
+ "Language: nl\n"
17
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18
+
19
+ msgctxt "The tooltip of a find and replace button in the toolbar. Also, the title of the find and replace form."
20
+ msgid "Find and replace"
21
+ msgstr "Zoeken en vervangen"
22
+
23
+ msgctxt "The label for the searched text in the find and replace dropdown."
24
+ msgid "Find in text…"
25
+ msgstr "Zoeken in tekst"
26
+
27
+ msgctxt "The label for the find action button in the find and replace dropdown."
28
+ msgid "Find"
29
+ msgstr "Zoeken"
30
+
31
+ msgctxt "The label for the previous result button in the find and replace dropdown."
32
+ msgid "Previous result"
33
+ msgstr "Volgende zoeken"
34
+
35
+ msgctxt "The label for the previous result button in the find and replace dropdown."
36
+ msgid "Next result"
37
+ msgstr "Vorige zoeken"
38
+
39
+ msgctxt "The label for the (single) replace action button in the find and replace dropdown."
40
+ msgid "Replace"
41
+ msgstr "Vervangen"
42
+
43
+ msgctxt "The label for the replace all action button in the find and replace dropdown."
44
+ msgid "Replace all"
45
+ msgstr "Alles vervangen"
46
+
47
+ msgctxt "The label for the match case checkbox in the find and replace dropdown."
48
+ msgid "Match case"
49
+ msgstr "Hoofdlettergevoelig"
50
+
51
+ msgctxt "The label for the whole words only checkbox in the find and replace dropdown."
52
+ msgid "Whole words only"
53
+ msgstr "Alleen volledige woorden"
54
+
55
+ msgctxt "The label for the text replacement in the find and replace dropdown."
56
+ msgid "Replace with…"
57
+ msgstr "Vervangen door"
58
+
59
+ msgctxt "An error text displayed when user attempted to find an empty text."
60
+ msgid "Text to find must not be empty."
61
+ msgstr "Dit veld mag niet leeg zijn"
62
+
63
+ msgctxt "A message displayed next to the replace field when disabled but user tries to use it."
64
+ msgid "Tip: Find some text first in order to replace it."
65
+ msgstr "Tip: zoek eerst de tekst om hem te vervangen"
66
+
67
+ msgctxt "The label and a tooltip of the options dropdown button in the find and replace form."
68
+ msgid "Show options"
69
+ msgstr "Opties tonen"