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) 6.8 kB
/*! * froala_editor v3.1.0 (https://www.froala.com/wysiwyg-editor) * License https://froala.com/wysiwyg-editor/terms/ * Copyright 2014-2020 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(f){"use strict";f=f&&f.hasOwnProperty("default")?f["default"]:f,Object.assign(f.DEFAULTS,{listAdvancedTypes:!0}),f.PLUGINS.lists=function(p){var d=p.$;function g(e){return'<span class="fr-open-'.concat(e.toLowerCase(),'"></span>')}function m(e){return'<span class="fr-close-'.concat(e.toLowerCase(),'"></span>')}function o(e,t){!function c(e,t){for(var a=[],n=0;n<e.length;n++){var r=e[n].parentNode;"LI"==e[n].tagName&&r.tagName!=t&&a.indexOf(r)<0&&a.push(r)}for(var o=a.length-1;0<=o;o--){var i=d(a[o]);i.replaceWith("<".concat(t.toLowerCase()," ").concat(p.node.attributes(i.get(0)),">").concat(i.html(),"</").concat(t.toLowerCase(),">"))}}(e,t);var a,n=p.html.defaultTag(),r=null;e.length&&(a="rtl"==p.opts.direction||"rtl"==d(e[0]).css("direction")?"margin-right":"margin-left");for(var o=0;o<e.length;o++)if("TD"!=e[o].tagName&&"TH"!=e[o].tagName&&"LI"!=e[o].tagName){var i=p.helpers.getPX(d(e[o]).css(a))||0;(e[o].style.marginLeft=null)===r&&(r=i);var s=0<r?"<".concat(t,' style="').concat(a,": ").concat(r,'px ">'):"<".concat(t,">"),l="</".concat(t,">");for(i-=r;0<i/p.opts.indentMargin;)s+="</".concat(t,">"),l+=l,i-=p.opts.indentMargin;n&&e[o].tagName.toLowerCase()==n?d(e[o]).replaceWith("".concat(s,"<li").concat(p.node.attributes(e[o]),">").concat(d(e[o]).html(),"</li>").concat(l)):d(e[o]).wrap("".concat(s,"<li></li>").concat(l))}p.clean.lists()}function i(e){var t,a;for(t=e.length-1;0<=t;t--)for(a=t-1;0<=a;a--)if(d(e[a]).find(e[t]).length||e[a]==e[t]){e.splice(t,1);break}var n=[];for(t=0;t<e.length;t++){var r=d(e[t]),o=e[t].parentNode,i=r.attr("class");if(r.before(m(o.tagName)),"LI"==o.parentNode.tagName)r.before(m("LI")),r.after(g("LI"));else{var s="";i&&(s+=' class="'.concat(i,'"'));var l="rtl"==p.opts.direction||"rtl"==r.css("direction")?"margin-right":"margin-left";p.helpers.getPX(d(o).css(l))&&0<=(d(o).attr("style")||"").indexOf("".concat(l,":"))&&(s+=' style="'.concat(l,":").concat(p.helpers.getPX(d(o).css(l)),'px;"')),p.html.defaultTag()&&0===r.find(p.html.blockTagsQuery()).length&&r.wrapInner(p.html.defaultTag()+s),p.node.isEmpty(r.get(0),!0)||0!==r.find(p.html.blockTagsQuery()).length||r.append("<br>"),r.append(g("LI")),r.prepend(m("LI"))}r.after(g(o.tagName)),"LI"==o.parentNode.tagName&&(o=o.parentNode.parentNode),n.indexOf(o)<0&&n.push(o)}for(t=0;t<n.length;t++){var c=d(n[t]),f=c.html();f=(f=f.replace(/<span class="fr-close-([a-z]*)"><\/span>/g,"</$1>")).replace(/<span class="fr-open-([a-z]*)"><\/span>/g,"<$1>"),c.replaceWith(p.node.openTagString(c.get(0))+f+p.node.closeTagString(c.get(0)))}p.$el.find("li:empty").remove(),p.$el.find("ul:empty, ol:empty").remove(),p.clean.lists(),p.html.wrap()}function s(e){p.selection.save();for(var t=0;t<e.length;t++){var a=e[t].previousSibling;if(a){var n=d(e[t]).find("> ul, > ol").last().get(0);if(n){var r=d(document.createElement("li"));d(n).prepend(r);for(var o=p.node.contents(e[t])[0];o&&!p.node.isList(o);){var i=o.nextSibling;r.append(o),o=i}d(a).append(d(n)),d(e[t]).remove()}else{var s=d(a).find("> ul, > ol").last().get(0);if(s)d(s).append(d(e[t]));else{var l=d("<".concat(e[t].parentNode.tagName,">"));d(a).append(l),l.append(d(e[t]))}}}}p.clean.lists(),p.selection.restore()}function l(e){p.selection.save(),i(e),p.selection.restore()}function e(e){if("indent"==e||"outdent"==e){var t=!1,a=p.selection.blocks(),n=[],r=a[0].previousSibling||a[0].parentElement;if("outdent"==e){if("LI"==r.tagName||"LI"!=r.parentNode.tagName)return}else if(!a[0].previousSibling||"LI"!=a[0].previousSibling.tagName)return;for(var o=0;o<a.length;o++)"LI"==a[o].tagName?(t=!0,n.push(a[o])):"LI"==a[o].parentNode.tagName&&(t=!0,n.push(a[o].parentNode));t&&("indent"==e?s(n):l(n))}}return{_init:function t(){p.events.on("commands.after",e),p.events.on("keydown",function(e){if(e.which==f.KEYCODE.TAB){for(var t=p.selection.blocks(),a=[],n=0;n<t.length;n++)"LI"==t[n].tagName?a.push(t[n]):"LI"==t[n].parentNode.tagName&&a.push(t[n].parentNode);if(1<a.length||a.length&&(p.selection.info(a[0]).atStart||p.node.isEmpty(a[0])))return e.preventDefault(),e.stopPropagation(),e.shiftKey?l(a):s(a),!1}},!0)},format:function c(e,t){var a,n;for(p.html.syncInputs(),p.selection.save(),p.html.wrap(!0,!0,!0,!0),p.selection.restore(),n=p.selection.blocks(),a=0;a<n.length;a++)"LI"!=n[a].tagName&&"LI"==n[a].parentNode.tagName&&(n[a]=n[a].parentNode);if(p.selection.save(),function r(e,t){for(var a=!0,n=0;n<e.length;n++){if("LI"!=e[n].tagName)return!1;e[n].parentNode.tagName!=t&&(a=!1)}return a}(n,e)?t||i(n):o(n,e),p.html.unwrap(),p.selection.restore(),t=t||"default"){for(n=p.selection.blocks(),a=0;a<n.length;a++)"LI"!=n[a].tagName&&"LI"==n[a].parentNode.tagName&&(n[a]=n[a].parentNode);for(a=0;a<n.length;a++)"LI"==n[a].tagName&&(d(n[a].parentNode).css("list-style-type","default"===t?"":t),0===(d(n[a].parentNode).attr("style")||"").length&&d(n[a].parentNode).removeAttr("style"))}},refresh:function r(e,t){var a=d(p.selection.element());if(a.get(0)!=p.el){var n=a.get(0);(n="LI"!=n.tagName&&n.firstElementChild&&"LI"!=n.firstElementChild.tagName?a.parents("li").get(0):"LI"==n.tagName||n.firstElementChild?n.firstElementChild&&"LI"==n.firstElementChild.tagName?a.get(0).firstChild:a.get(0):a.parents("li").get(0))&&n.parentNode.tagName==t&&p.el.contains(n.parentNode)&&e.addClass("fr-active")}}}},f.DefineIcon("formatOLSimple",{NAME:"list-ol",SVG_KEY:"orderedList"}),f.RegisterCommand("formatOLSimple",{title:"Ordered List",type:"button",options:{"default":"Default",circle:"Circle",disc:"Disc",square:"Square"},refresh:function(e){this.lists.refresh(e,"OL")},callback:function(e,t){this.lists.format("OL",t)},plugin:"lists"}),f.RegisterCommand("formatUL",{title:"Unordered List",type:"button",hasOptions:function(){return this.opts.listAdvancedTypes},options:{"default":"Default",circle:"Circle",disc:"Disc",square:"Square"},refresh:function(e){this.lists.refresh(e,"UL")},callback:function(e,t){this.lists.format("UL",t)},plugin:"lists"}),f.RegisterCommand("formatOL",{title:"Ordered List",hasOptions:function(){return this.opts.listAdvancedTypes},options:{"default":"Default","lower-alpha":"Lower Alpha","lower-greek":"Lower Greek","lower-roman":"Lower Roman","upper-alpha":"Upper Alpha","upper-roman":"Upper Roman"},refresh:function(e){this.lists.refresh(e,"OL")},callback:function(e,t){this.lists.format("OL",t)},plugin:"lists"}),f.DefineIcon("formatUL",{NAME:"list-ul",SVG_KEY:"unorderedList"}),f.DefineIcon("formatOL",{NAME:"list-ol",SVG_KEY:"orderedList"})});