UNPKG

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