Files
leanote/public/tinymce/plugins/paste/plugin.min.js
2014-10-22 16:20:45 +08:00

1 line
11 KiB
JavaScript

!function(e,t){"use strict";function n(e,t){for(var n,i=[],a=0;a<e.length;++a){if(n=s[e[a]]||r(e[a]),!n)throw"module definition dependecy not found: "+e[a];i.push(n)}t.apply(null,i)}function i(e,i,a){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(i===t)throw"invalid module definition, dependencies must be specified";if(a===t)throw"invalid module definition, definition function must be specified";n(i,function(){s[e]=a.apply(null,arguments)})}function a(e){return!!s[e]}function r(t){for(var n=e,i=t.split(/[.\/]/),a=0;a<i.length;++a){if(!n[i[a]])return;n=n[i[a]]}return n}function o(n){for(var i=0;i<n.length;i++){for(var a=e,r=n[i],o=r.split(/[.\/]/),l=0;l<o.length-1;++l)a[o[l]]===t&&(a[o[l]]={}),a=a[o[l]];a[o[o.length-1]]=s[r]}}var s={},l="tinymce/pasteplugin/Utils",c="tinymce/util/Tools",d="tinymce/html/DomParser",p="tinymce/html/Schema",u="tinymce/pasteplugin/Clipboard",f="tinymce/Env",m="tinymce/util/VK",g="tinymce/pasteplugin/WordFilter",v="tinymce/html/Serializer",h="tinymce/html/Node",y="tinymce/pasteplugin/Quirks",b="tinymce/pasteplugin/Plugin",w="tinymce/PluginManager";i(l,[c,d,p],function(e,t,n){function i(t,n){return e.each(n,function(e){t=e.constructor==RegExp?t.replace(e,""):t.replace(e[0],e[1])}),t}function a(i){function a(e){var t=e.name,n=e;if("br"===t)return void(s+="\n");if(l[t]&&(s+=" "),c[t])return void(s+=" ");if(3==e.type&&(s+=e.value),!e.shortEnded&&(e=e.firstChild))do a(e);while(e=e.next);d[t]&&n.next&&(s+="\n","p"==t&&(s+="\n"))}var r=new n,o=new t({},r),s="",l=r.getShortEndedElements(),c=e.makeMap("script noscript style textarea video audio iframe object"," "),d=r.getBlockElements();return a(o.parse(i)),s}return{filter:i,innerText:a}}),i(u,[f,m,l],function(e,t,n){return function(i){function a(e,t){ajaxPost("/file/copyHttpImage",{src:e},function(e){if(reIsOk(e)){var n=urlPrefix+"/"+e.Item,a=i.dom;for(var r in t){var o=t[r],s=a.get(o);a.setAttrib(s,"src",n)}}})}function r(e,t){var n,r=i.dom;if(i.settings.paste_data_images||(e=e.replace(/<img[^>]+src=\"data:image[^>]+>/g,"")),n=i.fire("BeforePastePreProcess",{content:e}),n=i.fire("PastePreProcess",n),e=n.content,!n.isDefaultPrevented()){if(i.hasEventListeners("PastePostProcess")&&!n.isDefaultPrevented()){var o=r.add(i.getBody(),"div",{style:"display:none"},e);n=i.fire("PastePostProcess",{node:o}),r.remove(o),e=n.node.innerHTML}if(!n.isDefaultPrevented()){var s=i.selection.getNode();if("PRE"==s.nodeName){if(!t)try{t=$(e).text()}catch(l){}t=t.replace(/</g,"&lt;"),t=t.replace(/>/g,"&gt;"),i.insertRawContent(t)}else if(f.copyImage){var c=UrlPrefix,d={},p=(new Date).getTime();try{for(var u=$("<div>"+e+"</div"),m=u.find("img"),g=0;g<m.length;++g){var v=m.eq(g),h=v.attr("src");if(-1==h.indexOf(c)){p++;var y="__LEANOTE_IMAGE_"+p;v.attr("id",y),d[h]?d[h].push(y):d[h]=[y]}}i.insertContent(u.html());for(var h in d){var b=d[h];a(h,b)}}catch(l){i.insertContent(e)}}else i.insertContent(e)}}}function o(e){var t=e;e=i.dom.encode(e).replace(/\r\n/g,"\n");var a=i.dom.getParent(i.selection.getStart(),i.dom.isBlock),o=i.settings.forced_root_block,s;o&&(s=i.dom.createHTML(o,i.settings.forced_root_block_attrs),s=s.substr(0,s.length-3)+">"),a&&/^(PRE|DIV)$/.test(a.nodeName)||!o?e=n.filter(e,[[/\n/g,"<br>"]]):(e=n.filter(e,[[/\n\n/g,"</p>"+s],[/^(.*<\/p>)(<p>)$/,s+"$1"],[/\n/g,"<br />"]]),-1!=e.indexOf("<p>")&&(e=s+e)),r(e,t)}function s(){var e=i.dom,t=i.getBody(),n=i.dom.getViewPort(i.getWin()),a=i.inline?t.scrollTop:n.y,r=i.inline?t.clientHeight:n.h;l(),m=e.add(i.getBody(),"div",{id:"mcepastebin",contentEditable:!0,"data-mce-bogus":"1",style:"position: absolute; top: "+(a+20)+"px;width: 10px; height: "+(r-40)+"px; overflow: hidden; opacity: 0"},h),e.setStyle(m,"left","rtl"==e.getStyle(t,"direction",!0)?65535:-65535),e.bind(m,"beforedeactivate focusin focusout",function(e){e.stopPropagation()}),g=i.selection.getRng(),m.focus(),i.selection.select(m,!0)}function l(){m&&(i.dom.unbind(m),i.dom.remove(m),g&&i.selection.setRng(g)),y=!1,m=g=null}function c(){return m?m.innerHTML:h}function d(e){var t={},n=e.clipboardData||i.getDoc().dataTransfer;if(n&&n.types){t["text/plain"]=n.getData("Text");for(var a=0;a<n.types.length;a++){var r=n.types[a];t[r]=n.getData(r)}}return t}function p(e,t){function n(e,n){i.parentNode.removeChild(i),t({width:e,height:n})}var i=document.createElement("img");i.onload=function(){n(i.clientWidth,i.clientHeight)},i.onerror=function(){n()},i.src=e;var a=i.style;a.visibility="hidden",a.position="fixed",a.bottom=a.left=0,a.width=a.height="auto",document.body.appendChild(i)}function u(e){var t=(e.clipboardData||e.originalEvent.clipboardData).items;log(JSON.stringify(t));for(var n,i=0;i<t.length;i++)0===t[i].type.indexOf("image")&&(n=t[i].getAsFile());if(n){var a=new FileReader;return a.onload=function(e){var t=new FormData;t.append("from","pasteImage"),t.append("file",n),t.append("noteId",Note.curNoteId);var i=tinymce.EditorManager.activeEditor,a=i.dom,r={};r.id="__mcenew",r.src="http://leanote.com/images/loading-24.gif",i.insertContent(a.createHTML("img",r));var o=a.get("__mcenew");$.ajax({url:"/file/pasteImage",contentType:!1,processData:!1,data:t,type:"POST"}).done(function(e){if(!e||"object"!=typeof e||!e.Ok)return void a.remove(o);var t=UrlPrefix,n=t+"/file/outputImage?fileId="+e.Id;p(n,function(e){e&&e.width&&(e.width>600&&(e.width=600),r.width=e.width,a.setAttrib(o,"width",r.width)),a.setAttrib(o,"src",n)}),a.setAttrib(o,"id",null)})},a.readAsDataURL(n),!0}return!1}var f=this,m,g,v=0,h="%MCEPASTEBIN%",y;i.on("keydown",function(n){if(!n.isDefaultPrevented()&&(t.metaKeyPressed(n)&&86==n.keyCode||n.shiftKey&&45==n.keyCode)){if(y=n.shiftKey&&86==n.keyCode,n.stopImmediatePropagation(),v=(new Date).getTime(),e.ie&&y)return n.preventDefault(),void i.fire("paste",{ieFake:!0});s()}}),i.on("paste",function(t){var a=d(t),p=(new Date).getTime()-v<100,g="text"==f.pasteFormat||y;p||t.preventDefault(),!e.ie||p&&!t.ieFake||(s(),i.dom.bind(m,"paste",function(e){e.stopPropagation()}),i.getDoc().execCommand("Paste",!1,null),a["text/html"]=c(),l()),setTimeout(function(){var e=c();return m&&m.firstChild&&"mcepastebin"===m.firstChild.id&&(g=!0),l(),e!=h&&p||(e=a["text/html"]||a["text/plain"]||h,e!=h)?void(g?o(a["text/plain"]||n.innerText(e)):r(e,a["text/plain"])):void(p||i.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents."))},0);try{if(u(t))return}catch(t){}}),f.pasteHtml=r,f.pasteText=o}}),i(g,[c,d,p,v,h,l],function(e,t,n,i,a,r){function o(e){return/class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(e)}function s(s){var l=s.settings;s.on("BeforePastePreProcess",function(c){function d(e){function t(e,t,o,s){var l=e._listLevel||r;l!=r&&(r>l?n&&(n=n.parent.parent):(i=n,n=null)),n&&n.name==o?n.append(e):(i=i||n,n=new a(o,1),s>1&&n.attr("start",""+s),e.wrap(n)),e.name="li",t.value="";var c=t.next;c&&3==c.type&&(c.value=c.value.replace(/^\u00a0+/,"")),l>r&&i&&i.lastChild.append(n),r=l}for(var n,i,r=1,o=e.getAll("p"),s=0;s<o.length;s++)if(e=o[s],"p"==e.name&&e.firstChild){for(var l="",c=e.firstChild;c&&!(l=c.value);)c=c.firstChild;if(/^\s*[\u2022\u00b7\u00a7\u00d8\u25CF]\s*$/.test(l)){t(e,c,"ul");continue}if(/^\s*\w+\.$/.test(l)){var d=/([0-9])\./.exec(l),p=1;d&&(p=parseInt(d[1],10)),t(e,c,"ol",p);continue}n=null}}function p(t,n){if("p"===t.name){var i=/mso-list:\w+ \w+([0-9]+)/.exec(n);i&&(t._listLevel=parseInt(i[1],10))}if(s.getParam("paste_retain_style_properties","none")){var a="";if(e.each(s.dom.parseStyle(n),function(e,t){switch(t){case"horiz-align":return void(t="text-align");case"vert-align":return void(t="vertical-align");case"font-color":case"mso-foreground":return void(t="color");case"mso-background":case"mso-highlight":t="background"}("all"==f||m&&m[t])&&(a+=t+":"+e+";")}),a)return a}return null}var u=c.content,f,m;if(f=l.paste_retain_style_properties,f&&(m=e.makeMap(f)),l.paste_enable_default_filters!==!1&&o(c.content)){c.wordContent=!0,u=r.filter(u,[/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(e,t){return t.length>0?t.replace(/./," ").slice(Math.floor(t.length/2)).split("").join("\xa0"):""}]]);var g=l.paste_word_valid_elements;g||(g="@[style],-strong/b,-em/i,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-table,-tr,-td[colspan|rowspan],-th,-thead,-tfoot,-tbody,-a[!href],sub,sup,strike,br");var v=new n({valid_elements:g}),h=new t({},v);h.addAttributeFilter("style",function(e){for(var t=e.length,n;t--;)n=e[t],n.attr("style",p(n,n.attr("style"))),"span"!=n.name||n.attributes.length||n.unwrap()});var y=h.parse(u);d(y),c.content=new i({},v).serialize(y)}})}return s.isWordContent=o,s}),i(y,[f,c,g,l],function(e,t,n,i){return function(a){function r(e){a.on("BeforePastePreProcess",function(t){t.content=e(t.content)})}function o(e){return e=i.filter(e,[/^[\s\S]*<!--StartFragment-->|<!--EndFragment-->[\s\S]*$/g,[/<span class="Apple-converted-space">\u00a0<\/span>/g,"\xa0"],/<br>$/])}function s(e){if(!n.isWordContent(e))return e;var r=[];t.each(a.schema.getBlockElements(),function(e,t){r.push(t)});var o=new RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+r.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g");return e=i.filter(e,[[o,"$1"]]),e=i.filter(e,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function l(e){return(a.settings.paste_remove_styles||a.settings.paste_remove_styles_if_webkit!==!1)&&(e=e.replace(/ style=\"[^\"]+\"/g,"")),e}e.webkit&&(r(l),r(o)),e.ie&&r(s)}}),i(b,[w,u,g,y],function(e,t,n,i){var a,r;e.add("paste",function(e){function o(){"text"==c.pasteFormat?(this.active(!1),c.pasteFormat="html"):(c.pasteFormat="text",this.active(!0),a||(e.windowManager.alert("Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off."),a=!0))}function s(){c.copyImage?(this.active(!1),c.copyImage=!1):(c.copyImage=!0,this.active(!0),r||(e.windowManager.alert("When copy other site's images (not in leanote) into editor, it will copy the image into your album."),r=!0))}var l=this,c,d=e.settings;l.clipboard=c=new t(e),l.quirks=new i(e),l.wordFilter=new n(e),e.settings.paste_as_text&&(l.clipboard.pasteFormat="text"),d.paste_preprocess&&e.on("PastePreProcess",function(e){d.paste_preprocess.call(l,l,e)}),d.paste_postprocess&&e.on("PastePostProcess",function(e){d.paste_postprocess.call(l,l,e)}),e.addCommand("mceInsertClipboardContent",function(e,t){t.content&&l.clipboard.pasteHtml(t.content),t.text&&l.clipboard.pasteText(t.text)}),e.paste_block_drop&&e.on("dragend dragover draggesture dragdrop drop drag",function(e){e.preventDefault(),e.stopPropagation()}),e.settings.paste_data_images||e.on("drop",function(e){var t=e.dataTransfer;t&&t.files&&t.files.length>0&&e.preventDefault()}),e.addButton("pastetext",{icon:"pastetext",tooltip:"Paste as text",onclick:o,active:"text"==l.clipboard.pasteFormat}),e.addButton("pasteCopyImage",{icon:"copy",tooltip:"When Paste other site's image, copy it into my album as public image",onclick:s,active:l.clipboard.copyImage===!0}),e.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,active:c.pasteFormat,onclick:o})})}),o([l,u,g,y,b])}(this);