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) • 4.22 kB
JavaScript
/*!
* froala_editor v5.0.1 (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(i){"use strict";i.PLUGINS.align=function(g){var f=g.$;return{apply:function(t){var e=g.selection.ranges(0),n=(n=e.commonAncestorContainer).nodeType===Node.TEXT_NODE?g.selection.element():n,i=f(n).closest("table.fr-selection-handle-selected"),l=f(n).parents("TD, TH"),a=!g.selection.isCollapsed(),r="TD"===n.tagName||"TH"===n.tagName,e=(a=a&&r)&&(null==(o=n.textContent)?void 0:o.trim())===(null==(o=e.toString())?void 0:o.trim()),o=g.table&&g.table.selectedCells(),r=r||o&&0<o.length||l.length&&g.el.contains(l.get(0))&&"BR"===n.tagName;if(f(n).parents(".fr-img-caption").length)f(n).css("text-align",t);else if(i.length&&g.el.contains(i[0]))i.find("td").css("text-align",t);else if(r&&!a||e)o&&o.length?o.forEach(function(e){e=f(e);e.css("text-align",t),e.children().css("text-align","")}):((i=["TD","TH"].includes(n.tagName)?f(n):l).css("text-align",t),i.children().css("text-align",""));else{g.selection.save(),o&&o.length||g.html.wrap(!0,!0,!0,!0),g.selection.restore();for(var s=g.helpers.selectionBlocks([".fr-code-snippet"]),c=0;c<s.length;c++)f(s[c]).css("text-align",t).removeClass("fr-temp-div"),""===f(s[c]).attr("class")&&f(s[c]).removeAttr("class"),""===f(s[c]).attr("style")&&f(s[c]).removeAttr("style");g.selection.save(),g.html.unwrap(),g.selection.restore()}},refresh:function(e){var t=g.selection.blocks();t.length&&(t=g.helpers.getAlignment(f(t[0])),e.find("> *").first().replaceWith(g.icon.create("align-".concat(t))))},refreshOnShow:function(e,t){var n=g.selection.blocks();n.length&&(n=g.helpers.getAlignment(f(n[0])),t.find('a.fr-command[data-param1="'.concat(n,'"]')).addClass("fr-active").attr("aria-selected",!0))},refreshForToolbar:function(e){var t=g.selection.blocks();t.length&&(t=(t=g.helpers.getAlignment(f(t[0]))).charAt(0).toUpperCase()+t.slice(1),"align".concat(t)===e.attr("data-cmd"))&&e.addClass("fr-active")}}},i.DefineIcon("align",{NAME:"align-left",SVG_KEY:"alignLeft"}),i.DefineIcon("align-left",{NAME:"align-left",SVG_KEY:"alignLeft"}),i.DefineIcon("align-right",{NAME:"align-right",SVG_KEY:"alignRight"}),i.DefineIcon("align-center",{NAME:"align-center",SVG_KEY:"alignCenter"}),i.DefineIcon("align-justify",{NAME:"align-justify",SVG_KEY:"alignJustify"}),i.RegisterCommand("align",{type:"dropdown",title:"Align",options:{left:"Align Left",center:"Align Center",right:"Align Right",justify:"Align Justify"},html:function(){var e,t='<ul class="fr-dropdown-list" role="presentation">',n=i.COMMANDS.align.options;for(e in n)n.hasOwnProperty(e)&&(t+='<li role="presentation"><a class="fr-command fr-title" tabIndex="-1" role="option" data-cmd="align"data-param1="\n '.concat(e,'" title="').concat(this.language.translate(n[e]),'">').concat(this.icon.create("align-".concat(e)),'<span class="fr-sr-only">\n ').concat(this.language.translate(n[e]),"</span></a></li>"));return t+="</ul>"},callback:function(e,t){this.align.apply(t)},refresh:function(e){this.align.refresh(e)},refreshOnShow:function(e,t){this.align.refreshOnShow(e,t)},plugin:"align"}),i.RegisterCommand("alignLeft",{type:"button",icon:"align-left",title:"Align Left",callback:function(){this.align.apply("left")},refresh:function(e){this.align.refreshForToolbar(e)},plugin:"align"}),i.RegisterCommand("alignRight",{type:"button",icon:"align-right",title:"Align Right",callback:function(){this.align.apply("right")},refresh:function(e){this.align.refreshForToolbar(e)},plugin:"align"}),i.RegisterCommand("alignCenter",{type:"button",icon:"align-center",title:"Align Center",callback:function(){this.align.apply("center")},refresh:function(e){this.align.refreshForToolbar(e)},plugin:"align"}),i.RegisterCommand("alignJustify",{type:"button",icon:"align-justify",title:"Align Justify",callback:function(){this.align.apply("justify")},refresh:function(e){this.align.refreshForToolbar(e)},plugin:"align"})});