froala-editor
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.
7 lines (6 loc) • 96.1 kB
JavaScript
/*!
* froala_editor v4.6.0 (https://www.froala.com/wysiwyg-editor)
* License https://froala.com/wysiwyg-editor/terms/
* Copyright 2014-2025 Froala Labs
*/
!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(ke){"use strict";function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,l=Array(t);a<t;a++)l[a]=e[a];return l}function Be(e){return function t(e){if(Array.isArray(e))return n(e)}(e)||function a(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function l(e,t){if(e){if("string"==typeof e)return n(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===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 r(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}ke=ke&&ke.hasOwnProperty("default")?ke["default"]:ke,Object.assign(ke.POPUP_TEMPLATES,{"table.insert":"[_BUTTONS_][_ROWS_COLUMNS_]","table.edit":"[_BUTTONS_]","table.colors":"[_BUTTONS_][_COLORS_][_CUSTOM_COLOR_]","table.cellProperties":"[_CELL_PROPERTIES_FORM_][_BUTTONS_]","table.tableProperties":"[_TABLE_PROPERTIES_FORM_][_BUTTONS_]"}),Object.assign(ke.DEFAULTS,{tableInsertMaxSize:10,tableEditButtons:["tableHeader","tableFooter","tableRemove","tableRows","tableColumns","tableProperties","-","tableCells","tableCellProperties","tableCellVerticalAlign","tableCellHorizontalAlign","tableCellStyle"],tableInsertButtons:["tableBack","|"],tableResizer:!0,tableDefaultWidth:"50%",tableDefaultAlign:"center",tableDefaultHeight:"100px",tableDefaultBGColor:"",tableDefaultBorderColor:"",tableDefaultBorderWidth:"1px",tableDefaultBorderStyle:"solid",tableBorderStyle:["solid","dashed","dotted","double","groove","ridge","inset","outset"],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,keepTextFormatOnTable:!1,tableInsertHelperOffset:15}),ke.PLUGINS.table=function(T){var x,c,o,i,l,r,E,R=T.$,s={};function C(){var e=V();if(e){var t=T.popups.get("table.edit");if(t||(t=b()),t){T.popups.setContainer("table.edit",T.$sc);var a=k(e),l=a.left+(a.right-a.left)/2,r=a.bottom;T.popups.show("table.edit",l,r,a.bottom-a.top,!0),T.edit.isDisabled()&&(T.$el.removeClass("fr-no-selection"),T.edit.on(),T.button.bulkRefresh(),T.selection.setAtEnd(T.$el.find(".fr-selected-cell").last().get(0)),T.selection.restore())}}}function n(){0===pe().length&&T.toolbar.enable()}function p(e){if(e)return T.popups.onHide("table.insert",function(){T.popups.get("table.insert").find('.fr-table-size .fr-select-table-size > span[data-row="1"][data-col="1"]').trigger("mouseover")}),!0;var t="";0<T.opts.tableInsertButtons.length&&(t='<div class="fr-buttons fr-tabs">'.concat(T.button.buildList(T.opts.tableInsertButtons),"</div>"));var a={buttons:t,rows_columns:function n(){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<=T.opts.tableInsertMaxSize;t++){for(var a=1;a<=T.opts.tableInsertMaxSize;a++){var l="inline-block";2<t&&!T.helpers.isMobile()&&(l="none");var r="fr-table-cell ";1==t&&1==a&&(r+=" hover"),e+='<span class="fr-command '.concat(r,'" 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>"}()},l=T.popups.create("table.insert",a);return T.events.$on(l,"mouseover",".fr-table-size .fr-select-table-size .fr-table-cell",function(e){f(R(e.currentTarget))},!0),function r(e){T.events.$on(e,"focus","[tabIndex]",function(e){var t=R(e.currentTarget);f(t)}),T.events.on("popup.tab",function(e){var t=R(e.currentTarget);if(!T.popups.isVisible("table.insert")||!t.is("span, a"))return!0;var a,l=e.which;if(ke.KEYCODE.ARROW_UP==l||ke.KEYCODE.ARROW_DOWN==l||ke.KEYCODE.ARROW_LEFT==l||ke.KEYCODE.ARROW_RIGHT==l){if(t.is("span.fr-table-cell")){var r=t.parent().find("span.fr-table-cell"),n=r.index(t),o=T.opts.tableInsertMaxSize,i=n%o,s=Math.floor(n/o);ke.KEYCODE.ARROW_UP==l?s=Math.max(0,s-1):ke.KEYCODE.ARROW_DOWN==l?s=Math.min(T.opts.tableInsertMaxSize-1,s+1):ke.KEYCODE.ARROW_LEFT==l?i=Math.max(0,i-1):ke.KEYCODE.ARROW_RIGHT==l&&(i=Math.min(T.opts.tableInsertMaxSize-1,i+1));var c=s*o+i,d=R(r.get(c));f(d),T.events.disableBlur(),d.focus(),a=!1}}else ke.KEYCODE.ENTER==l&&(T.button.exec(t),a=!1);return!1===a&&(e.preventDefault(),e.stopPropagation()),a},!0)}(l),l}function f(e){var t=e.data("row");null!==t&&(t=parseInt(t));var a=e.data("col");null!==a&&(a=parseInt(a));var l=e.parent();l.siblings(".fr-table-size-info").html("".concat(t," × ").concat(a)),l.find("> span").removeClass("hover fr-active-item");for(var r=1;r<=T.opts.tableInsertMaxSize;r++)for(var n=0;n<=T.opts.tableInsertMaxSize;n++){var o=l.find('> span[data-row="'.concat(r,'"][data-col="').concat(n,'"]'));r<=t&&n<=a?o.addClass("hover"):r<=t+1||r<=2&&!T.helpers.isMobile()?o.css("display","inline-block"):2<r&&!T.helpers.isMobile()&&o.css("display","none")}e.addClass("fr-active-item")}function b(e){if(e)return T.popups.onHide("table.edit",n),!0;if(0<T.opts.tableEditButtons.length){var t={buttons:'<div class="fr-buttons">'.concat(T.button.buildList(T.opts.tableEditButtons),"</div>")},a=T.popups.create("table.edit",t);return T.events.$on(T.$wp,"scroll.table-edit",function(){T.popups.isVisible("table.edit")&&C()}),a}return!1}function A(e,t,a){var l=R(e),r=R(t);a&&"REMOVE"!==a&&"transparent"!==a&&"rgba(0, 0, 0, 0)"!==a?(l.css("background-color",a),r.css("display","none")):(l.css("background-color","transparent"),r.css("display","block"))}function m(){var e=T.popups.get("table.cellProperties");if(!e){e=T.popups.create("table.cellProperties",{cell_properties_form:'\n <div class="fr-cell-properties-form">\n <div class="fr-cell-properties-section">\n <label>Background</label>\n <div class="fr-cell-bg-container">\n <input type="text" id="fr-cell-bg" class="fr-input" tabIndex="1" placeholder="Color">\n <button type="button" class="fr-command fr-btn-cell-bg-color" tabIndex="2" data-param1="cell" data-cmd="openColorPicker">\n <div class="fr-color-preview">\n <div class="fr-color-preview-indicator"></div>\n </div>\n </button>\n </div>\n </div>\n \n <div class="fr-cell-dimensions-container">\n <div class="fr-cell-dimension-section">\n <label>Dimensions</label>\n <div class="fr-dimension-inputs">\n <input type="text" id="fr-cell-width" tabIndex="3" placeholder="Width">\n <span class="fr-dimension-separator">\xd7</span>\n <input type="text" id="fr-cell-height" tabIndex="4" placeholder="Height">\n <label for="fr-cell-height"></label>\n </div>\n </div>\n \n <div class="fr-cell-padding-section">\n <label>Padding</label>\n <div>\n <input type="text" id="fr-cell-padding" tabIndex="5" placeholder="Size">\n <label for="fr-cell-padding"></label>\n </div>\n </div>\n </div>\n \n <div class="fr-cell-properties-buttons">\n <button type="button" class="fr-command fr-enable-accessibility fr-cancel-button" tabIndex="6" data-cmd="onCancel">Cancel</button>\n <button type="button" class="fr-command fr-enable-accessibility fr-save-button" tabIndex="7" data-cmd="applyCellProperties">Save</button>\n </div>\n </div>',buttons:""}),w(),T.events.$on(e,"input","#fr-cell-bg",function(){e.data("bg-modified",!0)}),T.events.$on(e,"input","#fr-cell-width",function(){e.data("width-modified",!0)}),T.events.$on(e,"input","#fr-cell-height",function(){e.data("height-modified",!0)}),T.events.$on(e,"input","#fr-cell-padding",function(){e.data("padding-modified",!0)})}return e}function w(){var e=T.popups.get("table.cellProperties");e&&(e.data("bg-modified",!1),e.data("width-modified",!1),e.data("height-modified",!1),e.data("padding-modified",!1))}function d(e){var t,a,l,r,n=T.popups.get("table.colors").data("type");if("table"===n){var o=T.popups.get("table.tableProperties");t=o.find(".fr-color-preview"),a=o.find(".fr-color-preview-indicator"),l=o.find("#fr-table-bg")}else if("cell"===n){var i=T.popups.get("table.cellProperties");t=i.find(".fr-color-preview"),a=i.find(".fr-color-preview-indicator"),l=i.find("#fr-cell-bg"),r=T.popups.get("table.cellProperties")}else if("border"===n){var s=T.popups.get("table.tableProperties");t=s.find(".fr-border-color-preview"),a=s.find(".fr-border-color-preview-indicator"),l=s.find("#fr-table-border-color")}"string"==typeof e&&(T.helpers.isRGBColor(e)&&(e=T.helpers.RGBToHex(e).toUpperCase()),(T.helpers.isValidHexColor(e)||"transparent"===e||""===e)&&(R(l).val(e),R(l).focus(),"cell"===n&&R(r).data("bg-modified",!0),A(t,a,e)))}function h(e){var t=R(e).next().get(0);if(t){var a=T.doc.createRange();a.setStart(t,0),a.collapse(!0);var l=T.selection.get();l.removeAllRanges(),l.addRange(a)}else T.selection.get().collapse(R(e).get(0))}function e(){s[T.id]||(s[T.id]=R(document.createElement("div")).attr("class","fr-table-selector").html('<a role="button" tabIndex="-1" title="'.concat(T.language.translate("Select Table"),'">').concat(T.icon.create("tableSelectorIcon"),"</a>")));var n=T.language.translate("The content you are pasting does not contain a table.\nPlease ensure the copied content is in table format.");T.events.on("paste.before",function(e,t){if(T.$el.find("table.fr-table-selected").length){var a=t||e&&e.clipboardData;if(a&&a.items){var l=(a||window.clipboardData).getData("text/html")||"";if(!l||-1===l.indexOf("<table"))return alert(n),e.preventDefault(),e.stopPropagation(),!1}}return!0}),T.events.on("html.beforeInsert",function(e){var t=T.$el.find("table.fr-table-selected");if(t.length){var a=function r(e){var t=T.doc.createElement("div");t.innerHTML=e;for(var a=t.firstChild;a;){var l=a.nextSibling;(a.nodeType===Node.TEXT_NODE&&""===a.textContent.replace(/\u200b/g,"").trim()||a.nodeType===Node.COMMENT_NODE||"SPAN"===a.tagName&&""===a.textContent.replace(/\u200b/g,"").trim())&&a.remove(),a=l}return 1===t.childNodes.length&&"TABLE"===t.childNodes[0].tagName&&t.childNodes[0]}(e);return a?(function v(e,t){for(var a=t.get(0),l=a.rows[0].cells[0],r=l&&l.parentNode?l.parentNode.rowIndex:0,n=l?l.cellIndex:0,o=a.rows,i=e.rows,s=0;s<e.rows.length;s++){if(!o[r+s])for(var c=o[o.length-1].cells.length,d=a.insertRow(),f=0;f<c;f++)d.insertCell();for(var p=o[r+s],b=0;b<e.rows[s].cells.length;b++){if(!p.cells[n+b])for(var h=0;h<o.length;h++)o[h].insertCell();var u=p.cells[n+b],g=i[s].cells[b];u.outerHTML=g.outerHTML}}}(a,t),T.keys.positionCaret(),T.events.trigger("html.inserted")):alert(n),!1}return!0}),T.events.on("mousedown",function(){T.$el.find("table.fr-table-selected").length&&ae()}),T.events.$on(R(T.o_win),"resize",function(){var e=T.$el.find("table.fr-table-selected");e.length?le(e):ae()}),T.events.on("commands.undo commands.redo commands.before",function(e){if(!/^align/.test(e)){var t=T.$el.find("table.fr-table-selected");t.length&&(ae(),h(t))}});var e=null,t=null;T.events.on("snapshot.before",function(){t=T.$el.find("table.fr-table-selection-hover"),e=T.$el.find("table.fr-table-selected"),ee(t,"fr-table-selection-hover"),ee(e,"fr-table-selected")}),T.events.on("snapshot.after",function(){e&&e.addClass("fr-table-selected"),t&&t.addClass("fr-table-selection-hover")}),T.events.$on(s[T.id],"click",function(){var e=T.$el.find("table.fr-table-selection-hover"),t=T.$el.find("table.fr-table-selected");e.length&&(ee(t,"fr-table-selected"),s[T.id].addClass("fr-table-selector-active-selected"),e.addClass("fr-table-selected"),ee(e,"fr-table-selection-hover"),t=e);var a=T.doc.createRange();T.selection.get().removeAllRanges();var l=t.get(0);a.selectNode(l),T.selection.get().addRange(a)}),T.events.on("destroy",function(){ae(),s[T.id]=null})}function u(e){var t={startTag:"",closeTag:""};return T.opts.keepTextFormatOnTable&&(t=g(function i(e){var t=new Set,a=e.textContent,l=0,r=[e.firstChild];for(;0<r.length;){var n=r.pop();if(n&&(t.has(n)||(0===l&&a!==n.textContent&&(a=n.textContent,l++),t.add(n)),n.hasChildNodes()))for(var o=0;o<n.childNodes.length;){if(3===n.childNodes[o].nodeType)return Be(t);if(n.childNodes[o].textContent){if(0===l&&n.childNodes[o].textContent!==a){a=n.childNodes[o].textContent,r.push(n.childNodes[o]),l++;break}n.childNodes[o].textContent===a&&r.push(n.childNodes[o])}o++}}return Be(t)}(e).reverse())),{startTag:t.startTag,closeTag:t.closeTag}}function g(e){var t="",a="",l=["br","#text","#comment","font"];if(0<e.length)for(var r=e.length-1;0<=r;r--){var n=e[r],o=T.node.isBlock(n),i=l.indexOf(n.nodeName.toLowerCase());if(!o&&i<0){var s=n.style,c="";if(s&&s.length){for(var d=0;d<s.length;d++)c+=s[d]+": "+s[s[d]].replace(/"/gi,"")+"; ";c=c.trim()}t+=c?"<"+n.nodeName.toLowerCase()+' style="'+c+'">':"<"+n.nodeName.toLowerCase()+">",a="</"+n.nodeName.toLowerCase()+">"+a}}return{startTag:t,closeTag:a}}function y(){var e=be(),t=pe(),a=0<t.length,l=0<e.length;(a||l)&&(a&&(T.selection.setBefore(t[0])||T.selection.setAfter(t[0]),T.selection.restore(),T.popups.hide("table.edit")),h(e),T.undo.saveStep(),ae(),I(),e.remove(),T.$el.focus())}function O(e){var t=be();if(0<t.length){if(0<T.$el.find("thead .fr-selected-cell").length&&"above"==e||0<T.$el.find("tfoot td.fr-selected-cell").length&&"below"==e)return;var a,l,r,n=V(),o=L(n);if(null==o)return;l="above"==e?o.min_i:o.max_i;var i="<tr>";for(a=0;a<n[l].length;a++)if("below"==e&&l<n.length-1&&n[l][a]==n[l+1][a]||"above"==e&&0<l&&n[l][a]==n[l-1][a]){if(0===a||0<a&&n[l][a]!=n[l][a-1]){var s=R(n[l][a]);s.attr("rowspan",parseInt(s.attr("rowspan"),10)+1)}}else{var c=R(n[l][a]);if("TH"==c.attr("tagName").toUpperCase())i+='<th style="'+c.attr("style")+'" ><br></th>';else{var d=u(n[l][a]);i+='<td style="'+c.attr("style")+'" >'+d.startTag+"<br>"+d.closeTag+"</td>"}}i+="</tr>",r=0<T.$el.find("thead .fr-selected-cell").length&&"below"==e||0<T.$el.find("tfoot td.fr-selected-cell").length&&"above"==e?R(t.find("tbody").not(t.find("> table tbody"))):R(t.find("tr").not(t.find("> table tr")).get(l)),"below"==e?"TBODY"==r.attr("tagName")?r.prepend(i):r[0].parentNode&&r[0].insertAdjacentHTML("afterend",i):"above"==e&&("TBODY"==r.attr("tagName")?r.append(i):r.before(i),T.popups.isVisible("table.edit")&&C())}}function v(e,t,a){var l,r,n,o,i,s=0,c=V(a);if(e<(t=Math.min(t,c[0].length-1)))for(r=e;r<=t;r++)if(!(e<r&&c[0][r]==c[0][r-1])&&1<(o=Math.min(parseInt(c[0][r].getAttribute("colspan"),10)||1,t-e+1))&&c[0][r]==c[0][r+1])for(s=o-1,l=1;l<c.length;l++)if(c[l][r]!=c[l-1][r]){for(n=r;n<r+o;n++)if(c[l][n]!==undefined)if(1<(i=parseInt(c[l][n].getAttribute("colspan"),10)||1)&&c[l][n]==c[l][n+1])n+=s=Math.min(s,i-1);else if(!(s=Math.max(0,s-1)))break;if(!s)break}s&&M(c,s,"colspan",0,c.length-1,e,t)}function H(e,t,a){var l,r,n,o,i,s=0,c=V(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])&&c[l][0]!==undefined&&1<(o=Math.min(parseInt(c[l][0].getAttribute("rowspan"),10)||1,t-e+1))&&c[l][0]==c[l+1][0])for(s=o-1,r=1;r<c[0].length;r++)if(c[l][r]!=c[l][r-1]){for(n=l;n<l+o;n++)if(c[n][r]!==undefined)if(1<(i=parseInt(c[n][r].getAttribute("rowspan"),10)||1)&&c[n][r]==c[n+1][r])n+=s=Math.min(s,i-1);else if(!(s=Math.max(0,s-1)))break;if(!s)break}s&&M(c,s,"rowspan",e,t,0,c[0].length-1)}function M(e,t,a,l,r,n,o){var i,s,c;for(i=l;i<=r;i++)for(s=n;s<=o;s++)l<i&&e[i][s]==e[i-1][s]||n<s&&e[i][s]==e[i][s-1]||e[i][s]!==undefined&&1<(c=parseInt(e[i][s].getAttribute(a),10)||1)&&(1<c-t?e[i][s].setAttribute(a,c-t):e[i][s].removeAttribute(a))}function S(e,t,a,l,r){H(e,t,r),v(a,l,r)}function D(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 V(e){var c=[];if(null==(e=e||null)&&0<pe().length&&(e=be()),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--)R(t[a]).remove();e.find("tr").not(e.find("> table tr")).each(function(i,e){var t=R(e),s=0;t.find("> th, > td").each(function(e,t){for(var a=R(t),l=parseInt(a.attr("colspan"),10)||1,r=parseInt(a.attr("rowspan"),10)||1,n=i;n<i+r;n++)for(var o=s;o<s+l;o++)c[n]||(c[n]=[]),c[n][o]?s++:c[n][o]=t;s+=l})})}return c}function $(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 N(e,t,a){for(var l=e+1,r=t+1;l<a.length;){if(a[l][t]!=a[e][t]){l--;break}l++}for(l==a.length&&l--;r<a[e].length;){if(a[e][r]!=a[e][t]){r--;break}r++}return r==a[e].length&&r--,{row:l,col:r}}function _(){T.el.querySelector(".fr-cell-fixed")&&T.el.querySelector(".fr-cell-fixed").classList.remove("fr-cell-fixed"),T.el.querySelector(".fr-cell-handler")&&T.el.querySelector(".fr-cell-handler").classList.remove("fr-cell-handler")}function I(){var e=T.$el.find(".fr-selected-cell");0<e.length&&e.each(function(){var e=R(this);e.removeClass("fr-selected-cell"),""===e.attr("class")&&e.removeAttr("class")}),_()}function P(){T.events.disableBlur(),T.selection.clear(),T.$el.addClass("fr-no-selection"),T.$el.blur(),T.events.enableBlur()}function L(e){var t=T.$el.find(".fr-selected-cell");if(0<t.length){var a,l=e.length,r=0,n=e[0].length,o=0;for(a=0;a<t.length;a++){var i=$(t[a],e),s=N(i.row,i.col,e);l=Math.min(i.row,l),r=Math.max(s.row,r),n=Math.min(i.col,n),o=Math.max(s.col,o)}return{min_i:l,max_i:r,min_j:n,max_j:o}}return null}function k(e){var t=L(e);if(null!=t){var a=R(e[t.min_i][t.min_j]),l=R(e[t.min_i][t.max_j]),r=R(e[t.max_i][t.min_j]);return{left:a.length&&a.offset().left,right:l.length&&l.offset().left+l.outerWidth(),top:a.length&&a.offset().top,bottom:r.length&&r.offset().top+r.outerHeight()}}}function B(e,t){if(R(e).is(t))I(),R(e).addClass("fr-selected-cell");else{P(),T.edit.off();var a=V(),l=$(e,a),r=$(t,a);if(!l||!r)return;var n=function b(e,t,a,l,r){var n,o,i,s,c=e,d=t,f=a,p=l;for(n=c;n<=d;n++)(1<(parseInt(R(r[n][f]).attr("rowspan"),10)||1)||1<(parseInt(R(r[n][f]).attr("colspan"),10)||1))&&(s=N((i=$(r[n][f],r)).row,i.col,r),c=Math.min(i.row,c),d=Math.max(s.row,d),f=Math.min(i.col,f),p=Math.max(s.col,p)),(1<(parseInt(R(r[n][p]).attr("rowspan"),10)||1)||1<(parseInt(R(r[n][p]).attr("colspan"),10)||1))&&(s=N((i=$(r[n][p],r)).row,i.col,r),c=Math.min(i.row,c),d=Math.max(s.row,d),f=Math.min(i.col,f),p=Math.max(s.col,p));for(o=f;o<=p;o++)(1<(parseInt(R(r[c][o]).attr("rowspan"),10)||1)||1<(parseInt(R(r[c][o]).attr("colspan"),10)||1))&&(s=N((i=$(r[c][o],r)).row,i.col,r),c=Math.min(i.row,c),d=Math.max(s.row,d),f=Math.min(i.col,f),p=Math.max(s.col,p)),(1<(parseInt(R(r[d][o]).attr("rowspan"),10)||1)||1<(parseInt(R(r[d][o]).attr("colspan"),10)||1))&&(s=N((i=$(r[d][o],r)).row,i.col,r),c=Math.min(i.row,c),d=Math.max(s.row,d),f=Math.min(i.col,f),p=Math.max(s.col,p));return c==e&&d==t&&f==a&&p==l?{min_i:e,max_i:t,min_j:a,max_j:l}:b(c,d,f,p,r)}(Math.min(l.row,r.row),Math.max(l.row,r.row),Math.min(l.col,r.col),Math.max(l.col,r.col),a);I(),e.classList.add("fr-cell-fixed"),t.classList.add("fr-cell-handler");for(var o=n.min_i;o<=n.max_i;o++)for(var i=n.min_j;i<=n.max_j;i++)R(e).closest("table").is(R(a[o][i]).closest("table"))&&R(a[o][i]).addClass("fr-selected-cell")}}function F(e){var t=null,a=R(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===T.$el.html.toString().search(t)?null:t}function K(){I(),T.popups.hide("table.edit")}function Y(e){var t=F(e);if("false"==R(t).parents("[contenteditable]").not(".fr-element").not(".fr-img-caption").not("body").first().attr("contenteditable"))return!0;if(0<pe().length&&!t&&K(),!T.edit.isDisabled()||T.popups.isVisible("table.edit"))if(1!=e.which||1==e.which&&T.helpers.isMac()&&e.ctrlKey)(3==e.which||1==e.which&&T.helpers.isMac()&&e.ctrlKey)&&t&&K();else if(i=!0,t){0<pe().length&&!e.shiftKey&&K(),e.stopPropagation(),T.events.trigger("image.hideResizer"),T.events.trigger("video.hideResizer"),o=!0;var a=t.tagName.toLowerCase();e.shiftKey&&0<T.$el.find("".concat(a,".fr-selected-cell")).length?R(T.$el.find("".concat(a,".fr-selected-cell")).closest("table")).is(R(t).closest("table"))?B(l,t):P():((T.keys.ctrlKey(e)||e.shiftKey)&&"TD"===e.currentTarget.tagName&&(1<pe().length||0===R(t).find(T.selection.element()).length&&!R(t).is(T.selection.element()))&&P(),l=t,0<T.opts.tableEditButtons.length&&B(l,l))}}function W(e){var t=T.popups.areVisible();if(!T.edit.isDisabled()&&t&&!t.hasClass("fr-do-not-hide"))return!0;var a=F(e);if(1===pe().length&&null===a&&(T.toolbar.enable(),I()),(1===pe().length&&a&&"TD"!==a.tagName&&"TH"!==a.tagName||!o&&!T.$tb.is(e.target)&&!T.$tb.is(R(e.target).closest(".fr-toolbar")))&&(T.toolbar.enable(),I()),("BODY"===e.target.tagName||"HTML"===e.target.tagName)&&!a&&0<pe().length&&T.toolbar.enable(),!(1!=e.which||1==e.which&&T.helpers.isMac()&&e.ctrlKey)){if(i=!1,o)if(o=!1,F(e)||1!=pe().length)if(0<pe().length){if(T.browser.mozilla&&!T.selection.isCollapsed()){var l=pe()[pe().length-1],r=T.doc.createRange();T.selection.get().removeAllRanges(),r.setStart(l,0),r.setEnd(l,0),r.collapse(),T.selection.get().addRange(r)}T.selection.isCollapsed()?(C(),T.toolbar.enable()):(I(),T.edit.on())}else pe().length||(T.$el.removeClass("fr-no-selection"),T.edit.on());else I();if(E){E=!1,x.removeClass("fr-moving"),T.$el.removeClass("fr-no-selection"),T.edit.on();var n=parseFloat(x.css("left"))+T.opts.tableResizerOffset+T.$wp.offset().left;T.opts.iframe&&(n-=T.$iframe.offset().left),x.data("release-position",n),x.removeData("max-left"),x.removeData("max-right"),function A(){var e=x.data("origin"),t=x.data("release-position");if(e!==t){var a=x.data("first"),l=x.data("second"),r=x.data("table"),n=r.outerWidth();if(T.undo.canDo()||T.undo.saveStep(),null!=a&&null!=l){var o,i,s,c=V(r),d=[],f=[],p=[],b=[];for(o=0;o<c.length;o++)i=R(c[o][a]),s=R(c[o][l]),d[o]=i.outerWidth(),p[o]=s.outerWidth(),f[o]=d[o]/n*100,b[o]=p[o]/n*100;for(o=0;o<c.length;o++)if(i=R(c[o][a]),s=R(c[o][l]),c[o][a]!=c[o][l]){var h=(f[o]*(d[o]+t-e)/d[o]).toFixed(4);i.css("width",h+"%"),s.css("width",(f[o]+b[o]-h).toFixed(4)+"%")}}else{var u,g=r.parent(),v=parseFloat(g.css("padding-left")),m=parseFloat(g.css("padding-right")),C=v+m,w=n/(g.width()-C)*100,y=(parseInt(r.css("margin-left"),10)||0)/g.width()*100,E=(parseInt(r.css("margin-right"),10)||0)/g.width()*100;"rtl"==T.opts.direction&&0===l||"rtl"!=T.opts.direction&&0!==l?(u=(n+t-e)/n*w,r.css("margin-right","calc(100% - ".concat(Math.round(u).toFixed(4),"% - ").concat(Math.round(y).toFixed(4),"%)"))):("rtl"==T.opts.direction&&0!==l||"rtl"!=T.opts.direction&&0===l)&&(u=(n-t+e)/n*w,r.css("margin-left","calc(100% - ".concat(Math.round(u).toFixed(4),"% - ").concat(Math.round(E).toFixed(4),"%)"))),r.css("width","".concat(Math.round(u).toFixed(4),"%"))}T.selection.restore(),T.undo.saveStep(),T.events.trigger("table.resized",[r.get(0)])}x.removeData("origin"),x.removeData("release-position"),x.removeData("first"),x.removeData("second"),x.removeData("table")}(),U()}}}function z(e){if((!(R(e.currentTarget).is(R(e.originalEvent.relatedTarget))||e.currentTarget.contains(e.originalEvent.relatedTarget)||e.originalEvent.relatedTarget&&e.originalEvent.relatedTarget.contains(e.currentTarget))||e.currentTarget.querySelector("input, textarea"))&&(T.events.$on(R("input, textarea"),"click",t),!0===o&&0<T.opts.tableEditButtons.length)){if(R(e.currentTarget).closest("table").is(be()))return void B(l,e.currentTarget);"TD"!==e.currentTarget.tagName&&"TH"!==e.currentTarget.tagName&&P()}}function Z(e,t,a,l){for(var r,n=t;n!=T.el&&"TD"!=n.tagName&&"TH"!=n.tagName&&("up"==l?r=n.previousElementSibling:"down"==l&&(r=n.nextElementSibling),!r);)n=n.parentNode;"TD"==n.tagName||"TH"==n.tagName?function o(e,t){for(var a=e;a&&"TABLE"!=a.tagName&&a.parentNode!=T.el;)a=a.parentNode;if(a&&"TABLE"==a.tagName){var l=V(R(a));"up"==t?j($(e,l),a,l):"down"==t&&G($(e,l),a,l)}}(n,l):r&&("up"==l&&T.selection.setAtEnd(r),"down"==l&&T.selection.setAtStart(r))}function j(e,t,a){0<R(".tribute-container").length&&"none"!=R(".tribute-container").css("display")||(0<e.row?T.selection.setAtEnd(a[e.row-1][e.col]):Z(0,t,0,"up"))}function G(e,t,a){if(!(0<R(".tribute-container").length&&"none"!=R(".tribute-container").css("display"))){var l=parseInt(a[e.row][e.col].getAttribute("rowspan"),10)||1;e.row<a.length-l?T.selection.setAtStart(a[e.row+l][e.col]):Z(0,t,0,"down")}}function X(e){var t=e.which,a=T.selection.blocks();if(a.length&&("P"!==(a=a[0]).tagName&&"DIV"!==a.tagName||(a=a.parentNode),"TD"==a.tagName||"TH"==a.tagName)){for(var l=a;l&&"TABLE"!=l.tagName&&l.parentNode!=T.el;)l=l.parentNode;if(l&&"TABLE"==l.tagName&&(ke.KEYCODE.ARROW_LEFT==t||ke.KEYCODE.ARROW_UP==t||ke.KEYCODE.ARROW_RIGHT==t||ke.KEYCODE.ARROW_DOWN==t)&&(0<pe().length&&K(),T.browser.webkit&&(ke.KEYCODE.ARROW_UP==t||ke.KEYCODE.ARROW_DOWN==t))){if(!function p(e,t,a){if(!e)return!1;var l="TD"===e.tagName||"TH"===e.tagName?e:R(e).parentsUntil(T.el,"td, th").get(0);if(!l)return!1;if(l.textContent.trim().length<=0&&1===l.children.length&&"BR"===l.children[0].tagName)return!0;if(("TD"===l.tagName||"TH"===l.tagName)&&e&&e.nodeType!==Node.TEXT_NODE)if(e.children&&0<e.children.length){var r=t>e.children.length?e.children.length-1:t-1,n=e.children[r]||e.firstChild;n&&"string"==typeof n.textContent&&(t=(e=n).textContent.trim().length-1)}else e.firstChild&&"string"==typeof e.firstChild.textContent&&(e=e.firstChild,t=e.textContent.trim().length-1);var o=document.createRange();o.selectNodeContents(l);var i,s=o.getBoundingClientRect();if(e.textContent.trim().length<=0&&e.getBoundingClientRect)i=e.getBoundingClientRect();else{var c=e;e.nodeType!==Node.TEXT_NODE&&(c=function f(e){var t=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,null,!1),a=null;for(;t.nextNode();)a=t.currentNode;return a}(e),t=c&&"up"===a?c.textContent.length:0);var d=document.createRange();d.setStart(c||e,t),d.collapse(!0),i=d.getBoundingClientRect()}{if("up"===a){if("BR"===e.tagName){if(l.firstChild.isSameNode(e))return!0;if(e.previousSibling&&(T.node.isBlock(e.previousSibling)||T.node.isVoid(e.previousSibling)))return!1}return Math.abs(i.top-s.top)<=6}if("down"===a){if("BR"===e.tagName){if(l.lastChild.isSameNode(e))return!0;if(e.nextSibling&&(T.node.isBlock(e.nextSibling)||T.node.isVoid(e.nextSibling)))return l.lastChild.isSameNode(e.nextSibling)||!1}return Math.abs(s.bottom-i.bottom)<=6}}return!1}(T.selection.ranges(0).startContainer,T.selection.ranges(0).startOffset,ke.KEYCODE.ARROW_UP==t?"up":"down"))return;e.preventDefault(),e.stopPropagation();var r=V(R(l)),n=$(a,r);return ke.KEYCODE.ARROW_UP==t?j(n,l,r):ke.KEYCODE.ARROW_DOWN==t&&G(n,l,r),T.selection.restore(),!1}}}function U(){x&&(x.find("div").css("opacity",0),x.css("top",0),x.css("left",0),x.css("height",0),x.find("div").css("height",0),x.hide())}function q(){c&&c.removeClass("fr-visible").css("left","-9999px")}function a(e,t){var a,l=R(t);l&&(a=l.closest("table"));var r=a.parent();if(t&&"TD"!=t.tagName&&"TH"!=t.tagName&&(0<l.closest("td").length?t=l.closest("td"):0<l.closest("th").length&&(t=l.closest("th"))),!t||"TD"!=t.tagName&&"TH"!=t.tagName)x&&l.get(0)!=x.get(0)&&l.parent().get(0)!=x.get(0)&&T.core.sameInstance(x)&&U();else{if(l=R(t),0===T.$el.find(l).length)return!1;var n=l.offset().left-1,o=n+l.outerWidth();if(Math.abs(e.pageX-n)<=T.opts.tableResizerOffset||Math.abs(o-e.pageX)<=T.opts.tableResizerOffset){var i,s,c,d,f,p=V(a),b=$(t,p),h=N(b.row,b.col,p),u=a.offset().top,g=a.outerHeight()-1;"rtl"!=T.opts.direction?e.pageX-n<=T.opts.tableResizerOffset?(c=n,0<b.col?(d=n-oe(b.col-1,p)+T.opts.tableResizingLimit,f=n+oe(b.col,p)-T.opts.tableResizingLimit,i=b.col-1,s=b.col):(i=null,s=0,d=a.offset().left-1-parseInt(a.css("margin-left"),10),f=a.offset().left-1+a.width()-p[0].length*T.opts.tableResizingLimit)):o-e.pageX<=T.opts.tableResizerOffset&&(c=o,h.col<p[h.row].length&&p[h.row][h.col+1]?(d=o-oe(h.col,p)+T.opts.tableResizingLimit,f=o+oe(h.col+1,p)-T.opts.tableResizingLimit,i=h.col,s=h.col+1):(i=h.col,s=null,d=a.offset().left-1+p[0].length*T.opts.tableResizingLimit,f=r.offset().left-1+r.width()+parseFloat(r.css("padding-left")))):o-e.pageX<=T.opts.tableResizerOffset?(c=o,0<b.col?(d=o-oe(b.col,p)+T.opts.tableResizingLimit,f=o+oe(b.col-1,p)-T.opts.tableResizingLimit,i=b.col,s=b.col-1):(i=null,s=0,d=a.offset().left+p[0].length*T.opts.tableResizingLimit,f=r.offset().left-1+r.width()+parseFloat(r.css("padding-left")))):e.pageX-n<=T.opts.tableResizerOffset&&(c=n,h.col<p[h.row].length&&p[h.row][h.col+1]?(d=n-oe(h.col+1,p)+T.opts.tableResizingLimit,f=n+oe(h.col,p)-T.opts.tableResizingLimit,i=h.col+1,s=h.col):(i=h.col,s=null,d=r.offset().left+parseFloat(r.css("padding-left")),f=a.offset().left-1+a.width()-p[0].length*T.opts.tableResizingLimit)),x||function y(){T.shared.$table_resizer||(T.shared.$table_resizer=R(document.createElement("div")).attr("class","fr-table-resizer").html("<div></div>")),x=T.shared.$table_resizer,T.events.$on(x,"mousedown",function(e){return!T.core.sameInstance(x)||(0<pe().length&&K(),1==e.which?(T.selection.save(),E=!0,x.addClass("fr-moving"),P(),T.edit.off(),x.find("div").css("opacity",1),!1):void 0)}),T.events.$on(x,"mousemove",function(e){if(!T.core.sameInstance(x))return!0;E&&(T.opts.iframe&&(e.pageX-=T.$iframe.offset().left),se(e))});var t=function t(e){E&&W(e)};window.addEventListener("mouseup",t,!0),T.events.on("destroy",function(){window.removeEventListener("mouseup",t,!0)},!0),T.events.on("shared.destroy",function(){x.html("").removeData().remove(),x=null},!0),T.events.on("destroy",function(){T.$el.find(".fr-selected-cell").removeClass("fr-selected-cell"),R("body").first().append(x.hide())},!0)}(),x.data("table",a),x.data("first",i),x.data("second",s),x.data("instance",T),T.$wp.append(x);var v=c-T.win.pageXOffset-T.opts.tableResizerOffset-T.$wp.offset().left,m=u-T.$wp.offset().top+T.$wp.scrollTop();if(T.opts.iframe){var C=T.helpers.getPX(T.$wp.find(".fr-iframe").css("padding-top")),w=T.helpers.getPX(T.$wp.find(".fr-iframe").css("padding-left"));v+=T.$iframe.offset().left+w,m+=T.$iframe.offset().top+C,d+=T.$iframe.offset().left,f+=T.$iframe.offset().left}x.data("max-left",d),x.data("max-right",f),x.data("origin",c-T.win.pageXOffset),x.css("top",m),x.css("left",v),x.css("height",g),x.find("div").css("height",g),x.css("padding-left",T.opts.tableResizerOffset),x.css("padding-right",T.opts.tableResizerOffset),x.show()}else T.core.sameInstance(x)&&U()}}function J(e,t){if(T.$box.find(".fr-line-breaker").isVisible())return!1;c||de(),T.$box.append(c),c.data("instance",T);var a,l=R(t).find("tr").first(),r=e.pageX,n=0,o=0;if(T.opts.iframe){var i=T.helpers.getPX(T.$wp.find(".fr-iframe").css("padding-top")),s=T.helpers.getPX(T.$wp.find(".fr-iframe").css("padding-left"));n+=T.$iframe.offset().left-T.helpers.scrollLeft()+s,o+=T.$iframe.offset().top-T.helpers.scrollTop()+i}l.find("th, td").each(function(){var e=R(this);return e.offset().left<=r&&r<e.offset().left+e.outerWidth()/2?(a=parseInt(c.find("a").css("width"),10),c.css("top",o+e.offset().top-T.$box.offset().top-a-5),c.css("left",n+e.offset().left-T.$box.offset().left-a/2),c.data("selected-cell",e),c.data("position","before"),c.addClass("fr-visible"),!1):e.offset().left+e.outerWidth()/2<=r&&r<e.offset().left+e.outerWidth()?(a=parseInt(c.find("a").css("width"),10),c.css("top",o+e.offset().top-T.$box.offset().top-a-5),c.css("left",n+e.offset().left-T.$box.offset().left+e.outerWidth()-a/2),c.data("selected-cell",e),c.data("position","after"),c.addClass("fr-visible"),!1):void 0})}function Q(e,t){if(T.$box.find(".fr-line-breaker").isVisible())return!1;c||de(),T.$box.append(c),c.data("instance",T);var a,l=R(t),r=e.pageY,n=0,o=0;if(T.opts.iframe){var i=T.helpers.getPX(T.$wp.find(".fr-iframe").css("padding-top")),s=T.helpers.getPX(T.$wp.find(".fr-iframe").css("padding-left"));n+=T.$iframe.offset().left-T.helpers.scrollLeft()+s,o+=T.$iframe.offset().top-T.helpers.scrollTop()+i}l.find("tr").each(function(){var e=R(this);a=parseInt(c.find("a").css("width"),10);var t=n+e.offset().left-T.$box.offset().left;return t=0!==T.$box.offset().left?t-a-5:t+a-5,e.offset().top<=r&&r<e.offset().top+e.outerHeight()/2?(c.css("top",o+e.offset().top-T.$box.offset().top-a/2),c.css("left",t),c.data("selected-cell",e.find("td").first()),c.data("position","above"),c.addClass("fr-visible"),!1):e.offset().top+e.outerHeight()/2<=r&&r<e.offset().top+e.outerHeight()?(c.css("top",o+e.offset().top-T.$box.offset().top+e.outerHeight()-a/2),c.css("left",t),c.data("selected-cell",e.find("td").first()),c.data("position","below"),c.addClass("fr-visible"),!1):void 0})}function ee(e,t){var a=R(e);a.removeClass(t),a.length&&a.get(0).hasAttribute("class")&&!a.attr("class").trim()&&a.removeAttr("class")}function te(){s[T.id]&&(ee(s[T.id],"fr-table-selector-active fr-table-selector-active-selected"),s[T.id].addClass("fr-table-selector-inactive"),ee(T.$el.find("table.fr-table-selection-hover"),"fr-table-selection-hover"))}function ae(){ee(T.$el.find("table.fr-table-selected"),"fr-table-selected fr-table-selection-hover"),te()}function le(e){T.$box.append(s[T.id]),s[T.id].data("instance",T);var t=e.offset().left-T.$box.offset().left+16,a=e.offset().top-T.$box.offset().top-s[T.id].outerHeight();if(T.opts.iframe){var l=T.helpers.getPX(T.$wp.find(".fr-iframe").css("padding-top")),r=T.helpers.getPX(T.$wp.find(".fr-iframe").css("padding-left"));t+=T.$iframe.offset().left-T.helpers.scrollLeft()+r,a+=T.$iframe.offset().top-T.helpers.scrollTop()+l}s[T.id].css("top",a),s[T.id].css("left",t)}function re(e){r=null;var t=T.doc.elementFromPoint(e.pageX-T.win.pageXOffset,e.pageY-T.win.pageYOffset);T.opts.tableResizer&&(!T.popups.areVisible()||T.popups.areVisible()&&T.popups.isVisible("table.edit"))&&a(e,t),!T.opts.tableInsertHelper||T.popups.areVisible()||T.$tb.hasClass("fr-inline")&&T.$tb.isVisible()||function n(e,t){if(0===pe().length){var a,l,r;if(t&&("HTML"==t.tagName||"BODY"==t.tagName||T.node.isElement(t)))for(a=1;a<=T.opts.tableInsertHelperOffset;a++){if(l=T.doc.elementFromPoint(e.pageX-T.win.pageXOffset,e.pageY-T.win.pageYOffset+a),R(l).hasClass("fr-tooltip"))return!0;if(l&&("TH"==l.tagName||"TD"==l.tagName||"TABLE"==l.tagName)&&(R(l).parents(".fr-wrapper").length||T.opts.iframe)&&"false"!=R(l).closest("table").attr("contenteditable"))return J(e,R(l).closest("table")),!0;if(r=T.doc.elementFromPoint(e.pageX-T.win.pageXOffset+a,e.pageY-T.win.pageYOffset),R(r).hasClass("fr-tooltip"))return!0;if(r&&("TH"==r.tagName||"TD"==r.tagName||"TABLE"==r.tagName)&&(R(r).parents(".fr-wrapper").length||T.opts.iframe)&&"false"!=R(r).closest("table").attr("contenteditable"))return Q(e,R(r).closest("table")),!0}T.core.sameInstance(c)&&q()}}(e,t),function o(e,t){var a=R(t),l=T.$el.find("table.fr-table-selection-hover"),r=T.$el.find("table.fr-table-selected");if(T.node.isElement(t)||T.node.isElement(a.parents(".fr-view").first().get(0))||T.core.sameInstance(a)||T.core.sameInstance(a.parents("div.fr-table-selector"))){if(!a.parents(".fr-table-selector").length){var n=a.closest("table").filter(function(){return!(!T.$el||!T.$el.length)&&T.$el.get(0).contains(this)});n.length?(le(n),s[T.id].addClass("fr-table-selector-active"),ee(s[T.id],"fr-table-selector-inactive"),ee(l,"fr-table-selection-hover"),r.length&&s[T.id].toggleClass("fr-table-selector-active-selected",r.get(0)===n.get(0)),n.addClass("fr-table-selection-hover")):l.length&&Math.abs(l.offset().top-e.pageY)<5||s[T.id].hasClass("fr-table-selector-inactive")||te()}}else r.length||te()}(e,t)}function ne(){if(E){var e=x.data("table").offset().top-T.win.pageYOffset;if(T.opts.iframe){var t=T.helpers.getPX(T.$wp.find(".fr-iframe").css("padding-top"));e+=T.$iframe.offset().top-T.helpers.scrollTop()+t}x.css("top",e)}}function oe(e,t){var a,l=R(t[0][e]).outerWidth();for(a=1;a<t.length;a++)l=Math.min(l,R(t[a][e]).outerWidth());return l}function ie(e,t,a){var l,r=0;for(l=e;l<=t;l++)r+=oe(l,a);return r}function se(e){if(1<pe().length&&i&&P(),!1===i&&!1===o&&!1===E)r&&clearTimeout(r),T.edit.isDisabled()&&!T.popups.isVisible("table.edit")||(r=setTimeout(re,30,e));else if(E){var t=e.pageX-T.win.pageXOffset;T.opts.iframe&&(t+=T.$iframe.offset().left);var a=x.data("max-left"),l=x.data("max-right");a<=t&&t<=l?x.css("left",t-T.opts.tableResizerOffset-T.$wp.offset().left):t<a&&parseFloat(x.css("left"),10)>a-T.opts.tableResizerOffset?x.css("left",a-T.opts.tableResizerOffset-T.$wp.offset().left):l<t&&parseFloat(x.css("left"),10)<l-T.opts.tableResizerOffset&&x.css("left",l-T.opts.tableResizerOffset-T.$wp.offset().left)}else i&&q()}function ce(e){T.node.isEmpty(e.get(0))?T.opts.keepTextFormatOnTable&&T.browser.mozilla?e.append(ke.MARKERS):e.prepend(ke.MARKERS):e.prepend(ke.START_MARKER).append(ke.END_MARKER)}function de(){T.shared.$ti_helper||(T.shared.$ti_helper=R(document.createElement("div")).attr("class","fr-insert-helper").html('<a class="fr-floating-btn" role="button" tabIndex="-1" title="'.concat(T.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>')),T.events.bindClick(T.shared.$ti_helper,"a",function(){var e=c.data("selected-cell"),t=c.data("position"),a=c.data("instance")||T;"before"==t?(T.undo.saveStep(),e.addClass("fr-selected-cell"),a.table.insertColumn(t),e.removeClass("fr-selected-cell"),T.undo.saveStep()):"after"==t?(T.undo.saveStep(),e.addClass("fr-selected-cell"),a.table.insertColumn(t),e.removeClass("fr-selected-cell"),T.undo.saveStep()):"above"==t?(T.undo.saveStep(),e.addClass("fr-selected-cell"),a.table.insertRow(t),e.removeClass("fr-selected-cell"),T.undo.saveStep()):"below"==t&&(T.undo.saveStep(),e.addClass("fr-selected-cell"),a.table.insertRow(t),e.removeClass("fr-selected-cell"),T.undo.saveStep()),q()}),T.events.on("shared.destroy",function(){T.shared.$ti_helper.html("").removeData().remove(),T.shared.$ti_helper=null},!0),T.events.$on(T.shared.$ti_helper,"mousemove",function(e){e.stopPropagation()},!0),T.events.$on(R(T.o_win),"scroll",function(){q()},!0),T.events.$on(T.$wp,"scroll",function(){q()},!0)),c=T.shared.$ti_helper,T.events.on("destroy",function(){c=null}),T.tooltip.bind(T.$box,".fr-insert-helper > a.fr-floating-btn")}function fe(){l=null,clearTimeout(r)}function pe(){return T.el.querySelectorAll(".fr-selected-cell")}function be(){var e=pe(),t=T.$el.find("table.fr-table-selected");if(e.length){for(var a=e[0];a&&"TABLE"!=a.tagName&&a.parentNode!=T.el;)a=a.parentNode;return a&&"TABLE"==a.tagName?R(a):R([])}return t.length?R(t.get(0)):R([])}function he(e){var t=T.popups.get("table.tableProperties"),a=t.find(".fr-table-alignment-container"),l=a.find(".fr-table-".concat(e,"-align")).get(0);a.find(".fr-table-left-align").get(0).innerHTML=T.icon.create("leftTableAlign"),a.find(".fr-table-center-align").get(0).innerHTML=T.icon.create("centerTableAlign"),a.find(".fr-table-right-align").get(0).innerHTML=T.icon.create("rightTableAlign"),l.innerHTML=T.icon.create("".concat(e,"TableAlignActive")),l.focus(),t.data("tableAlign",e)}function ue(){var e={buttons:"",table_properties_form:'\n <div class="fr-table-properties-form">\n <div class="fr-table-properties-section">\n <label>Background</label>\n <div class="fr-table-bg-container">\n <div class="fr-input-line">\n <input type="text" title="'.concat(T.language.translate("Custom background color input"),'" id="fr-table-bg" class="fr-input" placeholder="Color" tabIndex="1" aria-required="true">\n </div>\n <button title="').concat(T.language.translate("Background color picker"),'" role="button" type="button" class="fr-command fr-enable-accessibility fr-btn-table-bg-color" data-param1="table" tabIndex="2" data-cmd="openColorPicker">\n <div class="fr-color-preview">\n <div class="fr-color-preview-indicator"></div>\n </div>\n </button>\n </div>\n <label>Border</label>\n <div class="fr-table-border-container">\n <div class="fr-input-line">\n <label class="fr-field-lable">Style</label>\n <div class= "fr-buttons fr-border-style"> ').concat(T.button.build("tableBorderStyle",ke.COMMANDS.tableBorderStyle,!0),'</div>\n </div>\n <div class="fr-input-line">\n <input title="').concat(T.language.translate("Custom border color input"),'" id="fr-table-border-color" class="fr-input" type="text" placeholder="Color" tabIndex="3" aria-required="true">\n </div>\n <button title="').concat(T.language.translate("Border color picker"),'" role="button" type="button" class="fr-command fr-btn-table-border-bg-color fr-enable-accessibility" tabIndex="4" data-param1="border" data-cmd="openColorPicker">\n <div class="fr-border-color-preview">\n <div class="fr-border-color-preview-indicator"></div>\n </div>\n </button>\n <div class="fr-input-line">\n <input title="').concat(T.language.translate("Border width"),'" id="fr-table-border-width" type="text" class="fr-input" placeholder="Width" tabIndex="5" aria-required="true">\n </div>\n </div>\n <div class="fr-table-dimentions-section">\n <div>\n <label>Dimentions</label>\n <div class="fr-table-dimentions-container">\n <div class="fr-input-line">\n <input title="').concat(T.language.translate("Table width"),'" type="text" id="fr-table-width" placeholder="Width" tabIndex="6">\n </div>\n <span class="fr-dimension-separator">\xd7</span>\n <div class="fr-input-line">\n <input title="').concat(T.language.translate("Table height"),'" type="text" id="fr-table-height" placeholder="Height" tabIndex="7">\n </div>\n </div>\n </div>\n <div class="fr-table-alignment-section">\n <label>Alignment</label>\n <div class="fr-table-alignment-container">\n <button title="').concat(T.language.translate("Left align"),'" class="fr-enable-accessibility fr-command fr-table-left-align" data-param1="left" data-cmd="tableAlign" tabIndex="8">').concat(T.icon.create("leftTableAlign"),'</button>\n <button title="').concat(T.language.translate("Center align"),'" class="fr-enable-accessibility fr-command fr-table-center-align" data-param1="center" data-cmd="tableAlign" tabIndex="9">').concat(T.icon.create("centerTableAlign"),'</button>\n <button title="').concat(T.language.translate("Right align"),'" class="fr-enable-accessibility fr-command fr-table-right-align" data-param1="right" data-cmd="tableAlign" tabIndex="10">').concat(T.icon.create("rightTableAlign"),'</button>\n </div>\n </div>\n </div>\n <label>Table style</label>\n <div class="fr-table-style-container">\n <div class="fr-input-line">\n <label class="fr-field-lable">Style</label>\n <div class= "fr-buttons fr-table-style"> ').concat(T.button.build("tableStyle",ke.COMMANDS.tableStyle,!0),'</div>\n </div>\n </div>\n </div>\n <div class="fr-table-properties-buttons">\n <button title="').concat(T.language.translate("Cancel"),'" role="button" type="button" class="fr-enable-accessibility fr-command fr-cancel-button" tabIndex="11" data-cmd="onCancel">Cancel</button>\n <button title="').concat(T.language.translate("Save"),'" role="button" type="button" class="fr-enable-accessibility fr-command fr-save-button" tabIndex="12" data-cmd="applyTableProperties">Save</button>\n </div>\n </div>\n ')},n=T.popups.create("table.tableProperties",e),t=function t(e,l,r){n.find(e).on("keydown",function(t){var e=R(t.target),a=t.which;a!==ke.KEYCODE.ENTER&&a!==ke.KEYCODE.ARROW_DOWN&&a!==ke.KEYCODE.SPACE||e.hasClass("fr-active")||!e.is("button")||(l&&r&&T.button.click(e),t.preventDefault(),t.stopPropagation()),setTimeout(function(){if(a===ke.KEYCODE.TAB&&l&&r){var e=t.shiftKey?n.find(l):n.find(r);e&&e.length&&e.focus(),t.preventDefault(),t.stopPropagation()}},10)})};return t(".fr-border-style > button",".fr-btn-table-bg-color","#fr-table-border-color"),t(".fr-border-style > .fr-dropdown-menu li",".fr-btn-table-bg-color","#fr-table-border-color"),t(".fr-table-style > button",".fr-table-right-align",".fr-cancel-button"),t(".fr-table-style > .fr-dropdown-menu li",".fr-table-right-align",".fr-cancel-button"),t(".fr-save-button",".fr-cancel-button","#fr-table-bg"),n}function t(){o=!1}return{_init:function ge(){if(!T.$wp)return!1;if(T.helpers.isMobile()&&(T.events.$on(T.$el,"mousedown",Y),T.events.$on(T.$win,"mouseup",W)),!T.helpers.isMobile()){E=o=i=!1,T.events.$on(T.$el,"mousedown",Y),T.popups.onShow("image.edit",function(){I(),o=i=!1}),T.popups.onShow("link.edit",function(){I(),o=i=!1}),T.events.$on(T.$el,"mouseover","th, td",z),T.events.$on(T.$win,"mouseup",W),T.opts.iframe&&T.events.$on(R(T.o_win),"mouseup",W),T.events.$on(T.$win,"mousemove",se),T.events.$on(R(T.o_win),"scroll",ne),T.events.on("contentChanged",function(){te(),0<pe().length&&!T.popups.isVisible("table.tableProperties")&&(C(),T.$el.find("img").on("load.selected-cells",function(){R(this).off("load.selected-cells"),0<pe().length&&C()}))}),T.events.$on(R(T.o_win),"resize",function(){I()}),T.events.on("toolbar.esc",function(){if(0<pe().length)return T.events.disableBlur(),T.events.focus(),!1},!0),T.events.$on(R(T.o_win),"keydown",function(){i&&o&&(o=i=!1,T.$el.removeClass("fr-no-selection"),T.edit.on(),T.selection.setAtEnd(T.$el.find(".fr-selected-cell").last().get(0)),T.selection.restore(),I())}),T.events.$on(T.$el,"keydown",function(e){e.shiftKey?!1===function o(e){var t=pe();if(null!=t&&0<t.length){var a,l=V(),r=e.which,n=$(1==t.length?a=t[0]:(a=T.el.querySelector(".fr-cell-fixed"),T.el.querySelector(".fr-cell-handler")),l);if(ke.KEYCODE.ARROW_RIGHT==r){if(n.col<l[0].length-1)return B(a,l[n.row][n.col+1]),!1}else if(ke.KEYCODE.ARROW_DOWN==r){if(n.row<l.length-1)return B(a,l[n.row+1][n.col]),!1}else if(ke.KEYCODE.ARROW_LEFT==r){if(0<n.col)return B(a,l[n.row][n.col-1]),!1}else if(ke.KEYCODE.ARROW_UP==r&&0<n.row)return B(a,l[n.row-1][n.col]),!1}}(e)&&setTimeout(function(){C()},0):X(e)}),T.events.on("keydown",function(e){if(!1===function v(e){if(e.which==ke.KEYCODE.TAB){var t;if(0<pe().length)t=T.$el.find(".fr-selected-cell").last();else{var a=T.selection.element();"TD"==a.tagName||"TH"==a.tagName?t=R(a):a!=T.el&&(0<R(a).parentsUntil(T.$el,"td").length?t=R(a).parents("td").first():0<R(a).parentsUntil(T.$el,"th").length&&(t=R(a).parents("th").first()))}if(t)return e.preventDefault(),!!(0===T.selection.get().focusOffset&&0<R(T.selection.element()).parentsUntil(T.$el,"ol, ul").length&&(0<R(T.selection.element()).closest("li").prev().length||R(T.selection.element()).is("li")&&0<R(T.selection.element()).prev().length))||(K(),e.shiftKey?0<t.prev().length?ce(t.prev()):0<t.closest("tr").length&&0<t.closest("tr").prev().length?ce(t.closest("tr").prev().find("td").last()):0<t.closest("tbody").length&&0<t.closest("table").find("thead tr").length&&ce(t.closest("table").find("thead tr th").last()):0<t.next().length?ce(t.next()):0<t.closest("tr").length&&0<t.closest("tr").next().length?ce(t.closest("tr").next().find("td").first()):0<t.closest("thead").length&&0<t.closest("table").find("tbody tr").length?ce(t.closest("table").find("tbody tr td").first()):(t.addClass("fr-selected-cell"),O("below"),I(),ce(t.closest("tr").next().find("td").first())),T.selection.restore(),!1)}}(e))return!1;var t=function t(){I(),ae(),e.preventDefault(),e.stopPropagation()},a=T.$el.find("table.fr-table-selected"),l=e.which;if(a.length&&!T.keys.isArrow(e.which)&&l!==ke.KEYCODE.TAB&&l!==ke.KEYCODE.ALT&&l!==ke.KEYCODE.ESC){if(e.ctrlKey||e.metaKey||l===ke.KEYCODE.SHIFT)return!0;y(),T.undo.saveStep(),t();var r=T.html.defaultTag();if(l===ke.KEYCODE.ENTER||T.keys.isCharacter(l)&&!e.ctrlKey&&!e.metaKey){var n,o=l===ke.KEYCODE.ENTER;n=r?o?"<".concat(r,' id="cursor-marker"></').concat(r,">"):"<".concat(r,' id="cursor-marker"> ').concat(l===ke.KEYCODE.SPACE?" ":e.key,"</").concat(r,">"):o?'<br id="cursor-marker">':"".concat(l===ke.KEYCODE.SPACE?" ":e.key,' <br id="cursor-marker">'),T.ht