mirror of
https://github.com/documize/community.git
synced 2025-07-21 14:19:43 +02:00
1 line
No EOL
10 KiB
JavaScript
1 line
No EOL
10 KiB
JavaScript
!function(){"use strict";function e(e){return e&&1===e.nodeType&&"false"===e.contentEditable}var t,n=function(e){var t=e,r=function(){return t};return{get:r,set:function(e){t=e},clone:function(){return n(r())}}},r=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=function(e){return!(!/(^|[ ,])tinymcespellchecker([, ]|$)/.test(e.settings.plugins)||!r.get("tinymcespellchecker")||("undefined"!=typeof window.console&&window.console.log&&window.console.log("Spell Checker Pro is incompatible with Spell Checker plugin! Remove 'spellchecker' from the 'plugins' option."),0))},i=function(e){return e.getParam("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")},c=function(e){var t=e.getParam("language","en");return e.getParam("spellchecker_language",t)},a=function(e){return e.getParam("spellchecker_rpc_url")},l=function(e){return e.getParam("spellchecker_callback")},s=function(e){var t=new RegExp('[^\\s!"#$%&()*+,-./:;<=>?@[\\]^_{|}`\xa7\xa9\xab\xae\xb1\xb6\xb7\xb8\xbb\xbc\xbd\xbe\xbf\xd7\xf7\xa4\u201d\u201c\u201e\xa0\u2002\u2003\u2009]+',"g");return e.getParam("spellchecker_wordchar_pattern",t)},u=tinymce.util.Tools.resolve("tinymce.util.Tools"),d=tinymce.util.Tools.resolve("tinymce.util.URI"),f=tinymce.util.Tools.resolve("tinymce.util.XHR"),h=function(e){return e.fire("SpellcheckStart")},g=function(e){return e.fire("SpellcheckEnd")},m=function(t,n){function r(e,t){if(!e[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");return{start:e.index,end:e.index+e[0].length,text:e[0],data:t}}function o(t){var n;if(3===t.nodeType)return t.data;if(m[t.nodeName]&&!g[t.nodeName])return"";if(e(t))return"\n";if(n="",(g[t.nodeName]||p[t.nodeName])&&(n+="\n"),t=t.firstChild)do{n+=o(t)}while(t=t.nextSibling);return n}function i(e){e.parentNode.insertBefore(e.firstChild,e),e.parentNode.removeChild(e)}function c(e){return-1!==e.className.indexOf("mce-spellchecker-word")}function a(e){var n=t.getElementsByTagName("*"),r=[];e="number"==typeof e?""+e:null;for(var o=0;o<n.length;o++){var i=n[o],a=i.getAttribute("data-mce-index");null!==a&&a.length&&c(i)&&(a!==e&&null!==e||r.push(i))}return r}function l(e){for(var t=v.length;t--;)if(v[t]===e)return t;return-1}function s(e){for(var t=0,n=v.length;t<n&&!1!==e(v[t],t);t++);return this}function u(e){var t,n=a(e?l(e):null);for(t=n.length;t--;)i(n[t]);return this}function d(e){var t=a(l(e)),r=n.dom.createRng();return r.setStartBefore(t[0]),r.setEndAfter(t[t.length-1]),r}var f,h,g,m,p,v=[],x=n.dom;return g=n.schema.getBlockElements(),m=n.schema.getWhiteSpaceElements(),p=n.schema.getShortEndedElements(),h=o(t),{text:h,matches:v,each:s,filter:function(e){var t=[];return s(function(n,r){e(n,r)&&t.push(n)}),v=t,this},reset:function(){return v.splice(0,v.length),u(),this},matchFromElement:function(e){return v[e.getAttribute("data-mce-index")]},elementFromMatch:function(e){return a(l(e))[0]},find:function(e,t){if(h&&e.global)for(;f=e.exec(h);)v.push(r(f,t));return this},add:function(e,t,n){return v.push({start:e,end:e+t,text:h.substr(e,t),data:n}),this},wrap:function(n){return v.length&&function(t,n,r){var o,i,c,a,l,s=[],u=0,d=t,f=0;(n=n.slice(0)).sort(function(e,t){return e.start-t.start}),l=n.shift();e:for(;;){if((g[d.nodeName]||p[d.nodeName]||e(d))&&u++,3===d.nodeType&&(!i&&d.length+u>=l.end?(i=d,a=l.end-u):o&&s.push(d),!o&&d.length+u>l.start&&(o=d,c=l.start-u),u+=d.length),o&&i){if(d=r({startNode:o,startNodeIndex:c,endNode:i,endNodeIndex:a,innerNodes:s,match:l.text,matchIndex:f}),u-=i.length-a,o=null,i=null,s=[],l=n.shift(),f++,!l)break}else if(m[d.nodeName]&&!g[d.nodeName]||!d.firstChild){if(d.nextSibling){d=d.nextSibling;continue}}else if(!e(d)){d=d.firstChild;continue}for(;;){if(d.nextSibling){d=d.nextSibling;break}if(d.parentNode===t)break e;d=d.parentNode}}}(t,v,function(e){function t(t,n){var r=v[n];r.stencil||(r.stencil=e(r));var o=r.stencil.cloneNode(!1);return o.setAttribute("data-mce-index",n),t&&o.appendChild(x.doc.createTextNode(t)),o}return function(e){var n,r,o,i=e.startNode,c=e.endNode,a=e.matchIndex,l=x.doc;if(i===c){var s=i;o=s.parentNode,e.startNodeIndex>0&&(n=l.createTextNode(s.data.substring(0,e.startNodeIndex)),o.insertBefore(n,s));var u=t(e.match,a);return o.insertBefore(u,s),e.endNodeIndex<s.length&&(r=l.createTextNode(s.data.substring(e.endNodeIndex)),o.insertBefore(r,s)),s.parentNode.removeChild(s),u}n=l.createTextNode(i.data.substring(0,e.startNodeIndex)),r=l.createTextNode(c.data.substring(e.endNodeIndex));for(var d=t(i.data.substring(e.startNodeIndex),a),f=[],h=0,g=e.innerNodes.length;h<g;++h){var m=e.innerNodes[h],p=t(m.data,a);m.parentNode.replaceChild(p,m),f.push(p)}var v=t(c.data.substring(0,e.endNodeIndex),a);return(o=i.parentNode).insertBefore(n,i),o.insertBefore(d,i),o.removeChild(i),(o=c.parentNode).insertBefore(v,c),o.insertBefore(r,c),o.removeChild(c),v}}(n)),this},unwrap:u,replace:function(e,t){var r=d(e);return r.deleteContents(),t.length>0&&r.insertNode(n.dom.doc.createTextNode(t)),r},rangeFromMatch:d,indexOf:l}},p=function(e,t){if(!t.get()){var n=m(e.getBody(),e);t.set(n)}return t.get()},v=function(e,t,n,r,o,i,c){var s=l(e);(s||function(e,t,n){return function(r,o,i,c){var l={method:r,lang:n.get()},s="";l["addToDictionary"===r?"word":"text"]=o,u.each(l,function(e,t){s&&(s+="&"),s+=t+"="+encodeURIComponent(e)}),f.send({url:new d(t).toAbsolute(a(e)),type:"post",content_type:"application/x-www-form-urlencoded",data:s,success:function(t){if(t=JSON.parse(t))t.error?c(t.error):i(t);else{var n=e.translate("Server response wasn't proper JSON.");c(n)}},error:function(){var t=e.translate("The spelling service was not found: (")+a(e)+e.translate(")");c(t)}})}}(e,t,n)).call(e.plugins.spellchecker,r,o,i,c)},x=function(e,t,n){e.dom.select("span.mce-spellchecker-word").length||N(e,t,n)},N=function(e,t,n){if(p(e,n).reset(),n.set(null),t.get())return t.set(!1),g(e),!0},k=function(e){var t=e.getAttribute("data-mce-index");return"number"==typeof t?""+t:t},y=function(e,t,n,r,o){var i,c;if(o.words?(c=!!o.dictionary,i=o.words):i=o,e.setProgressState(!1),function(e){for(var t in e)return!1;return!0}(i)){var a=e.translate("No misspellings found.");return e.notificationManager.open({text:a,type:"info"}),void t.set(!1)}r.set({suggestions:i,hasDictionarySupport:c}),p(e,n).find(s(e)).filter(function(e){return!!i[e.text]}).wrap(function(t){return e.dom.create("span",{"class":"mce-spellchecker-word","data-mce-bogus":1,"data-mce-word":t.text})}),t.set(!0),h(e)},S={spellcheck:function(e,t,n,r,o,i){N(e,n,r)||(e.setProgressState(!0),v(e,t,i,"spellcheck",p(e,r).text,function(t){y(e,n,r,o,t)},function(t){e.notificationManager.open({text:t,type:"error"}),e.setProgressState(!1),N(e,n,r)}),e.focus())},checkIfFinished:x,addToDictionary:function(e,t,n,r,o,i){e.setProgressState(!0),v(e,t,"addToDictionary",o,function(){e.setProgressState(!1),e.dom.remove(i,!0),x(e,n,r)},function(t){e.notificationManager.open({text:t,type:"error"}),e.setProgressState(!1)})},ignoreWord:function(e,t,n,r,o,i){e.selection.collapse(),i?u.each(e.dom.select("span.mce-spellchecker-word"),function(t){t.getAttribute("data-mce-word")===r&&e.dom.remove(t,!0)}):e.dom.remove(o,!0),x(e,t,n)},findSpansByIndex:function(e,t){var n,r=[];if((n=u.toArray(e.getBody().getElementsByTagName("span"))).length)for(var o=0;o<n.length;o++){var i=k(n[o]);null!==i&&i.length&&i===t.toString()&&r.push(n[o])}return r},getElmIndex:k,markErrors:y},w=function(e,t,n,r,o){return{getTextMatcher:function(){return r.get()},getWordCharPattern:function(){return s(e)},markErrors:function(o){S.markErrors(e,t,r,n,o)},getLanguage:function(){return c(e)}}},b=function(e,t,n,r,o,i){e.addCommand("mceSpellCheck",function(){S.spellcheck(e,t,n,r,o,i)})},T=function(e,t,n,r,o,a){var l=function(e,t){var n=[];return u.each(t,function(e){n.push({selectable:!0,text:e.name,data:e.value})}),n}(0,function(e){return u.map(i(e).split(","),function(e){return e=e.split("="),{name:e[0],value:e[1]}})}(e)),s=function(){S.spellcheck(e,t,n,r,a,o)},d={tooltip:"Spellcheck",onclick:s,onPostRender:function(t){var r=t.control;e.on("SpellcheckStart SpellcheckEnd",function(){r.active(n.get())})}};l.length>1&&(d.type="splitbutton",d.menu=l,d.onshow=function(e){return function(t){var n=c(e);t.control.items().each(function(e){e.active(e.settings.data===n)})}}(e),d.onselect=function(e){o.set(e.control.settings.data)}),e.addButton("spellchecker",d),e.addMenuItem("spellchecker",{text:"Spellcheck",context:"tools",onclick:s,selectable:!0,onPostRender:function(){var t=this;t.active(n.get()),e.on("SpellcheckStart SpellcheckEnd",function(){t.active(n.get())})}})},I=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),E=tinymce.util.Tools.resolve("tinymce.ui.Factory"),P=function(e,n,r,o,i){e.on("click",function(c){var a=c.target;if("mce-spellchecker-word"===a.className){c.preventDefault();var l=S.findSpansByIndex(e,S.getElmIndex(a));if(l.length>0){var s=e.dom.createRng();s.setStartBefore(l[0]),s.setEndAfter(l[l.length-1]),e.selection.setRng(s),function(e,n,r,o,i,c,a){var l=[],s=r.get().suggestions[c];u.each(s,function(t){l.push({text:t,onclick:function(){e.insertContent(e.dom.encode(t)),e.dom.remove(a),S.checkIfFinished(e,o,i)}})}),l.push({text:"-"}),r.get().hasDictionarySupport&&l.push({text:"Add to Dictionary",onclick:function(){S.addToDictionary(e,n,o,i,c,a)}}),l.push.apply(l,[{text:"Ignore",onclick:function(){S.ignoreWord(e,o,i,c,a)}},{text:"Ignore all",onclick:function(){S.ignoreWord(e,o,i,c,a,!0)}}]),(t=E.create("menu",{items:l,context:"contextmenu",onautohide:function(e){-1!==e.target.className.indexOf("spellchecker")&&e.preventDefault()},onhide:function(){t.remove(),t=null}})).renderTo(document.body);var d=I.DOM.getPos(e.getContentAreaContainer()),f=e.dom.getPos(a[0]),h=e.dom.getRoot();"BODY"===h.nodeName?(f.x-=h.ownerDocument.documentElement.scrollLeft||h.scrollLeft,f.y-=h.ownerDocument.documentElement.scrollTop||h.scrollTop):(f.x-=h.scrollLeft,f.y-=h.scrollTop),d.x+=f.x,d.y+=f.y,t.moveTo(d.x,d.y+a[0].offsetHeight)}(e,n,r,o,i,a.getAttribute("data-mce-word"),l)}}})};r.add("spellchecker",function(e,t){if(!1===o(e)){var r=n(!1),i=n(c(e)),a=n(null),l=n({});return T(e,t,r,a,i,l),P(e,t,l,r,a),b(e,t,r,a,l,i),w(e,r,l,a,t)}})}(); |