/* Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ (function() { function C(c) { return ( c.type == CKEDITOR.NODE_TEXT && 0 < c.getLength() && (!m || !c.isReadOnly()) ); } function v(c) { return !( c.type == CKEDITOR.NODE_ELEMENT && c.isBlockBoundary( CKEDITOR.tools.extend( {}, CKEDITOR.dtd.$empty, CKEDITOR.dtd.$nonEditable ) ) ); } var m, w = function() { return { textNode: this.textNode, offset: this.offset, character: this.textNode ? this.textNode.getText().charAt(this.offset) : null, hitMatchBoundary: this._.matchBoundary }; }, x = ["find", "replace"], q = [ ["txtFindFind", "txtFindReplace"], ["txtFindCaseChk", "txtReplaceCaseChk"], ["txtFindWordChk", "txtReplaceWordChk"], ["txtFindCyclic", "txtReplaceCyclic"] ]; CKEDITOR.dialog.add("find", function(c) { function n(a, b) { var d = this, c = new CKEDITOR.dom.walker(a); c.guard = b ? v : function(a) { !v(a) && (d._.matchBoundary = !0); }; c.evaluator = C; c.breakOnFalse = 1; a.startContainer.type == CKEDITOR.NODE_TEXT && ((this.textNode = a.startContainer), (this.offset = a.startOffset - 1)); this._ = { matchWord: b, walker: c, matchBoundary: !1 }; } function y(a, b) { var d = c.createRange(); d.setStart(a.textNode, b ? a.offset : a.offset + 1); d.setEndAt(c.editable(), CKEDITOR.POSITION_BEFORE_END); return d; } function r(a) { var b = c.getSelection().getRanges()[0], d = c.editable(); b && !a ? ((a = b.clone()), a.collapse(!0)) : ((a = c.createRange()), a.setStartAt(d, CKEDITOR.POSITION_AFTER_START)); a.setEndAt(d, CKEDITOR.POSITION_BEFORE_END); return a; } var z = new CKEDITOR.style( CKEDITOR.tools.extend( { attributes: { "data-cke-highlight": 1 }, fullMatch: 1, ignoreReadonly: 1, childRule: function() { return 0; } }, c.config.find_highlight, !0 ) ); n.prototype = { next: function() { return this.move(); }, back: function() { return this.move(!0); }, move: function(a) { var b = this.textNode; if (null === b) return w.call(this); this._.matchBoundary = !1; if (b && a && 0 < this.offset) this.offset--; else if (b && this.offset < b.getLength() - 1) this.offset++; else { for ( b = null; !b && !((b = this._.walker[a ? "previous" : "next"].call(this._.walker)), (this._.matchWord && !b) || this._.walker._.end); ); this.offset = (this.textNode = b) ? (a ? b.getLength() - 1 : 0) : 0; } return w.call(this); } }; var t = function(a, b) { this._ = { walker: a, cursors: [], rangeLength: b, highlightRange: null, isMatched: 0 }; }; t.prototype = { toDomRange: function() { var a = c.createRange(), b = this._.cursors; if (1 > b.length) { var d = this._.walker.textNode; if (d) a.setStartAfter(d); else return null; } else (d = b[0]), (b = b[b.length - 1]), a.setStart(d.textNode, d.offset), a.setEnd(b.textNode, b.offset + 1); return a; }, updateFromDomRange: function(a) { var b = new n(a); this._.cursors = []; do (a = b.next()), a.character && this._.cursors.push(a); while (a.character); this._.rangeLength = this._.cursors.length; }, setMatched: function() { this._.isMatched = !0; }, clearMatched: function() { this._.isMatched = !1; }, isMatched: function() { return this._.isMatched; }, highlight: function() { if (!(1 > this._.cursors.length)) { this._.highlightRange && this.removeHighlight(); var a = this.toDomRange(), b = a.createBookmark(); z.applyToRange(a, c); a.moveToBookmark(b); this._.highlightRange = a; b = a.startContainer; b.type != CKEDITOR.NODE_ELEMENT && (b = b.getParent()); b.scrollIntoView(); this.updateFromDomRange(a); } }, removeHighlight: function() { if (this._.highlightRange) { var a = this._.highlightRange.createBookmark(); z.removeFromRange(this._.highlightRange, c); this._.highlightRange.moveToBookmark(a); this.updateFromDomRange(this._.highlightRange); this._.highlightRange = null; } }, isReadOnly: function() { return this._.highlightRange ? this._.highlightRange.startContainer.isReadOnly() : 0; }, moveBack: function() { var a = this._.walker.back(), b = this._.cursors; a.hitMatchBoundary && (this._.cursors = b = []); b.unshift(a); b.length > this._.rangeLength && b.pop(); return a; }, moveNext: function() { var a = this._.walker.next(), b = this._.cursors; a.hitMatchBoundary && (this._.cursors = b = []); b.push(a); b.length > this._.rangeLength && b.shift(); return a; }, getEndCharacter: function() { var a = this._.cursors; return 1 > a.length ? null : a[a.length - 1].character; }, getNextCharacterRange: function(a) { var b, d; d = this._.cursors; d = (b = d[d.length - 1]) && b.textNode ? new n(y(b)) : this._.walker; return new t(d, a); }, getCursors: function() { return this._.cursors; } }; var A = function(a, b) { var d = [-1]; b && (a = a.toLowerCase()); for (var c = 0; c < a.length; c++) for ( d.push(d[c] + 1); 0 < d[c + 1] && a.charAt(c) != a.charAt(d[c + 1] - 1); ) d[c + 1] = d[d[c + 1] - 1] + 1; this._ = { overlap: d, state: 0, ignoreCase: !!b, pattern: a }; }; A.prototype = { feedCharacter: function(a) { for (this._.ignoreCase && (a = a.toLowerCase()); ; ) { if (a == this._.pattern.charAt(this._.state)) return ( this._.state++, this._.state == this._.pattern.length ? ((this._.state = 0), 2) : 1 ); if (this._.state) this._.state = this._.overlap[this._.state]; else return 0; } }, reset: function() { this._.state = 0; } }; var E = /[.,"'?!;: \u0085\u00a0\u1680\u280e\u2028\u2029\u202f\u205f\u3000]/, B = function(a) { if (!a) return !0; var b = a.charCodeAt(0); return (9 <= b && 13 >= b) || (8192 <= b && 8202 >= b) || E.test(a); }, f = { searchRange: null, matchRange: null, find: function(a, b, d, e, D, u) { this.matchRange ? (this.matchRange.removeHighlight(), (this.matchRange = this.matchRange.getNextCharacterRange( a.length ))) : (this.matchRange = new t(new n(this.searchRange), a.length)); for (var h = new A(a, !b), k = 0, l = "%"; null !== l; ) { for ( this.matchRange.moveNext(); (l = this.matchRange.getEndCharacter()); ) { k = h.feedCharacter(l); if (2 == k) break; this.matchRange.moveNext().hitMatchBoundary && h.reset(); } if (2 == k) { if (d) { var g = this.matchRange.getCursors(), p = g[g.length - 1], g = g[0], m = c.createRange(); m.setStartAt(c.editable(), CKEDITOR.POSITION_AFTER_START); m.setEnd(g.textNode, g.offset); g = m; p = y(p); g.trim(); p.trim(); g = new n(g, !0); p = new n(p, !0); if (!B(g.back().character) || !B(p.next().character)) continue; } this.matchRange.setMatched(); !1 !== D && this.matchRange.highlight(); return !0; } } this.matchRange.clearMatched(); this.matchRange.removeHighlight(); return e && !u ? ((this.searchRange = r(1)), (this.matchRange = null), f.find.apply( this, Array.prototype.slice.call(arguments).concat([!0]) )) : !1; }, replaceCounter: 0, replace: function(a, b, d, e, f, u, h) { m = 1; a = 0; a = this.hasMatchOptionsChanged(b, e, f); if ( !this.matchRange || !this.matchRange.isMatched() || this.matchRange._.isReplaced || this.matchRange.isReadOnly() || a ) a && this.matchRange && (this.matchRange.clearMatched(), this.matchRange.removeHighlight(), (this.matchRange = null)), (a = this.find(b, e, f, u, !h)); else { this.matchRange.removeHighlight(); b = this.matchRange.toDomRange(); d = c.document.createText(d); if (!h) { var k = c.getSelection(); k.selectRanges([b]); c.fire("saveSnapshot"); } b.deleteContents(); b.insertNode(d); h || (k.selectRanges([b]), c.fire("saveSnapshot")); this.matchRange.updateFromDomRange(b); h || this.matchRange.highlight(); this.matchRange._.isReplaced = !0; this.replaceCounter++; a = 1; } m = 0; return a; }, matchOptions: null, hasMatchOptionsChanged: function(a, b, d) { a = [a, b, d].join("."); b = this.matchOptions && this.matchOptions != a; this.matchOptions = a; return b; } }, e = c.lang.find; return { title: e.title, resizable: CKEDITOR.DIALOG_RESIZE_NONE, minWidth: 350, minHeight: 170, buttons: [ CKEDITOR.dialog.cancelButton(c, { label: c.lang.common.close }) ], contents: [ { id: "find", label: e.find, title: e.find, accessKey: "", elements: [ { type: "hbox", widths: ["230px", "90px"], children: [ { type: "text", id: "txtFindFind", label: e.findWhat, isChanged: !1, labelLayout: "horizontal", accessKey: "F" }, { type: "button", id: "btnFind", align: "left", style: "width:100%", label: e.find, onClick: function() { var a = this.getDialog(); f.find( a.getValueOf("find", "txtFindFind"), a.getValueOf("find", "txtFindCaseChk"), a.getValueOf("find", "txtFindWordChk"), a.getValueOf("find", "txtFindCyclic") ) || alert(e.notFoundMsg); } } ] }, { type: "fieldset", className: "cke_dialog_find_fieldset", label: CKEDITOR.tools.htmlEncode(e.findOptions), style: "margin-top:29px", children: [ { type: "vbox", padding: 0, children: [ { type: "checkbox", id: "txtFindCaseChk", isChanged: !1, label: e.matchCase }, { type: "checkbox", id: "txtFindWordChk", isChanged: !1, label: e.matchWord }, { type: "checkbox", id: "txtFindCyclic", isChanged: !1, default: !0, label: e.matchCyclic } ] } ] } ] }, { id: "replace", label: e.replace, accessKey: "M", elements: [ { type: "hbox", widths: ["230px", "90px"], children: [ { type: "text", id: "txtFindReplace", label: e.findWhat, isChanged: !1, labelLayout: "horizontal", accessKey: "F" }, { type: "button", id: "btnFindReplace", align: "left", style: "width:100%", label: e.replace, onClick: function() { var a = this.getDialog(); f.replace( a, a.getValueOf("replace", "txtFindReplace"), a.getValueOf("replace", "txtReplace"), a.getValueOf("replace", "txtReplaceCaseChk"), a.getValueOf("replace", "txtReplaceWordChk"), a.getValueOf("replace", "txtReplaceCyclic") ) || alert(e.notFoundMsg); } } ] }, { type: "hbox", widths: ["230px", "90px"], children: [ { type: "text", id: "txtReplace", label: e.replaceWith, isChanged: !1, labelLayout: "horizontal", accessKey: "R" }, { type: "button", id: "btnReplaceAll", align: "left", style: "width:100%", label: e.replaceAll, isChanged: !1, onClick: function() { var a = this.getDialog(); f.replaceCounter = 0; f.searchRange = r(1); f.matchRange && (f.matchRange.removeHighlight(), (f.matchRange = null)); for ( c.fire("saveSnapshot"); f.replace( a, a.getValueOf("replace", "txtFindReplace"), a.getValueOf("replace", "txtReplace"), a.getValueOf("replace", "txtReplaceCaseChk"), a.getValueOf("replace", "txtReplaceWordChk"), !1, !0 ); ); f.replaceCounter ? (alert( e.replaceSuccessMsg.replace(/%1/, f.replaceCounter) ), c.fire("saveSnapshot")) : alert(e.notFoundMsg); } } ] }, { type: "fieldset", label: CKEDITOR.tools.htmlEncode(e.findOptions), children: [ { type: "vbox", padding: 0, children: [ { type: "checkbox", id: "txtReplaceCaseChk", isChanged: !1, label: e.matchCase }, { type: "checkbox", id: "txtReplaceWordChk", isChanged: !1, label: e.matchWord }, { type: "checkbox", id: "txtReplaceCyclic", isChanged: !1, default: !0, label: e.matchCyclic } ] } ] } ] } ], onLoad: function() { var a = this, b, d = 0; this.on("hide", function() { d = 0; }); this.on("show", function() { d = 1; }); this.selectPage = CKEDITOR.tools.override(this.selectPage, function(c) { return function(e) { c.call(a, e); var f = a._.tabs[e], h; h = "find" === e ? "txtFindWordChk" : "txtReplaceWordChk"; b = a.getContentElement( e, "find" === e ? "txtFindFind" : "txtFindReplace" ); a.getContentElement(e, h); f.initialized || (CKEDITOR.document.getById(b._.inputId), (f.initialized = !0)); if (d) { var k; e = "find" === e ? 1 : 0; var f = 1 - e, l, g = q.length; for (l = 0; l < g; l++) (h = this.getContentElement(x[e], q[l][e])), (k = this.getContentElement(x[f], q[l][f])), k.setValue(h.getValue()); } }; }); }, onShow: function() { f.searchRange = r(); var a = this._.currentTabId, b = this.getParentEditor() .getSelection() .getSelectedText(), c = this.getContentElement( a, "find" == a ? "txtFindFind" : "txtFindReplace" ); c.setValue(b); c.select(); this[ ("find" == a && this._.editor.readOnly ? "hide" : "show") + "Page" ]("replace"); }, onHide: function() { var a; f.matchRange && f.matchRange.isMatched() && (f.matchRange.removeHighlight(), (a = f.matchRange.toDomRange()) && c.getSelection().selectRanges([a]), c.focus()); delete f.matchRange; }, onFocus: function() { return "replace" == this._.currentTabId ? this.getContentElement("replace", "txtFindReplace") : this.getContentElement("find", "txtFindFind"); } }; }); })();