Socket
Socket
Sign inDemoInstall

@ckeditor/ckeditor5-find-and-replace

Package Overview
Dependencies
Maintainers
1
Versions
581
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ckeditor/ckeditor5-find-and-replace - npm Package Compare versions

Comparing version 37.0.0-alpha.0 to 37.0.0-alpha.1

src/augmentation.d.ts

2

build/find-and-replace.js

@@ -5,2 +5,2 @@ !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={})),

* For licensing, see LICENSE.md.
*/(()=>{var e={299:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),r=i.n(n)()((function(e){return e[1]}));r.push([e.id,".ck-find-result{background:var(--ck-color-highlight-background);color:var(--ck-color-text)}.ck-find-result_selected{background:#ff9633}",""]);const s=r},226:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),r=i.n(n)()((function(e){return e[1]}));r.push([e.id,".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{align-content:stretch;align-items:center;border:0;flex-direction:row;flex-wrap:nowrap;margin:0;padding:var(--ck-spacing-large)}.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{min-width:50px;width:100%}.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-left:0;margin-right:auto}.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;margin-bottom:var(--ck-spacing-standard);width:100%}.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{text-align:center;width:100%}.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>.ck-dropdown:not(.ck-labeled-field-view){flex-grow:0}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__replace>.ck-button:not(.ck-labeled-field-view)>.ck-button__label{text-align:center;width:100%}}",""]);const s=r},764:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),r=i.n(n)()((function(e){return e[1]}));r.push([e.id,'.ck-vertical-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck-vertical-form .ck-button:focus:after{display:none}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck.ck-responsive-form .ck-button:focus:after{display:none}}.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-width)*.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:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){border-radius:0;margin-top:var(--ck-spacing-large);padding:var(--ck-spacing-standard)}.ck.ck-responsive-form>.ck-button:last-child:not(:focus),.ck.ck-responsive-form>.ck-button:nth-last-child(2):not(:focus){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}[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)}}',""]);const s=r},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i=e(t);return t[2]?"@media ".concat(t[2]," {").concat(i,"}"):i})).join("")},t.i=function(e,i,n){"string"==typeof e&&(e=[[null,e,""]]);var r={};if(n)for(var s=0;s<this.length;s++){var o=this[s][0];null!=o&&(r[o]=!0)}for(var a=0;a<e.length;a++){var c=[].concat(e[a]);n&&r[c[0]]||(i&&(c[2]?c[2]="".concat(i," and ").concat(c[2]):c[2]=i),t.push(c))}},t}},62:(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 h=a(d),f={css:s[1],media:s[2],sourceMap:s[3]};-1!==h?(o[h].references++,o[h].updater(f)):o.push({identifier:d,updater:g(f,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,h=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function f(e,t,i,n){var r=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=h(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=f.bind(null,i,s,!1),r=f.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}}}},704:(e,t,i)=>{e.exports=i(79)("./src/core.js")},273:(e,t,i)=>{e.exports=i(79)("./src/ui.js")},209:(e,t,i)=>{e.exports=i(79)("./src/utils.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(n){var r=t[n];if(void 0!==r)return r.exports;var s=t[n]={id:n,exports:{}};return e[n](s,s.exports,i),s.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{FindAndReplace:()=>Ne,FindAndReplaceUtils:()=>fe});var e=i(704),t=i(273),r=i(209),s=i(62),o=i.n(s),a=i(764),c={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o()(a.Z,c);a.Z.locals;var l=i(226),d={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o()(l.Z,d);l.Z.locals;const h='<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 f extends t.View{constructor(e){super(e);const i=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(i("Find in text…")),this._replaceInputView=this._createInputField(i("Replace with…")),this._findButtonView=this._createButton({label:i("Find"),class:"ck-button-find ck-button-action",withText:!0}),this._findPrevButtonView=this._createButton({label:i("Previous result"),class:"ck-button-prev",icon:h,keystroke:"Shift+F3",tooltip:!0}),this._findNextButtonView=this._createButton({label:i("Next result"),class:"ck-button-next",icon:h,keystroke:"F3",tooltip:!0}),this._optionsDropdown=this._createOptionsDropdown(),this._replaceButtonView=this._createButton({label:i("Replace"),class:"ck-button-replace",withText:!0}),this._replaceAllButtonView=this._createButton({label:i("Replace all"),class:"ck-button-replaceall",withText:!0}),this._findFieldsetView=this._createFindFieldset(),this._replaceFieldsetView=this._createReplaceFieldset(),this._focusTracker=new r.FocusTracker,this._keystrokes=new r.KeystrokeHandler,this._focusables=new t.ViewCollection,this._focusCycler=new t.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 t.FormHeaderView(e,{label:i("Find and replace")}),this._findFieldsetView,this._replaceFieldsetView]})}render(){super.render(),(0,t.submitHandler)({view:this}),this._initFocusCycling(),this._initKeystrokeHandling()}destroy(){super.destroy(),this._focusTracker.destroy(),this._keystrokes.destroy()}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,i=new t.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(),i.setTemplate({tag:"fieldset",attributes:{class:["ck","ck-find-and-replace-form__find"]},children:[this._findInputView,this._findButtonView,this._findPrevButtonView,this._findNextButtonView]}),i}_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,i=e.t,n=this.bindTemplate,s=new t.View(this.locale);this.bind("_resultsCounterText").to(this,"highlightOffset",this,"matchCount",((e,t)=>i("%0 of %1",[e,t]))),s.setTemplate({tag:"span",attributes:{class:["ck","ck-results-counter",n.if("isDirty","ck-hidden")]},children:[{text:n.to("_resultsCounterText")}]});const o=()=>{const t=this._findInputView.fieldView.element;if(!t||!(0,r.isVisible)(t))return;const i=new r.Rect(s.element).width,n="ltr"===e.uiLanguageDirection?"paddingRight":"paddingLeft";t.style[n]=i?`calc( 2 * var(--ck-spacing-standard) + ${i}px )`:""};this.on("change:_resultsCounterText",o,{priority:"low"}),this.on("change:isDirty",o,{priority:"low"}),this._findInputView.template.children[0].children.push(s)}_createReplaceFieldset(){const e=this.locale.t,i=new t.View(this.locale);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",((t,i)=>t||!i?"":e("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 i=this.locale.t,n=(0,t.createDropdown)(this.locale);n.class="ck-options-dropdown",n.buttonView.set({withText:!1,label:i("Show options"),icon:e.icons.cog,tooltip:!0});const s=new t.Model({withText:!0,label:i("Match case"),_isMatchCaseSwitch:!0}),o=new t.Model({withText:!0,label:i("Whole words only")});return s.bind("isOn").to(this,"_matchCase"),o.bind("isOn").to(this,"_wholeWordsOnly"),n.on("execute",(e=>{e.source._isMatchCaseSwitch?this._matchCase=!this._matchCase:this._wholeWordsOnly=!this._wholeWordsOnly,this.isDirty=!0})),(0,t.addListToDropdown)(n,new r.Collection([{type:"switchbutton",model:s},{type:"switchbutton",model:o}])),n}_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.isDirty||(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 i=new t.ButtonView(this.locale);return i.set(e),i}_createInputField(e){const i=new t.LabeledFieldView(this.locale,t.createLabeledInputText);return i.label=e,i}}class u extends e.Plugin{static get pluginName(){return"FindAndReplaceUI"}constructor(e){super(e),this.formView=null}init(){const e=this.editor;e.ui.componentFactory.add("findAndReplace",(i=>{const n=(0,t.createDropdown)(i),r=e.commands.get("find");return n.bind("isEnabled").to(r),n.once("change:isOpen",(()=>{this.formView=new((0,t.CssTransitionDisablerMixin)(f))(e.locale),n.panelView.children.add(this.formView),this._setupFormView(this.formView)})),n.on("change:isOpen",((e,t,i)=>{i?(this.formView.disableCssTransitions(),this.formView.reset(),this.formView._findInputView.fieldView.select(),this.formView.enableCssTransitions()):this.fire("searchReseted")}),{priority:"low"}),this._setupDropdownButton(n),n}))}_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.isEnabled&&(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,different: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}));const r=t.get("findNext"),s=t.get("findPrevious"),o=t.get("replace"),a=t.get("replaceAll");e.bind("_areCommandsEnabled").to(r,"isEnabled",s,"isEnabled",o,"isEnabled",a,"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")}))}}function p(e){return"[object Range]"==Object.prototype.toString.apply(e)}function m(e){const t=Object.prototype.toString.apply(e);return"[object Window]"==t||"[object global]"==t}function g(e){return"[object Text]"==Object.prototype.toString.call(e)}const k=["top","right","bottom","left","width","height"];class w{constructor(e){const t=p(e);if(Object.defineProperty(this,"_source",{value:e._source||e,writable:!0,enumerable:!1}),v(e)||t)if(t){const t=w.getDomRangeRects(e);b(this,w.getBoundingRect(t))}else b(this,e.getBoundingClientRect());else if(m(e)){const{innerWidth:t,innerHeight:i}=e;b(this,{top:0,right:t,bottom:i,left:0,width:t,height:i})}else b(this,e)}clone(){return new w(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),width:0,height:0};return t.width=t.right-t.left,t.height=t.bottom-t.top,t.width<0||t.height<0?null:new w(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(!_(e)){let i=e.parentNode||e.commonAncestorContainer;for(;i&&!_(i);){const e=new w(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 k)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(m(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)}}(e);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 w(e));else{let i=e.startContainer;g(i)&&(i=i.parentNode);const n=new w(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,width:0,height:0};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 w(t))}}function b(e,t){for(const i of k)e[i]=t[i]}function _(e){return!!v(e)&&e===e.ownerDocument.body}function v(e){return null!==e&&"object"==typeof e&&1===e.nodeType&&"function"==typeof e.getBoundingClientRect}function x(e,t,i){const n=t.clone().moveBy(0,i),r=t.clone().moveBy(0,-i),s=new w(e).excludeScrollbarsAndBorders();if(![r,n].every((e=>s.contains(e)))){let{scrollX:o,scrollY:a}=e;R(r,s)?a-=s.top-t.top+i:T(n,s)&&(a+=t.bottom-s.bottom+i),V(t,s)?o-=s.left-t.left+i:C(t,s)&&(o+=t.right-s.right+i),e.scrollTo(o,a)}}function y(e,t){const i=F(e);let n,r;for(;e!=i.document.body;)r=t(),n=new w(e).excludeScrollbarsAndBorders(),n.contains(r)||(R(r,n)?e.scrollTop-=n.top-r.top:T(r,n)&&(e.scrollTop+=r.bottom-n.bottom),V(r,n)?e.scrollLeft-=n.left-r.left:C(r,n)&&(e.scrollLeft+=r.right-n.right)),e=e.parentNode}function T(e,t){return e.bottom>t.bottom}function R(e,t){return e.top<t.top}function V(e,t){return e.left<t.left}function C(e,t){return e.right>t.right}function F(e){return p(e)?e.startContainer.ownerDocument.defaultView:e.ownerDocument.defaultView}function I(e){if(p(e)){let t=e.commonAncestorContainer;return g(t)&&(t=t.parentNode),t}return e.parentNode}function E(e,t){const i=F(e),n=new w(e);if(i===t)return n;{let e=i;for(;e!=t;){const t=e.frameElement,i=new w(t).excludeScrollbarsAndBorders();n.moveBy(i.left,i.top),e=e.parent}}return n}class B extends e.Command{constructor(e,t){super(e),this.isEnabled=!0,this.affectsData=!1,this._state=t}execute(e,{matchCase:t,wholeWords:i}={}){const{editor:n}=this,{model:r}=n,s=n.plugins.get("FindAndReplaceUtils");let o;"string"==typeof e?(o=s.findByTextCallback(e,{matchCase:t,wholeWords:i}),this._state.searchText=e):o=e;const a=r.document.getRootNames().reduce(((e,t)=>s.updateFindResultFromRange(r.createRangeIn(r.document.getRoot(t)),r,o,e)),null);return this._state.clear(r),this._state.results.addMany(a),this._state.highlightedResult=a.get(0),"string"==typeof e&&(this._state.searchText=e),this._state.matchCase=!!t,this._state.matchWholeWords=!!i,{results:a,findCallback:o}}}class A extends e.Command{constructor(e,t){super(e),this.isEnabled=!0,this._state=t}_replace(e,t){const{model:i}=this.editor;i.change((n=>{const r=t.marker.getRange();if("$graveyard"===r.root.rootName)return void this._state.results.remove(t);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 N extends A{execute(e,t){this._replace(e,t)}}class S extends A{execute(e,t){const{editor:i}=this,{model:n}=i,s=i.plugins.get("FindAndReplaceUtils"),o=t instanceof r.Collection?t:n.document.getRootNames().reduce(((e,i)=>s.updateFindResultFromRange(n.createRangeIn(n.document.getRoot(i)),n,s.findByTextCallback(t,this._state),e)),null);o.length&&[...o].forEach((t=>{this._replace(e,t)}))}}class O extends e.Command{constructor(e,t){super(e),this.affectsData=!1,this._state=t,this.isEnabled=!1,this.listenTo(this._state.results,"change",(()=>{this.isEnabled=this._state.results.length>1}))}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 j extends O{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 M extends((0,r.ObservableMixin)()){constructor(e){super(),this.set("results",new r.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(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()}}const D="object"==typeof global&&global&&global.Object===Object&&global;var P="object"==typeof self&&self&&self.Object===Object&&self;const W=D||P||Function("return this")();const $=W.Symbol;const H=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};const L=Array.isArray;var U=Object.prototype,Z=U.hasOwnProperty,z=U.toString,K=$?$.toStringTag:void 0;const Y=function(e){var t=Z.call(e,K),i=e[K];try{e[K]=void 0;var n=!0}catch(e){}var r=z.call(e);return n&&(t?e[K]=i:delete e[K]),r};var q=Object.prototype.toString;const G=function(e){return q.call(e)};var J="[object Null]",X="[object Undefined]",Q=$?$.toStringTag:void 0;const ee=function(e){return null==e?void 0===e?X:J:Q&&Q in Object(e)?Y(e):G(e)};const te=function(e){return null!=e&&"object"==typeof e};var ie="[object Symbol]";const ne=function(e){return"symbol"==typeof e||te(e)&&ee(e)==ie};var re=1/0,se=$?$.prototype:void 0,oe=se?se.toString:void 0;const ae=function e(t){if("string"==typeof t)return t;if(L(t))return H(t,e)+"";if(ne(t))return oe?oe.call(t):"";var i=t+"";return"0"==i&&1/t==-re?"-0":i};const ce=function(e){return null==e?"":ae(e)};var le=/[\\^$.*+?()[\]{}|]/g,de=RegExp(le.source);const he=function(e){return(e=ce(e))&&de.test(e)?e.replace(le,"\\$&"):e};class fe extends e.Plugin{static get pluginName(){return"FindAndReplaceUtils"}updateFindResultFromRange(e,t,i,n){const s=n||new r.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:this.rangeToText(t.createRangeIn(o))});if(!e)return;e.forEach((e=>{const t=`findResult:${(0,r.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}(s,i);s.add({id:t,label:e.label,marker:i},a)}))}}))})),s}rangeToText(e){return Array.from(e.getItems()).reduce(((e,t)=>t.is("$text")||t.is("$textProxy")?e+t.data:`${e}\n`),"")}findByTextCallback(e,t){let i="gu";t.matchCase||(i+="i");let n=`(${he(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(ue)}}}function ue(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}}const pe=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)};const me=function(){return W.Date.now()};var ge=/\s/;const ke=function(e){for(var t=e.length;t--&&ge.test(e.charAt(t)););return t};var we=/^\s+/;const be=function(e){return e?e.slice(0,ke(e)+1).replace(we,""):e};var _e=NaN,ve=/^[-+]0x[0-9a-f]+$/i,xe=/^0b[01]+$/i,ye=/^0o[0-7]+$/i,Te=parseInt;const Re=function(e){if("number"==typeof e)return e;if(ne(e))return _e;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=xe.test(e);return i||ye.test(e)?Te(e.slice(2),i?2:8):ve.test(e)?_e:+e};var Ve="Expected a function",Ce=Math.max,Fe=Math.min;const Ie=function(e,t,i){var n,r,s,o,a,c,l=0,d=!1,h=!1,f=!0;if("function"!=typeof e)throw new TypeError(Ve);function u(t){var i=n,s=r;return n=r=void 0,l=t,o=e.apply(s,i)}function p(e){var i=e-c;return void 0===c||i>=t||i<0||h&&e-l>=s}function m(){var e=me();if(p(e))return g(e);a=setTimeout(m,function(e){var i=t-(e-c);return h?Fe(i,s-(e-l)):i}(e))}function g(e){return a=void 0,f&&n?u(e):(n=r=void 0,o)}function k(){var e=me(),i=p(e);if(n=arguments,r=this,c=e,i){if(void 0===a)return function(e){return l=e,a=setTimeout(m,t),d?u(e):o}(c);if(h)return clearTimeout(a),a=setTimeout(m,t),u(c)}return void 0===a&&(a=setTimeout(m,t)),o}return t=Re(t)||0,pe(i)&&(d=!!i.leading,s=(h="maxWait"in i)?Ce(Re(i.maxWait)||0,t):s,f="trailing"in i?!!i.trailing:f),k.cancel=function(){void 0!==a&&clearTimeout(a),l=0,n=c=r=a=void 0},k.flush=function(){return void 0===a?o:g(me())},k};var Ee=i(299),Be={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o()(Ee.Z,Be);Ee.Z.locals;class Ae extends e.Plugin{static get requires(){return[fe]}static get pluginName(){return"FindAndReplaceEditing"}init(){this._activeResults=null,this.state=new M(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=Ie(((e,t,i)=>{if(i){const e=this.editor.editing.view.domConverter,t=this.editor.editing.mapper.toViewRange(i.marker.getRange());!function({target:e,viewportOffset:t=0}){const i=F(e);let n=i,r=null;for(;n;){let s;s=I(n==i?e:r),y(s,(()=>E(e,n)));const o=E(e,n);if(x(n,o,t),n.parent!=n){if(r=n.frameElement,n=n.parent,!r)return}else n=null}}({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,s=t.model;s.document.differ.getChanges().forEach((e=>{"$text"===e.name||s.schema.isInline(e.position.nodeAfter)?(n.add(e.position.parent),[...s.markers.getMarkersAtPosition(e.position)].forEach((e=>{r.add(e.name)}))):"insert"===e.type&&n.add(e.position.nodeAfter)})),s.document.differ.getChangedMarkers().forEach((({name:e,data:{newRange:t}})=>{t&&"$graveyard"===t.start.root.rootName&&r.add(e)})),n.forEach((e=>{[...s.markers.getMarkersIntersectingRange(s.createRangeIn(e))].forEach((e=>r.add(e.name)))})),s.change((t=>{r.forEach((i=>{e.has(i)&&e.remove(i),t.removeMarker(i)}))})),n.forEach((n=>{t.plugins.get("FindAndReplaceUtils").updateFindResultFromRange(s.createRangeOn(n),s,i,e)}))}(this._activeResults,t,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 B(this.editor,this.state)),this.editor.commands.add("findNext",new O(this.editor,this.state)),this.editor.commands.add("findPrevious",new j(this.editor,this.state)),this.editor.commands.add("replace",new N(this.editor,this.state)),this.editor.commands.add("replaceAll",new S(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 Ne extends e.Plugin{static get requires(){return[Ae,u]}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()}))}}})(),(window.CKEditor5=window.CKEditor5||{}).findAndReplace=n})();
*/(()=>{var e={299:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),r=i.n(n)()((function(e){return e[1]}));r.push([e.id,".ck-find-result{background:var(--ck-color-highlight-background);color:var(--ck-color-text)}.ck-find-result_selected{background:#ff9633}",""]);const s=r},226:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),r=i.n(n)()((function(e){return e[1]}));r.push([e.id,".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{align-content:stretch;align-items:center;border:0;flex-direction:row;flex-wrap:nowrap;margin:0;padding:var(--ck-spacing-large)}.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{min-width:50px;width:100%}.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-left:0;margin-right:auto}.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;margin-bottom:var(--ck-spacing-standard);width:100%}.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{text-align:center;width:100%}.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>.ck-dropdown:not(.ck-labeled-field-view){flex-grow:0}.ck.ck-find-and-replace-form fieldset.ck-find-and-replace-form__replace>.ck-button:not(.ck-labeled-field-view)>.ck-button__label{text-align:center;width:100%}}",""]);const s=r},764:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),r=i.n(n)()((function(e){return e[1]}));r.push([e.id,'.ck-vertical-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck-vertical-form .ck-button:focus:after{display:none}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck.ck-responsive-form .ck-button:focus:after{display:none}}.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-width)*.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:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){border-radius:0;margin-top:var(--ck-spacing-large);padding:var(--ck-spacing-standard)}.ck.ck-responsive-form>.ck-button:last-child:not(:focus),.ck.ck-responsive-form>.ck-button:nth-last-child(2):not(:focus){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}[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)}}',""]);const s=r},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i=e(t);return t[2]?"@media ".concat(t[2]," {").concat(i,"}"):i})).join("")},t.i=function(e,i,n){"string"==typeof e&&(e=[[null,e,""]]);var r={};if(n)for(var s=0;s<this.length;s++){var o=this[s][0];null!=o&&(r[o]=!0)}for(var a=0;a<e.length;a++){var c=[].concat(e[a]);n&&r[c[0]]||(i&&(c[2]?c[2]="".concat(i," and ").concat(c[2]):c[2]=i),t.push(c))}},t}},62:(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 h=a(d),f={css:s[1],media:s[2],sourceMap:s[3]};-1!==h?(o[h].references++,o[h].updater(f)):o.push({identifier:d,updater:g(f,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,h=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function f(e,t,i,n){var r=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=h(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=f.bind(null,i,s,!1),r=f.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}}}},704:(e,t,i)=>{e.exports=i(79)("./src/core.js")},273:(e,t,i)=>{e.exports=i(79)("./src/ui.js")},209:(e,t,i)=>{e.exports=i(79)("./src/utils.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(n){var r=t[n];if(void 0!==r)return r.exports;var s=t[n]={id:n,exports:{}};return e[n](s,s.exports,i),s.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{FindAndReplace:()=>Ne,FindAndReplaceEditing:()=>Be,FindAndReplaceUI:()=>u,FindAndReplaceUtils:()=>fe,FindCommand:()=>A,FindNextCommand:()=>O,FindPreviousCommand:()=>j,ReplaceAllCommand:()=>S,ReplaceCommand:()=>N});var e=i(704),t=i(273),r=i(209),s=i(62),o=i.n(s),a=i(764),c={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o()(a.Z,c);a.Z.locals;var l=i(226),d={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o()(l.Z,d);l.Z.locals;const h='<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 f extends t.View{constructor(e){super(e);const i=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(i("Find in text…")),this._replaceInputView=this._createInputField(i("Replace with…")),this._findButtonView=this._createButton({label:i("Find"),class:"ck-button-find ck-button-action",withText:!0}),this._findPrevButtonView=this._createButton({label:i("Previous result"),class:"ck-button-prev",icon:h,keystroke:"Shift+F3",tooltip:!0}),this._findNextButtonView=this._createButton({label:i("Next result"),class:"ck-button-next",icon:h,keystroke:"F3",tooltip:!0}),this._optionsDropdown=this._createOptionsDropdown(),this._replaceButtonView=this._createButton({label:i("Replace"),class:"ck-button-replace",withText:!0}),this._replaceAllButtonView=this._createButton({label:i("Replace all"),class:"ck-button-replaceall",withText:!0}),this._findFieldsetView=this._createFindFieldset(),this._replaceFieldsetView=this._createReplaceFieldset(),this._focusTracker=new r.FocusTracker,this._keystrokes=new r.KeystrokeHandler,this._focusables=new t.ViewCollection,this._focusCycler=new t.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 t.FormHeaderView(e,{label:i("Find and replace")}),this._findFieldsetView,this._replaceFieldsetView]})}render(){super.render(),(0,t.submitHandler)({view:this}),this._initFocusCycling(),this._initKeystrokeHandling()}destroy(){super.destroy(),this._focusTracker.destroy(),this._keystrokes.destroy()}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,i=new t.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(),i.setTemplate({tag:"fieldset",attributes:{class:["ck","ck-find-and-replace-form__find"]},children:[this._findInputView,this._findButtonView,this._findPrevButtonView,this._findNextButtonView]}),i}_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,i=e.t,n=this.bindTemplate,s=new t.View(this.locale);this.bind("_resultsCounterText").to(this,"highlightOffset",this,"matchCount",((e,t)=>i("%0 of %1",[e,t]))),s.setTemplate({tag:"span",attributes:{class:["ck","ck-results-counter",n.if("isDirty","ck-hidden")]},children:[{text:n.to("_resultsCounterText")}]});const o=()=>{const t=this._findInputView.fieldView.element;if(!t||!(0,r.isVisible)(t))return;const i=new r.Rect(s.element).width,n="ltr"===e.uiLanguageDirection?"paddingRight":"paddingLeft";t.style[n]=i?`calc( 2 * var(--ck-spacing-standard) + ${i}px )`:""};this.on("change:_resultsCounterText",o,{priority:"low"}),this.on("change:isDirty",o,{priority:"low"}),this._findInputView.template.children[0].children.push(s)}_createReplaceFieldset(){const e=this.locale.t,i=new t.View(this.locale);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",((t,i)=>t||!i?"":e("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 i=this.locale.t,n=(0,t.createDropdown)(this.locale);n.class="ck-options-dropdown",n.buttonView.set({withText:!1,label:i("Show options"),icon:e.icons.cog,tooltip:!0});const s=new t.Model({withText:!0,label:i("Match case"),_isMatchCaseSwitch:!0}),o=new t.Model({withText:!0,label:i("Whole words only")});return s.bind("isOn").to(this,"_matchCase"),o.bind("isOn").to(this,"_wholeWordsOnly"),n.on("execute",(e=>{e.source._isMatchCaseSwitch?this._matchCase=!this._matchCase:this._wholeWordsOnly=!this._wholeWordsOnly,this.isDirty=!0})),(0,t.addListToDropdown)(n,new r.Collection([{type:"switchbutton",model:s},{type:"switchbutton",model:o}])),n}_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.isDirty||(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 i=new t.ButtonView(this.locale);return i.set(e),i}_createInputField(e){const i=new t.LabeledFieldView(this.locale,t.createLabeledInputText);return i.label=e,i}}class u extends e.Plugin{static get pluginName(){return"FindAndReplaceUI"}constructor(e){super(e),this.formView=null}init(){const e=this.editor;e.ui.componentFactory.add("findAndReplace",(i=>{const n=(0,t.createDropdown)(i),r=e.commands.get("find");return n.bind("isEnabled").to(r),n.once("change:isOpen",(()=>{this.formView=new((0,t.CssTransitionDisablerMixin)(f))(e.locale),n.panelView.children.add(this.formView),this._setupFormView(this.formView)})),n.on("change:isOpen",((e,t,i)=>{i?(this.formView.disableCssTransitions(),this.formView.reset(),this.formView._findInputView.fieldView.select(),this.formView.enableCssTransitions()):this.fire("searchReseted")}),{priority:"low"}),this._setupDropdownButton(n),n}))}_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.isEnabled&&(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,different: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}));const r=t.get("findNext"),s=t.get("findPrevious"),o=t.get("replace"),a=t.get("replaceAll");e.bind("_areCommandsEnabled").to(r,"isEnabled",s,"isEnabled",o,"isEnabled",a,"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")}))}}function p(e){return"[object Range]"==Object.prototype.toString.apply(e)}function m(e){const t=Object.prototype.toString.apply(e);return"[object Window]"==t||"[object global]"==t}function g(e){return"[object Text]"==Object.prototype.toString.call(e)}const k=["top","right","bottom","left","width","height"];class w{constructor(e){const t=p(e);if(Object.defineProperty(this,"_source",{value:e._source||e,writable:!0,enumerable:!1}),v(e)||t)if(t){const t=w.getDomRangeRects(e);b(this,w.getBoundingRect(t))}else b(this,e.getBoundingClientRect());else if(m(e)){const{innerWidth:t,innerHeight:i}=e;b(this,{top:0,right:t,bottom:i,left:0,width:t,height:i})}else b(this,e)}clone(){return new w(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),width:0,height:0};return t.width=t.right-t.left,t.height=t.bottom-t.top,t.width<0||t.height<0?null:new w(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(!_(e)){let i=e.parentNode||e.commonAncestorContainer;for(;i&&!_(i);){const e=new w(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 k)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(m(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)}}(e);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 w(e));else{let i=e.startContainer;g(i)&&(i=i.parentNode);const n=new w(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,width:0,height:0};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 w(t))}}function b(e,t){for(const i of k)e[i]=t[i]}function _(e){return!!v(e)&&e===e.ownerDocument.body}function v(e){return null!==e&&"object"==typeof e&&1===e.nodeType&&"function"==typeof e.getBoundingClientRect}function x(e,t,i){const n=t.clone().moveBy(0,i),r=t.clone().moveBy(0,-i),s=new w(e).excludeScrollbarsAndBorders();if(![r,n].every((e=>s.contains(e)))){let{scrollX:o,scrollY:a}=e;R(r,s)?a-=s.top-t.top+i:T(n,s)&&(a+=t.bottom-s.bottom+i),V(t,s)?o-=s.left-t.left+i:C(t,s)&&(o+=t.right-s.right+i),e.scrollTo(o,a)}}function y(e,t){const i=F(e);let n,r;for(;e!=i.document.body;)r=t(),n=new w(e).excludeScrollbarsAndBorders(),n.contains(r)||(R(r,n)?e.scrollTop-=n.top-r.top:T(r,n)&&(e.scrollTop+=r.bottom-n.bottom),V(r,n)?e.scrollLeft-=n.left-r.left:C(r,n)&&(e.scrollLeft+=r.right-n.right)),e=e.parentNode}function T(e,t){return e.bottom>t.bottom}function R(e,t){return e.top<t.top}function V(e,t){return e.left<t.left}function C(e,t){return e.right>t.right}function F(e){return p(e)?e.startContainer.ownerDocument.defaultView:e.ownerDocument.defaultView}function I(e){if(p(e)){let t=e.commonAncestorContainer;return g(t)&&(t=t.parentNode),t}return e.parentNode}function E(e,t){const i=F(e),n=new w(e);if(i===t)return n;{let e=i;for(;e!=t;){const t=e.frameElement,i=new w(t).excludeScrollbarsAndBorders();n.moveBy(i.left,i.top),e=e.parent}}return n}class A extends e.Command{constructor(e,t){super(e),this.isEnabled=!0,this.affectsData=!1,this._state=t}execute(e,{matchCase:t,wholeWords:i}={}){const{editor:n}=this,{model:r}=n,s=n.plugins.get("FindAndReplaceUtils");let o;"string"==typeof e?(o=s.findByTextCallback(e,{matchCase:t,wholeWords:i}),this._state.searchText=e):o=e;const a=r.document.getRootNames().reduce(((e,t)=>s.updateFindResultFromRange(r.createRangeIn(r.document.getRoot(t)),r,o,e)),null);return this._state.clear(r),this._state.results.addMany(a),this._state.highlightedResult=a.get(0),"string"==typeof e&&(this._state.searchText=e),this._state.matchCase=!!t,this._state.matchWholeWords=!!i,{results:a,findCallback:o}}}class B extends e.Command{constructor(e,t){super(e),this.isEnabled=!0,this._state=t}_replace(e,t){const{model:i}=this.editor;i.change((n=>{const r=t.marker.getRange();if("$graveyard"===r.root.rootName)return void this._state.results.remove(t);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 N extends B{execute(e,t){this._replace(e,t)}}class S extends B{execute(e,t){const{editor:i}=this,{model:n}=i,s=i.plugins.get("FindAndReplaceUtils"),o=t instanceof r.Collection?t:n.document.getRootNames().reduce(((e,i)=>s.updateFindResultFromRange(n.createRangeIn(n.document.getRoot(i)),n,s.findByTextCallback(t,this._state),e)),null);o.length&&[...o].forEach((t=>{this._replace(e,t)}))}}class O extends e.Command{constructor(e,t){super(e),this.affectsData=!1,this._state=t,this.isEnabled=!1,this.listenTo(this._state.results,"change",(()=>{this.isEnabled=this._state.results.length>1}))}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 j extends O{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 M extends((0,r.ObservableMixin)()){constructor(e){super(),this.set("results",new r.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(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()}}const P="object"==typeof global&&global&&global.Object===Object&&global;var D="object"==typeof self&&self&&self.Object===Object&&self;const W=P||D||Function("return this")();const $=W.Symbol;const H=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};const L=Array.isArray;var U=Object.prototype,Z=U.hasOwnProperty,z=U.toString,K=$?$.toStringTag:void 0;const Y=function(e){var t=Z.call(e,K),i=e[K];try{e[K]=void 0;var n=!0}catch(e){}var r=z.call(e);return n&&(t?e[K]=i:delete e[K]),r};var q=Object.prototype.toString;const G=function(e){return q.call(e)};var J="[object Null]",X="[object Undefined]",Q=$?$.toStringTag:void 0;const ee=function(e){return null==e?void 0===e?X:J:Q&&Q in Object(e)?Y(e):G(e)};const te=function(e){return null!=e&&"object"==typeof e};var ie="[object Symbol]";const ne=function(e){return"symbol"==typeof e||te(e)&&ee(e)==ie};var re=1/0,se=$?$.prototype:void 0,oe=se?se.toString:void 0;const ae=function e(t){if("string"==typeof t)return t;if(L(t))return H(t,e)+"";if(ne(t))return oe?oe.call(t):"";var i=t+"";return"0"==i&&1/t==-re?"-0":i};const ce=function(e){return null==e?"":ae(e)};var le=/[\\^$.*+?()[\]{}|]/g,de=RegExp(le.source);const he=function(e){return(e=ce(e))&&de.test(e)?e.replace(le,"\\$&"):e};class fe extends e.Plugin{static get pluginName(){return"FindAndReplaceUtils"}updateFindResultFromRange(e,t,i,n){const s=n||new r.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:this.rangeToText(t.createRangeIn(o))});if(!e)return;e.forEach((e=>{const t=`findResult:${(0,r.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}(s,i);s.add({id:t,label:e.label,marker:i},a)}))}}))})),s}rangeToText(e){return Array.from(e.getItems()).reduce(((e,t)=>t.is("$text")||t.is("$textProxy")?e+t.data:`${e}\n`),"")}findByTextCallback(e,t){let i="gu";t.matchCase||(i+="i");let n=`(${he(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(ue)}}}function ue(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}}const pe=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)};const me=function(){return W.Date.now()};var ge=/\s/;const ke=function(e){for(var t=e.length;t--&&ge.test(e.charAt(t)););return t};var we=/^\s+/;const be=function(e){return e?e.slice(0,ke(e)+1).replace(we,""):e};var _e=NaN,ve=/^[-+]0x[0-9a-f]+$/i,xe=/^0b[01]+$/i,ye=/^0o[0-7]+$/i,Te=parseInt;const Re=function(e){if("number"==typeof e)return e;if(ne(e))return _e;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=xe.test(e);return i||ye.test(e)?Te(e.slice(2),i?2:8):ve.test(e)?_e:+e};var Ve="Expected a function",Ce=Math.max,Fe=Math.min;const Ie=function(e,t,i){var n,r,s,o,a,c,l=0,d=!1,h=!1,f=!0;if("function"!=typeof e)throw new TypeError(Ve);function u(t){var i=n,s=r;return n=r=void 0,l=t,o=e.apply(s,i)}function p(e){var i=e-c;return void 0===c||i>=t||i<0||h&&e-l>=s}function m(){var e=me();if(p(e))return g(e);a=setTimeout(m,function(e){var i=t-(e-c);return h?Fe(i,s-(e-l)):i}(e))}function g(e){return a=void 0,f&&n?u(e):(n=r=void 0,o)}function k(){var e=me(),i=p(e);if(n=arguments,r=this,c=e,i){if(void 0===a)return function(e){return l=e,a=setTimeout(m,t),d?u(e):o}(c);if(h)return clearTimeout(a),a=setTimeout(m,t),u(c)}return void 0===a&&(a=setTimeout(m,t)),o}return t=Re(t)||0,pe(i)&&(d=!!i.leading,s=(h="maxWait"in i)?Ce(Re(i.maxWait)||0,t):s,f="trailing"in i?!!i.trailing:f),k.cancel=function(){void 0!==a&&clearTimeout(a),l=0,n=c=r=a=void 0},k.flush=function(){return void 0===a?o:g(me())},k};var Ee=i(299),Ae={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o()(Ee.Z,Ae);Ee.Z.locals;class Be extends e.Plugin{static get requires(){return[fe]}static get pluginName(){return"FindAndReplaceEditing"}init(){this._activeResults=null,this.state=new M(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=Ie(((e,t,i)=>{if(i){const e=this.editor.editing.view.domConverter,t=this.editor.editing.mapper.toViewRange(i.marker.getRange());!function({target:e,viewportOffset:t=0}){const i=F(e);let n=i,r=null;for(;n;){let s;s=I(n==i?e:r),y(s,(()=>E(e,n)));const o=E(e,n);if(x(n,o,t),n.parent!=n){if(r=n.frameElement,n=n.parent,!r)return}else n=null}}({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,s=t.model;s.document.differ.getChanges().forEach((e=>{"$text"===e.name||s.schema.isInline(e.position.nodeAfter)?(n.add(e.position.parent),[...s.markers.getMarkersAtPosition(e.position)].forEach((e=>{r.add(e.name)}))):"insert"===e.type&&n.add(e.position.nodeAfter)})),s.document.differ.getChangedMarkers().forEach((({name:e,data:{newRange:t}})=>{t&&"$graveyard"===t.start.root.rootName&&r.add(e)})),n.forEach((e=>{[...s.markers.getMarkersIntersectingRange(s.createRangeIn(e))].forEach((e=>r.add(e.name)))})),s.change((t=>{r.forEach((i=>{e.has(i)&&e.remove(i),t.removeMarker(i)}))})),n.forEach((n=>{t.plugins.get("FindAndReplaceUtils").updateFindResultFromRange(s.createRangeOn(n),s,i,e)}))}(this._activeResults,t,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 A(this.editor,this.state)),this.editor.commands.add("findNext",new O(this.editor,this.state)),this.editor.commands.add("findPrevious",new j(this.editor,this.state)),this.editor.commands.add("replace",new N(this.editor,this.state)),this.editor.commands.add("replaceAll",new S(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 Ne extends e.Plugin{static get requires(){return[Be,u]}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()}))}}})(),(window.CKEditor5=window.CKEditor5||{}).findAndReplace=n})();
{
"name": "@ckeditor/ckeditor5-find-and-replace",
"version": "37.0.0-alpha.0",
"version": "37.0.0-alpha.1",
"description": "Find and replace feature for CKEditor 5.",

@@ -15,24 +15,25 @@ "keywords": [

"dependencies": {
"@ckeditor/ckeditor5-ui": "^37.0.0-alpha.0",
"@ckeditor/ckeditor5-utils": "^37.0.0-alpha.0",
"ckeditor5": "^37.0.0-alpha.0",
"@ckeditor/ckeditor5-ui": "^37.0.0-alpha.1",
"@ckeditor/ckeditor5-utils": "^37.0.0-alpha.1",
"ckeditor5": "^37.0.0-alpha.1",
"lodash-es": "^4.17.15"
},
"devDependencies": {
"@ckeditor/ckeditor5-dev-utils": "^34.0.0",
"@ckeditor/ckeditor5-basic-styles": "^37.0.0-alpha.0",
"@ckeditor/ckeditor5-core": "^37.0.0-alpha.0",
"@ckeditor/ckeditor5-editor-classic": "^37.0.0-alpha.0",
"@ckeditor/ckeditor5-editor-decoupled": "^37.0.0-alpha.0",
"@ckeditor/ckeditor5-engine": "^37.0.0-alpha.0",
"@ckeditor/ckeditor5-essentials": "^37.0.0-alpha.0",
"@ckeditor/ckeditor5-heading": "^37.0.0-alpha.0",
"@ckeditor/ckeditor5-font": "^37.0.0-alpha.0",
"@ckeditor/ckeditor5-highlight": "^37.0.0-alpha.0",
"@ckeditor/ckeditor5-link": "^37.0.0-alpha.0",
"@ckeditor/ckeditor5-list": "^37.0.0-alpha.0",
"@ckeditor/ckeditor5-paragraph": "^37.0.0-alpha.0",
"@ckeditor/ckeditor5-source-editing": "^37.0.0-alpha.0",
"@ckeditor/ckeditor5-theme-lark": "^37.0.0-alpha.0",
"@ckeditor/ckeditor5-undo": "^37.0.0-alpha.0",
"@ckeditor/ckeditor5-dev-utils": "^35.0.0",
"@ckeditor/ckeditor5-basic-styles": "^37.0.0-alpha.1",
"@ckeditor/ckeditor5-core": "^37.0.0-alpha.1",
"@ckeditor/ckeditor5-editor-classic": "^37.0.0-alpha.1",
"@ckeditor/ckeditor5-editor-decoupled": "^37.0.0-alpha.1",
"@ckeditor/ckeditor5-editor-multi-root": "^37.0.0-alpha.1",
"@ckeditor/ckeditor5-engine": "^37.0.0-alpha.1",
"@ckeditor/ckeditor5-essentials": "^37.0.0-alpha.1",
"@ckeditor/ckeditor5-heading": "^37.0.0-alpha.1",
"@ckeditor/ckeditor5-font": "^37.0.0-alpha.1",
"@ckeditor/ckeditor5-highlight": "^37.0.0-alpha.1",
"@ckeditor/ckeditor5-link": "^37.0.0-alpha.1",
"@ckeditor/ckeditor5-list": "^37.0.0-alpha.1",
"@ckeditor/ckeditor5-paragraph": "^37.0.0-alpha.1",
"@ckeditor/ckeditor5-source-editing": "^37.0.0-alpha.1",
"@ckeditor/ckeditor5-theme-lark": "^37.0.0-alpha.1",
"@ckeditor/ckeditor5-undo": "^37.0.0-alpha.1",
"typescript": "^4.8.4",

@@ -66,3 +67,3 @@ "webpack": "^5.58.1",

"dll:build": "webpack",
"build": "tsc -p ./tsconfig.release.json",
"build": "tsc -p ./tsconfig.json",
"postversion": "npm run build"

@@ -69,0 +70,0 @@ },

@@ -41,6 +41,1 @@ /**

}
declare module '@ckeditor/ckeditor5-core' {
interface PluginsMap {
[FindAndReplace.pluginName]: FindAndReplace;
}
}

@@ -63,6 +63,1 @@ /**

}
declare module '@ckeditor/ckeditor5-core' {
interface PluginsMap {
[FindAndReplaceEditing.pluginName]: FindAndReplaceEditing;
}
}

@@ -50,3 +50,3 @@ /**

*
* @eventName searchReseted
* @eventName ~FindAndReplaceUI#searchReseted
*/

@@ -57,6 +57,1 @@ export type SearchResetedEvent = {

};
declare module '@ckeditor/ckeditor5-core' {
interface PluginsMap {
[FindAndReplaceUI.pluginName]: FindAndReplaceUI;
}
}

@@ -68,6 +68,1 @@ /**

}
declare module '@ckeditor/ckeditor5-core' {
interface PluginsMap {
[FindAndReplaceUtils.pluginName]: FindAndReplaceUtils;
}
}

@@ -52,6 +52,1 @@ /**

}
declare module '@ckeditor/ckeditor5-core' {
interface CommandsMap {
'find': FindCommand;
}
}

@@ -36,6 +36,1 @@ /**

}
declare module '@ckeditor/ckeditor5-core' {
interface CommandsMap {
'findNext': FindNextCommand;
}
}

@@ -20,6 +20,1 @@ /**

}
declare module '@ckeditor/ckeditor5-core' {
interface CommandsMap {
'findPrevious': FindPreviousCommand;
}
}

@@ -9,2 +9,10 @@ /**

export { default as FindAndReplace } from './findandreplace';
export { default as FindAndReplaceEditing } from './findandreplaceediting';
export { default as FindAndReplaceUI } from './findandreplaceui';
export { default as FindAndReplaceUtils } from './findandreplaceutils';
export { default as FindCommand } from './findcommand';
export { default as FindNextCommand } from './findnextcommand';
export { default as FindPreviousCommand } from './findpreviouscommand';
export { default as ReplaceCommand } from './replacecommand';
export { default as ReplaceAllCommand } from './replaceallcommand';
import './augmentation';

@@ -9,2 +9,10 @@ /**

export { default as FindAndReplace } from './findandreplace';
export { default as FindAndReplaceEditing } from './findandreplaceediting';
export { default as FindAndReplaceUI } from './findandreplaceui';
export { default as FindAndReplaceUtils } from './findandreplaceutils';
export { default as FindCommand } from './findcommand';
export { default as FindNextCommand } from './findnextcommand';
export { default as FindPreviousCommand } from './findpreviouscommand';
export { default as ReplaceCommand } from './replacecommand';
export { default as ReplaceAllCommand } from './replaceallcommand';
import './augmentation';

@@ -36,6 +36,1 @@ /**

}
declare module '@ckeditor/ckeditor5-core' {
interface CommandsMap {
'replaceAll': ReplaceAllCommand;
}
}

@@ -23,6 +23,1 @@ /**

}
declare module '@ckeditor/ckeditor5-core' {
interface CommandsMap {
'replace': ReplaceCommand;
}
}

@@ -239,3 +239,3 @@ /**

*
* @eventName findNext
* @eventName ~FindAndReplaceFormView#findNext
* @param data The event data.

@@ -254,3 +254,3 @@ */

*
* @eventName findPrevious
* @eventName ~FindAndReplaceFormView#findPrevious
* @param data The event data.

@@ -271,3 +271,3 @@ */

*
* @eventName replace
* @eventName ~FindAndReplaceFormView#replace
* @param data The event data.

@@ -285,3 +285,3 @@ */

*
* @eventName replaceAll
* @eventName ~FindAndReplaceFormView#replaceAll
* @param data The event data.

@@ -288,0 +288,0 @@ */

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc