12345 |
- /*
- Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
- For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
- */
- !function(){function t(t,e){for(var n=t.length,r=0,a=0;n>a;a+=1){var s=t[a];if(e>=r&&r+s.getText().length>=e)return{element:s,offset:e-r};r+=s.getText().length}return null}function e(t,e){for(var n=0;n<t.length;n++)if(e(t[n]))return n;return-1}CKEDITOR.plugins.add("textmatch",{}),CKEDITOR.plugins.textMatch={},CKEDITOR.plugins.textMatch.match=function(t,e){var n=CKEDITOR.plugins.textMatch.getTextAndOffset(t),r=CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE,a=0;return n?(0==n.text.indexOf(r)&&(a=r.length,n.text=n.text.replace(r,""),n.offset-=a),(r=e(n.text,n.offset))?{range:CKEDITOR.plugins.textMatch.getRangeInText(t,r.start,r.end+a),text:n.text.slice(r.start,r.end)}:null):void 0},CKEDITOR.plugins.textMatch.getTextAndOffset=function(t){if(!t.collapsed)return null;var n,r="",a=0,s=CKEDITOR.plugins.textMatch.getAdjacentTextNodes(t),g=!1,f=t.startContainer.type!=CKEDITOR.NODE_ELEMENT;n=f?e(s,function(e){return t.startContainer.equals(e)}):t.startOffset-(s[0]?s[0].getIndex():0);for(var l=s.length,o=0;l>o;o+=1){var i=s[o],r=r+i.getText();g||(f?o==n?(g=!0,a+=t.startOffset):a+=i.getText().length:(o==n&&(g=!0),o>0&&(a+=s[o-1].getText().length),l==n&&o+1==l&&(a+=i.getText().length)))}return{text:r,offset:a}},CKEDITOR.plugins.textMatch.getRangeInText=function(e,n,r){var a=new CKEDITOR.dom.range(e.root);return e=CKEDITOR.plugins.textMatch.getAdjacentTextNodes(e),n=t(e,n),r=t(e,r),a.setStart(n.element,n.offset),a.setEnd(r.element,r.offset),a},CKEDITOR.plugins.textMatch.getAdjacentTextNodes=function(t){if(!t.collapsed)return[];var e,n,r,a=[];for(t.startContainer.type!=CKEDITOR.NODE_ELEMENT?(e=t.startContainer.getParent().getChildren(),t=t.startContainer.getIndex()):(e=t.startContainer.getChildren(),t=t.startOffset),r=t;(n=e.getItem(--r))&&n.type==CKEDITOR.NODE_TEXT;)a.unshift(n);for(r=t;(n=e.getItem(r++))&&n.type==CKEDITOR.NODE_TEXT;)a.push(n);return a}}();
|