UNPKG

trumbowyg

Version:
11 lines 24.1 kB
/* =========================================================== * trumbowyg.table.js v3.0 * Table plugin for Trumbowyg * http://alex-d.github.com/Trumbowyg * =========================================================== * Author : Alexandre Demode (Alex-D) * Twitter : @AlexandreDemode * Website : alex-d.fr * Original Author : Sven Dunemann [dunemann@forelabs.eu] */ !function(e){"use strict";function t(e,t){var l,a;return function(){var o=this,n=(new Date).getTime(),r=arguments;if(l&&n<l+t)return clearTimeout(a),void(a=setTimeout((function(){l=n,e.apply(o,r)}),t));l=n,e.apply(o,r)}}var l={rows:8,columns:8,allowHorizontalResize:!0,colorList:["ffffff","000000","eeece1","1f497d","4f81bd","c0504d","9bbb59","8064a2","4bacc6","f79646","ffff00","f2f2f2","7f7f7f","ddd9c3","c6d9f0","dbe5f1","f2dcdb","ebf1dd","e5e0ec","dbeef3","fdeada","fff2ca","d8d8d8","595959","c4bd97","8db3e2","b8cce4","e5b9b7","d7e3bc","ccc1d9","b7dde8","fbd5b5","ffe694","bfbfbf","3f3f3f","938953","548dd4","95b3d7","d99694","c3d69b","b2a2c7","b7dde8","fac08f","f2c314","a5a5a5","262626","494429","17365d","366092","953734","76923c","5f497a","92cddc","e36c09","c09100","7f7f7f","0c0c0c","1d1b10","0f243e","244061","632423","4f6128","3f3151","31859b","974806","7f6000"],backgroundColorList:null,allowCustomBackgroundColor:!0,displayBackgroundColorsAsList:!1,borderColorList:null,allowCustomBorderColor:!0,displayBorderColorsAsList:!1,dropdown:[{title:"tableRows",buttons:["tableAddHeaderRow","tableAddRowAbove","tableAddRow","tableDeleteRow"]},{title:"tableColumns",buttons:["tableAddColumnLeft","tableAddColumn","tableDeleteColumn"]},{title:"tableVerticalAlign",buttons:["tableVerticalAlignTop","tableVerticalAlignMiddle","tableVerticalAlignBottom"]},{title:"tableOthers",buttons:["tableMergeCells","tableUnmergeCells","tableDestroy"]}]};function a(e){return e[0].toUpperCase()+e.slice(1)}function o(e){return("0"+parseInt(e).toString(16)).slice(-2)}function n(e){return-1===e.search("rgb")?e.replace("#",""):"rgba(0, 0, 0, 0)"===e||null==(e=e.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d?(.\d+)))?\)$/))?"transparent":o(e[1])+o(e[2])+o(e[3])}e.extend(!0,e.trumbowyg,{langs:{en:{table:"Insert table",tableRows:"Rows",tableColumns:"Columns",tableVerticalAlign:"Vertical align",tableOthers:"Others",tableAddHeaderRow:"Insert head row",tableAddRowAbove:"Insert row above",tableAddRow:"Insert row below",tableAddColumnLeft:"Insert column to the left",tableAddColumn:"Insert column to the right",tableDeleteRow:"Delete row",tableDeleteColumn:"Delete column",tableDestroy:"Delete table",tableMergeCells:"Merge cells",tableUnmergeCells:"Unmerge cells",tableVerticalAlignTop:"Align text to top",tableVerticalAlignMiddle:"Center text vertically",tableVerticalAlignBottom:"Align text to bottom",tableCellBackgroundColor:"Cell background color",tableBorderColor:"Table border color"},az:{table:"Cədvəl yerləşdir",tableAddRow:"Sətir əlavə et",tableAddRowAbove:"Yuxarı sətir əlavə et",tableAddColumnLeft:"Sola sütun əlavə et",tableAddColumn:"Sağa sütun əlavə et",tableDeleteRow:"Sətri sil",tableDeleteColumn:"Sütunu sil",tableDestroy:"Cədvəli sil"},ca:{table:"Inserir taula",tableAddRow:"Afegir fila",tableAddRowAbove:"Afegir fila a dalt",tableAddColumnLeft:"Afegir columna a l'esquerra",tableAddColumn:"Afegir columna a la dreta",tableDeleteRow:"Esborrar fila",tableDeleteColumn:"Esborrar columna",tableDestroy:"Esborrar taula",error:"Error"},cs:{table:"Vytvořit příkaz Table",tableAddRow:"Přidat řádek",tableAddRowAbove:"Přidat řádek",tableAddColumnLeft:"Přidat sloupec",tableAddColumn:"Přidat sloupec"},da:{table:"Indsæt tabel",tableAddRow:"Tilføj række",tableAddRowAbove:"Tilføj række",tableAddColumnLeft:"Tilføj kolonne",tableAddColumn:"Tilføj kolonne",tableDeleteRow:"Slet række",tableDeleteColumn:"Slet kolonne",tableDestroy:"Slet tabel"},de:{table:"Tabelle einfügen",tableRows:"Zeilen",tableColumns:"Spalten",tableVerticalAlign:"Vertikal ausrichten",tableOthers:"Andere",tableAddHeaderRow:"Kopfzeile einfügen",tableAddRowAbove:"Zeile oberhalb einfügen",tableAddRow:"Zeile unterhalb einfügen",tableAddColumnLeft:"Spalte links einfügen",tableAddColumn:"Spalte rechts einfügen",tableDeleteRow:"Zeile löschen",tableDeleteColumn:"Spalte löschen",tableDestroy:"Tabelle löschen",tableMergeCells:"Zellen zusammenführen",tableUnmergeCells:"Zellen trennen",tableVerticalAlignTop:"Text nach oben ausrichten",tableVerticalAlignMiddle:"Text vertikal zentrieren",tableVerticalAlignBottom:"Text nach unten ausrichten",tableCellBackgroundColor:"Hintergrundfarbe der Zelle",tableBorderColor:"Farbe des Tabellenrahmens"},et:{table:"Sisesta tabel",tableAddRow:"Lisa rida",tableAddRowAbove:"Lisa rida üles",tableAddColumnLeft:"Lisa tulp vasakule",tableAddColumn:"Lisa tulp paremale",tableDeleteRow:"Kustuta rida",tableDeleteColumn:"Kustuta tulp",tableDestroy:"Kustuta tabel"},fr:{table:"Insérer un tableau",tableRows:"Lignes",tableColumns:"Colonnes",tableVerticalAlign:"Alignement vertical",tableOthers:"Autres",tableAddHeaderRow:"Insérer une line d'en-tête",tableAddRowAbove:"Insérer une ligne au dessus",tableAddRow:"Insérer une ligne en dessous",tableAddColumnLeft:"Insérer une colonne à gauche",tableAddColumn:"Insérer une colonne à droite",tableDeleteRow:"Supprimer la ligne",tableDeleteColumn:"Supprimer la colonne",tableDestroy:"Supprimer le tableau",tableMergeCells:"Fusionner les cellules",tableUnmergeCells:"Dissocier les cellules",tableVerticalAlignTop:"Aligner en haut",tableVerticalAlignMiddle:"Aligner au milieu",tableVerticalAlignBottom:"Aligner en bas",tableCellBackgroundColor:"Couleur de fond des cellules",tableBorderColor:"Couleur de la bordure du tableau"},hu:{table:"Táblázat beszúrás",tableAddRow:"Sor hozzáadás",tableAddRowAbove:"Sor beszúrás fönt",tableAddColumnLeft:"Sor beszúrás balra",tableAddColumn:"Sor beszúrás jobbra",tableDeleteRow:"Sor törlés",tableDeleteColumn:"Oszlop törlés",tableDestroy:"Táblázat törlés"},id:{table:"Sisipkan tabel",tableAddRow:"Sisipkan baris",tableAddRowAbove:"Sisipkan baris",tableAddColumnLeft:"Sisipkan kolom",tableAddColumn:"Sisipkan kolom",tableDeleteRow:"Hapus baris",tableDeleteColumn:"Hapus kolom",tableDestroy:"Hapus tabel"},ja:{table:"表の挿入",tableAddRow:"行の追加",tableAddRowAbove:"行の追加",tableAddColumnLeft:"列の追加",tableAddColumn:"列の追加"},ko:{table:"표 넣기",tableAddRow:"줄 추가",tableAddRowAbove:"줄 추가",tableAddColumnLeft:"칸 추가",tableAddColumn:"칸 추가",tableDeleteRow:"줄 삭제",tableDeleteColumn:"칸 삭제",tableDestroy:"표 지우기"},pt_br:{table:"Inserir tabela",tableRows:"Linhas",tableColumns:"Colunas",tableVerticalAlign:"Alinhamento",tableOthers:"Outros",tableAddHeaderRow:"Inserir cabeçalho",tableAddRowAbove:"Inserir linha",tableAddRow:"Inserir linha",tableAddColumnLeft:"Inserir coluna",tableAddColumn:"Inserir coluna",tableDeleteRow:"Excluir linha",tableDeleteColumn:"Excluir coluna",tableDestroy:"Excluir tabela",tableMergeCells:"Mesclar células",tableUnmergeCells:"Dividir células",tableVerticalAlignTop:"Alinhar acima",tableVerticalAlignMiddle:"Alinhar ao centro",tableVerticalAlignBottom:"Alinhar abaixo",tableCellBackgroundColor:"Cor da célula",tableBorderColor:"Cor da borda da tabela"},ru:{table:"Вставить таблицу",tableAddRow:"Добавить строку",tableAddRowAbove:"Добавить строку",tableAddColumnLeft:"Добавить столбец",tableAddColumn:"Добавить столбец",tableDeleteRow:"Удалить строку",tableDeleteColumn:"Удалить столбец",tableDestroy:"Удалить таблицу"},sl:{table:"Dodaj tabelo",tableAddRow:"Dodaj vrstico",tableAddRowAbove:"Vrini vrstico",tableAddColumnLeft:"Vrini stolpec",tableAddColumn:"Dodaj stolpec",tableDeleteRow:"Izbriši vrstico",tableDeleteColumn:"Izbriši stolpec",tableDestroy:"Izbriši tabelo"},sk:{table:"Vytvoriť tabuľky",tableAddRow:"Pridať riadok",tableAddRowAbove:"Pridať riadok",tableAddColumnLeft:"Pridať stĺpec",tableAddColumn:"Pridať stĺpec"},tr:{table:"Tablo ekle",tableAddRow:"Satır ekle",tableAddRowAbove:"Yukarıya satır ekle",tableAddColumnLeft:"Sola sütun ekle",tableAddColumn:"Sağa sütun ekle",tableDeleteRow:"Satırı sil",tableDeleteColumn:"Sütunu sil",tableDestroy:"Tabloyu sil"},zh_tw:{table:"插入表格",tableAddRow:"加入行",tableAddRowAbove:"加入行",tableAddColumnLeft:"加入列",tableAddColumn:"加入列",tableDeleteRow:"刪除行",tableDeleteColumn:"刪除列",tableDestroy:"刪除表格"},es:{table:"Insertar tabla",tableAddRow:"Agregar fila",tableAddRowAbove:"Agregar fila arriba",tableAddColumnLeft:"Agregar columna a la izquierda",tableAddColumn:"Agregar columna a la derecha",tableDeleteRow:"Borrar fila",tableDeleteColumn:"Borrar columna",tableDestroy:"Borrar tabla"}},plugins:{table:{init:function(o){var n;o.o.plugins.table=e.extend(!0,{},l,o.o.plugins.table||{});var r={fn:function(){o.saveRange();var t="table",l=o.o.prefix+"dropdown",a={class:l+"-"+t+" "+l+" "+o.o.prefix+"fixed-top"};a["data-"+l]=t;var r=e("<div/>",a);if(0===o.$box.find("."+l+"-"+t).length?o.$box.append(r.hide()):r=o.$box.find("."+l+"-"+t),r.html(""),o.$box.find("."+o.o.prefix+"table-button").hasClass(o.o.prefix+"active-button")){var i=e(o.doc.getSelection().anchorNode).closest("table",o.$ed[0]),s=c(i),u=void 0!==n;e(o.o.plugins.table.dropdown).each((function(t,l){r.append(e("<div/>",{html:o.lang[l.title]?o.lang[l.title]:l.title,class:o.o.prefix+"table-dropdown-title"})).text();var a=e("<div/>",{class:o.o.prefix+"dropdown-button-group"});e(l.buttons).each((function(t,l){if("tableAddHeaderRow"===l&&0!==e("thead",i).length)return;if("tableMergeCells"!==l||u){if("tableUnmergeCells"===l){var n=!1;if(z((function(e){var t=e.is("[colspan]")||e.is("[rowspan]");n=n||t}),s),!n)return}a.append(o.buildSubBtn(l))}})),r.append(a)}))}else{var f=e("<table/>");e("<tbody/>").appendTo(f);for(var g=0;g<o.o.plugins.table.rows;g+=1)for(var m=e("<tr/>").appendTo(f),p=0;p<o.o.plugins.table.columns;p+=1)e("<td/>").appendTo(m);f.find("td").on("mouseover",d),f.find("td").on("mousedown",b),r.append(f),r.append(e('<div class="trumbowyg-table-size">1x1</div>'))}o.dropdown(t)},class:o.o.prefix+"open-dropdown"},d=function(t){var l=e(t.target).closest("table",o.$ed[0]),a=this.cellIndex,n=this.parentNode.rowIndex;l.find("td").removeClass("active");for(var r=0;r<=n;r+=1)for(var d=0;d<=a;d+=1)l.find("tr:nth-of-type("+(r+1)+")").find("td:nth-of-type("+(d+1)+")").addClass("active");l.next(".trumbowyg-table-size").html(a+1+"x"+(n+1))},i=function(t){var l=o.o.tagClasses[t.tagName.toLowerCase()];l&&e(t).addClass(l)},s=function(t){i(t[0]),e("*",t).each((function(e,t){i(t)}))},b=function(){o.saveRange();var t=e("<table/>"),l=e("<thead/>"),a=e("<tr/>");a.appendTo(l);for(var n=0;n<=this.cellIndex;n+=1)e("<th/>",{scope:"col"}).appendTo(a);l.appendTo(t);for(var r=e("<tbody/>"),d=this.cellIndex,i=this.parentNode.rowIndex,b=0;b<=i;b+=1)for(var c=e("<tr/>").appendTo(r),u=0;u<=d;u+=1)e("<td/>").appendTo(c);r.appendTo(t),s(t);for(var f=o.range.endContainer;f.nodeType!==Node.ELEMENT_NODE;)f=f.parentNode;f!==o.$ed[0]&&o.range.setEndAfter(f),o.range.collapse(),o.range.insertNode(t[0]),"P"===f.nodeName&&0===f.textContent.trim().length&&f.remove(),o.syncCode(),$()},c=function(t){for(var l=e("tr",t),a=[],o=0;o<l.length;o+=1)a.push([]);return l.each((function(t,l){var o=0;e("td, th",e(l)).each((function(l,n){for(var r=e(n),d=r.attr("colspan"),i=r.attr("rowspan"),s=parseInt(d>0?d:1,10),b=parseInt(i>0?i:1,10);void 0!==a[t][o];)o+=1;a[t][o]={tag:n.tagName,element:n,colspan:s,rowspan:b};for(var c=1;c<s;c+=1)a[t][o+c]={mergedIn:[t,o]};for(var u=1;u<b;u+=1){a[t+u][o]={mergedIn:[t,o]};for(var f=1;f<s;f+=1)a[t+u][o+f]={mergedIn:[t,o]}}o+=s}))})),a},u=function(t){return function(){o.saveRange();var l=o.doc.getSelection().anchorNode,a=e(l).closest("table",o.$ed[0]);if(0!==a.length){"TR"===l.tagName&&(l=e("td, th",l)[0]);var n=e(l).closest("tr",o.$ed[0]),r=c(a);t(a,n,l,r),o.syncCode()}}},f=function(t=!1){return u((function(l,a,n,r){var d=e("tr",l),i=e("<tr/>"),b=d.index(a);if(t)b=Math.max(0,b-1),a=e(d[b]);else{var c=e(n).closest("td, th",o.$ed[0]).attr("rowspan"),u=parseInt(c||1,10);a=e(d[b+=u-1])}var f=e("tbody tr",l),g=0!==a.closest("thead").length;g&&(a=f.first());for(var m=r[b],p=r[b+1],A=r[0].length,v=0;v<A;v+=1){if(void 0!==p){var h=m[v],C=D(r,h.mergedIn),w=p[v],R=D(r,w.mergedIn),x=h.element?h:C,y=x.element;if(y===(w.element?w.element:R.element)){y.setAttribute("rowspan",x.rowspan+1);continue}}e("<td/>").appendTo(i)}0===b&&(t||g)?a.before(i):a.after(i),s(l),$()}))},g={title:o.lang.tableAddRowAbove,text:o.lang.tableAddRowAbove,ico:"row-above",fn:f(!0)},m={title:o.lang.tableAddRow,text:o.lang.tableAddRow,ico:"row-below",fn:f(!1)},p={title:o.lang.tableAddHeaderRow,text:o.lang.tableAddHeaderRow,ico:"header-row",fn:u((function(t,l,a,o){if(0!==e("thead",t).length)return!1;for(var n=o[0].length,r=e("<thead/>"),d=e("<tr/>").appendTo(r),i=0;i<n;i+=1)e("<th/>").appendTo(d);t.prepend(r),s(t),$()}))},A=function(t=!1){return u((function(l,a,n,r){var d=r[e("tr",l).index(a)],i=e(n).closest("td, th"),b=T(i[0],d);if(t)b=Math.max(0,b-1);else{var c=i.attr("colspan");b+=parseInt(c||1,10)-1}for(var u=r.length,f=t&&0===b,g=0;g<u;g+=1){var m,p=r[g],A=f?void 0:p[b+1];if(void 0!==A){var v=p[b],h=D(r,v.mergedIn),C=D(r,A.mergedIn),w=v.element?v:h,R=w.element;if(R===(A.element?A.element:C.element)){R.setAttribute("colspan",w.colspan+1);continue}}var x=0;do{var y=b-x;if(y<0)break;m=p[y],x+=1}while(void 0!==m.mergedIn);var B=m.element,k=o.doc.createElement(B.tagName);0===b&&t?B.before(k):B.after(k)}s(l),$()}))},v={title:o.lang.tableAddColumnLeft,text:o.lang.tableAddColumnLeft,ico:"col-left",fn:A(!0)},h={title:o.lang.tableAddColumn,text:o.lang.tableAddColumn,ico:"col-right",fn:A(!1)},C={title:o.lang.tableDestroy,text:o.lang.tableDestroy,ico:"table-delete",fn:u((function(e){e.remove()}))},w={title:o.lang.tableDeleteRow,text:o.lang.tableDeleteRow,ico:"row-delete",fn:u((function(t,l,a,o){if(1!==e("tbody tr",t).length){var n=l,r=l.parent();r.is("thead")&&(n=r);for(var d=e("tr",t),i=d.index(e(a).closest("tr")),s=0;s<o[0].length;s+=1){var b=D(o,[i,s],!1);if(1!==b.rowspan){var c=D(o,[i,s]);if(c.element.setAttribute("rowspan",c.rowspan-1),void 0===b.mergedIn){var u=T(b.element,o[i]);if(0!==u){var f=D(o,[i+1,u-1]);e(f.element).after(c.element)}else e(d[i+1]).prepend(c.element)}}}n.remove(),x(t),j()}else t.remove()}))},R={title:o.lang.tableDeleteColumn,text:o.lang.tableDeleteColumn,ico:"col-delete",fn:u((function(t,l,a,o){for(var n=e("tr",t).index(e(a).closest("tr")),r=T(e(a).closest("td, th")[0],o[n]),d=0;d<o.length;d+=1){var i=D(o,[d,r],!1);if(i.colspan>1){var s=D(o,[d,r]);s.element.setAttribute("colspan",s.colspan-1)}else i.element.remove()}x(),j()}))},D=function(e,t,l=!0){if(void 0!==t){var a=e[t[0]][t[1]];return l&&void 0!==a.mergedIn&&(a=e[a.mergedIn[0]][a.mergedIn[1]]),a}},x=function(t){var l=c(t),a=e("tr",t);e(l).each((function(t,o){o.every((function(e){return void 0!==e.mergedIn}))&&(e(l[t-1]).each((function(e,t){void 0!==t.mergedIn&&(t=D(l,t.mergedIn)),t.rowspan-=1,t.rowspan<=1?t.element.removeAttribute("rowspan"):t.element.setAttribute("rowspan",t.rowspan)})),a[t].remove())})),e('[class=""]',t).removeAttr("class"),e('[style=""]',t).removeAttr("style")},y={title:o.lang.tableMergeCells,text:o.lang.tableMergeCells,ico:"table-merge",fn:u((function(t,l,a,o){if(function(t){if(0===n.length)return!1;var l=n[0],a=D(t,l).tag;if(!n.every((function(e){return D(t,e).tag===a})))return!1;var o=[],r=[];if(e(n).each((function(e,l){for(var a=l[0],n=l[1],d=t[a][n],i=a+d.rowspan;a<i;a+=1)void 0===o[a]&&(o[a]=t[0].length),void 0===r[a]&&(r[a]=0),o[a]=Math.min(o[a],n),r[a]=Math.max(r[a],n+d.colspan)})),0===o.length||0===r.length)return!1;var d=o.every((function(e){return e===o[o.length-1]})),i=r.every((function(e){return e===r[r.length-1]}));return d&&i}(o)){var r=function(){var t=999999,l=t,a=t;if(e(n).each((function(e,t){l=Math.min(t[0],l),a=Math.min(t[1],a)})),a!==t&&l!==t)return[l,a]}();if(void 0!==r){var d=D(o,r),i=e(d.element),s=999999,b=0,c=999999,u=0;e(n).each((function(e,t){var l=t[0],a=t[1],n=o[l][a];s=Math.min(s,l),b=Math.max(b,l+n.rowspan-1),c=Math.min(c,a),u=Math.max(u,a+n.colspan-1),n.element!==i[0]&&n.element.remove()}));var f=b-s+1,g=u-c+1;f>1&&i.attr("rowspan",f),g>1&&i.attr("colspan",g),x(t),$()}}}))},B={title:o.lang.tableUnmergeCells,text:o.lang.tableUnmergeCells,ico:"table-unmerge",fn:u((function(t,l,a,n){z((function(l){l.removeAttr("colspan").removeAttr("rowspan");for(var a=e("tr",t).index(l.closest("tr")),r=T(l[0],n[a]),d=n[a][r],i=0;i<d.rowspan;i+=1)for(var s=0===i?1:0,b=D(n,[a+i,r+s-1]).element;s<d.colspan;s+=1){var c=o.doc.createElement(b.tagName);e(b).after(c)}}),n),s(t),$()}))},T=function(e,t){return t.findIndex((function(t){return void 0!==t.element&&t.element===e}))},k=function(){e("table",o.$ed).off("mousedown.tbwTable"),e("table",o.$ed).on("mousedown.tbwTable",(function(e){o.doc.getSelection().removeAllRanges(),e.ctrlKey&&e.preventDefault()}))},I=o.o.prefix+"table-cell-selection-mode",L=o.o.prefix+"table-cell-selected";setTimeout((function(){k(),o.$c.on("tbwchange.tbwTable",(function(){k(),$()})),$(),e(o.doc).on("selectionchange.tbwTable",(function(){n=void 0;var t=o.doc.getSelection(),l=t.rangeCount,a=t.anchorNode,r=t.focusNode;if(l>1){var d=t.getRangeAt(0),i=t.getRangeAt(l-1);a=d.startContainer.childNodes[d.startOffset],r=i.startContainer.childNodes[i.startOffset]}var s=e(a).closest("td, th"),b=e(r).closest("td, th"),u=s.closest("table"),f=b.closest("table");if(e('[class="'+L+'"]',o.$ed).removeAttr("class"),e("."+L,o.$ed).removeClass(L),0===u.length&&0===f.length||u[0]!==f[0]||s[0]===b[0])e("."+I,o.$ed).removeClass(I);else{u.addClass(I);var g=c(u),m=e("tr",u),p=s.closest("tr"),A=m.index(p),v=b.closest("tr"),h=m.index(v),C=T(s[0],g[A]),w=T(b[0],g[h]),R=Math.min(A,h),D=Math.max(A,h),x=Math.min(C,w),y=Math.max(C,w),B=[];m.each((function(t,l){t<R||t>D||e("td, th",l).each((function(l,a){var o=T(a,g[t]);o<x||o>y||(B.push([t,o]),e(a).addClass(L))}))})),n=B}}))}));var S,M,V,z=function(t,l){if(void 0!==n)e(n).each((function(a,o){var n=D(l,o,!1);void 0===n.mergedIn&&t(e(n.element))}));else{var a=e(o.doc.getSelection().anchorNode).closest("td, th");if(0===a.length)return;t(a)}},N="trumbowyg-table-handle-for",$=t((function(){if(o.o.plugins.table.allowHorizontalResize){var t=e("."+o.o.prefix+"table-resize-layers",o.$edBox),l=t.length>0;l||(t=e("<div/>",{class:o.o.prefix+"table-resize-layers"}).appendTo(o.$edBox)),e("."+o.o.prefix+"table-resize-vertical-handle",t).each((function(t,l){e(l).off().remove()})),e("td, th",o.$ed).each((function(l,a){e("<div/>",{class:o.o.prefix+"table-resize-vertical-handle"}).prop(N,a).on("mousedown.tbwTable",(function(t){t.preventDefault(),t.stopPropagation();var l=e(t.target).prop(N);S=e(l).closest("table"),M=c(S);var a=e("tr",S),o=e(l).closest("tr"),n=a.index(o),r=M[n],d=T(l,r),i=M[n][d];void 0!==i.mergedIn&&(i=M[i.mergedIn[0]][i.mergedIn[1]]),V=d+i.colspan-1,E(S,M),U(S,M),j(),S.css({maxWidth:""})})).appendTo(t)})),j(),l||(e(o.doc).on("mousemove.tbwTable",(function(t){if(void 0!==V){t.preventDefault(),t.stopPropagation();var l=S[0].getBoundingClientRect(),a=t.pageX-l.left-(H(M,V).element.getBoundingClientRect().left-l.left),o=e("col",S)[V];e(o).css({width:a}),j()}})).on("mouseup.tbwTable",(function(e){void 0!==V&&(e.preventDefault(),e.stopPropagation(),E(S,M),P(S,M),S=void 0,M=void 0,V=void 0,o.syncCode(),j())})),e(window).on("resize.tbwTable",(function(){j()})))}}),100),E=function(t,l){var a=e("colgroup",t);0===a.length&&(a=e("<colgroup/>").prependTo(t));for(var o=l[0].length,n=e("col",a).length;n<o;n+=1)e("<col/>").appendTo(a)},H=function(e,t){var l,a=0;do{l=e[a][t],a+=1}while(void 0===l.element||1!==l.colspan);return l},O=function(t,l,a=!1){var o=e("colgroup",t),n=e("col",o),r=Math.ceil(t[0].getBoundingClientRect().width);t.css({maxWidth:r});for(var d=l[0].length,i=[],s=0;s<d;s+=1){var b=H(l,s).element.getBoundingClientRect().width;a&&(b=b/r*100+"%"),i[s]=b}for(var c=0;c<d;c+=1)e(n[c]).css({width:i[c]})},U=function(e,t){O(e,t,!1)},P=function(e,t){O(e,t,!0)},j=t((function(){var t=e("."+o.o.prefix+"table-resize-layers",o.$edBox),l=t[0].getBoundingClientRect(),a=l.top,n=l.left;e("."+o.o.prefix+"table-resize-vertical-handle",t).each((function(t,l){var o=e(l),r=o.prop(N).getBoundingClientRect();o.css({top:r.top-a,left:r.left-n+r.width,height:r.height})}))}),20),F=function(e){return u((function(t,l,a,o){z((function(t){t.css({verticalAlign:e})}),o)}))},Z={title:o.lang.tableVerticalAlignTop,text:o.lang.tableVerticalAlignTop,ico:"align-top",fn:F("top")},Q={title:o.lang.tableVerticalAlignMiddle,text:o.lang.tableVerticalAlignMiddle,ico:"align-middle",fn:F("middle")},K={title:o.lang.tableVerticalAlignBottom,text:o.lang.tableVerticalAlignBottom,ico:"align-bottom",fn:F("bottom")},Y=function(e){return e?o.o.prefix+"dropdown--color-list":""},W=function(t,l,n,r,d){var i=[],s=o.o.plugins.table;e.each(l,(function(e,l){var a=t+l,n={fn:d("#"+l),hasIcon:!1,text:o.lang["#"+l]||"#"+l,style:"background-color: #"+l+";"};o.addBtnDef(a,n),i.push(a)}));var b="remove"+a(t),c={fn:d(""),hasIcon:!1,style:"background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAG0lEQVQIW2NkQAAfEJMRmwBYhoGBYQtMBYoAADziAp0jtJTgAAAAAElFTkSuQmCC);"};if(n&&(c.style=""),o.addBtnDef(b,c),i.push(b),s.allowCustomBackgroundColor){var u={fn:function(){o.openModalInsert(o.lang.backgroundColor,{color:{label:"backgroundColor",forceCss:!0,type:"color",value:"#FFFFFF"}},(function(e){return d(e.color)(),!0}))},hasIcon:!1,text:"#",style:"text-indent: 0; line-height: 20px; padding: 0 5px;"},f="free"+a(t);o.addBtnDef(f,u),i.push(f)}return i},G={dropdown:W("tableCellBackgroundColor",o.o.plugins.table.backgroundColorList||o.o.plugins.table.colorList,o.o.plugins.table.displayBackgroundColorsAsList,o.o.plugins.table.allowCustomBackgroundColor,(function(t){return function(){var l=e(o.doc.getSelection().anchorNode).closest("table",o.$ed[0]);if(0!==l.length){var a=c(l);z((function(e){e.css({backgroundColor:t})}),a),x(l)}}})),dropdownClass:Y(o.o.plugins.table.displayBackgroundColorsAsList)},_={dropdown:W("tableBorderColor",o.o.plugins.table.borderColorList||o.o.plugins.table.colorList,o.o.plugins.table.displayBorderColorsAsList,o.o.plugins.table.allowCustomBorderColor,(function(t){return function(){var l=e(o.doc.getSelection().anchorNode).closest("table",o.$ed[0]);if(0!==l.length){var a={borderColor:t};0===parseInt(l.css("border-width"),10)&&(a.borderWidth="2px",a.borderStyle="solid"),""===t&&(a.borderWidth="",a.borderStyle=""),l.css(a)}}})),dropdownClass:Y(o.o.plugins.table.displayBorderColorsAsList)};o.addBtnDef("table",r),o.addBtnDef("tableAddHeaderRow",p),o.addBtnDef("tableAddRowAbove",g),o.addBtnDef("tableAddRow",m),o.addBtnDef("tableAddColumnLeft",v),o.addBtnDef("tableAddColumn",h),o.addBtnDef("tableMergeCells",y),o.addBtnDef("tableUnmergeCells",B),o.addBtnDef("tableVerticalAlignTop",Z),o.addBtnDef("tableVerticalAlignMiddle",Q),o.addBtnDef("tableVerticalAlignBottom",K),o.addBtnDef("tableCellBackgroundColor",G),o.addBtnDef("tableBorderColor",_),o.addBtnDef("tableDeleteRow",w),o.addBtnDef("tableDeleteColumn",R),o.addBtnDef("tableDestroy",C)},destroy:function(t){e(window).off("resize.tbwTable"),e(t.doc).off("selectionchange.tbwTable").off("mousemove.tbwTable").off("mouseup.tbwTable"),t.$c.off("tbwchange.tbwTable"),e("table",t.$ed).off("mousedown.tbwTable")},tagHandler:function(e,t){var l=[];if("TABLE"===e.tagName){l.push("table");var o=e.style.borderColor;if(""!==o){var r=n(o);t.o.plugins.table.colorList.indexOf(r)>=0?l.push("tableBorderColor"+r):l.push("freeTableBorderColor")}}if(!e.style)return l;var d=e.style.verticalAlign;""!==d&&l.push("tableVerticalAlign"+a(d));var i=e.style.backgroundColor;if(("TH"===e.tagName||"TD"===e.tagName)&&""!==i){var s=n(i);t.o.plugins.table.colorList.indexOf(s)>=0?l.push("tableCellBackgroundColor"+s):l.push("freeTableCellBackgroundColor")}return l}}}})}(jQuery);