@firestitch/froala
Version:
The next generation Javascript WYSIWYG HTML rich text editor made by devs for devs. High performance and modern design make it easy to use for developers and loved by users.
3 lines (2 loc) • 32.2 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("froala-editor")):"function"==typeof define&&define.amd?define(["froala-editor"],t):t(e.FroalaEditor)}(this,function(w){"use strict";function T(e){return function(e){if(Array.isArray(e))return n(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){var a;if(e)return"string"==typeof e?n(e,t):"Map"===(a="Object"===(a=Object.prototype.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:a)||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?n(e,t):void 0}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}w=w&&w.hasOwnProperty("default")?w.default:w,Object.assign(w.DEFAULTS,{trackChangesEnabled:!1,showChangesEnabled:!1}),w.PLUGINS.track_changes=function(b){var C=b.$;C.fn.isAfter=function(e){var t,a=C(this),n=a.parents(),r=e.parents(),i=a;for(t in n){var s=e;if(n.hasOwnProperty(t)){var l,o=C(n[t]);for(l in r)if(r.hasOwnProperty(l)){var c,d=C(r[l]);if(o[0]===d[0])return c=i.index(),s.index()<c;s=d}i=o}}return!1};var r,i,d=[],m="",v="",S="",N="",E=[],y=null,x=[],l=!1;function o(){return d.pop()}function A(e){var t=!(!e||8!=e.keyCode),a=e&&13==e.keyCode,n=!(!e||46!=e.keyCode);if(b.opts.trackChangesEnabled){b.selection.restore(),e&&e.composing&&(b.selection.save(),b.selection.ranges()[0].collapse(!1));var r=b.selection.ranges(0).startContainer,i=C(r).parentsUntil(b.$el,"[data-tracking=true]");if(C(r).data("tracking")&&t)return b.markers.insert(),(l=b.$el.find(".fr-marker"))[0].previousSibling&&"IMG"===l[0].previousSibling.tagName||b.selection.clear(),C(l).remove();if(!i.length||"TD"==r.tagName||a){if(b.selection.isCollapsed()){b.markers.insert();var s=b.$el.find(".fr-marker");if(!(s=e&&e.composing?C(s[1]):s).length)return;var l="pending-".concat(b.id,"-").concat(b.track_changes.getPendingChanges().length),i=b.opts.showChangesEnabled?'class="fr-highlight-change"':"";if(t||n){if(t){if(!s[0].previousSibling||s[0].previousSibling.nodeType!==Node.ELEMENT_NODE||!s[0].previousSibling.lastChild||s[0].previousSibling.lastChild.nodeType!==Node.ELEMENT_NODE||"IMG"!==s[0].previousSibling.lastChild.tagName){for(;C(s[0].previousSibling).data("tracking");)s.insertBefore(s.prev());C(s[0].previousSibling).find("[data-tracking=true]").length&&s.insertBefore(C(s[0].previousSibling).find("[data-tracking=true]").eq(0))}}else{if(C(r).data("tracking")){if(!r.nextSibling)return s[0].nextSibling&&"IMG"===s[0].nextSibling.tagName&&s[0].nextSibling.remove();s.insertBefore(r.nextSibling)}M(s)}var r=s[0]&&s[0].previousSibling?s[0].previousSibling.nodeValue:"",o=r&&r.slice(0,-(e.selectionLength||1));n&&(s[0].nextSibling&&"SPAN"!==s[0].nextSibling.tagName&&null===s[0].nextSibling.nodeValue&&s[0].nextSibling.firstChild&&s[0].nextSibling.firstChild.before(s[0]),o=(r=s[0].nextSibling?s[0].nextSibling.nodeValue:" ")&&r.slice(1)),n&&s[0].nextSibling&&"isPasted"===s[0].nextSibling.id?o=(r=s[0].nextSibling?s[0].nextSibling.textContent:" ")&&r.slice(1):t&&s[0].previousSibling&&"isPasted"===s[0].previousSibling.id&&(o=(r=s[0].previousSibling?s[0].previousSibling.textContent:" ")&&r.slice(0,-(e.selectionLength||1)));var c,d=C('<span data-tracking="true" data-track-id="'.concat(l,'" ').concat(i,"></span>")),g=C('<span data-tracking-deleted="true" class="fr-tracking-deleted" '.concat(b.helpers.isIOS()?"":'contenteditable="false"',"></span>")),h=(b.opts.showChangesEnabled||(b.helpers.isMobile()?g.addClass("fr-track-hide-mobile"):g.addClass("fr-track-hide")),!1),p=!1;if(t)try{var f=s[0]&&s[0].previousSibling;if(s[0]&&s[0].previousElementSibling&&"I"===s[0].previousElementSibling.tagName&&!r&&(c=s[0].previousElementSibling),f&&3===f.nodeType&&"SPAN"!==f.parentNode.tagName&&f.previousSibling&&"SPAN"===f.previousSibling.tagName&&" "===f.nodeValue?c=f.previousSibling:f&&"SPAN"===f.parentNode.tagName&&0<C(f.parentNode).find(".fr-emoticon").length?(c=f.parentNode,h=!0):f&&("SPAN"===f.tagName&&"isPasted"!==f.id||"HR"===f.tagName)?c=f:C(s).parent().prev().is("hr")?(c=C(s).parent().prev().get(0),h=p=!0):f&&"IMG"===f.tagName&&(c=f,C(d).prepend("".concat(w.MARKERS)),C(d).append("".concat(w.MARKERS))),b.helpers.isMobile()&&s[0]&&!c&&!r&&!o)return;h?(C(s[0].parentNode).after(d),(p?C(s).parent():C(s)).remove()):s[0]?e.composing?C(s).after(d):C(s).before(d):C(N).before(d)}catch(e){N&&C(N).before(d)}else n&&(f=s[0].nextSibling,s[0].nextElementSibling&&"I"===s[0].nextElementSibling.tagName&&!s[0].nextSibling.nodeValue?c=s[0].nextElementSibling:f&&3===f.nodeType&&"SPAN"!==f.parentNode.tagName&&f.nextSibling&&"SPAN"===f.nextSibling.tagName&&" "===f.nodeValue?c=f.nextSibling:f&&"SPAN"===f.parentNode.tagName&&0<C(f.parentNode).find(".fr-emoticon").length?(c=f.parentNode,h=!0):f&&"SPAN"===f.tagName&&s[0].nextSibling&&"isPasted"!==s[0].nextSibling.id?c=f:f&&"IMG"===f.tagName&&(c=f,C(d).prepend("".concat(w.MARKERS)),C(d).append("".concat(w.MARKERS))),h?(C(s[0].parentNode).before(d),C(s).remove()):C(s).after(d));if(e.composing?x.push({span:d,delete:g}):(b.helpers.isIOS()&&x.push({delete:g}),C(d).prepend(g)),!c&&(c=r&&r.replace(o,""),b.helpers.isMobile())&&m&&!e.composing&&(p=b.selection.get().focusNode,f=b.selection.get().focusOffset,k=1,v&&p&&v.isSameNode(p)&&(k=S-f),c=m.replace(/\u00a0/g," ").replace(r.replace(/\u00a0/g," "),"").slice(0,k)),c&&(h?(C(g).append(C(C(c).get(0).outerHTML)),b.markers.insert()):C(g).append(c)),c&&0==c.length)return;b.browser.msie&&t&&(C(d).prepend("".concat(w.MARKERS)),C(d).append("".concat(w.MARKERS))),t&&(o||""===o)&&s[0].previousSibling?s[0].previousSibling.nodeValue=o:n&&(C(d).append("".concat(w.MARKERS)),s[0].nextSibling.nodeValue=o)}else{var u,p=w.INVISIBLE_SPACE;if(e&&b.helpers.isMobile()&&((p=s[0]&&s[0].previousSibling&&s[0].previousSibling.nodeValue?s[0].previousSibling.nodeValue.slice(-1):w.INVISIBLE_SPACE)&&s[0]&&s[0].previousSibling&&s[0].previousSibling.nodeValue?s[0].previousSibling.nodeValue=s[0].previousSibling.nodeValue.slice(0,-1):!s[0]||s[0].previousSibling||s[0].nextSibling||p!==w.INVISIBLE_SPACE||(p=b.selection.get().focusNode.nodeValue.slice(S,b.selection.get().focusOffset),b.selection.get().focusNode.nodeValue=b.selection.get().focusNode.nodeValue.slice(b.selection.get().focusOffset))),a)return s.parent().parent().is("li")?void 0:(u=C("<p></p>"),0<s.closest("p").length&&(s.closest("p").after(u),u.append(s),b.markers.remove(),setTimeout(function(){u.prev().text()!==String.fromCharCode(8203)&&""!==u.prev().text()||u.prev().remove(),b.selection.setAfter(u[0])},1)));s[0].previousSibling&&"BR"===s[0].previousSibling.tagName&&s[0].previousSibling.remove(),s.replaceWith('<span data-tracking="true" data-track-id="'.concat(l,'" ').concat(i,">").concat(p+w.MARKERS,"</span>"))}b.selection.restore(),b.track_changes.pushChange(l)}else{b.selection.save();var k,f=b.$el.find('.fr-marker[data-type="true"]').length&&b.$el.find('.fr-marker[data-type="true"]').get(0),r=b.$el.find('.fr-marker[data-type="false"]').length&&b.$el.find('.fr-marker[data-type="false"]').get(0);C(f).parent().hasClass("fr-emoticon")&&C(f).parent().before(f),C(f).isAfter(C(r))&&(k=f,f=r,r=k),_(f,r,e&&e.deletion),b.selection.restore()}b.helpers.isMobile()&&m&&b.markers.remove()}}}function M(e){if(C(e[0].nextSibling).data("tracking")){for(;C(e[0].nextSibling).data("tracking")&&(!(0<C(e[0].previousElementSibling).find("[data-tracking-deleted=true]").length&&0<C(e[0].nextElementSibling).find("[data-tracking-deleted=true]").length)||C(e[0].previousSibling).data("tracking"));)C(e).insertAfter(e.next());e.insertBefore(e[0].previousSibling)}}function _(e,t,a){var n=2<arguments.length&&void 0!==a&&a;if(e&&(!e.isSameNode(t)||!C(e).hasClass("fr-marker"))){for(;e.nodeType===Node.COMMENT_NODE;)e=e.nextSibling;if(C(e).parent().is("table")&&0!==C(e).parent().next().text().length&&_(C(e).parent().next()[0],t,n),"TD"!==e.tagName||1!==e.childNodes.length||"BR"!==e.childNodes[0].tagName){if(b.node.isBlock(e)&&"HR"!==e.tagName)return b.node.hasClass(e.firstChild,"fr-marker")?_(e.firstChild.nextSibling,t,n):_(e.firstChild,t,n);"BR"===e.tagName&&"TD"===e.parentElement.tagName&&(a=e.parentElement.nextElementSibling,C(e).remove(),_(a,t));var a="pending-".concat(b.id,"-").concat(b.track_changes.getPendingChanges().length),r=b.opts.showChangesEnabled?'class="fr-highlight-change"':"",r=C('<span data-tracking="true" data-track-id="'.concat(a,'" ').concat(r,"></span>")),i=C('<span data-tracking-deleted="true" class="fr-tracking-deleted" '.concat(b.helpers.isIOS()?"":'contenteditable="false"',"></span>")),s=(b.opts.showChangesEnabled||(b.helpers.isMobile()?i.addClass("fr-track-hide-mobile"):i.addClass("fr-track-hide")),e);for(C(e).before(r),b.track_changes.pushChange(a);s&&C(s).hasClass("fr-marker");)s=s.nextSibling;for(var l=!1;s&&!l&&!C(s).hasClass("fr-marker")&&!C(s).is("[data-track-id]")&&0===C(s).find("fr-marker").length&&"UL"!==s.tagName&&"OL"!==s.tagName;){var o=s;if("IMG"===s.tagName&&C(s).data("tracking-img","true"),b.node.isBlock(s)&&"HR"!==e.tagName)return _(s.firstChild,t,n);if(s)for(var c=s.childNodes,d=0;d<c.length;d++)if(c[d].className&&"fr-marker"===c[d].className){l=!0,_(s.firstChild,t,n);break}l||(s=s.nextSibling,C(i).append(o))}if(!s||"UL"!==s.tagName&&"OL"!==s.tagName||_(s,t,n),n?x.push({span:r,delete:i}):(b.helpers.isIOS()&&x.push({delete:i}),C(r).prepend(i)),b.browser.msie?C(r).prepend("".concat(w.INVISIBLE_SPACE+w.MARKERS)):C(r).prepend("".concat(w.INVISIBLE_SPACE)),C(r).append("".concat(w.INVISIBLE_SPACE+w.MARKERS)),!s&&!e.isSameNode(t)){for(var g=r.get(0).parentNode;g&&!g.nextSibling&&!b.node.isElement(g);)g=g.parentNode;g&&(a=g.nextSibling)&&(b.node.isBlock(a)?"HR"===a.tagName?_(a.nextSibling,t,n):(b.browser.mozilla&&"LI"===g.tagName&&"SPAN"===g.lastChild.tagName&&C(g.lastChild).hasClass("fr-marker")&&g.lastChild.remove(),_(a.firstChild,t,n)):_(a,t,n))}}}}function I(e){if(b.opts.trackChangesEnabled){b.selection.restore();var t=b.selection.ranges(0).startContainer,a=C(t).parentsUntil(b.$el,"[data-tracking=true]");if(!C(t).data("tracking")&&(!a.length&&!b.selection.isCollapsed()&&"quote"!=e)){b.selection.save(),h(b.$el.find('.fr-marker[data-type="true"]').length&&b.$el.find('.fr-marker[data-type="true"]').get(0),b.$el.find('.fr-marker[data-type="false"]').length&&b.$el.find('.fr-marker[data-type="false"]').get(0));t=b.$el.find('.fr-marker[data-type="true"]').length&&b.$el.find('.fr-marker[data-type="true"]').get(0),a=t.parentNode;if(a&&"A"===a.tagName&&a.firstChild&&"SPAN"===a.firstChild.tagName&&2<a.firstChild.childNodes.length&&"STRONG"===a.firstChild.childNodes[3].tagName)C(a.firstChild.childNodes[3].firstChild).before(t);else{for(var n=t.previousSibling.firstChild;n&&"SPAN"!==n.tagName;)n=n.nextSibling;C(n).after(t)}b.selection.restore()}}}function h(e,t,a){if(e&&!("<br>"===C(e).html()&&C(e).parent().is("td")||(C(e).parent().is("table")&&0!==C(e).parent().next().text().length&&h(C(e).parent().next()[0],t,a),C(e).is("br")&&C(e).parent().length&&C(e).parent().is("td")&&0===C(e).parent().text().length))){for(a||(a="pending-".concat(b.id,"-").concat(b.track_changes.getPendingChanges().length),b.track_changes.pushChange(a));e.nodeType===Node.COMMENT_NODE;)e=e.nextSibling;if(b.node.isBlock(e)&&"HR"!==e.tagName)return b.node.hasClass(e.firstChild,"fr-marker")?h(e.firstChild.nextSibling,t,a):h(e.firstChild,t,a);var n=b.opts.showChangesEnabled?'class="fr-highlight-change"':"",r=C('<span data-tracking="true" data-track-id="'.concat(a,'" ').concat(n,"></span>")),i=C('<span data-tracking-deleted="true" class="fr-tracking-deleted" contenteditable="false" style="display:none"></span>'),s=e;for(C(e).before(r);s&&C(s).hasClass("fr-marker");)s=s.nextSibling;for(var l=!1;s&&!l&&!C(s).hasClass("fr-marker")&&0===C(s).find("fr-marker").length&&"UL"!==s.tagName&&"OL"!==s.tagName;){var o=s;if(b.node.isBlock(s)&&"HR"!==e.tagName)return h(s.firstChild,t,a);if(s)for(var c=s.childNodes,d=0;d<c.length;d++)if(c[d].className&&"fr-marker"===c[d].className){l=!0,h(s.firstChild,t,a);break}l||(s=s.nextSibling,C(i).append(o.cloneNode(!0)),C(r).append(o))}if(!s||"UL"!==s.tagName&&"OL"!==s.tagName||h(s,t,a),C(s).hasClass("fr-marker")&&C(r).append(s),C(r).prepend(i),C(r).prepend("".concat(w.INVISIBLE_SPACE)),C(r).append("".concat(w.INVISIBLE_SPACE)),!s&&!e.isSameNode(t)){for(var g=r.get(0).parentNode;g&&!g.nextSibling&&!b.node.isElement(g);)g=g.parentNode;g&&(n=g.nextSibling)&&(b.node.isBlock(n)?"HR"===n.tagName?h(n.nextSibling,t,a):h(n.firstChild,t,a):h(n,t,a))}}}function c(){if(b.events.trigger("image.hideResizer"),b.events.trigger("video.hideResizer"),b.html.cleanEmptyTags(!0),b.helpers.isMobile())for(var e=b.$el.find("img[data-tracking-img]"),t=0;t<e.length;t++){var a=C(e.get(t));a.parent()&&a.parent().data("tracking")||a.removeData("tracking-img")}}function e(){b.$el.find("li").each(function(){0===this.innerText.replace(/\u200B/g,"").length&&this.remove()})}function t(){var e=o();if(e){var t,a=b.$el.find("[data-track-id=".concat(e,"]"));if(a.length){var n,e=a.parent("a");e.length&&(n=C(e.get(0).outerHTML).text(),1===[].filter.call(n,function(e){return 8203!==e.charCodeAt(0)}).length)&&(t=e);for(var r=0;r<a.length;r++){var i=a.get(r),s=C(a).data("tracking-deleted")?C(a):C(i).find("[data-tracking-deleted=true]");s.length&&(s.get(0).remove?s.get(0).remove():s.get(0).parentNode.removeChild(s.get(0))),i.hasAttribute("style")?(C(i).removeData("tracking"),C(i).removeData("track-id"),C(i).removeClass("fr-highlight-change")):(b.selection.save(),0<C(i).find("IFRAME").length?(C(i).removeData("tracking"),C(i).removeData("track-id"),C(i).removeClass("fr-highlight-change")):i.outerHTML=i.innerHTML,b.selection.restore())}}t&&t.remove()}c()}function a(){var e=o();if(e){var t=b.$el.find("[data-track-id=".concat(e,"]"));if(t.length){b.selection.save();for(var a=t.length-1;0<=a;a--){var n=C(t).data("tracking-deleted")?C(t):C(t.get(a)).find("[data-tracking-deleted=true]");n.length?0<C(t).find("IFRAME").length?(C(t).removeData("tracking"),C(t).removeData("track-id"),C(t).removeClass("fr-highlight-change"),C(t).removeClass("fr-tracking-deleted"),C(t).removeData("tracking-deleted"),C(t).removeAttr("contenteditable")):n.parent("[data-tracking=true]").data("track-id")==e?(C(t.get(a)).find("[data-tracking-deleted=true]").remove(),t.get(a).outerHTML=n.get(0).innerHTML):t.get(a).remove?t.get(a).remove():t.get(a).parentNode.removeChild(t.get(a)):t.get(a).remove?t.get(a).remove():t.get(a).parentNode.removeChild(t.get(a))}b.selection.restore()}}c()}return b.events.on("keydown",function(e){var t,a;if(!b.opts.trackChangesEnabled)return!0;r=null==(t=b.selection.get())||null==(t=t.focusNode)?void 0:t.nodeValue,b.helpers.isAndroid()?(t=b.selection.get(),m=null==t||null==(a=t.focusNode)?void 0:a.nodeValue,v=null==t?void 0:t.focusNode,N=null==(a=v)?void 0:a.nextSibling,S=null==t?void 0:t.focusOffset):(a=e,(!b.keys.ctrlKey(a)||a.which!==w.KEYCODE.Z&&a.which!==w.KEYCODE.C)&&(48<=a.keyCode&&a.keyCode<=57||65<=a.keyCode&&a.keyCode<=90||97<=a.keyCode&&a.keyCode<=122||186<=a.keyCode&&a.keyCode<=222||13===a.keyCode||8===a.keyCode||32===a.keyCode||46===a.keyCode||96<=a.keyCode&&a.keyCode<=111)&&(!b.keys.ctrlKey(e)||"b"!==e.key&&"i"!==e.key&&"u"!==e.key?b.keys.ctrlKey(e)&&"a"===e.key||b.keys.ctrlKey(e)&&"s"===e.key||A(e):I()))},!0),b.events.on("keyup",function(e){if(!b.opts.trackChangesEnabled)return!0;var t;if(b.helpers.isMobile())if(i=null==(t=b.selection.get())||null==(t=t.focusNode)?void 0:t.nodeValue,l){for(var a=0;a<x.length;a++)b.opts.showChangesEnabled&&C(x[a].span).empty(),C(x[a].span).prepend(x[a].delete);l=!(x=[])}else if(b.helpers.isIOS()){for(var n=0;n<x.length;n++)i&&1===i.length&&r&&1==r.length?(C(x[n].delete).attr("contenteditable","true"),C(x[n].delete).addClass("fr-ios-mobile-disable-select")):C(x[n].delete).attr("contenteditable","false");x=[]}else{if(46===e.keyCode)return!0;A(e)}},!0),b.events.on("beforeinput",function(e){var t=e.originalEvent,a=!1;if(!b.opts.trackChangesEnabled)return!0;if(b.helpers.isAndroid()){var n=b.selection.get(),r=b.selection.ranges(0),i=r.startContainer,r=r.endContainer,s=C(i).parentsUntil(b.$el,"[data-tracking=true]"),r=C(r).parentsUntil(b.$el,"[data-tracking=true]");if("insertCompositionText"===t.inputType)if(""===t.data)a=!0;else if(n.toString().length>t.data.length){if(0<s.length||0<r.length)return l=!0,e.preventDefault(),!1;e.composing=a=!0}!(a="insertText"===t.inputType&&!b.selection.isCollapsed()||a)&&"deleteContentBackward"!==t.inputType||(l=!0,i.lastChild&&!n.toString()&&null!=(s=i.lastChild.children)&&null!=(r=s.item(0))&&r.hasAttribute("contenteditable"))||(e.keyCode=8,e.deletion=!0,A(e))}},!0),b.events.on("paste.before",function(e){b.opts.trackChangesEnabled&&b.helpers.isMobile()&&A(e)},!0),b.events.on("paste.after",function(e){if(b.opts.trackChangesEnabled){b.markers.insert();for(var t=b.$el.find(".fr-marker"),a=t.parent().data("tracking")?t.parent():t.parent().find("[data-tracking=true]"),n=a.children().eq(0).is("ul"),r=t.next();r.is("br");)(r=r.next()).prev().remove(),r.next().is("br")&&r.next().remove();if(r.is("ul")){var i=r.find("li"),s=(i.find("[data-tracking=true]").addClass("fr-highlight-change"),i[0].innerHTML);if(i.html(""),i.insertAfter(t.closest("li")),0==r.parent().find("[data-tracking=true]").length)i.append(s);else{if(r.remove(),a.data("tracking")){t=a[0].innerHTML;0<t.trim().length&&a.parent().append(t),i.append(a),a.html(s)}else if(!n)return a.insertBefore(a.closest("ul")),void a.next().remove();b.markers.remove(),i.next().length&&i.next().is("li")&&""==i.next().text().trim()&&i.next().remove();t=i.prev().children().eq(0);t.is("br")&&t.remove()}}}},!0),b.events.on("image.inserted",function(e){b.helpers.isMobile()&&b.opts.trackChangesEnabled&&e.data("tracking-img",!0)}),b.events.on("image.removed",function(e){var t,a,n,r,i,s;b.helpers.isMobile()&&b.opts.trackChangesEnabled&&!e.data("tracking-img")&&!e.parent().data("tracking")&&(t=b.selection.ranges(0).startContainer,a=C(t).parentsUntil(b.$el,"[data-tracking=true]"),b.markers.insert(),n=b.$el.find(".fr-marker"),r="pending-".concat(b.id,"-").concat(b.track_changes.getPendingChanges().length),i=b.opts.showChangesEnabled?'class="fr-highlight-change"':"",i=C('<span data-tracking="true" data-track-id="'.concat(r,'" ').concat(i,"></span>")),s=C('<span data-tracking-deleted="true" class="fr-tracking-deleted" contenteditable="false"></span>'),b.opts.showChangesEnabled||s.addClass("fr-track-hide"),e.data("tracking-img",!0),C(t).data("tracking")||a.length?(C(n).replaceWith(s),C(s).append(e),b.markers.remove()):(C(n).replaceWith(i),C(i).prepend(s),C(s).append(e),b.markers.remove(),b.track_changes.pushChange(r)))}),b.events.on("commands.before",function(t){if(!b.opts.trackChangesEnabled)return!0;var e=["applytextColor","bold","italic","underline","strikeThrough","subscript","superscript","fontFamily","fontSize","textColor","applybackgroundColor","inlineClass","inlineStyle","alignLeft","alignCenter","formatOLSimple","alignRight","alignJustify","formatOL","formatUL","paragraphFormat","paragraphStyle","lineHeight","outdent","indent","quote"];if(["change","applyAll","applyLast","removeLast","showChanges","trackChanges","moreTrackChanges","undo","redo","fullscreen","print","getPDF","spellChecker","selectAll","html","help"].filter(function(e){return e===t}).length||e.filter(function(e){return e===t}).length){if(e.filter(function(e){return e===t}).length&&"paragraphFormat"!==t&&"paragraphStyle"!==t&&"lineHeight"!==t)I(t);else if("paragraphFormat"===t||"paragraphStyle"===t||"lineHeight"===t){b.selection.save();for(var e=b.$el.find('.fr-marker[data-type="true"]').length&&b.$el.find('.fr-marker[data-type="true"]').get(0),a=b.opts.showChangesEnabled?'class="fr-highlight-change"':"",n="pending-".concat(b.id,"-").concat(b.track_changes.getPendingChanges().length),r=C('<span data-tracking="true" data-track-id="'.concat(n,'" ').concat(a,"></span>")),i=C('<span data-tracking-deleted="true" class="fr-tracking-deleted" contenteditable="false" style="display:none"></span>'),s=e.parentNode.cloneNode(!0),l=s.childNodes,o=0;o<l.length;)l[o].className&&"fr-marker"===l[o].className?l[o].remove():o++;C(i).append(s),C(r).append(i),C(e.parentNode).after(C("<p></p>")),C(e.parentNode.nextSibling).append(r),r=C('<span data-tracking="true" data-track-id="'.concat(n,'" ').concat(a,"></span>")),C(e.parentNode.nextSibling).after(C("<p></p>")),C(e.parentNode.nextSibling.nextSibling).append(r),r.append(e.parentNode),b.track_changes.pushChange(n),b.selection.restore()}}else{if(w.COMMANDS[t]&&(w.COMMANDS[t].hasOwnProperty("type")&&"dropdown"===w.COMMANDS[t].type||w.COMMANDS[t].more_btn||w.COMMANDS[t].popup)){if("insertImage"!=t&&"insertFile"!=t)return}else if("clearFormatting"===t)if(b.opts.trackChangesEnabled){y=b.selection.blocks();for(var c=[],d=0,g=0;g<y.length;g++){var d=g<d?d:g,h=C(y[g]);h.is("li")&&h.siblings("li").each(function(e,t){C(t).find("li").length&&(c.push({index:d,item:t}),d+=1)}),E[g]=C("<span>".concat(h.get(0).innerHTML,"</span>"))}for(var p=0,f=c;p<f.length;p++){var u=f[p],k=u.index,u=u.item,m=C(C(u).get(0).outerHTML);m.find("ul").remove(),m.find("ol").remove(),E=[].concat(T(E.slice(0,k+1)),[C("<span>".concat(m.get(0).innerHTML,"</span>"))],T(E.slice(k+1))),y=[].concat(T(y.slice(0,k+1)),[u],T(y.slice(k+1)))}return}else return void 0;A()}},!0),b.events.on("commands.after",function(e){if(!b.opts.trackChangesEnabled)return!0;if(0<=["undo","redo"].indexOf(e)){var t=b.$el.find("[data-tracking=true]");d.splice(0,d.length);for(var a=0;a<t.length;a++){var n=C(t.get(a)).data("track-id");d[n.slice(n.lastIndexOf("-")+1)]=n}}else if("clearFormatting"==e&&b.opts.trackChangesEnabled){var r,i="pending-".concat(b.id,"-").concat(b.track_changes.getPendingChanges().length);for(r in y){var s=C(y[r]);E[r]&&(s=s,l=E[r],o=i,c=void 0,c=b.opts.showChangesEnabled?'class="fr-highlight-change"':"",o=C('<span data-tracking="true" data-track-id="'.concat(o,'" ').concat(c,"></span>")),c=C('<span data-tracking-deleted="true" class="fr-tracking-deleted" contenteditable="false"></span>'),b.opts.showChangesEnabled||c.addClass("fr-track-hide"),c.append(l.get(0).innerHTML),o.append(c),l=s.get(0).innerHTML,s.html(""),s.append(o),o.append(l),E[r]=null,r,0)}b.track_changes.pushChange(i),E=[],y=null}var l,o,c},!0),b.events.on("quickInsert.commands.before",function(e){b.opts.trackChangesEnabled&&A(e)}),{toggleTracking:function(){b.opts.trackChangesEnabled&&-1<b.html.get(!0,!0).indexOf("data-tracking")||b.opts.trackChangesEnabled&&0<b.$el.find("[data-tracking=true]").length?alert("Your editor has pending changes. Please resolve them before turning off Track Changes in the toolbar."):(b.commands.moreTrackChanges(),b.opts.trackChangesEnabled=!b.opts.trackChangesEnabled,b.opts.trackChangesEnabled||(b.opts.showChangesEnabled=!1))},pushChange:function(e){d.push(e)},insertChangeAt:function(e,t){d=[].concat(T(d.slice(0,e)),[t],T(d.slice(e)))},popChange:o,getPendingChanges:function(){return d},showChanges:function(){b.opts.showChangesEnabled=!b.opts.showChangesEnabled;for(var e=b.$el.find(".fr-tracking-deleted"),t=b.opts.showChangesEnabled,a=0;a<e.length;a++)t?(C(e.get(a)).removeClass("fr-track-hide"),C(e.get(a)).removeClass("fr-track-hide-mobile")):b.helpers.isMobile()?C(e.get(a)).addClass("fr-track-hide-mobile"):C(e.get(a)).addClass("fr-track-hide");if(b.opts.showChangesEnabled)for(var n=b.$el.find("[data-tracking=true]").not(".fr-highlight-change"),r=0;r<n.length;r++)C(n.get(r)).addClass("fr-highlight-change");else for(var i=b.$el.find(".fr-highlight-change"),s=0;s<i.length;s++)C(i.get(s)).removeClass("fr-highlight-change")},acceptAllChanges:function(){for(;0!=b.track_changes.getPendingChanges().length;)t();d=[],e(),b.$el.find("li").each(function(){!C(this).children()[0]||"OL"!==C(this).children()[0].tagName&&"UL"!==C(this).children()[0].tagName||e()})},rejectAllChanges:function(){for(;0!=b.track_changes.getPendingChanges().length;)a();d=[]},acceptSingleChange:t,rejectSingleChange:a,refresh:function(e){var t=b.$el.find("[data-tracking=true]"),t=(e.toggleClass("fr-disabled",!d.length),e.toggleClass("fr-active",d.length).attr("aria-pressed",d.length),0<!t.length&&(e.removeClass("fr-active"),e.addClass("fr-disabled")),b.$tb.find('.fr-command[data-cmd="markdown"]')),e=(t&&b.opts.trackChangesEnabled?t.addClass("fr-disabled"):t&&!C(".fr-active.fr-popup").length&&t.removeClass("fr-disabled"),b.$tb.find('.fr-command[data-cmd="showChanges"]'));e&&b.opts.trackChangesEnabled&&e.removeClass("fr-disabled")},replaceSpecialItem:function(e){b.selection.setBefore(e.get(0)),b.selection.setAfter(e.get(0)),h(b.$el.find('.fr-marker[data-type="true"]').length&&b.$el.find('.fr-marker[data-type="true"]').get(0),b.$el.find('.fr-marker[data-type="false"]').length&&b.$el.find('.fr-marker[data-type="false"]').get(0))},removeSpecialItem:function(e){b.selection.setBefore(e.get(0)),b.selection.setAfter(e.get(0)),_(b.$el.find('.fr-marker[data-type="true"]').length&&b.$el.find('.fr-marker[data-type="true"]').get(0),b.$el.find('.fr-marker[data-type="false"]').length&&b.$el.find('.fr-marker[data-type="false"]').get(0))},removedTable:function(e){var r,i,t,a,n=!1;e.find("[data-tracking=true]").each(function(){0<this.innerText.replace(/\u200B/g,"").length&&(n=!0)}),n?alert("Your table has pending changes. Please resolve them before remove table."):(r="pending-".concat(b.id,"-").concat(b.track_changes.getPendingChanges().length),i=b.opts.showChangesEnabled?'class="fr-highlight-change"':"",t=C('<span data-tracking="true" data-track-id="'.concat(r,'" ').concat(i,"></span>")),a=C('<span data-tracking-deleted="true" class="fr-tracking-deleted" contenteditable="false"></span>'),e.before(t),e.find("tr").find("> td").each(function(){var e=C('<span data-tracking="true" data-track-id="'.concat(r,'" ').concat(i,"></span>")),t=C('<span data-tracking-deleted="true" class="fr-tracking-deleted" contenteditable="false"></span>'),a=C(this),n=a[0].innerText;C(t)[0].innerText=n,a[0].innerText="",e.prepend(t),a.prepend(e)}),a.append(e),t.append(a),b.track_changes.pushChange(r))},addQuote:function(e){var t="pending-".concat(b.id,"-").concat(b.track_changes.getPendingChanges().length),a=b.opts.showChangesEnabled?'class="fr-highlight-change"':"",n=C('<div data-tracking="true" data-track-id="'.concat(t,'" ').concat(a,"></div>")),a=C('<div data-tracking="true" data-track-id="'.concat(t,'" ').concat(a,"></div>")),r=C('<span data-tracking-deleted="true" class="fr-tracking-deleted" contenteditable="false"></span>'),i=(b.opts.showChangesEnabled||r.addClass("fr-track-hide"),e.before(a),e.before(n),e.get(0).innerHTML);r.append(i),n.append(r),a.append(e),a.find('[data-tracking="true"]').each(function(e,t){C(t).children().eq(0).insertBefore(C(t)),C(t).remove()}),b.track_changes.pushChange(t)},removeQuote:function(e,t){var a,n,r,i;0<t||(t="pending-".concat(b.id,"-").concat(b.track_changes.getPendingChanges().length),n=b.opts.showChangesEnabled?'class="fr-highlight-change"':"",a=C('<div data-tracking="true" data-track-id="'.concat(t,'" ').concat(n,"></div>")),n=C('<div data-tracking="true" data-track-id="'.concat(t,'" ').concat(n,"></div>")),r=C('<span data-tracking-deleted="true" class="fr-tracking-deleted" contenteditable="false"></span>'),b.opts.showChangesEnabled||r.addClass("fr-track-hide"),e.before(n),e.before(a),i=(i=e.find("blockQuote").eq(0).html())||e.html(),r.append(e),a.append(r),n.append(i),n.find('[data-tracking="true"]').each(function(e,t){C(t).children().eq(0).insertBefore(C(t)),C(t).remove()}),b.track_changes.pushChange(t))},wrapInTracking:function(e,t){var a="pending-".concat(b.id,"-").concat(b.track_changes.getPendingChanges().length),n=b.opts.showChangesEnabled?'class="fr-highlight-change"':"",n=C('<span data-tracking="true" data-track-id="'.concat(a,'" ').concat(n,"></span>")),t=(t&&n.addClass(t),C('<span data-tracking-deleted="true" class="fr-tracking-deleted" contenteditable="false"></span>'));return b.opts.showChangesEnabled||t.addClass("fr-track-hide"),e.before(n),n.append(e),b.track_changes.pushChange(a),n},wrapInDelete:function(e){var t=C('<span data-tracking-deleted="true" class="fr-tracking-deleted" contenteditable="false"></span>');return b.opts.showChangesEnabled||(b.helpers.isMobile()?t.addClass("fr-track-hide-mobile"):t.addClass("fr-track-hide")),t.append(e),t},wrapLinkInTracking:function(e,t){var a="pending-".concat(b.id,"-").concat(b.track_changes.getPendingChanges().length),n=b.opts.showChangesEnabled?'class="fr-highlight-change"':"",n=C('<span data-tracking="true" data-track-id="'.concat(a,'" ').concat(n,"></span>"));return e.before(n),n.append(e),b.track_changes.insertChangeAt(t-1,a),n},pasteInEmptyEdior:function(e){var t=b.$el.find(".fr-highlight-change");C(t)[0].style.display="block",C(t)[0].innerHTML=e},pasteInEdior:function(e){var t=b.$el.find(".fr-marker");C(t)[0].outerHTML=e,b.markers.remove()}}},w.DefineIcon("trackChanges",{NAME:"enable-tracking",SVG_KEY:"trackChanges"}),w.DefineIcon("showChanges",{NAME:"show-changes",SVG_KEY:"showTrackChanges"}),w.DefineIcon("applyAll",{NAME:"apply-all",SVG_KEY:"acceptAllChanges"}),w.DefineIcon("removeAll",{NAME:"remove-all",SVG_KEY:"rejectAllChanges"}),w.DefineIcon("applyLast",{NAME:"apply-last",SVG_KEY:"acceptSingleChange"}),w.DefineIcon("removeLast",{NAME:"remove-last",SVG_KEY:"rejectSingleChange"}),w.RegisterCommand("trackChanges",{type:"button",title:"Enable Track Changes",plugin:"track_changes",showOnMobile:!0,callback:function(){this.track_changes.toggleTracking()},refreshAfterCallback:!0,forcedRefresh:!0,refresh:function(e){var t;e&&(t=0!==(t=this.$tb.find('.fr-more-toolbar[data-name="'.concat(e.attr("id"),'"]'))).length&&t.hasClass("fr-expanded"),(this.opts.trackChangesEnabled&&this.opts.toolbarContainer&&!t||!this.opts.trackChangesEnabled&&this.opts.toolbarContainer&&t)&&(this.$tb.find('.fr-more-toolbar[data-name="'.concat(e.attr("id"),'"]')).toggleClass("fr-expanded"),this.$box.toggleClass("fr-toolbar-open"),this.$tb.toggleClass("fr-toolbar-open"),e.toggleClass("fr-open")),e.toggleClass("fr-active",this.opts.trackChangesEnabled).attr("aria-pressed",this.opts.trackChangesEnabled))}}),w.RegisterCommand("showChanges",{type:"button",icon:"showChanges",title:"Show Changes",plugin:"track_changes",undo:!1,focus:!1,accessibilityFocus:!0,forcedRefresh:!0,refreshAfterCallback:!0,toggle:!0,callback:function(){this.track_changes.showChanges()},refresh:function(e){e.toggleClass("fr-active",this.opts.showChangesEnabled).attr("aria-pressed",this.opts.showChangesEnabled)}}),w.RegisterCommand("applyAll",{type:"button",icon:"applyAll",title:"Accept All Changes",plugin:"track_changes",toggle:!0,refreshAfterCallback:!0,forcedRefresh:!0,callback:function(){0<this.track_changes.getPendingChanges().length&&this.track_changes.acceptAllChanges()},refresh:function(e){this.opts.trackChangesEnabled&&this.track_changes.refresh(e)}}),w.RegisterCommand("removeAll",{type:"button",icon:"removeAll",title:"Reject All Changes",plugin:"track_changes",toggle:!0,refreshAfterCallback:!0,forcedRefresh:!0,callback:function(){0<this.track_changes.getPendingChanges().length&&this.track_changes.rejectAllChanges()},refresh:function(e){this.opts.trackChangesEnabled&&this.track_changes.refresh(e)}}),w.RegisterCommand("applyLast",{type:"button",icon:"applyLast",title:"Accept Single Change",plugin:"track_changes",toggle:!0,refreshAfterCallback:!0,forcedRefresh:!0,callback:function(){0<this.track_changes.getPendingChanges().length&&this.track_changes.acceptSingleChange()},refresh:function(e){this.opts.trackChangesEnabled&&this.track_changes.refresh(e)}}),w.RegisterCommand("removeLast",{type:"button",icon:"removeLast",title:"Reject Single Change",plugin:"track_changes",toggle:!0,refreshAfterCallback:!0,forcedRefresh:!0,callback:function(){0<this.track_changes.getPendingChanges().length&&this.track_changes.rejectSingleChange()},refresh:function(e){this.opts.trackChangesEnabled&&this.track_changes.refresh(e)}})});
//# sourceMappingURL=track_changes.min.min.js.map