tinymce-editor/copy_this/modules/hdi/hdi-tinymce/tinymce/plugins/spellchecker/plugin.min.js
Marat.Bedoev@heiner-direct.com 60b82b714f TinyMCE 4.0.20
2014-03-24 01:27:32 +01:00

1 line
8.1 KiB
JavaScript

!function(e,t){"use strict";function n(e,t){for(var n,o=[],r=0;r<e.length;++r){if(n=l[e[r]]||i(e[r]),!n)throw"module definition dependecy not found: "+e[r];o.push(n)}t.apply(null,o)}function o(e,o,r){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(o===t)throw"invalid module definition, dependencies must be specified";if(r===t)throw"invalid module definition, definition function must be specified";n(o,function(){l[e]=r.apply(null,arguments)})}function r(e){return!!l[e]}function i(t){for(var n=e,o=t.split(/[.\/]/),r=0;r<o.length;++r){if(!n[o[r]])return;n=n[o[r]]}return n}function a(n){for(var o=0;o<n.length;o++){for(var r=e,i=n[o],a=i.split(/[.\/]/),s=0;s<a.length-1;++s)r[a[s]]===t&&(r[a[s]]={}),r=r[a[s]];r[a[a.length-1]]=l[i]}}var l={},s="tinymce/spellcheckerplugin/DomTextMatcher",c="tinymce/spellcheckerplugin/Plugin",d="tinymce/PluginManager",u="tinymce/util/Tools",f="tinymce/ui/Menu",m="tinymce/dom/DOMUtils",p="tinymce/util/JSONRequest",g="tinymce/util/URI";o(s,[],function(){return function(e,t){function n(e,t){if(!e[0])throw"findAndReplaceDOMText cannot handle zero-length matches";return{start:e.index,end:e.index+e[0].length,text:e[0],data:t}}function o(e){var t;if(3===e.nodeType)return e.data;if(S[e.nodeName]&&!N[e.nodeName])return"";if(t="",(N[e.nodeName]||k[e.nodeName])&&(t+="\n"),e=e.firstChild)do t+=o(e);while(e=e.nextSibling);return t}function r(e,t,n){var o,r,i,a,l=[],s=0,c=e,d,u=0;t=t.slice(0),t.sort(function(e,t){return e.start-t.start}),d=t.shift();e:for(;;){if((N[c.nodeName]||k[c.nodeName])&&s++,3===c.nodeType&&(!r&&c.length+s>=d.end?(r=c,a=d.end-s):o&&l.push(c),!o&&c.length+s>d.start&&(o=c,i=d.start-s),s+=c.length),o&&r){if(c=n({startNode:o,startNodeIndex:i,endNode:r,endNodeIndex:a,innerNodes:l,match:d.text,matchIndex:u}),s-=r.length-a,o=null,r=null,l=[],d=t.shift(),u++,!d)break}else{if((!S[c.nodeName]||N[c.nodeName])&&c.firstChild){c=c.firstChild;continue}if(c.nextSibling){c=c.nextSibling;continue}}for(;;){if(c.nextSibling){c=c.nextSibling;break}if(c.parentNode===e)break e;c=c.parentNode}}}function i(e){function t(t,n){var o=w[n];o.stencil||(o.stencil=e(o));var r=o.stencil.cloneNode(!1);return r.setAttribute("data-mce-index",n),t&&r.appendChild(P.doc.createTextNode(t)),r}return function(e){var n,o,r,i=e.startNode,a=e.endNode,l=e.matchIndex,s=P.doc;if(i===a){var c=i;r=c.parentNode,e.startNodeIndex>0&&(n=s.createTextNode(c.data.substring(0,e.startNodeIndex)),r.insertBefore(n,c));var d=t(e.match,l);return r.insertBefore(d,c),e.endNodeIndex<c.length&&(o=s.createTextNode(c.data.substring(e.endNodeIndex)),r.insertBefore(o,c)),c.parentNode.removeChild(c),d}n=s.createTextNode(i.data.substring(0,e.startNodeIndex)),o=s.createTextNode(a.data.substring(e.endNodeIndex));for(var u=t(i.data.substring(e.startNodeIndex),l),f=[],m=0,p=e.innerNodes.length;p>m;++m){var g=e.innerNodes[m],h=t(g.data,l);g.parentNode.replaceChild(h,g),f.push(h)}var v=t(a.data.substring(0,e.endNodeIndex),l);return r=i.parentNode,r.insertBefore(n,i),r.insertBefore(u,i),r.removeChild(i),r=a.parentNode,r.insertBefore(v,a),r.insertBefore(o,a),r.removeChild(a),v}}function a(e){var t=e.parentNode;t.insertBefore(e.firstChild,e),e.parentNode.removeChild(e)}function l(t){var n=e.getElementsByTagName("*"),o=[];t="number"==typeof t?""+t:null;for(var r=0;r<n.length;r++){var i=n[r],a=i.getAttribute("data-mce-index");null!==a&&a.length&&(a===t||null===t)&&o.push(i)}return o}function s(e){for(var t=w.length;t--;)if(w[t]===e)return t;return-1}function c(e){var t=[];return d(function(n,o){e(n,o)&&t.push(n)}),w=t,this}function d(e){for(var t=0,n=w.length;n>t&&e(w[t],t)!==!1;t++);return this}function u(t){return w.length&&r(e,w,i(t)),this}function f(e,t){if(C&&e.global)for(;x=e.exec(C);)w.push(n(x,t));return this}function m(e){var t,n=l(e?s(e):null);for(t=n.length;t--;)a(n[t]);return this}function p(e){return w[e.getAttribute("data-mce-index")]}function g(e){return l(s(e))[0]}function h(e,t,n){return w.push({start:e,end:e+t,text:C.substr(e,t),data:n}),this}function v(e){var n=l(s(e)),o=t.dom.createRng();return o.setStartBefore(n[0]),o.setEndAfter(n[n.length-1]),o}function b(e,n){var o=v(e);return o.deleteContents(),n.length>0&&o.insertNode(t.dom.doc.createTextNode(n)),o}function y(){return w.splice(0,w.length),m(),this}var x,w=[],C,P=t.dom,N,S,k;return N=t.schema.getBlockElements(),S=t.schema.getWhiteSpaceElements(),k=t.schema.getShortEndedElements(),C=o(e),{text:C,matches:w,each:d,filter:c,reset:y,matchFromElement:p,elementFromMatch:g,find:f,add:h,wrap:u,unwrap:m,replace:b,rangeFromMatch:v,indexOf:s}}}),o(c,[s,d,u,f,m,p,g],function(e,t,n,o,r,i,a){t.add("spellchecker",function(t,l){function s(){return b.textMatcher||(b.textMatcher=new e(t.getBody(),t)),b.textMatcher}function c(e,t){var o=[];return n.each(t,function(e){o.push({selectable:!0,text:e.name,data:e.value})}),o}function d(e){for(var t in e)return!1;return!0}function u(e){var i=[],a=y[e.text];n.each(a,function(n){i.push({text:n,onclick:function(){var o=s().replace(e,n);o.collapse(!1),t.selection.setRng(o),m()}})}),i.push.apply(i,[{text:"-"},{text:"Ignore",onclick:function(){p(e)}},{text:"Ignore all",onclick:function(){p(e,!0)}},{text:"Finish",onclick:g}]),w=new o({items:i,context:"contextmenu",onautohide:function(e){-1!=e.target.className.indexOf("spellchecker")&&e.preventDefault()},onhide:function(){w.remove(),w=null}}),w.renderTo(document.body);var l=s().elementFromMatch(e),c=r.DOM.getPos(t.getContentAreaContainer()),d=t.dom.getPos(l),u=t.dom.getRoot();"BODY"==u.nodeName?(d.x-=u.ownerDocument.documentElement.scrollLeft||u.scrollLeft,d.y-=u.ownerDocument.documentElement.scrollTop||u.scrollTop):(d.x-=u.scrollLeft,d.y-=u.scrollTop),c.x+=d.x,c.y+=d.y,w.moveTo(c.x,c.y+l.offsetHeight)}function f(){function e(e){return t.setProgressState(!1),d(e)?(t.windowManager.alert("No misspellings found"),void(x=!1)):(y=e,s().filter(function(t){return!!e[t.text]}).wrap(function(){return t.dom.create("span",{"class":"mce-spellchecker-word","data-mce-bogus":1})}),void t.fire("SpellcheckStart"))}function n(e,n,o){i.sendRPC({url:new a(l).toAbsolute(C.spellchecker_rpc_url),method:e,params:{lang:C.spellchecker_language||"en",words:n},success:function(e){o(e)},error:function(e,n){e="JSON Parse error."==e?"Non JSON response:"+n.responseText:"Error: "+e,t.windowManager.alert(e),t.setProgressState(!1),g()}})}var o=[],r={};if(x)return void g();g(),x=!0;var c=t.getParam("spellchecker_wordchar_pattern")||new RegExp('[^\\s!"#$%&()*+,-./:;<=>?@[\\]^_{|}`\xa7\xa9\xab\xae\xb1\xb6\xb7\xb8\xbb\xbc\xbd\xbe\xbf\xd7\xf7\xa4\u201d\u201c\u201e]+',"g");s().find(c).each(function(e){var t=e.text;if(!r[t]){if(/^\d+$/.test(t)||1==t.length)return;o.push(t),r[t]=!0}}),t.setProgressState(!0);var u=C.spellchecker_callback||n;u("spellcheck",o,e),t.focus()}function m(){t.dom.select("span.mce-spellchecker-word").length||g()}function p(e,n){t.selection.collapse(),n?s().each(function(t){t.text==e.text&&s().unwrap(t)}):s().unwrap(e),m()}function g(){s().reset(),b.textMatcher=null,x&&(x=!1,t.fire("SpellcheckEnd"))}function h(e){var t=C.spellchecker_language;e.control.items().each(function(e){e.active(e.settings.data===t)})}var v,b=this,y,x,w,C=t.settings,P=C.spellchecker_languages||"English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr_FR,German=de,Italian=it,Polish=pl,Portuguese=pt_BR,Spanish=es,Swedish=sv";v=c("Language",n.map(P.split(","),function(e){var t=e.split("=");return{name:t[0],value:t[1]}})),t.on("click",function(e){if("mce-spellchecker-word"==e.target.className){e.preventDefault();var n=s().matchFromElement(e.target);t.selection.setRng(s().rangeFromMatch(n)),u(n)}}),t.addMenuItem("spellchecker",{text:"Spellcheck",context:"tools",onclick:f,selectable:!0,onPostRender:function(){var e=this;t.on("SpellcheckStart SpellcheckEnd",function(){e.active(x)})}});var N={tooltip:"Spellcheck",onclick:f,onPostRender:function(){var e=this;t.on("SpellcheckStart SpellcheckEnd",function(){e.active(x)})}};v.length>1&&(N.type="splitbutton",N.menu=v,N.onshow=h,N.onselect=function(e){C.spellchecker_language=e.control.settings.data}),t.addButton("spellchecker",N),t.addCommand("mceSpellCheck",f),t.on("remove",function(){w&&(w.remove(),w=null)}),this.getTextMatcher=s,C.spellchecker_language=C.spellchecker_language||C.language||"en"})}),a([s,c])}(this);