UNPKG

@firestitch/froala

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.

3 lines (2 loc) 7.88 kB
!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(o){"use strict";o=o&&o.hasOwnProperty("default")?o.default:o,Object.assign(o.DEFAULTS,{listAdvancedTypes:!0}),o.PLUGINS.lists=function(v){var y=v.$;function p(e){return'<span class="fr-open-'.concat(e.toLowerCase(),'"></span>')}function d(e){return'<span class="fr-close-'.concat(e.toLowerCase(),'"></span>')}function r(e,t){for(var a=e,n=t,r=[],o=0;o<a.length;o++){var l=a[o].parentNode;"LI"==a[o].tagName&&l.tagName!=n&&r.indexOf(l)<0&&r.push(l)}for(var i=r.length-1;0<=i;i--){var s=y(r[i]);s.replaceWith("<".concat(n.toLowerCase()," ").concat(v.node.attributes(s.get(0)),">").concat(s.html(),"</").concat(n.toLowerCase(),">"))}var c,p=v.html.defaultTag(),d=null;e.length&&(c="rtl"==v.opts.direction||"rtl"==y(e[0]).css("direction")?"margin-right":"margin-left");for(var f=0;f<e.length;f++)if("TD"!=e[f].tagName&&"TH"!=e[f].tagName&&"LI"!=e[f].tagName){var m=v.helpers.getPX(y(e[f]).css(c))||0,g=0<(d=(e[f].style.marginLeft=null)===d?m:d)?"<".concat(t,' style="').concat(c,": ").concat(d,'px ">'):"<".concat(t,">"),u="</".concat(t,">");for(m-=d;0<m/v.opts.indentMargin;)g+="</".concat(t,">"),u+=u,m-=v.opts.indentMargin;p&&e[f].tagName.toLowerCase()==p?y(e[f]).replaceWith("".concat(g,"<li").concat(v.node.attributes(e[f]),">").concat("<div>").concat(y(e[f]).html(),"</li>").concat("</div>").concat(u)):y(e[f]).wrap("".concat(g,"<li></li>").concat(u))}v.clean.lists()}function I(e){for(var t,a=e.length-1;0<=a;a--)for(t=a-1;0<=t;t--){if(y(e[t]).find(e[a]).length||e[t]==e[a]){e.splice(a,1);break}if(y(e[t]).contains(e[a])){e.splice(t,1);break}}var n=[];for(a=0;a<e.length;a++){var r,o=y(e[a]),l=e[a].parentNode,i=o.attr("class");o.before(d(l.tagName)),"LI"==l.parentNode.tagName?(o.before(d("LI")),o.after(p("LI"))):"OL"==l.parentNode.tagName?(o.before(d("OL")),o.after(p("OL"))):"UL"==l.parentNode.tagName?(o.before(d("UL")),o.after(p("UL"))):(r="",i&&(r+=' class="'.concat(i,'"')),i="rtl"==v.opts.direction||"rtl"==o.css("direction")?"margin-right":"margin-left",v.helpers.getPX(y(l).css(i))&&0<=(y(l).attr("style")||"").indexOf("".concat(i,":"))&&(r+=' style="'.concat(i,":").concat(v.helpers.getPX(y(l).css(i)),'px;"')),v.html.defaultTag()&&0===o.find(v.html.blockTagsQuery()).length&&o.wrapInner(v.html.defaultTag()+r),v.node.isEmpty(o.get(0),!0)||0!==o.find(v.html.blockTagsQuery()).length||("DIV"==l.parentNode.tagName&&v.html.defaultTag()?(o.prepend(p(v.html.defaultTag())),o.append(d(v.html.defaultTag()))):o.append("<br>")),o.append(p("LI")),o.prepend(d("LI"))),o.after(p(l.tagName)),"LI"==l.parentNode.tagName&&(l=l.parentNode.parentNode),n.indexOf(l)<0&&n.push(l)}for(a=0;a<n.length;a++){var s=y(n[a]),c=s.html();c=(c=c.replace(/<span class="fr-close-([a-z]*)"><\/span>/g,"</$1>")).replace(/<span class="fr-open-([a-z]*)"><\/span>/g,"<$1>"),s.replaceWith(v.node.openTagString(s.get(0))+c+v.node.closeTagString(s.get(0)))}v.$el.find("li:empty").remove(),v.$el.find("ul:empty, ol:empty").remove(),v.clean.lists(),v.$el.find("ul:empty, ol:empty").remove(),v.html.wrap()}function e(e){if("indent"==e||"outdent"==e){var t=!1,a=v.selection.blocks(),n=[],r=a[0].previousSibling||a[0].parentElement;if("outdent"==e){if("UL"!=a[0].parentNode.tagName&&"UL"!=r.parentNode.tagName&&"OL"!=r.parentNode.tagName&&"LI"!=r.parentNode.tagName)return;if(!a[0].previousSibling&&"none"==r.parentNode.style.listStyleType){var o=r;for(v.selection.save();0<o.childNodes.length;)o.parentNode.parentNode.append(o.childNodes[0]);return v.clean.lists(),void v.selection.restore()}}else{if("UL"!=a[0].parentElement.tagName&&"OL"!=a[0].parentElement.tagName&&"LI"!=a[0].parentElement.tagName)return;if(v.node.isBlock(a[0])&&"LI"!==a[0].tagName&&0<y(a[0]).parentsUntil(v.$el,"LI").length&&(a[0]=a[0].parentElement,r=a[0].parentElement),!a[0].previousSibling||"LI"!=a[0].previousSibling.tagName){var l=r;v.selection.save();for(var i="OL"==l.tagName?document.createElement("ol"):document.createElement("ul");0<l.childNodes.length;)i.append(l.childNodes[0]);r=document.createElement("li");return i.append(r),l.append(i),v.clean.lists(),void v.selection.restore()}}for(var s=0;s<a.length;s++)"LI"==a[s].tagName?(t=!0,n.push(a[s])):"LI"==a[s].parentNode.tagName&&(t=!0,n.push(a[s].parentNode));if(t){if("indent"==e){var c=n;v.selection.save();for(var p=0;p<c.length;p++){var d=c[p].previousSibling;if(d){var f=y(c[p]).find("> ul, > ol").last().get(0);if(f){var m=y(document.createElement("li"));if(f.childNodes.length)for(var g=f.childNodes[0].attributes,u=0;u<g.length;u++){var h=g[u];"style"===h.name&&(m[0].style.cssText+=h.value)}y(f).prepend(m);for(var N=v.node.contents(c[p])[0];N&&!v.node.isList(N);){var L=N.nextSibling;m.append(N),N=L}y(d).append(y(f)),y(c[p]).remove()}else{var f=y(d).find("> ul, > ol").last().get(0);(f?y(f):(f=y("<".concat(c[p].parentNode.tagName,">")),y(d).append(f),f)).append(y(c[p]))}}}v.clean.lists()}else r=n,v.selection.save(),I(r);v.selection.restore()}}}return{_init:function(){v.events.on("commands.after",e),v.events.on("keydown",function(e){if(e.which==o.KEYCODE.TAB){for(var t=v.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&&(v.selection.info(a[0]).atStart||v.node.isEmpty(a[0])))return e.preventDefault(),e.stopPropagation(),e.shiftKey?v.commands.outdent():v.commands.indent(),!1}},!0)},format:function(e,t){var a,n;for(v.html.syncInputs(),v.selection.save(),v.html.wrap(!0,!0,!0,!0),v.selection.restore(),n=v.selection.blocks(!0),a=0;a<n.length;a++)"LI"!=n[a].tagName&&"LI"==n[a].parentNode.tagName&&(n[a]=n[a].parentNode);if(v.selection.save(),!function(e,t){for(var a=!0,n=0;n<e.length;n++){if("LI"!=e[n].tagName)return;e[n].parentNode.tagName!=t&&(a=!1)}return a}(n,e)?r(n,e):t||I(n),v.html.unwrap(),v.selection.restore(),t=t||"default"){for(n=v.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&&(y(n[a].parentNode).css("list-style-type","default"===t?"":t),0===(y(n[a].parentNode).attr("style")||"").length)&&y(n[a].parentNode).removeAttr("style")}},refresh:function(e,t){var a,n=y(v.selection.element());n.get(0)!=v.el&&(a=("LI"==(a=n.get(0)).tagName||!a.firstElementChild||"LI"==a.firstElementChild.tagName)&&("LI"==a.tagName||a.firstElementChild)?a.firstElementChild&&"LI"==a.firstElementChild.tagName?n.get(0).firstChild:n.get(0):n.parents("li").get(0))&&a.parentNode.tagName==t&&v.el.contains(a.parentNode)&&e.addClass("fr-active")}}},o.DefineIcon("formatOLSimple",{NAME:"list-ol",SVG_KEY:"orderedList"}),o.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"}),o.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"}),o.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"}),o.DefineIcon("formatUL",{NAME:"list-ul",SVG_KEY:"unorderedList"}),o.DefineIcon("formatOL",{NAME:"list-ol",SVG_KEY:"orderedList"})}); //# sourceMappingURL=lists.min.js.map