mirror of
https://github.com/documize/community.git
synced 2025-07-21 14:19:43 +02:00
1 line
No EOL
14 KiB
JavaScript
1 line
No EOL
14 KiB
JavaScript
!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),n=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),r=tinymce.util.Tools.resolve("tinymce.util.VK"),o=tinymce.util.Tools.resolve("tinymce.dom.BookmarkManager"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),a=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),s=function(e){return e&&"BR"===e.nodeName},d=function(e){return e&&3===e.nodeType},l=function(e){return e&&/^(OL|UL|DL)$/.test(e.nodeName)},c=function(e){return e&&/^(LI|DT|DD)$/.test(e.nodeName)},u=function(e){return e&&/^(TH|TD)$/.test(e.nodeName)},f=s,m=function(e){return e.parentNode.firstChild===e},g=function(e){return e.parentNode.lastChild===e},p=function(e,t){return t&&!!e.schema.getTextBlockElements()[t.nodeName]},v=function(e,t){return e&&e.nodeName in t},h=function(e,t){return!!s(t)&&!(!e.isBlock(t.nextSibling)||s(t.previousSibling))},C=function(e,t,n){var r=e.isEmpty(t);return!(n&&e.select("span[data-mce-type=bookmark]",t).length>0)&&r},y=function(e,t){return e.isChildOf(t,e.getRoot())},N=function(e,n){var r=t.getNode(e,n);if(c(e)&&d(r)){return{container:r,offset:n>=e.childNodes.length?r.data.length:0}}return{container:e,offset:n}},L=function(e){var t=e.cloneRange(),n=N(e.startContainer,e.startOffset);t.setStart(n.container,n.offset);var r=N(e.endContainer,e.endOffset);return t.setEnd(r.container,r.offset),t},S=a.DOM,b=function(e){var t={},n=function(n){var r,o,i;o=e[n?"startContainer":"endContainer"],i=e[n?"startOffset":"endOffset"],1===o.nodeType&&(r=S.create("span",{"data-mce-type":"bookmark"}),o.hasChildNodes()?(i=Math.min(i,o.childNodes.length-1),n?o.insertBefore(r,o.childNodes[i]):S.insertAfter(r,o.childNodes[i])):o.appendChild(r),o=r,i=0),t[n?"startContainer":"endContainer"]=o,t[n?"startOffset":"endOffset"]=i};return n(!0),e.collapsed||n(),t},D=function(e){function t(t){var n,r,o;n=o=e[t?"startContainer":"endContainer"],r=e[t?"startOffset":"endOffset"],n&&(1===n.nodeType&&(r=function(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}(n),n=n.parentNode,S.remove(o),!n.hasChildNodes()&&S.isBlock(n)&&n.appendChild(S.create("br"))),e[t?"startContainer":"endContainer"]=n,e[t?"startOffset":"endOffset"]=r)}t(!0),t();var n=S.createRng();return n.setStart(e.startContainer,e.startOffset),e.endContainer&&n.setEnd(e.endContainer,e.endOffset),L(n)},k=a.DOM,T=function(e,t){var n,r=t.parentNode;"LI"===r.nodeName&&r.firstChild===t&&((n=r.previousSibling)&&"LI"===n.nodeName?(n.appendChild(t),C(e,r)&&k.remove(r)):k.setStyle(r,"listStyleType","none")),l(r)&&(n=r.previousSibling)&&"LI"===n.nodeName&&n.appendChild(t)},I=function(e,t){i.each(i.grep(e.select("ol,ul",t)),function(t){T(e,t)})},B=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),R=function(e){var t=e.selection.getStart(!0);return e.dom.getParent(t,"OL,UL,DL",O(e,t))},O=function(e,t){var n=e.dom.getParents(t,"TD,TH");return n.length>0?n[0]:e.getBody()},E={getParentList:R,getSelectedSubLists:function(e){var t=R(e),n=e.selection.getSelectedBlocks();return function(e,t){return e&&1===t.length&&t[0]===e}(t,n)?function(e){return i.grep(e.querySelectorAll("ol,ul,dl"),function(e){return l(e)})}(t):i.grep(n,function(e){return l(e)&&t!==e})},getSelectedListItems:function(e){var t=e.selection.getSelectedBlocks();return i.grep(function(e,t){var n=i.map(t,function(t){var n=e.dom.getParent(t,"li,dd,dt",O(e,t));return n||t});return B.unique(n)}(e,t),function(e){return c(e)})},getClosestListRootElm:O},A=tinymce.util.Tools.resolve("tinymce.Env"),P=a.DOM,x=function(e,t,n){var r,o,i,a=P.createFragment(),s=e.schema.getBlockElements();if(e.settings.forced_root_block&&(n=n||e.settings.forced_root_block),n&&((o=P.create(n)).tagName===e.settings.forced_root_block&&P.setAttribs(o,e.settings.forced_root_block_attrs),v(t.firstChild,s)||a.appendChild(o)),t)for(;r=t.firstChild;){var d=r.nodeName;i||"SPAN"===d&&"bookmark"===r.getAttribute("data-mce-type")||(i=!0),v(r,s)?(a.appendChild(r),o=null):n?(o||(o=P.create(n),a.appendChild(o)),o.appendChild(r)):a.appendChild(r)}return e.settings.forced_root_block?i||A.ie&&!(A.ie>10)||o.appendChild(P.create("br",{"data-mce-bogus":"1"})):a.appendChild(P.create("br")),a},_=a.DOM,M=function(e,t,n,r){var o,a,s,d;for(s=_.select('span[data-mce-type="bookmark"]',t),r=r||x(e,n),(o=_.createRng()).setStartAfter(n),o.setEndAfter(t),d=(a=o.extractContents()).firstChild;d;d=d.firstChild)if("LI"===d.nodeName&&e.dom.isEmpty(d)){_.remove(d);break}e.dom.isEmpty(a)||_.insertAfter(a,t),_.insertAfter(r,t),C(e.dom,n.parentNode)&&function(e){i.each(s,function(t){e.parentNode.insertBefore(t,n.parentNode)}),_.remove(e)}(n.parentNode),_.remove(n),C(e.dom,t)&&_.remove(t)},U=a.DOM,H=function(e,t){C(e,t)&&U.remove(t)},$=function(e,t){var n,r=t.parentNode,o=r.parentNode;return r===e.getBody()||("DD"===t.nodeName?(U.rename(t,"DT"),!0):m(t)&&g(t)?("LI"===o.nodeName?(U.insertAfter(t,o),H(e.dom,o),U.remove(r)):l(o)?U.remove(r,!0):(o.insertBefore(x(e,t),r),U.remove(r)),!0):m(t)?("LI"===o.nodeName?(U.insertAfter(t,o),t.appendChild(r),H(e.dom,o)):l(o)?o.insertBefore(t,r):(o.insertBefore(x(e,t),r),U.remove(t)),!0):g(t)?("LI"===o.nodeName?U.insertAfter(t,o):l(o)?U.insertAfter(t,r):(U.insertAfter(x(e,t),r),U.remove(t)),!0):("LI"===o.nodeName?(r=o,n=x(e,t,"LI")):n=l(o)?x(e,t,"LI"):x(e,t),M(e,r,t,n),I(e.dom,r.parentNode),!0))},w=$,K=function(e){var t=E.getSelectedListItems(e);if(t.length){var n=b(e.selection.getRng(!0)),r=void 0,o=void 0,i=E.getClosestListRootElm(e,e.selection.getStart(!0));for(r=t.length;r--;)for(var a=t[r].parentNode;a&&a!==i;){for(o=t.length;o--;)if(t[o]===a){t.splice(r,1);break}a=a.parentNode}for(r=0;r<t.length&&($(e,t[r])||0!==r);r++);return e.selection.setRng(D(n)),e.nodeChanged(),!0}},Q=function(e,t){i.each(t,function(t,n){e.setAttribute(n,t)})},W=function(e,t,n){!function(e,t,n){var r=n["list-style-type"]?n["list-style-type"]:null;e.setStyle(t,"list-style-type",r)}(e,t,n),function(e,t,n){Q(t,n["list-attributes"]),i.each(e.select("li",t),function(e){Q(e,n["list-item-attributes"])})}(e,t,n)},j=function(e,t,n,r){var o,i;for(o=t[n?"startContainer":"endContainer"],i=t[n?"startOffset":"endOffset"],1===o.nodeType&&(o=o.childNodes[Math.min(i,o.childNodes.length-1)]||o),!n&&f(o.nextSibling)&&(o=o.nextSibling);o.parentNode!==r;){if(p(e,o))return o;if(/^(TD|TH)$/.test(o.parentNode.nodeName))return o;o=o.parentNode}return o},q=function(e,t,n){var r,a=e.selection.getRng(!0),s="LI",d=E.getClosestListRootElm(e,e.selection.getStart(!0)),c=e.dom;n=n||{},"false"!==c.getContentEditable(e.selection.getNode())&&("DL"===(t=t.toUpperCase())&&(s="DT"),r=b(a),i.each(function(e,t,n){for(var r,a=[],s=e.dom,d=j(e,t,!0,n),l=j(e,t,!1,n),c=[],u=d;u&&(c.push(u),u!==l);u=u.nextSibling);return i.each(c,function(t){if(p(e,t))return a.push(t),void(r=null);if(s.isBlock(t)||f(t))return f(t)&&s.remove(t),void(r=null);var i=t.nextSibling;o.isBookmarkNode(t)&&(p(e,i)||!i&&t.parentNode===n)?r=null:(r||(r=s.create("p"),t.parentNode.insertBefore(r,t),a.push(r)),r.appendChild(t))}),a}(e,a,d),function(r){var o,i;(i=r.previousSibling)&&l(i)&&i.nodeName===t&&function(e,t,n){var r=e.getStyle(t,"list-style-type"),o=n?n["list-style-type"]:"";return o=null===o?"":o,r===o}(c,i,n)?(o=i,r=c.rename(r,s),i.appendChild(r)):(o=c.create(t),r.parentNode.insertBefore(o,r),o.appendChild(r),r=c.rename(r,s)),W(c,o,n),z(e.dom,o)}),e.selection.setRng(D(r)))},F=function(e){var t=b(e.selection.getRng(!0)),n=E.getClosestListRootElm(e,e.selection.getStart(!0)),r=E.getSelectedListItems(e),o=i.grep(r,function(t){return e.dom.isEmpty(t)});r=i.grep(r,function(t){return!e.dom.isEmpty(t)}),i.each(o,function(t){C(e.dom,t)&&w(e,t)}),i.each(r,function(t){var r,o;if(t.parentNode!==e.getBody()){for(r=t;r&&r!==n;r=r.parentNode)l(r)&&(o=r);M(e,o,t),I(e.dom,o.parentNode)}}),e.selection.setRng(D(t))},V=function(e,t,n){return function(e,t){return e&&t&&l(e)&&e.nodeName===t.nodeName}(t,n)&&function(e,t,n){return e.getStyle(t,"list-style-type",!0)===e.getStyle(n,"list-style-type",!0)}(e,t,n)&&function(e,t){return e.className===t.className}(t,n)},z=function(e,t){var n,r;if(n=t.nextSibling,V(e,t,n)){for(;r=n.firstChild;)t.appendChild(r);e.remove(n)}if(n=t.previousSibling,V(e,t,n)){for(;r=n.lastChild;)t.insertBefore(r,t.firstChild);e.remove(n)}},G=function(e,t,n,r,o){if(t.nodeName!==r||J(o)){var a=b(e.selection.getRng(!0));i.each([t].concat(n),function(t){!function(e,t,n,r){if(t.nodeName!==n){var o=e.rename(t,n);W(e,o,r)}else W(e,t,r)}(e.dom,t,r,o)}),e.selection.setRng(D(a))}else F(e)},J=function(e){return"list-style-type"in e},X={toggleList:function(e,t,n){var r=E.getParentList(e),o=E.getSelectedSubLists(e);n=n||{},r&&o.length>0?G(e,r,o,t,n):function(e,t,n,r){if(t!==e.getBody())if(t)if(t.nodeName!==n||J(r)){var o=b(e.selection.getRng(!0));W(e.dom,t,r),z(e.dom,e.dom.rename(t,n)),e.selection.setRng(D(o))}else F(e);else q(e,n,r)}(e,r,t,n)},removeList:F,mergeWithAdjacentLists:z},Y=function(e,r,o,i){var a,s,d=r.startContainer,l=r.startOffset;if(3===d.nodeType&&(o?l<d.data.length:l>0))return d;for(a=e.schema.getNonEmptyElements(),1===d.nodeType&&(d=t.getNode(d,l)),s=new n(d,i),o&&h(e.dom,d)&&s.next();d=s[o?"next":"prev2"]();){if("LI"===d.nodeName&&!d.hasChildNodes())return d;if(a[d.nodeName])return d;if(3===d.nodeType&&d.data.length>0)return d}},Z=function(e,t){var n=t.childNodes;return 1===n.length&&!l(n[0])&&e.isBlock(n[0])},ee=function(e,t,n){var r,o;if(o=Z(e,n)?n.firstChild:n,function(e,t){Z(e,t)&&e.remove(t.firstChild,!0)}(e,t),!C(e,t,!0))for(;r=t.firstChild;)o.appendChild(r)},te=function(e,t,n){var r,o,i=t.parentNode;y(e,t)&&y(e,n)&&(l(n.lastChild)&&(o=n.lastChild),i===n.lastChild&&f(i.previousSibling)&&e.remove(i.previousSibling),(r=n.lastChild)&&f(r)&&t.hasChildNodes()&&e.remove(r),C(e,n,!0)&&e.$(n).empty(),ee(e,t,n),o&&n.appendChild(o),e.remove(t),C(e,i)&&i!==e.getRoot()&&e.remove(i))},ne=function(e,t,n,r){var o=e.dom;if(o.isEmpty(r))!function(e,t,n){e.dom.$(n).empty(),te(e.dom,t,n),e.selection.setCursorLocation(n)}(e,n,r);else{var i=b(t);te(o,n,r),e.selection.setRng(D(i))}},re=function(e,t){var n,r,o,i=e.dom,a=e.selection,s=a.getStart(),d=E.getClosestListRootElm(e,s),l=i.getParent(a.getStart(),"LI",d);if(l){if((n=l.parentNode)===e.getBody()&&C(i,n))return!0;if(r=L(a.getRng(!0)),(o=i.getParent(Y(e,r,t,d),"LI",d))&&o!==l)return t?ne(e,r,o,l):function(e,t,n,r){var o=b(t);te(e.dom,n,r);var i=D(o);e.selection.setRng(i)}(e,r,l,o),!0;if(!o&&!t&&X.removeList(e))return!0}return!1},oe=function(e,t){return re(e,t)||function(e,t){var n=e.dom,r=e.selection.getStart(),o=E.getClosestListRootElm(e,r),i=n.getParent(r,n.isBlock,o);if(i&&n.isEmpty(i)){var a=L(e.selection.getRng(!0)),s=n.getParent(Y(e,a,t,o),"LI",o);if(s)return e.undoManager.transact(function(){!function(e,t,n){var r=e.getParent(t.parentNode,e.isBlock,n);e.remove(t),r&&e.isEmpty(r)&&e.remove(r)}(n,i,o),X.mergeWithAdjacentLists(n,s.parentNode),e.selection.select(s,!0),e.selection.collapse(t)}),!0}return!1}(e,t)},ie=function(e,t){return e.selection.isCollapsed()?oe(e,t):function(e){var t=e.selection.getStart(),n=E.getClosestListRootElm(e,t);return!!(e.dom.getParent(t,"LI,DT,DD",n)||E.getSelectedListItems(e).length>0)&&(e.undoManager.transact(function(){e.execCommand("Delete"),I(e.dom,e.getBody())}),!0)}(e)},ae=function(e){e.on("keydown",function(t){t.keyCode===r.BACKSPACE?ie(e,!1)&&t.preventDefault():t.keyCode===r.DELETE&&ie(e,!0)&&t.preventDefault()})},se=ie,de=function(e){return{backspaceDelete:function(t){se(e,t)}}},le=a.DOM,ce=function(e,t){var n;if(l(e)){for(;n=e.firstChild;)t.appendChild(n);le.remove(e)}},ue=function(e){var t,n,r;return"DT"===e.nodeName?(le.rename(e,"DD"),!0):(t=e.previousSibling)&&l(t)?(t.appendChild(e),!0):t&&"LI"===t.nodeName&&l(t.lastChild)?(t.lastChild.appendChild(e),ce(e.lastChild,t.lastChild),!0):(t=e.nextSibling)&&l(t)?(t.insertBefore(e,t.firstChild),!0):!(!(t=e.previousSibling)||"LI"!==t.nodeName||(n=le.create(e.parentNode.nodeName),(r=le.getStyle(e.parentNode,"listStyleType"))&&le.setStyle(n,"listStyleType",r),t.appendChild(n),n.appendChild(e),ce(e.lastChild,n),0))},fe=function(e){var t=E.getSelectedListItems(e);if(t.length){for(var n=b(e.selection.getRng(!0)),r=0;r<t.length&&(ue(t[r])||0!==r);r++);return e.selection.setRng(D(n)),e.nodeChanged(),!0}},me=function(e,t){return function(){var n=e.dom.getParent(e.selection.getStart(),"UL,OL,DL");return n&&n.nodeName===t}},ge=function(e){e.on("BeforeExecCommand",function(t){var n,r=t.command.toLowerCase();if("indent"===r?fe(e)&&(n=!0):"outdent"===r&&K(e)&&(n=!0),n)return e.fire("ExecCommand",{command:t.command}),t.preventDefault(),!0}),e.addCommand("InsertUnorderedList",function(t,n){X.toggleList(e,"UL",n)}),e.addCommand("InsertOrderedList",function(t,n){X.toggleList(e,"OL",n)}),e.addCommand("InsertDefinitionList",function(t,n){X.toggleList(e,"DL",n)}),e.addQueryStateHandler("InsertUnorderedList",me(e,"UL")),e.addQueryStateHandler("InsertOrderedList",me(e,"OL")),e.addQueryStateHandler("InsertDefinitionList",me(e,"DL"))},pe=function(e){return e.getParam("lists_indent_on_tab",!0)},ve=function(e){pe(e)&&function(e){e.on("keydown",function(t){t.keyCode!==r.TAB||r.metaKeyPressed(t)||e.dom.getParent(e.selection.getStart(),"LI,DT,DD")&&(t.preventDefault(),t.shiftKey?K(e):fe(e))})}(e),ae(e)},he=function(e,t){return function(n){var r=n.control;e.on("NodeChange",function(e){var n=function(e,t){for(var n=0;n<e.length;n++)if(t(e[n]))return n;return-1}(e.parents,u),o=-1!==n?e.parents.slice(0,n):e.parents,a=i.grep(o,l);r.active(a.length>0&&a[0].nodeName===t)})}},Ce=function(e){(function(e,t){var n=e.settings.plugins?e.settings.plugins:"";return-1!==i.inArray(n.split(/[ ,]/),t)})(e,"advlist")||(e.addButton("numlist",{active:!1,title:"Numbered list",cmd:"InsertOrderedList",onPostRender:he(e,"OL")}),e.addButton("bullist",{active:!1,title:"Bullet list",cmd:"InsertUnorderedList",onPostRender:he(e,"UL")})),e.addButton("indent",{icon:"indent",title:"Increase indent",cmd:"Indent",onPostRender:function(e){return function(t){var n=t.control;e.on("nodechange",function(){var t=E.getSelectedListItems(e),r=t.length>0&&m(t[0]);n.disabled(r)})}}(e)})};e.add("lists",function(e){return ve(e),Ce(e),ge(e),de(e)})}(); |