@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.
1 lines • 53.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(te){"use strict";te=te&&te.hasOwnProperty("default")?te.default:te,Object.assign(te.POPUP_TEMPLATES,{"table.insert":"[_BUTTONS_][_ROWS_COLUMNS_]","table.edit":"[_BUTTONS_]","table.colors":"[_BUTTONS_][_COLORS_][_CUSTOM_COLOR_]"}),Object.assign(te.DEFAULTS,{tableInsertMaxSize:10,tableEditButtons:["tableHeader","tableFooter","tableRemove","tableRows","tableColumns","tableStyle","-","tableCells","tableCellBackground","tableCellVerticalAlign","tableCellHorizontalAlign","tableCellStyle"],tableInsertButtons:["tableBack","|"],tableResizer:!0,tableDefaultWidth:"100%",tableResizerOffset:5,tableResizingLimit:30,tableColorsButtons:["tableBack","|"],tableColors:["#61BD6D","#1ABC9C","#54ACD2","#2C82C9","#9365B8","#475577","#CCCCCC","#41A85F","#00A885","#3D8EB9","#2969B0","#553982","#28324E","#000000","#F7DA64","#FBA026","#EB6B56","#E25041","#A38F84","#EFEFEF","#FFFFFF","#FAC51C","#F37934","#D14841","#B8312F","#7C706B","#D1D5D8","REMOVE"],tableColorsStep:7,tableCellStyles:{"fr-highlighted":"Highlighted","fr-thick":"Thick"},tableStyles:{"fr-dashed-borders":"Dashed Borders","fr-alternate-rows":"Alternate Rows"},tableCellMultipleStyles:!0,tableMultipleStyles:!0,tableInsertHelper:!0,tableInsertHelperOffset:15}),te.PLUGINS.table=function(w){var C,b,E,R,l,n,A,O=w.$;function y(){var e,t,a=$();a&&(w.popups.get("table.edit")||i())&&(w.popups.setContainer("table.edit",w.$sc),e=(a=z(a)).left+(a.right-a.left)/2,t=a.bottom,w.popups.show("table.edit",e,t,a.bottom-a.top,!0),w.edit.isDisabled())&&(w.$el.removeClass("fr-no-selection"),w.edit.on(),w.button.bulkRefresh(),w.selection.setAtEnd(w.$el.find(".fr-selected-cell").last().get(0)),w.selection.restore())}function r(){var e,t,a,l,n,o=$();o&&(w.popups.get("table.colors")||function(){var e="";0<w.opts.tableColorsButtons.length&&(e='<div class="fr-buttons fr-tabs">'.concat(w.button.buildList(w.opts.tableColorsButtons),"</div>"));var t="";w.opts.colorsHEXInput&&(t='<div class="fr-color-hex-layer fr-table-colors-hex-layer fr-active fr-layer" id="fr-table-colors-hex-layer-'.concat(w.id,'"><div class="fr-input-line"><input maxlength="7" id="fr-table-colors-hex-layer-text-').concat(w.id,'" type="text" placeholder="').concat(w.language.translate("HEX Color"),'" tabIndex="1" aria-required="true"></div><div class="fr-action-buttons"><button type="button" class="fr-command fr-submit" data-cmd="tableCellBackgroundCustomColor" tabIndex="2" role="button">').concat(w.language.translate("OK"),"</button></div></div>"));e={buttons:e,colors:function(){for(var e='<div class="fr-color-set fr-table-colors">',t=0;t<w.opts.tableColors.length;t++)0!==t&&t%w.opts.tableColorsStep==0&&(e+="<br>"),"REMOVE"!=w.opts.tableColors[t]?e+='<span class="fr-command" style="background: '.concat(w.opts.tableColors[t],';" tabIndex="-1" role="button" data-cmd="tableCellBackgroundColor" data-param1="').concat(w.opts.tableColors[t],'"><span class="fr-sr-only">').concat(w.language.translate("Color")," ").concat(w.opts.tableColors[t]," </span></span>"):e+='<span class="fr-command" data-cmd="tableCellBackgroundColor" tabIndex="-1" role="button" data-param1="REMOVE" title="'.concat(w.language.translate("Clear Formatting"),'">').concat(w.icon.create("tableColorRemove"),'<span class="fr-sr-only">').concat(w.language.translate("Clear Formatting"),"</span></span>");return e+="</div>"}(),custom_color:t},t=w.popups.create("table.colors",e);w.events.$on(w.$wp,"scroll.table-colors",function(){w.popups.isVisible("table.colors")&&r()}),function(c){w.events.on("popup.tab",function(e){var t,a,l,n,o,r,s,i=O(e.currentTarget);return!w.popups.isVisible("table.colors")||!i.is("span")||(t=e.which,a=!0,te.KEYCODE.TAB==t?(l=c.find(".fr-buttons"),a=!w.accessibility.focusToolbar(l,!!e.shiftKey)):te.KEYCODE.ARROW_UP==t||te.KEYCODE.ARROW_DOWN==t||te.KEYCODE.ARROW_LEFT==t||te.KEYCODE.ARROW_RIGHT==t?(o=(l=i.parent().find("span.fr-command")).index(i),n=w.opts.colorsStep,s=Math.floor(l.length/n),r=o%n,o=Math.floor(o/n)*n+r,r=s*n,te.KEYCODE.ARROW_UP==t?o=((o-n)%r+r)%r:te.KEYCODE.ARROW_DOWN==t?o=(o+n)%r:te.KEYCODE.ARROW_LEFT==t?o=((o-1)%r+r)%r:te.KEYCODE.ARROW_RIGHT==t&&(o=(o+1)%r),s=O(l.get(o)),w.events.disableBlur(),s.focus(),a=!1):te.KEYCODE.ENTER==t&&(w.button.exec(i),a=!1),!1===a&&(e.preventDefault(),e.stopPropagation()),a)},!0)}(t)}(),w.popups.setContainer("table.colors",w.$sc),e=((o=z(o)).left+o.right)/2,t=o.bottom,a=w.popups.get("table.colors"),l=w.$el.find(".fr-selected-cell").first(),l=w.helpers.RGBToHex(l.css("background-color")),n=a.find(".fr-table-colors-hex-layer input"),a.find(".fr-selected-color").removeClass("fr-selected-color fr-active-item"),a.find('span[data-param1="'.concat(l,'"]')).addClass("fr-selected-color fr-active-item"),n.val(l).trigger("change"),w.popups.show("table.colors",e,t,o.bottom-o.top,!0))}function t(){0===k().length&&w.toolbar.enable()}function o(e){return e?(w.popups.onHide("table.insert",function(){w.popups.get("table.insert").find('.fr-table-size .fr-select-table-size > span[data-row="1"][data-col="1"]').trigger("mouseover")}),!0):(e="",e={buttons:e=0<w.opts.tableInsertButtons.length?'<div class="fr-buttons fr-tabs">'.concat(w.button.buildList(w.opts.tableInsertButtons),"</div>"):e,rows_columns:function(){for(var e='<div class="fr-table-size"><div class="fr-table-size-info">1 × 1</div><div class="fr-select-table-size">',t=1;t<=w.opts.tableInsertMaxSize;t++){for(var a=1;a<=w.opts.tableInsertMaxSize;a++){var l="inline-block",n=(2<t&&!w.helpers.isMobile()&&(l="none"),"fr-table-cell ");1==t&&1==a&&(n+=" hover"),e+='<span class="fr-command '.concat(n,'" tabIndex="-1" data-cmd="tableInsert" data-row="').concat(t,'" data-col="').concat(a,'" data-param1="').concat(t,'" data-param2="').concat(a,'" style="display: ').concat(l,';" role="button"><span></span><span class="fr-sr-only">').concat(t," × ").concat(a," </span></span>")}e+='<div class="new-line"></div>'}return e+="</div></div>"}()},e=w.popups.create("table.insert",e),w.events.$on(e,"mouseover",".fr-table-size .fr-select-table-size .fr-table-cell",function(e){s(O(e.currentTarget))},!0),w.events.$on(e,"focus","[tabIndex]",function(e){s(O(e.currentTarget))}),w.events.on("popup.tab",function(e){var t,a,l,n,o,r=O(e.currentTarget);return!w.popups.isVisible("table.insert")||!r.is("span, a")||(t=e.which,te.KEYCODE.ARROW_UP==t||te.KEYCODE.ARROW_DOWN==t||te.KEYCODE.ARROW_LEFT==t||te.KEYCODE.ARROW_RIGHT==t?r.is("span.fr-table-cell")&&(l=(n=(o=r.parent().find("span.fr-table-cell")).index(r))%(a=w.opts.tableInsertMaxSize),n=Math.floor(n/a),te.KEYCODE.ARROW_UP==t?n=Math.max(0,n-1):te.KEYCODE.ARROW_DOWN==t?n=Math.min(w.opts.tableInsertMaxSize-1,n+1):te.KEYCODE.ARROW_LEFT==t?l=Math.max(0,l-1):te.KEYCODE.ARROW_RIGHT==t&&(l=Math.min(w.opts.tableInsertMaxSize-1,l+1)),s(o=O(o.get(n*a+l))),w.events.disableBlur(),o.focus(),n=!1):te.KEYCODE.ENTER==t&&(w.button.exec(r),n=!1),!1===n&&(e.preventDefault(),e.stopPropagation()),n)},!0),e)}function s(e){var t=e.data("row"),a=(null!==t&&(t=parseInt(t)),e.data("col")),l=(null!==a&&(a=parseInt(a)),e.parent());l.siblings(".fr-table-size-info").html("".concat(t," × ").concat(a)),l.find("> span").removeClass("hover fr-active-item");for(var n=1;n<=w.opts.tableInsertMaxSize;n++)for(var o=0;o<=w.opts.tableInsertMaxSize;o++){var r=l.find('> span[data-row="'.concat(n,'"][data-col="').concat(o,'"]'));n<=t&&o<=a?r.addClass("hover"):n<=t+1||n<=2&&!w.helpers.isMobile()?r.css("display","inline-block"):2<n&&!w.helpers.isMobile()&&r.css("display","none")}e.addClass("fr-active-item")}function i(e){return e?(w.popups.onHide("table.edit",t),!0):(e="",0<w.opts.tableEditButtons.length&&(e='<div class="fr-buttons">'.concat(w.button.buildList(w.opts.tableEditButtons),"</div>"),e=w.popups.create("table.edit",{buttons:e}),w.events.$on(w.$wp,"scroll.table-edit",function(){w.popups.isVisible("table.edit")&&y()}),e))}function f(){var e;0<k().length&&(e=B(),w.selection.setBefore(e.get(0))||w.selection.setAfter(e.get(0)),w.selection.restore(),w.popups.hide("table.edit"),w.opts.trackChangesEnabled?(w.track_changes.removedTable(e),D()):e.remove(),w.toolbar.enable())}function c(e){var t=B();if(0<t.length&&!(0<w.$el.find("thead .fr-selected-cell").length&&"above"==e||0<w.$el.find("tfoot td.fr-selected-cell").length&&"below"==e)){var a=$(),l=x(a);if(null!=l){for(var n,o="above"==e?l.min_i:l.max_i,r="<tr>",s=0;s<a[o].length;s++)"below"==e&&o<a.length-1&&a[o][s]==a[o+1][s]||"above"==e&&0<o&&a[o][s]==a[o-1][s]?(0===s||0<s&&a[o][s]!=a[o][s-1])&&(n=O(a[o][s])).attr("rowspan",parseInt(n.attr("rowspan"),10)+1):r+='<td style="'+O(a[o][s]).attr("style")+'" ><br></td>';r+="</tr>",l=0<w.$el.find("thead .fr-selected-cell").length&&"below"==e||0<w.$el.find("tfoot td.fr-selected-cell").length&&"above"==e?O(t.find("tbody").not(t.find("> table tbody"))):O(t.find("tr").not(t.find("> table tr")).get(o)),"below"==e?"TBODY"==l.attr("tagName")?l.prepend(r):l[0].parentNode&&l[0].insertAdjacentHTML("afterend",r):"above"==e&&("TBODY"==l.attr("tagName")?l.append(r):l.before(r),w.popups.isVisible("table.edit"))&&y()}}}function d(e,t,a){var l,n,o,r,s,i=0,c=$(a);if(e<(t=Math.min(t,c[0].length-1)))for(n=e;n<=t;n++)if(!(e<n&&c[0][n]==c[0][n-1])&&1<(r=Math.min(parseInt(c[0][n].getAttribute("colspan"),10)||1,t-e+1))&&c[0][n]==c[0][n+1])for(i=r-1,l=1;l<c.length;l++)if(c[l][n]!=c[l-1][n]){for(o=n;o<n+r;o++)if(void 0!==c[l][o])if(1<(s=parseInt(c[l][o].getAttribute("colspan"),10)||1)&&c[l][o]==c[l][o+1])o+=i=Math.min(i,s-1);else if(!(i=Math.max(0,i-1)))break;if(!i)break}i&&h(c,i,"colspan",0,c.length-1,e,t)}function p(e,t,a){var l,n,o,r,s,i=0,c=$(a);if(e<(t=Math.min(t,c.length-1)))for(l=e;l<=t;l++)if(!(e<l&&c[l][0]==c[l-1][0])&&void 0!==c[l][0]&&1<(r=Math.min(parseInt(c[l][0].getAttribute("rowspan"),10)||1,t-e+1))&&c[l][0]==c[l+1][0])for(i=r-1,n=1;n<c[0].length;n++)if(c[l][n]!=c[l][n-1]){for(o=l;o<l+r;o++)if(void 0!==c[o][n])if(1<(s=parseInt(c[o][n].getAttribute("rowspan"),10)||1)&&c[o][n]==c[o+1][n])o+=i=Math.min(i,s-1);else if(!(i=Math.max(0,i-1)))break;if(!i)break}i&&h(c,i,"rowspan",e,t,0,c[0].length-1)}function h(e,t,a,l,n,o,r){for(var s,i,c=l;c<=n;c++)for(s=o;s<=r;s++)l<c&&e[c][s]==e[c-1][s]||o<s&&e[c][s]==e[c][s-1]||void 0!==e[c][s]&&1<(i=parseInt(e[c][s].getAttribute(a),10)||1)&&(1<i-t?e[c][s].setAttribute(a,i-t):e[c][s].removeAttribute(a))}function g(e,t,a,l,n){p(e,t,n),d(a,l,n)}function a(e){var t=w.$el.find(".fr-selected-cell");"REMOVE"!=e?t.css("background-color",w.helpers.HEXtoRGB(e)):t.css("background-color",""),y()}function Y(e){e.style.removeProperty("border"),e.style.removeProperty("border-top"),e.style.removeProperty("border-bottom"),e.style.removeProperty("border-left"),e.style.removeProperty("border-right")}function $(e){var c=[];if(e=null==(e=e||null)&&0<k().length?B():e){if(!e.find("tr").html().match(/xl[0-9]+/gi))for(var t=e.find("tr:empty"),a=t.length-1;0<=a;a--)O(t[a]).remove();e.findVisible("tr").not(e.find("> table tr")).each(function(s,e){var e=O(e),i=0;e.find("> th, > td").each(function(e,t){for(var a=O(t),l=parseInt(a.attr("colspan"),10)||1,n=parseInt(a.attr("rowspan"),10)||1,o=s;o<s+n;o++)for(var r=i;r<i+l;r++)c[o]||(c[o]=[]),c[o][r]?i++:c[o][r]=t;i+=l})})}return c}function u(e,t){for(var a=0;a<t.length;a++)for(var l=0;l<t[a].length;l++)if(t[a][l]==e)return{row:a,col:l}}function m(e,t,a){for(var l=e+1,n=t+1;l<a.length;){if(a[l][t]!=a[e][t]){l--;break}l++}for(l==a.length&&l--;n<a[e].length;){if(a[e][n]!=a[e][t]){n--;break}n++}return n==a[e].length&&n--,{row:l,col:n}}function F(){w.el.querySelector(".fr-cell-fixed")&&w.el.querySelector(".fr-cell-fixed").classList.remove("fr-cell-fixed"),w.el.querySelector(".fr-cell-handler")&&w.el.querySelector(".fr-cell-handler").classList.remove("fr-cell-handler")}function D(){var e=w.$el.find(".fr-selected-cell");0<e.length&&e.each(function(){var e=O(this);e.removeClass("fr-selected-cell"),""===e.attr("class")&&e.removeAttr("class")}),F()}function v(){w.events.disableBlur(),w.selection.clear(),w.$el.addClass("fr-no-selection"),w.$el.blur(),w.events.enableBlur()}function x(e){var t=w.$el.find(".fr-selected-cell");if(0<t.length){for(var a=e.length,l=0,n=e[0].length,o=0,r=0;r<t.length;r++)var s=u(t[r],e),i=m(s.row,s.col,e),a=Math.min(s.row,a),l=Math.max(i.row,l),n=Math.min(s.col,n),o=Math.max(i.col,o);return{min_i:a,max_i:l,min_j:n,max_j:o}}return null}function z(e){var t,a,l=x(e);if(null!=l)return t=O(e[l.min_i][l.min_j]),a=O(e[l.min_i][l.max_j]),e=O(e[l.max_i][l.min_j]),{left:t.length&&t.offset().left,right:a.length&&a.offset().left+a.outerWidth(),top:t.length&&t.offset().top,bottom:e.length&&e.offset().top+e.outerHeight()}}function _(e,t){if(O(e).is(t))D(),O(e).addClass("fr-selected-cell");else{v(),w.edit.off();var a=$(),l=u(e,a),n=u(t,a);if(l&&n){var o=function e(t,a,l,n,o){for(var r,s,i,c=t,f=a,d=l,p=n,h=c;h<=f;h++)(1<(parseInt(O(o[h][d]).attr("rowspan"),10)||1)||1<(parseInt(O(o[h][d]).attr("colspan"),10)||1))&&(i=m((s=u(o[h][d],o)).row,s.col,o),c=Math.min(s.row,c),f=Math.max(i.row,f),d=Math.min(s.col,d),p=Math.max(i.col,p)),(1<(parseInt(O(o[h][p]).attr("rowspan"),10)||1)||1<(parseInt(O(o[h][p]).attr("colspan"),10)||1))&&(i=m((s=u(o[h][p],o)).row,s.col,o),c=Math.min(s.row,c),f=Math.max(i.row,f),d=Math.min(s.col,d),p=Math.max(i.col,p));for(r=d;r<=p;r++)(1<(parseInt(O(o[c][r]).attr("rowspan"),10)||1)||1<(parseInt(O(o[c][r]).attr("colspan"),10)||1))&&(i=m((s=u(o[c][r],o)).row,s.col,o),c=Math.min(s.row,c),f=Math.max(i.row,f),d=Math.min(s.col,d),p=Math.max(i.col,p)),(1<(parseInt(O(o[f][r]).attr("rowspan"),10)||1)||1<(parseInt(O(o[f][r]).attr("colspan"),10)||1))&&(i=m((s=u(o[f][r],o)).row,s.col,o),c=Math.min(s.row,c),f=Math.max(i.row,f),d=Math.min(s.col,d),p=Math.max(i.col,p));return c==t&&f==a&&d==l&&p==n?{min_i:t,max_i:a,min_j:l,max_j:n}:e(c,f,d,p,o)}(Math.min(l.row,n.row),Math.max(l.row,n.row),Math.min(l.col,n.col),Math.max(l.col,n.col),a);D(),e.classList.add("fr-cell-fixed"),t.classList.add("fr-cell-handler");for(var r=o.min_i;r<=o.max_i;r++)for(var s=o.min_j;s<=o.max_j;s++)O(e).closest("table").is(O(a[r][s]).closest("table"))&&O(a[r][s]).addClass("fr-selected-cell")}}}function T(e){var t=null,a=O(e.target);return"TD"==e.target.tagName||"TH"==e.target.tagName?t=e.target:0<a.closest("th",a.closest("thead")[0]).length?t=a.closest("th",a.closest("thead")[0]).get(0):0<a.closest("td",a.closest("tr")[0]).length&&(t=a.closest("td",a.closest("tr")[0]).get(0)),-1===w.$el.html.toString().search(t)?null:t}function M(){D(),w.popups.hide("table.edit")}function W(e){var t,a=T(e);if("false"==O(a).parents("[contenteditable]").not(".fr-element").not(".fr-img-caption").not("body").first().attr("contenteditable"))return!0;0<k().length&&!a&&M(),w.edit.isDisabled()&&!w.popups.isVisible("table.edit")||(1!=e.which||1==e.which&&w.helpers.isMac()&&e.ctrlKey?(3==e.which||1==e.which&&w.helpers.isMac()&&e.ctrlKey)&&a&&M():(R=!0,a&&(0<k().length&&!e.shiftKey&&M(),e.stopPropagation(),w.events.trigger("image.hideResizer"),w.events.trigger("video.hideResizer"),E=!0,t=a.tagName.toLowerCase(),e.shiftKey&&0<w.$el.find("".concat(t,".fr-selected-cell")).length?O(w.$el.find("".concat(t,".fr-selected-cell")).closest("table")).is(O(a).closest("table"))?_(l,a):v():((w.keys.ctrlKey(e)||e.shiftKey)&&"TD"===e.currentTarget.tagName&&(1<k().length||0===O(a).find(w.selection.element()).length&&!O(a).is(w.selection.element()))&&v(),l=a,0<w.opts.tableEditButtons.length&&_(l,l)))))}function e(e){if(!w.edit.isDisabled()&&w.popups.areVisible())return!0;var t=T(e);if((1===k().length&&null===t&&(w.toolbar.enable(),D()),(1===k().length&&t&&"TD"!==t.tagName&&"TH"!==t.tagName||!E&&!w.$tb.is(e.target)&&!w.$tb.is(O(e.target).closest(".fr-toolbar")))&&(w.toolbar.enable(),D()),("BODY"===e.target.tagName||"HTML"===e.target.tagName)&&!t&&0<k().length&&w.toolbar.enable(),!(1!=e.which||1==e.which&&w.helpers.isMac()&&e.ctrlKey))&&(R=!1,E&&(E=!1,T(e)||1!=k().length?0<k().length?w.selection.isCollapsed()?(y(),w.toolbar.enable()):(D(),w.edit.on()):k().length||(w.$el.removeClass("fr-no-selection"),w.edit.on()):D()),A)){A=!1,C.removeClass("fr-moving"),w.$el.removeClass("fr-no-selection"),w.edit.on();t=parseFloat(C.css("left"))+w.opts.tableResizerOffset+w.$wp.offset().left;w.opts.iframe&&(t-=w.$iframe.offset().left),C.data("release-position",t),C.removeData("max-left"),C.removeData("max-right");var a,l,n,o,r=C.data("origin"),s=C.data("release-position");if(r!==s){var i=C.data("first"),c=C.data("second"),e=C.data("table"),f=e.outerWidth();if(w.undo.canDo()||w.undo.saveStep(),null!=i&&null!=c){var d,p=$(e),h=[],g=[],b=[],u=[];for(a=0;a<p.length;a++)l=O(p[a][i]),n=O(p[a][c]),h[a]=l.outerWidth(),b[a]=n.outerWidth(),g[a]=h[a]/f*100,u[a]=b[a]/f*100;for(a=0;a<p.length;a++)l=O(p[a][i]),n=O(p[a][c]),p[a][i]!=p[a][c]&&(d=(g[a]*(h[a]+s-r)/h[a]).toFixed(4),l.css("width",d+"%"),n.css("width",(g[a]+u[a]-d).toFixed(4)+"%"))}else{var t=e.parent(),m=f/t.width()*100,v=(parseInt(e.css("margin-left"),10)||0)/t.width()*100,t=(parseInt(e.css("margin-right"),10)||0)/t.width()*100;"rtl"==w.opts.direction&&0===c||"rtl"!=w.opts.direction&&0!==c?(o=(f+s-r)/f*m,e.css("margin-right","calc(100% - ".concat(Math.round(o).toFixed(4),"% - ").concat(Math.round(v).toFixed(4),"%)"))):("rtl"==w.opts.direction&&0!==c||"rtl"!=w.opts.direction&&0===c)&&(o=(f-s+r)/f*m,e.css("margin-left","calc(100% - ".concat(Math.round(o).toFixed(4),"% - ").concat(Math.round(t).toFixed(4),"%)"))),e.css("width","".concat(Math.round(o).toFixed(4),"%"))}w.selection.restore(),w.undo.saveStep(),w.events.trigger("table.resized",[e.get(0)])}C.removeData("origin"),C.removeData("release-position"),C.removeData("first"),C.removeData("second"),C.removeData("table"),N()}}function L(e){if(!(O(e.currentTarget).is(O(e.originalEvent.relatedTarget))||e.currentTarget.contains(e.originalEvent.relatedTarget)||e.originalEvent.relatedTarget&&e.originalEvent.relatedTarget.contains(e.currentTarget))&&(w.events.$on(O("input"),"click",ee),!0===E)&&0<w.opts.tableEditButtons.length){if(O(e.currentTarget).closest("table").is(B())){if("TBODY"===e.currentTarget.parentElement.parentElement.tagName&&"TD"==e.currentTarget.tagName&&0===w.$el.find("th.fr-selected-cell").length&&0===w.$el.find("tfoot td.fr-selected-cell").length)return void _(l,e.currentTarget);if("TFOOT"===e.currentTarget.parentElement.parentElement.tagName&&"TD"==e.currentTarget.tagName&&0===w.$el.find("tbody td.fr-selected-cell").length)return void _(l,e.currentTarget);if("TH"==e.currentTarget.tagName&&0===w.$el.find("td.fr-selected-cell").length)return void _(l,e.currentTarget)}"TD"!==e.currentTarget.tagName&&"TH"!==e.currentTarget.tagName&&v()}}function H(e,t,a,l){for(var n,o=t;o!=w.el&&"TD"!=o.tagName&&"TH"!=o.tagName&&("up"==l?n=o.previousElementSibling:"down"==l&&(n=o.nextElementSibling),!n);)o=o.parentNode;if("TD"==o.tagName||"TH"==o.tagName){for(var r,t=o,s=l,i=t;i&&"TABLE"!=i.tagName&&i.parentNode!=w.el;)i=i.parentNode;i&&"TABLE"==i.tagName&&(r=$(O(i)),"up"==s?P(u(t,r),i,r):"down"==s&&V(u(t,r),i,r))}else n&&("up"==l&&w.selection.setAtEnd(n),"down"==l)&&w.selection.setAtStart(n)}function P(e,t,a){0<O(".tribute-container").length&&"none"!=O(".tribute-container").css("display")||(0<e.row?w.selection.setAtEnd(a[e.row-1][e.col]):H(0,t,0,"up"))}function V(e,t,a){var l;0<O(".tribute-container").length&&"none"!=O(".tribute-container").css("display")||(l=parseInt(a[e.row][e.col].getAttribute("rowspan"),10)||1,e.row<a.length-l?w.selection.setAtStart(a[e.row+l][e.col]):H(0,t,0,"down"))}function N(){C&&(C.find("div").css("opacity",0),C.css("top",0),C.css("left",0),C.css("height",0),C.find("div").css("height",0),C.hide())}function S(){b&&b.removeClass("fr-visible").css("left","-9999px")}function j(e,t){var a,l,n,o,r,s,i,c,f,d,p=O(t),h=p.closest("table"),g=h.parent();t&&"TD"!=t.tagName&&"TH"!=t.tagName&&(0<p.closest("td").length?t=p.closest("td"):0<p.closest("th").length&&(t=p.closest("th"))),!t||"TD"!=t.tagName&&"TH"!=t.tagName?C&&p.get(0)!=C.get(0)&&p.parent().get(0)!=C.get(0)&&w.core.sameInstance(C)&&N():(p=O(t),0!==w.$el.find(p).length&&(p=(d=p.offset().left-1)+p.outerWidth(),Math.abs(e.pageX-d)<=w.opts.tableResizerOffset||Math.abs(p-e.pageX)<=w.opts.tableResizerOffset?(a=m((f=u(t,t=$(h))).row,f.col,t),o=h.offset().top,r=h.outerHeight()-1,"rtl"!=w.opts.direction?e.pageX-d<=w.opts.tableResizerOffset?(s=d,0<f.col?(i=d-I(f.col-1,t)+w.opts.tableResizingLimit,c=d+I(f.col,t)-w.opts.tableResizingLimit,l=f.col-1,n=f.col):(l=null,n=0,i=h.offset().left-1-parseInt(h.css("margin-left"),10),c=h.offset().left-1+h.width()-t[0].length*w.opts.tableResizingLimit)):p-e.pageX<=w.opts.tableResizerOffset&&(s=p,a.col<t[a.row].length&&t[a.row][a.col+1]?(i=p-I(a.col,t)+w.opts.tableResizingLimit,c=p+I(a.col+1,t)-w.opts.tableResizingLimit,l=a.col,n=a.col+1):(l=a.col,n=null,i=h.offset().left-1+t[0].length*w.opts.tableResizingLimit,c=g.offset().left-1+g.width()+parseFloat(g.css("padding-left")))):p-e.pageX<=w.opts.tableResizerOffset?(s=p,0<f.col?(i=p-I(f.col,t)+w.opts.tableResizingLimit,c=p+I(f.col-1,t)-w.opts.tableResizingLimit,l=f.col,n=f.col-1):(l=null,n=0,i=h.offset().left+t[0].length*w.opts.tableResizingLimit,c=g.offset().left-1+g.width()+parseFloat(g.css("padding-left")))):e.pageX-d<=w.opts.tableResizerOffset&&(s=d,a.col<t[a.row].length&&t[a.row][a.col+1]?(i=d-I(a.col+1,t)+w.opts.tableResizingLimit,c=d+I(a.col,t)-w.opts.tableResizingLimit,l=a.col+1,n=a.col):(l=a.col,n=null,i=g.offset().left+parseFloat(g.css("padding-left")),c=h.offset().left-1+h.width()-t[0].length*w.opts.tableResizingLimit)),C||(w.shared.$table_resizer||(w.shared.$table_resizer=O(document.createElement("div")).attr("class","fr-table-resizer").html("<div></div>")),C=w.shared.$table_resizer,w.events.$on(C,"mousedown",function(e){return!w.core.sameInstance(C)||(0<k().length&&M(),1==e.which?(w.selection.save(),A=!0,C.addClass("fr-moving"),v(),w.edit.off(),C.find("div").css("opacity",1),!1):void 0)}),w.events.$on(C,"mousemove",function(e){if(!w.core.sameInstance(C))return!0;A&&(w.opts.iframe&&(e.pageX-=w.$iframe.offset().left),J(e))}),w.events.on("shared.destroy",function(){C.html("").removeData().remove(),C=null},!0),w.events.on("destroy",function(){w.$el.find(".fr-selected-cell").removeClass("fr-selected-cell"),O("body").first().append(C.hide())},!0)),C.data("table",h),C.data("first",l),C.data("second",n),C.data("instance",w),w.$wp.append(C),p=s-w.win.pageXOffset-w.opts.tableResizerOffset-w.$wp.offset().left,f=o-w.$wp.offset().top+w.$wp.scrollTop(),w.opts.iframe&&(e=w.helpers.getPX(w.$wp.find(".fr-iframe").css("padding-top")),d=w.helpers.getPX(w.$wp.find(".fr-iframe").css("padding-left")),p+=w.$iframe.offset().left+d,f+=w.$iframe.offset().top+e,i+=w.$iframe.offset().left,c+=w.$iframe.offset().left),C.data("max-left",i),C.data("max-right",c),C.data("origin",s-w.win.pageXOffset),C.css("top",f),C.css("left",p),C.css("height",r),C.find("div").css("height",r),C.css("padding-left",w.opts.tableResizerOffset),C.css("padding-right",w.opts.tableResizerOffset),C.show()):w.core.sameInstance(C)&&N()))}function G(e,t){if(0===k().length){var a,l,n,o,r,s,i,c,f,d,p,h,g;if(t&&("HTML"==t.tagName||"BODY"==t.tagName||w.node.isElement(t)))for(a=1;a<=w.opts.tableInsertHelperOffset;a++){if(c=w.doc.elementFromPoint(e.pageX-w.win.pageXOffset,e.pageY-w.win.pageYOffset+a),O(c).hasClass("fr-tooltip"))return;if(c&&("TH"==c.tagName||"TD"==c.tagName||"TABLE"==c.tagName)&&(O(c).parents(".fr-wrapper").length||w.opts.iframe)&&"false"!=O(c).closest("table").attr("contenteditable"))return i=e,c=O(c).closest("table"),void(w.$box.find(".fr-line-breaker").isVisible()||(b||Z(),w.$box.append(b),b.data("instance",w),c=O(c).find("tr").first(),l=i.pageX,o=n=0,w.opts.iframe&&(i=w.helpers.getPX(w.$wp.find(".fr-iframe").css("padding-top")),r=w.helpers.getPX(w.$wp.find(".fr-iframe").css("padding-left")),n+=w.$iframe.offset().left-w.helpers.scrollLeft()+r,o+=w.$iframe.offset().top-w.helpers.scrollTop()+i),c.find("th, td").each(function(){var e=O(this);return e.offset().left<=l&&l<e.offset().left+e.outerWidth()/2?(s=parseInt(b.find("a").css("width"),10),b.css("top",o+e.offset().top-w.$box.offset().top-s-5),b.css("left",n+e.offset().left-w.$box.offset().left-s/2),b.data("selected-cell",e),b.data("position","before"),b.addClass("fr-visible"),!1):e.offset().left+e.outerWidth()/2<=l&&l<e.offset().left+e.outerWidth()?(s=parseInt(b.find("a").css("width"),10),b.css("top",o+e.offset().top-w.$box.offset().top-s-5),b.css("left",n+e.offset().left-w.$box.offset().left+e.outerWidth()-s/2),b.data("selected-cell",e),b.data("position","after"),b.addClass("fr-visible"),!1):void 0})));if(r=w.doc.elementFromPoint(e.pageX-w.win.pageXOffset+a,e.pageY-w.win.pageYOffset),O(r).hasClass("fr-tooltip"))return;if(r&&("TH"==r.tagName||"TD"==r.tagName||"TABLE"==r.tagName)&&(O(r).parents(".fr-wrapper").length||w.opts.iframe)&&"false"!=O(r).closest("table").attr("contenteditable"))return i=e,c=O(r).closest("table"),void(w.$box.find(".fr-line-breaker").isVisible()||(b||Z(),w.$box.append(b),b.data("instance",w),c=O(c),f=i.pageY,p=d=0,w.opts.iframe&&(i=w.helpers.getPX(w.$wp.find(".fr-iframe").css("padding-top")),h=w.helpers.getPX(w.$wp.find(".fr-iframe").css("padding-left")),d+=w.$iframe.offset().left-w.helpers.scrollLeft()+h,p+=w.$iframe.offset().top-w.helpers.scrollTop()+i),c.find("tr").each(function(){var e=O(this),t=(g=parseInt(b.find("a").css("width"),10),d+e.offset().left-w.$box.offset().left),t=0!==w.$box.offset().left?t-g-5:t+g-5;return e.offset().top<=f&&f<e.offset().top+e.outerHeight()/2?(b.css("top",p+e.offset().top-w.$box.offset().top-g/2),b.css("left",t),b.data("selected-cell",e.find("td").first()),b.data("position","above"),b.addClass("fr-visible"),!1):e.offset().top+e.outerHeight()/2<=f&&f<e.offset().top+e.outerHeight()?(b.css("top",p+e.offset().top-w.$box.offset().top+e.outerHeight()-g/2),b.css("left",t),b.data("selected-cell",e.find("td").first()),b.data("position","below"),b.addClass("fr-visible"),!1):void 0})))}w.core.sameInstance(b)&&S()}}function X(e){n=null;var t=w.doc.elementFromPoint(e.pageX-w.win.pageXOffset,e.pageY-w.win.pageYOffset);w.opts.tableResizer&&(!w.popups.areVisible()||w.popups.areVisible()&&w.popups.isVisible("table.edit"))&&j(e,t),!w.opts.tableInsertHelper||w.popups.areVisible()||w.$tb.hasClass("fr-inline")&&w.$tb.isVisible()||G(e,t)}function U(){var e,t;A&&(e=C.data("table").offset().top-w.win.pageYOffset,w.opts.iframe&&(t=w.helpers.getPX(w.$wp.find(".fr-iframe").css("padding-top")),e+=w.$iframe.offset().top-w.helpers.scrollTop()+t),C.css("top",e))}function I(e,t){for(var a=O(t[0][e]).outerWidth(),l=1;l<t.length;l++)a=Math.min(a,O(t[l][e]).outerWidth());return a}function q(e,t,a){for(var l=0,n=e;n<=t;n++)l+=I(n,a);return l}function J(e){var t,a;1<k().length&&R&&v(),!1===R&&!1===E&&!1===A?(n&&clearTimeout(n),w.edit.isDisabled()&&!w.popups.isVisible("table.edit")||(n=setTimeout(X,30,e))):A?(e=e.pageX-w.win.pageXOffset,w.opts.iframe&&(e+=w.$iframe.offset().left),t=C.data("max-left"),a=C.data("max-right"),t<=e&&e<=a?C.css("left",e-w.opts.tableResizerOffset-w.$wp.offset().left):e<t&&parseFloat(C.css("left"),10)>t-w.opts.tableResizerOffset?C.css("left",t-w.opts.tableResizerOffset-w.$wp.offset().left):a<e&&parseFloat(C.css("left"),10)<a-w.opts.tableResizerOffset&&C.css("left",a-w.opts.tableResizerOffset-w.$wp.offset().left)):R&&S()}function K(e){w.node.isEmpty(e.get(0))?e.prepend(te.MARKERS):e.prepend(te.START_MARKER).append(te.END_MARKER)}function Z(){w.shared.$ti_helper||(w.shared.$ti_helper=O(document.createElement("div")).attr("class","fr-insert-helper").html('<a class="fr-floating-btn" role="button" tabIndex="-1" title="'.concat(w.language.translate("Insert"),'"><svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path d="M22,16.75 L16.75,16.75 L16.75,22 L15.25,22.000 L15.25,16.75 L10,16.75 L10,15.25 L15.25,15.25 L15.25,10 L16.75,10 L16.75,15.25 L22,15.25 L22,16.75 Z"/></svg></a>')),w.events.bindClick(w.shared.$ti_helper,"a",function(){var e=b.data("selected-cell"),t=b.data("position"),a=b.data("instance")||w;"before"==t||"after"==t?(w.undo.saveStep(),e.addClass("fr-selected-cell"),a.table.insertColumn(t),e.removeClass("fr-selected-cell"),w.undo.saveStep()):"above"!=t&&"below"!=t||(w.undo.saveStep(),e.addClass("fr-selected-cell"),a.table.insertRow(t),e.removeClass("fr-selected-cell"),w.undo.saveStep()),S()}),w.events.on("shared.destroy",function(){w.shared.$ti_helper.html("").removeData().remove(),w.shared.$ti_helper=null},!0),w.events.$on(w.shared.$ti_helper,"mousemove",function(e){e.stopPropagation()},!0),w.events.$on(O(w.o_win),"scroll",function(){S()},!0),w.events.$on(w.$wp,"scroll",function(){S()},!0)),b=w.shared.$ti_helper,w.events.on("destroy",function(){b=null}),w.tooltip.bind(w.$box,".fr-insert-helper > a.fr-floating-btn")}function Q(){l=null,clearTimeout(n)}function k(){return w.el.querySelectorAll(".fr-selected-cell")}function B(){var e=k();if(e.length){for(var t=e[0];t&&"TABLE"!=t.tagName&&t.parentNode!=w.el;)t=t.parentNode;return t&&"TABLE"==t.tagName?O(t):O([])}return O([])}function ee(e){E=!1}return{_init:function(){if(!w.$wp)return!1;var t;w.helpers.isMobile()&&(w.events.$on(w.$el,"mousedown",W),w.events.$on(w.$win,"mouseup",e)),w.helpers.isMobile()||(A=E=R=!1,w.events.$on(w.$el,"mousedown",W),w.popups.onShow("image.edit",function(){D(),E=R=!1}),w.popups.onShow("link.edit",function(){D(),E=R=!1}),w.events.on("commands.mousedown",function(e){0<e.parents(".fr-toolbar").length&&D()}),w.events.$on(w.$el,"mouseover","th, td",L),w.events.$on(w.$win,"mouseup",e),w.opts.iframe&&w.events.$on(O(w.o_win),"mouseup",e),w.events.$on(w.$win,"mousemove",J),w.events.$on(O(w.o_win),"scroll",U),w.events.on("contentChanged",function(){0<k().length&&(y(),w.$el.find("img").on("load.selected-cells",function(){O(this).off("load.selected-cells"),0<k().length&&y()}))}),w.events.$on(O(w.o_win),"resize",function(){D()}),w.events.on("toolbar.esc",function(){if(0<k().length)return w.events.disableBlur(),w.events.focus(),!1},!0),w.events.$on(O(w.o_win),"keydown",function(){R&&E&&(E=R=!1,w.$el.removeClass("fr-no-selection"),w.edit.on(),w.selection.setAtEnd(w.$el.find(".fr-selected-cell").last().get(0)),w.selection.restore(),D())}),w.events.$on(w.$el,"keydown",function(e){if(e.shiftKey)!1===function(e){var t=k();if(null!=t&&0<t.length){var a,l=$(),e=e.which,t=1==t.length?a=t[0]:(a=w.el.querySelector(".fr-cell-fixed"),w.el.querySelector(".fr-cell-handler")),t=u(t,l);if(te.KEYCODE.ARROW_RIGHT==e){if(t.col<l[0].length-1)return _(a,l[t.row][t.col+1]),!1}else if(te.KEYCODE.ARROW_DOWN==e){if(t.row<l.length-1)return _(a,l[t.row+1][t.col]),!1}else if(te.KEYCODE.ARROW_LEFT==e){if(0<t.col)return _(a,l[t.row][t.col-1]),!1}else if(te.KEYCODE.ARROW_UP==e&&0<t.row)return _(a,l[t.row-1][t.col]),!1}}(e)&&setTimeout(function(){y()},0);else{var t=e.which,a=w.selection.blocks();if(a.length&&("TD"==(a="P"!==(a=a[0]).tagName&&"DIV"!==a.tagName?a:a.parentNode).tagName||"TH"==a.tagName)){for(var l,n=a;n&&"TABLE"!=n.tagName&&n.parentNode!=w.el;)n=n.parentNode;!n||"TABLE"!=n.tagName||te.KEYCODE.ARROW_LEFT!=t&&te.KEYCODE.ARROW_UP!=t&&te.KEYCODE.ARROW_RIGHT!=t&&te.KEYCODE.ARROW_DOWN!=t||(0<k().length&&M(),!w.browser.webkit)||te.KEYCODE.ARROW_UP!=t&&te.KEYCODE.ARROW_DOWN!=t||(l=w.selection.ranges(0).startContainer).nodeType==Node.TEXT_NODE&&(te.KEYCODE.ARROW_UP==t&&(l.previousSibling&&"BR"!==l.previousSibling.tagName||l.previousSibling&&"BR"===l.previousSibling.tagName&&l.previousSibling.previousSibling)||te.KEYCODE.ARROW_DOWN==t&&(l.nextSibling&&"BR"!==l.nextSibling.tagName||l.nextSibling&&"BR"===l.nextSibling.tagName&&l.nextSibling.nextSibling))||(e.preventDefault(),e.stopPropagation(),e=u(a,l=$(O(n))),te.KEYCODE.ARROW_UP==t?P(e,n,l):te.KEYCODE.ARROW_DOWN==t&&V(e,n,l),w.selection.restore())}}}),w.events.on("keydown",function(e){if(!1===function(e){var t,a=e.which;if(a==te.KEYCODE.TAB&&(0<k().length?t=w.$el.find(".fr-selected-cell").last():"TD"==(a=w.selection.element()).tagName||"TH"==a.tagName?t=O(a):a!=w.el&&(0<O(a).parentsUntil(w.$el,"td").length?t=O(a).parents("td").first():0<O(a).parentsUntil(w.$el,"th").length&&(t=O(a).parents("th").first())),t))return e.preventDefault(),!!(0===w.selection.get().focusOffset&&0<O(w.selection.element()).parentsUntil(w.$el,"ol, ul").length&&(0<O(w.selection.element()).closest("li").prev().length||O(w.selection.element()).is("li")&&0<O(w.selection.element()).prev().length))||(M(),e.shiftKey?0<t.prev().length?K(t.prev()):0<t.closest("tr").length&&0<t.closest("tr").prev().length?K(t.closest("tr").prev().find("td").last()):0<t.closest("tbody").length&&0<t.closest("table").find("thead tr").length&&K(t.closest("table").find("thead tr th").last()):0<t.next().length?K(t.next()):0<t.closest("tr").length&&0<t.closest("tr").next().length?K(t.closest("tr").next().find("td").first()):0<t.closest("thead").length&&0<t.closest("table").find("tbody tr").length?K(t.closest("table").find("tbody tr td").first()):(t.addClass("fr-selected-cell"),c("below"),D(),K(t.closest("tr").next().find("td").first())),w.selection.restore(),!1)}(e))return!1;var t=k();if(0<t.length){if(0<t.length&&w.keys.ctrlKey(e)&&e.which==te.KEYCODE.A)return D(),w.popups.isVisible("table.edit")&&w.popups.hide("table.edit"),t=[],!0;if(e.which==te.KEYCODE.ESC&&w.popups.isVisible("table.edit"))return D(),w.popups.hide("table.edit"),e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),!(t=[]);if(1<t.length&&(e.which==te.KEYCODE.BACKSPACE||e.which==te.KEYCODE.DELETE)){w.undo.saveStep();for(var a=0;a<t.length;a++)O(t[a]).html("<br>"),a==t.length-1&&O(t[a]).prepend(te.MARKERS);return w.selection.restore(),w.undo.saveStep(),!(t=[])}return 1<t.length&&e.which!=te.KEYCODE.F10&&!w.keys.isBrowserAction(e)?(e.preventDefault(),!(t=[])):void 0}return!(t=[])!==function(e){if(e.altKey&&e.which==te.KEYCODE.SPACE){var t,a=w.selection.element();if("TD"==a.tagName||"TH"==a.tagName?t=a:0<O(a).closest("td").length?t=O(a).closest("td").get(0):0<O(a).closest("th").length&&(t=O(a).closest("th").get(0)),t)return e.preventDefault(),_(t,t),y(),!1}}(e)&&void 0},!0),t=[],w.events.on("html.beforeGet",function(){t=k();for(var e=0;e<t.length;e++)t[e].className=(t[e].className||"").replace(/fr-selected-cell/g,"")}),w.events.on("html.afterGet",function(){for(var e=0;e<t.length;e++)t[e].className=(t[e].className?t[e].className.trim()+" ":"")+"fr-selected-cell";t=[]}),o(!0),i(!0)),w.events.on("destroy",Q)},insert:function(e,t){for(var a,l="<table "+(w.opts.tableDefaultWidth?'style="width: '+w.opts.tableDefaultWidth+';" ':"")+'class="fr-inserted-table"><tbody>',n=100/t,o=0;o<e;o++){for(l+="<tr>",a=0;a<t;a++)l+="<td"+(w.opts.tableDefaultWidth?' style="width: '+n.toFixed(4)+'%;"':"")+">",0===o&&0===a&&(l+=te.MARKERS),l+="<br></td>";l+="</tr>"}l+="</tbody></table>",w.opts.trackChangesEnabled?(w.edit.on(),w.events.focus(!0),w.selection.restore(),w.undo.saveStep(),w.markers.insert(),w.html.wrap(),r=w.$el.find(".fr-marker"),w.node.isLastSibling(r)&&r.parent().hasClass("fr-deletable")&&r.insertAfter(r.parent()),r.replaceWith(l),w.selection.clear()):w.html.insert(l),w.selection.restore();var r=w.$el.find(".fr-inserted-table");r.removeClass("fr-inserted-table"),w.events.trigger("table.inserted",[r.get(0)])},remove:f,insertRow:c,deleteRow:function(){var e=B();if(0<e.length){var t,a,l,n=$(),o=x(n);if(null!=o)if(0===o.min_i&&o.max_i==n.length-1)f();else{for(t=o.max_i;t>=o.min_i;t--){for(l=O(e.find("tr").not(e.find("> table tr")).get(t)),a=0;a<n[t].length;a++)if(0===a||n[t][a]!=n[t][a-1]){var r,s=O(n[t][a]);if(1<parseInt(s.attr("rowspan"),10)&&(1==(r=parseInt(s.attr("rowspan"),10)-1)?s.removeAttr("rowspan"):s.attr("rowspan",r)),t<n.length-1&&n[t][a]==n[t+1][a]&&(0===t||n[t][a]!=n[t-1][a])){for(var s=n[t][a],i=a;0<i&&n[t][i]==n[t][i-1];)i--;0===i?O(e.find("tr").not(e.find("> table tr")).get(t+1)).prepend(s):O(n[t+1][i-1])[0].parentNode&&O(n[t+1][i-1])[0].insertAdjacentElement("afterend",s)}}var c=l.parent();l.remove(),0===c.find("tr").length&&c.remove(),n=$(e)}g(0,n.length-1,0,n[0].length-1,e),0<o.min_i?w.selection.setAtEnd(n[o.min_i-1][0]):w.selection.setAtEnd(n[0][0]),w.selection.restore(),w.popups.hide("table.edit")}}},insertColumn:function(s){var i,e,c,f,d,t,a=B();0<a.length&&(e=x(i=$()),c="before"==s?e.min_j:e.max_j,f=100/i[0].length,d=100/(i[0].length+1),a.find("th, td").each(function(){(t=O(this)).data("old-width",t.outerWidth()/a.outerWidth()*100)}),a.find("tr").not(a.find("> table tr")).each(function(e){for(var t,a=O(this),l=0,n=0;l-1<c;){if(!(t=a.find("> th, > td").get(n))){t=null;break}t==i[e][l]?(l+=parseInt(O(t).attr("colspan"),10)||1,n++):(l+=parseInt(O(i[e][l]).attr("colspan"),10)||1,"after"==s&&(t=0===n?-1:a.find("> th, > td").get(n-1)))}var o,r=O(t);"after"==s&&c<l-1||"before"==s&&0<c&&i[e][c]==i[e][c-1]?(0===e||0<e&&i[e][c]!=i[e-1][c])&&(o=parseInt(r.attr("colspan"),10)+1,r.attr("colspan",o),r.css("width",(r.data("old-width")*d/f+d).toFixed(4)+"%"),r.removeData("old-width")):(o=0<a.find("th").length?'<th style="width: '.concat(d.toFixed(4),'%;"><br></th>'):'<td style="width: '.concat(d.toFixed(4),'%;"><br></td>'),-1==t?a.prepend(o):null==t?a.append(o):"before"==s?r.before(o):"after"==s&&r[0].parentNode&&r[0].insertAdjacentHTML("afterend",o))}),a.find("th, td").each(function(){(t=O(this)).data("old-width")&&(t.css("width",(t.data("old-width")*d/f).toFixed(4)+"%"),t.removeData("old-width"))}),w.popups.isVisible("table.edit"))&&y()},deleteColumn:function(){var e=B();if(0<e.length){var t,a=$(),l=x(a);if(null!=l)if(0===l.min_j&&l.max_j==a[0].length-1)f();else{for(var n,o,r=0,s=0;s<a.length;s++)for(t=0;t<a[0].length;t++)!(o=O(a[s][t])).hasClass("fr-selected-cell")&&(o.data("old-width",o.outerWidth()/e.outerWidth()*100),t<l.min_j||t>l.max_j)&&(r+=o.outerWidth()/e.outerWidth()*100);for(r/=a.length,t=l.max_j;t>=l.min_j;t--)for(s=0;s<a.length;s++)0!==s&&a[s][t]==a[s-1][t]||(o=O(a[s][t]),1<(parseInt(o.attr("colspan"),10)||1)?(1==(n=parseInt(o.attr("colspan"),10)-1)?o.removeAttr("colspan"):o.attr("colspan",n),o.css("width",(100*(o.data("old-width")-I(t,a))/r).toFixed(4)+"%"),o.removeData("old-width")):(n=O(o.parent().get(0)),o.remove(),0===n.find("> th, > td").length&&(0===n.prev().length||0===n.next().length||n.prev().find("> th[rowspan], > td[rowspan]").length<n.prev().find("> th, > td").length)&&n.remove()));g(0,a.length-1,0,a[0].length-1,e),0<l.min_j?w.selection.setAtEnd(a[l.min_i][l.min_j-1]):w.selection.setAtEnd(a[l.min_i][0]),w.selection.restore(),w.popups.hide("table.edit"),e.find("th, td").each(function(){(o=O(this)).data("old-width")&&(o.css("width",(100*o.data("old-width")/r).toFixed(4)+"%"),o.removeData("old-width"))})}}},mergeCells:function(){if(1<k().length&&(0===w.$el.find("th.fr-selected-cell").length||0===w.$el.find("td.fr-selected-cell").length)){F();var e=x($());if(null!=e){for(var t,a=w.$el.find(".fr-selected-cell"),l=O(a[0]),n=l.parent().find(".fr-selected-cell"),o=l.closest("table"),r=l.html(),s=0,i=0;i<n.length;i++)s+=O(n[i]).outerWidth();for(l.css("width",Math.min(100,s/o.outerWidth()*100).toFixed(4)+"%"),e.min_j<e.max_j&&l.attr("colspan",e.max_j-e.min_j+1),e.min_i<e.max_i&&l.attr("rowspan",e.max_i-e.min_i+1),i=1;i<a.length;i++)"<br>"!=(t=O(a[i])).html()&&""!==t.html()&&(r+="<br>".concat(t.html())),t.remove();l.html(r),w.selection.setAtEnd(l.get(0)),w.selection.restore(),w.toolbar.enable(),p(e.min_i,e.max_i,o);var c=o.find("tr:empty");for(i=c.length-1;0<=i;i--)O(c[i]).remove();d(e.min_j,e.max_j,o),y()}}},splitCellVertically:function(){if(1==k().length){var e=w.$el.find(".fr-selected-cell"),t=parseInt(e.attr("colspan"),10)||1,a=e.parent().outerWidth(),l=e.outerWidth(),n=e.clone().html("<br>"),o=$(),r=u(e.get(0),o);if(1<t){var s=Math.ceil(t/2),l=q(r.col,r.col+s-1,o)/a*100,i=q(r.col+s,r.col+t-1,o)/a*100;1<s?e.attr("colspan",s):e.removeAttr("colspan"),1<t-s?n.attr("colspan",t-s):n.removeAttr("colspan"),e.css("width",l.toFixed(4)+"%"),n.css("width",i.toFixed(4)+"%")}else{for(var c,f,d=0;d<o.length;d++)0!==d&&o[d][r.col]==o[d-1][r.col]||(c=O(o[d][r.col])).is(e)||(f=(parseInt(c.attr("colspan"),10)||1)+1,c.attr("colspan",f));e.css("width","".concat((l=l/a*100/2).toFixed(4),"%")),n.css("width","".concat(l.toFixed(4),"%"))}e[0].parentNode&&e[0].insertAdjacentElement("afterend",n[0]),D(),w.popups.hide("table.edit")}},splitCellHorizontally:function(){if(1==k().length){var e=w.$el.find(".fr-selected-cell"),t=e.parent(),a=e.closest("table"),l=parseInt(e.attr("rowspan"),10),n=$(),o=u(e.get(0),n),r=e.clone().html("<br>");if(1<l){for(var s=Math.ceil(l/2),i=(1<s?e.attr("rowspan",s):e.removeAttr("rowspan"),1<l-s?r.attr("rowspan",l-s):r.removeAttr("rowspan"),o.row+s),c=0===o.col?o.col:o.col-1;0<=c&&(n[i][c]==n[i][c-1]||0<i&&n[i][c]==n[i-1][c]);)c--;-1==c?O(a.find("tr").not(a.find("> table tr")).get(i)).prepend(r):O(n[i][c])[0].parentNode&&O(n[i][c])[0].insertAdjacentElement("afterend",r[0])}else{for(var f,l=O(document.createElement("tr")).append(r),d=0;d<n[0].length;d++)0!==d&&n[o.row][d]==n[o.row][d-1]||(f=O(n[o.row][d])).is(e)||f.attr("rowspan",(parseInt(f.attr("rowspan"),10)||1)+1);t[0].parentNode&&t[0].insertAdjacentElement("afterend",l[0])}D(),w.popups.hide("table.edit")}},addHeader:function(){var e=B();if(0<e.length&&0===e.find("> th").length){var t,a="<thead><tr>",l=0,l=e.find("tr").first().find("> th").length;for(e.find("tr").first().find("> td").each(function(){var e=O(this);l+=parseInt(e.attr("colspan"),10)||1}),t=0;t<l;t++)a+="<th><br></th>";e.prepend(a+="</tr></thead>"),y()}},addFooter:function(){var e=B();if(0<e.length&&0===e.find("tfoot").length){var t,a="<tfoot><tr>",l=0,n="> td";for(0<e.find("thead").length&&(n="> th"),e.find("tr").first().find(n).each(function(){var e=O(this);l+=parseInt(e.attr("colspan"),10)||1}),t=0;t<l;t++)a+="<td><br></td>";e.append(a+="</tr></tfoot>"),y()}},removeHeader:function(){var e=B(),t=e.find("> thead");0<(t=O(t)).length&&(0===e.find("tbody tr").length?f():(t.remove(),0<k().length?y():(w.popups.hide("table.edit"),(t=e.find("tbody tr").first().find("td").first().get(0))&&(w.selection.setAtEnd(t),w.selection.restore()))))},removeFooter:function(){var e=B(),t=e.find("tfoot");0<t.length&&(0===e.find("tbody tr").length?f():(t.remove(),0<k().length?y():(w.popups.hide("table.edit"),(t=e.find("tbody tr").first().find("td").first().get(0))&&(w.selection.setAtEnd(t),w.selection.restore()))))},setBackground:a,showInsertPopup:function(){var e,t,a=w.$tb.find('.fr-command[data-cmd="insertTable"]');(w.popups.get("table.insert")||o()).hasClass("fr-active")||(w.popups.refresh("table.insert"),w.popups.setContainer("table.insert",w.$tb),e=(t=w.button.getPosition(a)).left,t=t.top,w.popups.show("table.insert",e,t,a.outerHeight()))},showEditPopup:y,showColorsPopup:r,back:function(){0<k().length?y():(w.popups.hide("table.insert"),w.toolbar.showInline())},verticalAlign:function(e){w.$el.find(".fr-selected-cell").css("vertical-align",e)},horizontalAlign:function(e){w.$el.find(".fr-selected-cell").css("text-align",e)},applyStyle:function(e,t,a,l){0<t.length&&(w.opts.useClasses||("TABLE"===t.get(0).tagName?function e(t,a){var l=t.childNodes;if(0<l.length)for(var n=0;n<l.length;n++)"TD"===l[n].tagName?"fr-dashed-borders"===a||"fr-highlighted"===a||"fr-thick"===a?Y(l[n]):"fr-alternate-rows"===a&&l[n].style.removeProperty("background-color"):e(l[n],a)}(t.get(0),e):Y(t.get(0))),a||((a=Object.keys(l)).splice(a.indexOf(e),1),t.removeClass(a.join(" "))),t.toggleClass(e))},selectedTable:B,selectedCells:k,customColor:function(){var e=w.popups.get("table.colors").find(".fr-table-colors-hex-layer input");e.length&&a(e.val())},selectCells:_}},te.DefineIcon("insertTable",{NAME:"table",SVG_KEY:"insertTable"}),te.RegisterCommand("insertTable",{title:"Insert Table",undo:!1,focus:!0,refreshOnCallback:!1,popup:!0,callback:function(){this.popups.isVisible("table.insert")?(this.$el.find(".fr-marker").length&&(this.events.disableBlur(),this.selection.restore()),this.popups.hide("table.insert")):this.table.showInsertPopup()},plugin:"table"}),te.RegisterCommand("tableInsert",{callback:function(e,t,a){this.table.insert(t,a),this.popups.hide("table.insert")}}),te.DefineIcon("tableHeader",{NAME:"header",FA5NAME:"heading",SVG_KEY:"tableHeader"}),te.RegisterCommand("tableHeader",{title:"Table Header",focus:!1,toggle:!0,callback:function(){this.popups.get("table.edit").find('.fr-command[data-cmd="tableHeader"]').hasClass("fr-active")?this.table.removeHeader():this.table.addHeader()},refresh:function(e){var t=this.table.selectedTable();0<t.length&&(0===t.find("> thead").length?e.removeClass("fr-active").attr("aria-pressed",!1):e.addClass("fr-active").attr("aria-pressed",!0))}}),te.DefineIcon("tableFooter",{NAME:"table",FA5NAME:"table",SVG_KEY:"tableFooter"}),te.RegisterCommand("tableFooter",{title:"Table Footer",focus:!1,toggle:!0,callback:function(){this.popups.get("table.edit").find('.fr-command[data-cmd="tableFooter"]').hasClass("fr-active")?this.table.removeFooter():this.table.addFooter()},refresh:function(e){var t=this.table.selectedTable();0<t.length&&(0===t.find("tfoot").length?e.removeClass("fr-active").attr("aria-pressed",!1):e.addClass("fr-active").attr("aria-pressed",!0))}}),te.DefineIcon("tableRows",{NAME:"bars",SVG_KEY:"row"}),te.RegisterCommand("tableRows",{type:"dropdown",focus:!1,title:"Row",options:{above:"Insert row above",below:"Insert row below",delete:"Delete row"},html:function(){var e,t='<ul class="fr-dropdown-list" role="presentation">',a=te.COMMANDS.tableRows.options;for(e in a)a.hasOwnProperty(e)&&(t+='<li role="presentation"><a class="fr-command" tabIndex="-1" role="option" data-cmd="tableRows" data-param1="'+e+'" title="'+this.language.translate(a[e])+'">'+this.language.translate(a[e])+"</a></li>");return t+="</ul>"},callback:function(e,t){"above"==t||"below"==t?this.table.insertRow(t):this.table.deleteRow()}}),te.DefineIcon("tableColumns",{NAME:"bars fa-rotate-90",SVG_KEY:"columns"}),te.RegisterCommand("tableColumns",{type:"dropdown",focus:!1,title:"Column",options:{before:"Insert column before",after:"Insert column after",delete:"Delete column"},html:function(){var e,t='<ul class="fr-dropdown-list" role="presentation">',a=te.COMMANDS.tableColumns.options;for(e in a)a.hasOwnProperty(e)&&(t+='<li role="presentation"><a class="fr-command" tabIndex="-1" role="option" data-cmd="tableColumns" data-param1="'.concat(e,'" title="').concat(this.language.translate(a[e]),'">').concat(this.language.translate(a[e]),"</a></li>"));return t+="</ul>"},callback:function(e,t){"before"==t||"after"==t?this.table.insertColumn(t):this.table.deleteColumn()}}),te.DefineIcon("tableCells",{NAME:"square-o",FA5NAME:"square",SVG_KEY:"cellOptions"}),te.RegisterCommand("tableCells",{type:"dropdown",focus:!1,title:"Cell",options:{merge:"Merge cells","vertical-split":"Vertical split","horizontal-split":"Horizontal split"},html:function(){var e,t='<ul class="fr-dropdown-list" role="presentation">',a=te.COMMANDS.tableCells.options;for(e in a)a.hasOwnProperty(e)&&(t+='<li role="presentation"><a class="fr-command" tabIndex="-1" role="option" data-cmd="tableCells" data-param1="'.concat(e,'" title="').concat(this.language.translate(a[e]),'">').concat(this.language.translate(a[e]),"</a></li>"));return t+="</ul>"},callback:function(e,t){"merge"==t?this.table.mergeCells():"vertical-split"==t?this.table.splitCellVertically():this.table.splitCellHorizontally()},refreshOnShow:function(e,t){(1<this.$el.find(".fr-selected-cell").length?(t.find('a[data-param1="vertical-split"]').addClass("fr-disabled").attr("aria-disabled",!0),t.find('a[data-param1="horizontal-split"]').addClass("fr-disabled").attr("aria-disabled",!0),t.find('a[data-param1="merge"]')):(t.find('a[data-param1="merge"]').addClass("fr-disabled").attr("aria-disabled",!0),t.find('a[data-param1="vertical-split"]').removeClass("fr-disabled").attr("aria-disabled",!1),t.find('a[data-param1="horizontal-split"]'))).removeClass("fr-disabled").attr("aria-disabled",!1)}}),te.DefineIcon("tableRemove",{NAME:"trash",SVG_KEY:"removeTable"}),te.RegisterCommand("tableRemove",{title:"Remove Table",focus:!1,callback:function(){this.table.remove()}}),te.DefineIcon("tableStyle",{NAME:"paint-brush",SVG_KEY:"tableStyle"}),te.RegisterCommand("tableStyle",{title:"Table Style",type:"dropdown",focus:!1,html:function(){var e,t='<ul class="fr-dropdown-list" role="presentation">',a=this.opts.tableStyles;for(e in a)a.hasOwnProperty(e)&&(t+='<li role="presentation"><a class="fr-command" tabIndex="-1" role="option" data-cmd="tableStyle" data-param1="'.concat(e,'" title="').concat(this.language.translate(a[e]),'">').concat(this.language.translate(a[e]),"</a></li>"));return t+="</ul>"},callback:function(e,t){this.table.applyStyle(t,this.$el.find(".fr-selected-cell").closest("table"),this.opts.tableMultipleStyles,this.opts.tableStyles)},refreshOnShow:function(e,t){var a=this.$,l=this.$el.find(".fr-selected-cell").closest("table");l&&t.find(".fr-command").each(function(){var e=a(this).data("param1"),e=l.hasClass(e);a(this).toggleClass("fr-active",e).attr("aria-selected",e)})}}),te.DefineIcon("tableCellBackground",{NAME:"tint",SVG_KEY:"cellBackground"}),te.RegisterCommand("tableCellBackground",{title:"Cell Background",focus:!1,popup:!0,callback:function(){this.table.showColorsPopup()}}),te.RegisterCommand("tableCellBackgroundColor",{undo:!0,focus:!1,callback:function(e,t){this.table.setBackground(t)}}),te.DefineIcon("tableBack",{NAME:"arrow-left",SVG_KEY:"back"}),te.RegisterCommand("tableBack",{title:"Back",undo:!1,focus:!1,back:!0,callback:function(){this.table.back()},refresh:function(e){0!==this.table.selectedCells().length||this.opts.toolbarInline?(e.removeClass("fr-hidden"),e.next(".fr-separator").removeClass("fr-hidden")):(e.addClass("fr-hidden"),e.next(".fr-separator").addClass("fr-hidden"))}}),te.DefineIcon("tableCellVerticalAlign",{NAME:"arrows-v",FA5NAME:"arrows-alt-v",SVG_KEY:"verticalAlignMiddle"}),te.RegisterCommand("tableCellVerticalAlign",{type:"dropdown",focus:!1,title:"Vertical Align",options:{Top:"Align Top",Middle:"Align Middle",Bottom:"Align Bottom"},html:function(){var e,t='<ul class="fr-dropdown-lis