tinymce-editor/copy_this/modules/hdi/hdi-tinymce/tinymce/plugins/lists/plugin.min.js
2013-07-30 13:04:00 +02:00

1 line
5.9 KiB
JavaScript

tinymce.PluginManager.add("lists",function(e){var t=this;e.on("init",function(){function n(e){function t(t){var i,a,r;a=e[t?"startContainer":"endContainer"],r=e[t?"startOffset":"endOffset"],1==a.nodeType&&(i=b.create("span",{"data-mce-type":"bookmark"}),a.hasChildNodes()?(r=Math.min(r,a.childNodes.length-1),a.insertBefore(i,a.childNodes[r])):a.appendChild(i),a=i,r=0),n[t?"startContainer":"endContainer"]=a,n[t?"startOffset":"endOffset"]=r}var n={};return t(!0),t(),n}function i(e){function t(t){function n(e){for(var t=e.parentNode.firstChild,n=0;t;){if(t==e)return n;(1!=t.nodeType||"bookmark"!=t.getAttribute("data-mce-type"))&&n++,t=t.nextSibling}return-1}var i,a,r;i=r=e[t?"startContainer":"endContainer"],a=e[t?"startOffset":"endOffset"],1==i.nodeType&&(t?(a=n(i),i=i.parentNode):(a=n(i),i=i.parentNode),b.remove(r)),e[t?"startContainer":"endContainer"]=i,e[t?"startOffset":"endOffset"]=a}t(!0),t();var n=b.createRng();n.setStart(e.startContainer,e.startOffset),n.setEnd(e.endContainer,e.endOffset),x.setRng(n)}function a(e){return e&&/^(OL|UL)$/.test(e.nodeName)}function r(e){return e.parentNode.firstChild==e}function o(e){return e.parentNode.lastChild==e}function l(t){return t&&!!e.schema.getTextBlockElements()[t.nodeName]}function s(t,n){var i,a;if(e.settings.forced_root_block&&(n=n||e.settings.forced_root_block),a=n?b.create(n):b.createFragment(),t)for(;i=t.firstChild;)a.appendChild(i);return e.settings.forced_root_block||a.appendChild(b.create("br")),a.hasChildNodes()||tinymce.isIE||(a.innerHTML='<br data-mce-bogus="1">'),a}function c(){return tinymce.grep(x.getSelectedBlocks(),function(e){return"LI"==e.nodeName})}function d(){return tinymce.grep(x.getSelectedBlocks(),l)}function u(e,t,n){var i,a;n=n||s(t),i=b.createRng(),i.setStartAfter(t),i.setEndAfter(e),a=i.extractContents(),b.isEmpty(a)||b.insertAfter(a,e),b.isEmpty(n)||b.insertAfter(n,e),b.isEmpty(t.parentNode)&&b.remove(t.parentNode),b.remove(t)}function m(e){var t,n;if(t=e.nextSibling,t&&a(t)&&t.nodeName==e.nodeName){for(;n=t.firstChild;)e.appendChild(n);b.remove(t)}if(t=e.previousSibling,t&&a(t)&&t.nodeName==e.nodeName){for(;n=t.firstChild;)e.insertBefore(n,e.firstChild);b.remove(t)}}function f(e){tinymce.each(tinymce.grep(b.select("ol,ul",e)),function(e){var t,n=e.parentNode;"LI"==n.nodeName&&n.firstChild==e&&(t=n.previousSibling,t&&"LI"==t.nodeName&&(t.appendChild(e),b.isEmpty(n)&&b.remove(n))),a(n)&&(t=n.previousSibling,t&&"LI"==t.nodeName&&t.appendChild(e))})}function g(){var e,t=n(x.getRng(!0));return tinymce.each(c(),function(t){var n,i;return n=t.previousSibling,n&&"UL"==n.nodeName?(n.appendChild(t),void 0):n&&"LI"==n.nodeName&&a(n.lastChild)?(n.lastChild.appendChild(t),void 0):(n=t.nextSibling,n&&"UL"==n.nodeName?(n.insertBefore(t,n.firstChild),void 0):(n&&"LI"==n.nodeName&&a(t.lastChild)||(n=t.previousSibling,n&&"LI"==n.nodeName&&(i=b.create(t.parentNode.nodeName),n.appendChild(i),i.appendChild(t)),e=!0),void 0))}),i(t),e}function p(){function e(e){b.isEmpty(e)&&b.remove(e)}var t,l=n(x.getRng(!0));return tinymce.each(c(),function(n){var i,l=n.parentNode,c=l.parentNode;if(r(n)&&o(n))if("LI"==c.nodeName)b.insertAfter(n,c),e(c);else{if(!a(c))return;b.remove(l,!0)}else if(r(n))if("LI"==c.nodeName)b.insertAfter(n,c),i=b.create("LI"),i.appendChild(l),b.insertAfter(i,n),e(c);else{if(!a(c))return;c.insertBefore(n,l)}else if(o(n))if("LI"==c.nodeName)b.insertAfter(n,c);else{if(!a(c))return;b.insertAfter(n,l)}else{if("LI"==c.nodeName)l=c,i=s(n,"LI");else{if(!a(c))return;i=s(n,"LI")}u(l,n,i),f(l.parentNode)}t=!0}),i(l),t}function h(t){function r(){function t(t){var n,i,a=e.getBody();for(n=o[t?"startContainer":"endContainer"],i=o[t?"startOffset":"endOffset"],1==n.nodeType&&(n=n.childNodes[Math.min(i,n.childNodes.length-1)]||n);n.parentNode!=a;){if(l(n))return n;if(/^(TD|TH)$/.test(n.parentNode.nodeName))return n;n=n.parentNode}return n}function n(e,t){var n,i=[];if(!l(e)){for(;e&&(n=e[t?"previousSibling":"nextSibling"],!b.isBlock(n)&&n);)e=n;for(;e;)i.push(e),e=e[t?"nextSibling":"previousSibling"]}return i}var i,a,r=t(!0),s=t();a=n(r,!0),r!=s&&(a=a.concat(n(s).reverse())),tinymce.each(a,function(e){if(!b.isBlock(e)||"BR"==e.nodeName){if(!i||"BR"==e.nodeName){if("BR"==e.nodeName&&(!e.nextSibling||b.isBlock(e.nextSibling)&&"BR"!=e.nextSibling.nodeName))return b.remove(e),!1;i=b.create("p"),c.push(i),e.parentNode.insertBefore(i,e)}return"BR"!=e.nodeName?i.appendChild(e):b.remove(e),e==s?!1:void 0}})}var o=x.getRng(!0),s=n(o),c=d();r(),tinymce.each(c,function(e){var n,i;i=e.previousSibling,i&&a(i)&&i.nodeName==t?(n=i,e=b.rename(e,"LI"),i.appendChild(e)):(n=b.create(t),e.parentNode.insertBefore(n,e),n.appendChild(e),e=b.rename(e,"LI")),m(n)}),i(s)}function y(){var e=n(x.getRng(!0));tinymce.each(c(),function(e){var t,n;for(t=e;t;t=t.parentNode)a(t)&&(n=t);u(n,e)}),i(e)}function v(e){var t=b.getParent(x.getStart(),"OL,UL");if(t)if(t.nodeName==e)y(e);else{var a=n(x.getRng(!0));m(b.rename(t,e)),i(a)}else h(e)}var b=e.dom,x=e.selection;t.backspaceDelete=function(e){function t(e,t){var n=e.startContainer,i=e.startOffset;if(3==n.nodeType&&(t?i<n.data.length:i>0))return n;for(var a=new tinymce.dom.TreeWalker(e.startContainer);n=a[t?"next":"prev"]();)if(3==n.nodeType&&n.data.length>0)return n}function r(e,t){var n,i,r=e.parentNode;for(a(t.lastChild)&&(i=t.lastChild),n=t.lastChild,n&&"BR"==n.nodeName&&e.hasChildNodes()&&b.remove(n);n=e.firstChild;)t.appendChild(n);i&&t.appendChild(i),b.remove(e),b.isEmpty(r)&&b.remove(r)}if(x.isCollapsed()){var o=b.getParent(x.getStart(),"LI");if(o){var l=x.getRng(!0),s=b.getParent(t(l,e),"LI");if(s&&s!=o){var c=n(l);return e?r(s,o):r(o,s),i(c),!0}if(!s&&!e&&y(o.parentNode.nodeName))return!0}}},e.addCommand("Indent",function(){return g()?void 0:!0}),e.addCommand("Outdent",function(){return p()?void 0:!0}),e.addCommand("InsertUnorderedList",function(){v("UL")}),e.addCommand("InsertOrderedList",function(){v("OL")})}),e.on("keydown",function(e){e.keyCode==tinymce.util.VK.BACKSPACE?t.backspaceDelete()&&e.preventDefault():e.keyCode==tinymce.util.VK.DELETE&&t.backspaceDelete(!0)&&e.preventDefault()})});