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) 21.3 kB
/*! * froala_editor v4.7.0 (https://www.froala.com/wysiwyg-editor) * License https://froala.com/wysiwyg-editor/terms/ * Copyright 2014-2025 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(y){"use strict";y=y&&y.hasOwnProperty("default")?y["default"]:y,Object.assign(y.POPUP_TEMPLATES,{"link.edit":"[_BUTTONS_]","link.insert":"[_BUTTONS_][_INPUT_LAYER_]"}),Object.assign(y.DEFAULTS,{linkEditButtons:["linkOpen","linkStyle","linkEdit","linkRemove"],linkInsertButtons:["linkBack","|","linkList"],linkAttributes:{},linkAutoPrefix:"http://",linkStyles:{"fr-green":"Green","fr-strong":"Thick"},linkMultipleStyles:!0,linkConvertEmailAddress:!0,linkAlwaysBlank:!1,linkAlwaysNoFollow:!1,linkNoOpener:!0,linkNoReferrer:!0,linkList:[{text:"Froala",href:"https://froala.com",target:"_blank"},{text:"Google",href:"https://google.com",target:"_blank"},{displayText:"Facebook",href:"https://facebook.com"}],linkText:!0}),y.PLUGINS.link=function(k){var m=k.$;function v(){var e=k.image?k.image.get():null;if(e||!k.$wp)return"A"==k.el.tagName?k.el:e&&e.get(0).parentNode&&"A"==e.get(0).parentNode.tagName?e.get(0).parentNode:void 0;var t=k.selection.ranges(0).commonAncestorContainer;try{t&&(t.contains&&t.contains(k.el)||!k.el.contains(t)||k.el==t)&&(t=null)}catch(l){t=null}if(t&&"A"===t.tagName)return t;var n,i,r=k.selection.element(),a=k.selection.endElement();"A"==r.tagName||k.node.isElement(r)||(r=k.opts.iframe&&null!==(n=k.markdown)&&void 0!==n&&n.isEnabled()?null:m(r).parentsUntil(k.$el,"a").first().get(0));"A"==a.tagName||k.node.isElement(a)||(a=k.opts.iframe&&null!==(i=k.markdown)&&void 0!==i&&i.isEnabled()?null:m(a).parentsUntil(k.$el,"a").first().get(0));try{a&&(a.contains&&a.contains(k.el)||!k.el.contains(a)||k.el==a)&&(a=null)}catch(l){a=null}try{r&&(r.contains&&r.contains(k.el)||!k.el.contains(r)||k.el==r)&&(r=null)}catch(l){r=null}return a&&a==r&&"A"==a.tagName?(k.browser.msie||k.helpers.isMobile())&&(k.selection.info(r).atEnd||k.selection.info(r).atStart)?null:r:null}function b(){var e,t,n,i,r=k.image?k.image.get():null,a=[];if(r)"A"==r.get(0).parentNode.tagName&&a.push(r.get(0).parentNode);else if(k.win.getSelection){var l=k.win.getSelection();if(l.getRangeAt&&l.rangeCount){i=k.doc.createRange();for(var o=0;o<l.rangeCount;++o)if((t=(e=l.getRangeAt(o)).commonAncestorContainer)&&1!=t.nodeType&&(t=t.parentNode),t&&"a"==t.nodeName.toLowerCase())a.push(t);else{n=t.getElementsByTagName("a");for(var s=0;s<n.length;++s)i.selectNodeContents(n[s]),i.compareBoundaryPoints(e.END_TO_START,e)<1&&-1<i.compareBoundaryPoints(e.START_TO_END,e)&&a.push(n[s])}}}else if(k.doc.selection&&"Control"!=k.doc.selection.type)if("a"==(t=(e=k.doc.selection.createRange()).parentElement()).nodeName.toLowerCase())a.push(t);else{n=t.getElementsByTagName("a"),i=k.doc.body.createTextRange();for(var c=0;c<n.length;++c)i.moveToElementText(n[c]),-1<i.compareEndPoints("StartToEnd",e)&&i.compareEndPoints("EndToStart",e)<1&&a.push(n[c])}return a}function A(r){if(k.core.hasFocus()||k.opts.iframe&&(!document.hasFocus||document.hasFocus())){if(a(),r&&"keyup"===r.type&&(r.altKey||r.which==y.KEYCODE.ALT))return!0;setTimeout(function(){if(!r||r&&(1==r.which||"mouseup"!=r.type)){var e=v(),t=k.image?k.image.get():null;if(e&&!t){if(k.image){var n=k.node.contents(e);if(1==n.length&&"IMG"==n[0].tagName){var i=k.selection.ranges(0);return 0===i.startOffset&&0===i.endOffset?m(e).before(y.INVISIBLE_SPACE+y.MARKERS):m(e).after(y.INVISIBLE_SPACE+y.MARKERS),k.selection.restore(),!1}}r&&r.stopPropagation(),m(e).hasClass("fr-anchor")||l(e)}}},k.helpers.isIOS()?100:0)}}function l(e){var t=k.popups.get("link.edit");t||(t=function a(){var e="";1<=k.opts.linkEditButtons.length&&("A"==k.el.tagName&&0<=k.opts.linkEditButtons.indexOf("linkRemove")&&k.opts.linkEditButtons.splice(k.opts.linkEditButtons.indexOf("linkRemove"),1),e='<div class="fr-buttons">'.concat(k.button.buildList(k.opts.linkEditButtons),"</div>"));var t={buttons:e},n=k.popups.create("link.edit",t);k.$wp&&k.events.$on(k.$wp,"scroll.link-edit",function(){var e=v();e&&k.popups.isVisible("link.edit")&&(m(e).hasClass("fr-anchor")||l(e))});return n}());var n=m(e);k.popups.isVisible("link.edit")||k.popups.refresh("link.edit"),k.popups.setContainer("link.edit",k.$sc);var i=n.offset().left+n.outerWidth()/2,r=n.offset().top+n.outerHeight();k.popups.show("link.edit",i,r,n.outerHeight(),!0)}function a(){k.popups.hide("link.edit")}function c(){var e=k.popups.get("link.insert"),t=v();if(t){var n,i,r=m(t),a=e.find('input.fr-link-attr[type="text"]'),l=e.find('input.fr-link-attr[type="checkbox"]');for(n=0;n<a.length;n++){var o=(i=m(a[n])).attr("name")||"",s="href"===o?decodeURI(r.attr(o)):r.attr(o);i.val(s)}for(l.attr("checked",!1),n=0;n<l.length;n++)i=m(l[n]),r.attr(i.attr("name"))==i.data("checked")&&i.attr("checked",!0);e.find('input.fr-link-attr[type="text"][name="text"]').val(r.text())}else e.find('input.fr-link-attr[type="text"]').val(""),e.find('input.fr-link-attr[type="checkbox"]').attr("checked",!1),e.find('input.fr-link-attr[type="text"][name="text"]').val(k.selection.text());e.find("input.fr-link-attr").trigger("change"),(k.image?k.image.get():null)?e.find('.fr-link-attr[name="text"]').parent().hide():e.find('.fr-link-attr[name="text"]').parent().show()}function o(e){if(e)return k.popups.onRefresh("link.insert",c),!0;var t="";1<=k.opts.linkInsertButtons.length&&(t='<div class="fr-buttons fr-tabs">'.concat(k.button.buildList(k.opts.linkInsertButtons),"</div>"));var n="",i=0,r=k.button.buildList(["anchorList"]);for(var a in n='<div class="fr-link-insert-layer fr-layer fr-active" id="fr-link-insert-layer-'.concat(k.id,'">'),n+='<div class="fr-link-input-layer"><div class="fr-input-line"><input id="fr-link-insert-layer-url-'.concat(k.id,'" name="href" type="text" class="fr-link-attr" placeholder="').concat(k.language.translate("URL"),'" tabIndex="').concat(++i,'"></div><div class="fr-buttons">').concat(r,"</div></div>"),k.opts.linkText&&(n+='<div class="fr-input-line"><input id="fr-link-insert-layer-text-'.concat(k.id,'" name="text" type="text" class="fr-link-attr" placeholder="').concat(k.language.translate("Text"),'" tabIndex="').concat(++i,'"></div>')),k.opts.linkAttributes)if(k.opts.linkAttributes.hasOwnProperty(a)){var l=k.opts.linkAttributes[a];n+='<div class="fr-input-line"><input name="'.concat(a,'" type="text" class="fr-link-attr" placeholder="').concat(k.language.translate(l),'" tabIndex="').concat(++i,'"></div>')}k.opts.linkAlwaysBlank||(n+='<div class="fr-checkbox-line"><span class="fr-checkbox"><input name="target" class="fr-link-attr" data-checked="_blank" type="checkbox" id="fr-link-target-'.concat(k.id,'" tabIndex="').concat(++i,'"><span>').concat('<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="10" height="10" viewBox="0 0 32 32"><path d="M27 4l-15 15-7-7-5 5 12 12 20-20z" fill="#FFF"></path></svg>','</span></span><label id="fr-label-target-').concat(k.id,'">').concat(k.language.translate("Open in new tab"),"</label></div>"));var o={buttons:t,input_layer:n+='<div class="fr-action-buttons"><button class="fr-command fr-submit" role="button" data-cmd="linkInsert" href="#" tabIndex="'.concat(++i,'" type="button">').concat(k.language.translate("Insert"),"</button></div></div>")},s=k.popups.create("link.insert",o);return k.$wp&&k.events.$on(k.$wp,"scroll.link-insert",function(){(k.image?k.image.get():null)&&k.popups.isVisible("link.insert")&&d(),k.popups.isVisible("link.insert")&&f()}),s}function p(e,t,n){if(k.opts.trackChangesEnabled){if(k.edit.on(),k.events.focus(!0),k.undo.saveStep(),k.markers.insert(),k.html.wrap(),!k.$el.find(".fr-marker").length)return void k.popups.hide("link.insert");k.markers.remove()}if(void 0===n&&(n={}),!1===k.events.trigger("link.beforeInsert",[e,t,n]))return!1;var i=k.image?k.image.get():null;i||"A"==k.el.tagName?"A"==k.el.tagName&&k.$el.focus():(k.selection.restore(),k.popups.hide("link.insert"));var r=e;k.opts.linkConvertEmailAddress&&k.helpers.isEmail(e)&&!/^mailto:.*/i.test(e)&&(e="mailto:".concat(e));if(""===k.opts.linkAutoPrefix||new RegExp("^("+y.LinkProtocols.join("|")+"):.","i").test(e)||/^data:image.*/i.test(e)||/^(https?:|ftps?:|file:|)\/\//i.test(e)||/^([A-Za-z]:(\\){1,2}|[A-Za-z]:((\\){1,2}[^\\]+)+)(\\)?$/i.test(e)||["/","{","[","#","(",".",'"',"\\"].indexOf((e||"")[0])<0&&(e=k.opts.linkAutoPrefix+e),(e=k.helpers.sanitizeURL(e))===decodeURIComponent(e)&&(e=encodeURI(e)),k.opts.linkAlwaysBlank&&(n.target="_blank"),k.opts.linkAlwaysNoFollow&&(n.rel="nofollow"),k.helpers.isEmail(r)&&(n.target=null,n.rel=null),"_blank"==n.target?(k.opts.linkNoOpener&&(n.rel?n.rel+=" noopener":n.rel="noopener"),k.opts.linkNoReferrer&&(n.rel?n.rel+=" noreferrer":n.rel="noreferrer")):null==n.target&&(n.rel?n.rel=n.rel.replace(/noopener/,"").replace(/noreferrer/,""):n.rel=null),t=t||"",e===k.opts.linkAutoPrefix)return k.popups.get("link.insert").find('input[name="href"]').addClass("fr-error"),k.events.trigger("link.bad",[r]),!1;var a,l=v();if(l){if((a=m(l)).attr("href",e),0<t.length&&a.text()!=t&&!i){if(k.opts.trackChangesEnabled){var o=m(a.get(0).outerHTML);o.insertBefore(a.parent());var s=k.track_changes.wrapLinkInTracking(o,k.track_changes.getPendingChanges().length-1),c=k.track_changes.wrapInDelete(s);a.parent().append(c)}for(var p=a.get(0);1===p.childNodes.length&&p.childNodes[0].nodeType==Node.ELEMENT_NODE;)p=p.childNodes[0];m(p).text(t)}for(var f in i||a.prepend(y.START_MARKER).append(y.END_MARKER),n)n[f]?a.attr(f,n[f]):a.removeAttr(f);i||k.selection.restore()}else{i?(i.wrap('<a href="'.concat(e,'"></a>')),k.image.hasCaption()&&i.parent().append(i.parents(".fr-img-caption").find(".fr-inner"))):(k.format.remove("a"),k.selection.isCollapsed()?(t=0===t.length?r:t,k.html.insert('<a href="'.concat(e,'">').concat(y.START_MARKER).concat(t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")).concat(y.END_MARKER,"</a>")),k.selection.restore()):0<t.length&&t!=k.selection.text().replace(/\n/g,"")?(k.selection.remove(),k.html.insert('<a href="'.concat(e,'">').concat(y.START_MARKER).concat(t.replace(/&/g,"&amp;")).concat(y.END_MARKER,"</a>")),k.selection.restore()):(!function g(){if(!k.selection.isCollapsed()){k.selection.save();for(var e=k.$el.find(".fr-marker").addClass("fr-unprocessed").toArray();e.length;){var t=m(e.pop());t.removeClass("fr-unprocessed");var n=k.node.deepestParent(t.get(0));if(n){for(var i=t.get(0),r="",a="";i=i.parentNode,k.node.isBlock(i)||(r+=k.node.closeTagString(i),a=k.node.openTagString(i)+a),i!=n;);var l=k.node.openTagString(t.get(0))+t.html()+k.node.closeTagString(t.get(0));t.replaceWith('<span id="fr-break"></span>');var o=n.outerHTML;o=(o=o.replace(/<span id="fr-break"><\/span>/g,r+l+a)).replace(a+r,""),n.outerHTML=o}e=k.$el.find(".fr-marker.fr-unprocessed").toArray()}k.html.cleanEmptyTags(),k.selection.restore()}}(),k.format.apply("a",{href:e})));for(var d=b(),u=0;u<d.length;u++)(a=m(d[u])).attr(n),a.removeAttr("_moz_dirty");1==d.length&&k.$wp&&!i&&(m(d[0]).prepend(y.START_MARKER).append(y.END_MARKER),k.selection.restore())}if(i){var h=k.popups.get("link.insert");h&&h.find("input:focus").blur(),k.image.edit(i)}else A()}function f(){a();var e=v();if(e){var t=k.popups.get("link.insert");t||(t=o()),k.popups.isVisible("link.insert")||(k.popups.refresh("link.insert"),k.selection.save(),k.helpers.isMobile()&&(k.events.disableBlur(),k.$el.blur(),k.events.enableBlur())),k.popups.setContainer("link.insert",k.$sc);var n=(k.image?k.image.get():null)||m(e),i=n.offset().left+n.outerWidth()/2,r=n.offset().top+n.outerHeight();k.popups.show("link.insert",i,r,n.outerHeight(),!0)}}function d(){var e=k.image?k.image.getEl():null;if(e){var t=k.popups.get("link.insert"),n=e.outerWidth()/2;k.image.hasCaption()&&(e=e.find(".fr-img-wrap"),m(e)&&m(e).find("img")&&(n=m(e).find("img").outerWidth()/2)),t||(t=o()),c(),k.popups.setContainer("link.insert",k.$sc);var i=e.offset().left+n,r=e.offset().top+e.outerHeight(),a=e.outerHeight();k.opts.iframe&&k.image.hasCaption()&&m(e)&&m(e).find("img")&&(a=m(e).find("img").outerHeight()),k.popups.show("link.insert",i,r,a,!0)}}return{_init:function e(){k.events.on("keyup",function(e){e.which!=y.KEYCODE.ESC&&A(e)}),k.events.on("window.mouseup",A),k.events.$on(k.$el,"click","a",function(e){k.edit.isDisabled()&&e.preventDefault()}),k.helpers.isMobile()&&k.events.$on(k.$doc,"selectionchange",A),o(!0),"A"==k.el.tagName&&k.$el.addClass("fr-view"),k.events.on("toolbar.esc",function(){if(k.popups.isVisible("link.edit"))return k.events.disableBlur(),k.events.focus(),!1},!0)},remove:function i(){var e=v(),t=k.image?k.image.get():null;if(!1===k.events.trigger("link.beforeRemove",[e]))return!1;if(t&&e)if(k.image.hasCaption()){t.addClass("img-link-caption"),m(e).replaceWith(m(e).html());var n=document.querySelectorAll("img.img-link-caption");k.image.edit(m(n[0])),m(n[0]).removeClass("img-link-caption")}else t.unwrap(),k.image.edit(t);else e&&(k.selection.save(),m(e).replaceWith(m(e).html()),k.selection.restore(),a())},showInsertPopup:function s(){var e=k.$tb.find('.fr-command[data-cmd="insertLink"]'),t=k.popups.get("link.insert");if(t||(t=o()),!t.hasClass("fr-active")){if(k.popups.refresh("link.insert"),k.popups.setContainer("link.insert",k.$tb||k.$sc),e.isVisible()){var n=k.button.getPosition(e),i=n.left,r=n.top;k.popups.show("link.insert",i,r,e.outerHeight())}else k.position.forSelection(t),k.popups.show("link.insert");var a=t.find('button[data-cmd="anchorList"]');a.isVisible()&&k.button.click(a)}},usePredefined:function u(e,t){var n,i,r=k.opts.linkList[e]||t,a=k.popups.get("link.insert"),l=a.find('input.fr-link-attr[type="text"]'),o=a.find('input.fr-link-attr[type="checkbox"]');for(r.rel&&(a.rel=r.rel),i=0;i<l.length;i++)r[(n=m(l[i])).attr("name")]?(n.val(r[n.attr("name")]),n.toggleClass("fr-not-empty",!0)):"text"!=n.attr("name")&&n.val("");for(i=0;i<o.length;i++)(n=m(o[i])).attr("checked",n.data("checked")==r[n.attr("name")]);k.accessibility.focusPopup(a)},insertCallback:function h(){var e,t,n=k.popups.get("link.insert"),i=n.find('input.fr-link-attr[type="text"]'),r=n.find('input.fr-link-attr[type="checkbox"]'),a=(i.filter('[name="href"]').val()||"").trim(),l=k.opts.linkText?i.filter('[name="text"]').val():"",o={};for(t=0;t<i.length;t++)e=m(i[t]),["href","text"].indexOf(e.attr("name"))<0&&(o[e.attr("name")]=e.val());for(t=0;t<r.length;t++)(e=m(r[t])).is(":checked")?o[e.attr("name")]=e.data("checked"):o[e.attr("name")]=e.data("unchecked")||null;n.rel&&(o.rel=n.rel);var s=k.helpers.scrollTop();p(a,l,o),m(k.o_win).scrollTop(s)},insert:p,update:f,get:v,allSelected:b,back:function t(){k.image&&k.image.get()?k.image.back():(k.events.disableBlur(),k.selection.restore(),k.events.enableBlur(),v()&&k.$wp?(k.selection.restore(),a(),A()):"A"==k.el.tagName?(k.$el.focus(),A()):(k.popups.hide("link.insert"),k.toolbar.showInline()))},imageLink:d,applyStyle:function g(e,t,n){void 0===n&&(n=k.opts.linkMultipleStyles),void 0===t&&(t=k.opts.linkStyles);var i=v();if(!i)return!1;if(!n){var r=Object.keys(t);r.splice(r.indexOf(e),1),m(i).removeClass(r.join(" "))}m(i).toggleClass(e),A()},getAllAnchorList:function r(){var e=k.$el.find('[data-cmd="anchor"]').get().map(function(e){return e.name}),t='<ul class="fr-dropdown-list" role="presentation">';if(!e.length)return!1;var n=k.icon.create("anchorListIcon");m(n).find("path").css("fill","dimgray");for(var i=0;i<e.length;i++)t+='<li role="presentation"><a class="fr-command" tabIndex="-1" role="option" data-cmd="anchorList" data-param1="#'.concat(e[i],'">').concat(n).concat(e[i],"</a></li>");return t+="</ul>"},scrollToAnchor:function E(e){var t=e.startsWith("#")?e.slice(1):e,n=k.$el.get(0).querySelector('[name="'.concat(t,'"]'));if(!n)return!1;if(n.scrollIntoView({behavior:"smooth",block:"center"}),k.linkToAnchor)k.linkToAnchor.focusOnAnchor(n);else{var i=k.doc.createRange();k.selection.get().removeAllRanges(),i.selectNode(n),k.selection.get().addRange(i),$anchor.trigger("mousedown"),$anchor.trigger("mouseup")}return!0}}},y.DefineIcon("insertLink",{NAME:"link",SVG_KEY:"insertLink"}),y.RegisterShortcut(y.KEYCODE.K,"insertLink",null,"K"),y.RegisterCommand("insertLink",{title:"Insert Link",undo:!1,focus:!0,refreshOnCallback:!1,popup:!0,callback:function(){this.popups.isVisible("link.insert")?(this.$el.find(".fr-marker").length&&(this.events.disableBlur(),this.selection.restore()),this.popups.hide("link.insert")):this.link.showInsertPopup()},plugin:"link"}),y.DefineIcon("linkOpen",{NAME:"external-link",FA5NAME:"external-link-alt",SVG_KEY:"openLink"}),y.RegisterCommand("linkOpen",{title:"Open Link",undo:!1,refresh:function(e){var t=this.link.get();if(t){e.removeClass("fr-hidden");var n="Open Link";t.href.includes("#")&&(n="Scroll to target"),e.attr("title",this.language.translate(n))}else e.addClass("fr-hidden")},callback:function(){var e=this.link.get();if(e){var t=e.getAttribute("href");if(t&&t.startsWith("#_mso")){var n='a[href="#'.concat(e.name,'"]'),i=this.$el.find(n);i.length&&i.get(0).scrollIntoView({behavior:"smooth",block:"center"})}else t&&t.startsWith("#")?this.link.scrollToAnchor(t):-1!==e.href.indexOf("mailto:")?this.o_win.open(e.href).close():(e.target||(e.target="_self"),this.browser.msie||this.browser.edge?this.o_win.open(e.href,e.target):this.o_win.open(e.href,e.target,"noopener"));this.popups.hide("link.edit")}},plugin:"link"}),y.DefineIcon("linkEdit",{NAME:"edit",SVG_KEY:"edit"}),y.RegisterCommand("linkEdit",{title:"Edit Link",undo:!1,refreshAfterCallback:!1,popup:!0,callback:function(){this.link.update()},refresh:function(e){this.link.get()?e.removeClass("fr-hidden"):e.addClass("fr-hidden")},plugin:"link"}),y.DefineIcon("linkRemove",{NAME:"unlink",SVG_KEY:"unlink"}),y.RegisterCommand("linkRemove",{title:"Unlink",callback:function(){this.link.remove()},refresh:function(e){this.link.get()?e.removeClass("fr-hidden"):e.addClass("fr-hidden")},plugin:"link"}),y.DefineIcon("linkBack",{NAME:"arrow-left",SVG_KEY:"back"}),y.RegisterCommand("linkBack",{title:"Back",undo:!1,focus:!1,back:!0,refreshAfterCallback:!1,callback:function(){this.link.back()},refresh:function(e){var t=this.link.get()&&this.doc.hasFocus();(this.image?this.image.get():null)||t||this.opts.toolbarInline?(e.removeClass("fr-hidden"),e.next(".fr-separator").removeClass("fr-hidden")):(e.addClass("fr-hidden"),e.next(".fr-separator").addClass("fr-hidden"))},plugin:"link"}),y.DefineIcon("linkList",{NAME:"search",SVG_KEY:"search"}),y.RegisterCommand("linkList",{title:"Choose Link",type:"dropdown",focus:!1,undo:!1,refreshAfterCallback:!1,html:function(){for(var e='<ul class="fr-dropdown-list" role="presentation">',t=this.opts.linkList,n=0;n<t.length;n++)e+='<li role="presentation"><a class="fr-command" tabIndex="-1" role="option" data-cmd="linkList" data-param1="'.concat(n,'">').concat(t[n].displayText||t[n].text,"</a></li>");return e+="</ul>"},callback:function(e,t){this.link.usePredefined(t)},plugin:"link"}),y.RegisterCommand("linkInsert",{focus:!1,refreshAfterCallback:!1,callback:function(){this.link.insertCallback()},refresh:function(e){this.link.get()?e.text(this.language.translate("Update")):e.text(this.language.translate("Insert"))},plugin:"link"}),y.DefineIcon("imageLink",{NAME:"link",SVG_KEY:"insertLink"}),y.RegisterCommand("imageLink",{title:"Insert Link",undo:!1,focus:!1,popup:!0,callback:function(){this.link.imageLink()},refresh:function(e){var t;this.link.get()?((t=e.prev()).hasClass("fr-separator")&&t.removeClass("fr-hidden"),e.addClass("fr-hidden")):((t=e.prev()).hasClass("fr-separator")&&t.addClass("fr-hidden"),e.removeClass("fr-hidden"))},plugin:"link"}),y.DefineIcon("linkStyle",{NAME:"magic",SVG_KEY:"linkStyles"}),y.RegisterCommand("linkStyle",{title:"Style",type:"dropdown",html:function(){var e='<ul class="fr-dropdown-list" role="presentation">',t=this.opts.linkStyles;for(var n in t)t.hasOwnProperty(n)&&(e+='<li role="presentation"><a class="fr-command" tabIndex="-1" role="option" data-cmd="linkStyle" data-param1="'.concat(n,'">').concat(this.language.translate(t[n]),"</a></li>"));return e+="</ul>"},callback:function(e,t){this.link.applyStyle(t)},refreshOnShow:function(e,t){var n=this.$,i=this.link.get();if(i){var r=n(i);t.find(".fr-command").each(function(){var e=n(this).data("param1"),t=r.hasClass(e);n(this).toggleClass("fr-active",t).attr("aria-selected",t)})}},refresh:function(e){this.link.get()?e.removeClass("fr-hidden"):e.addClass("fr-hidden")},plugin:"link"}),y.DefineIcon("anchorList",{}),y.RegisterCommand("anchorList",{title:"Anchor Link",type:"dropdown",focus:!0,undo:!1,icon:"",refreshAfterCallback:!0,html:function(){return this.link.getAllAnchorList()},callback:function(e,t){var n={href:t,target:"_self",text:""};this.link.usePredefined(!1,n)},refresh:function(e){this.link.getAllAnchorList()?e.show():e.hide()},refreshOnShow:function(e,t){t.find(".fr-dropdown-content")[0].innerHTML=this.link.getAllAnchorList();var n=t.parents(".fr-link-input-layer"),i=n.find(".fr-input-line");setTimeout(function(){t.css("top",i.height()-parseInt(i.css("padding-bottom"))),t.css("left",0),t.css("margin-left",0),t.css("width",n.width()),t.css("bottom","auto")},10)},plugin:"link"}),y.DefineIcon("anchorListIcon",{NAME:"bookmark",SVG_KEY:"bookmark",VIEWBOX:"-10 -10 35 35"})});