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) 3.64 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(s){"use strict";(s=s&&s.hasOwnProperty("default")?s.default:s).URLRegEx="(^| |\\u00A0)(".concat(s.LinkRegEx,"|([a-z0-9+-_.]{1,}@[a-z0-9+-_.]{1,}\\.[a-z0-9+-_]{1,}))$"),s.PLUGINS.url=function(a){var r=a.$,i=null;function t(e,t,n){for(var r="";n.length&&"."==n[n.length-1];)r+=".",n=n.substring(0,n.length-1);var o=n;if(a.opts.linkConvertEmailAddress)a.helpers.isEmail(o)&&!/^mailto:.*/i.test(o)&&(o="mailto:".concat(o));else if(a.helpers.isEmail(o))return t+n;return/^((http|https|ftp|ftps|mailto|tel|sms|notes|data)\:)/i.test(o)||(o="//".concat(o)),(t||"")+"<a".concat(a.opts.linkAlwaysBlank?' target="_blank"':"").concat(i?' rel="'.concat(i,'"'):"",' data-fr-linked="true" href="').concat(o,'">').concat(n.replace(/&amp;/g,"&").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),"</a>").concat(r)}var o=function(){return new RegExp(s.URLRegEx,"gi")};function l(e){return a.opts.linkAlwaysNoFollow&&(i="nofollow"),a.opts.linkAlwaysBlank&&(a.opts.linkNoOpener&&(i?i+=" noopener":i="noopener"),a.opts.linkNoReferrer)&&(i?i+=" noreferrer":i="noreferrer"),e.replace(o(),t)}function f(e){e=e.split(" ");return e[e.length-1]}function n(){var e=a.selection.ranges(0),t=e.startContainer;if(t.nodeType===Node.TEXT_NODE){if(!t||e.startOffset!==(t.textContent||"").length){a.markers.insert();var e=a.$el.find(".fr-marker"),n=t.textContent.match(/(^| |\u00A0)(((([a-z\u0080-\u009f\u00a1-\uffff0-9-_\.]{1,})(\.(com|net|org|edu|mil|gov|co|biz|info|me|dev)))|((ftp|http|https):\/\/[a-z\u0080-\u009f\u00a1-\uffff0-9-_\.]{1,})|(www\.[a-z\u0080-\u009f\u00a1-\uffff0-9-_\.]{1,}\.[a-z0-9-]{2,24})|((ftp|http|https):\/\/[\u0021-\uffff]{1,}@[a-z\u0080-\u009f\u00a1-\uffff0-9-_\.]{1,}))((:[0-9]{1,5})|)(((\/|\?|#)[a-z\u00a1-\uffff0-9@?\|!^=%&amp;\/~+#-\'*-_{}]*)|())|([a-z0-9+-_.]{1,}@[a-z0-9+-_.]{1,}\.[a-z0-9+-_]{1,}))$/gi);if(e.remove(),!n)return}!function e(t){return!!t&&("A"===t.tagName||!(!t.parentNode||t.parentNode==a.el)&&e(t.parentNode))}(t)&&(o().test(f(t.textContent))?(r(t).before(l(t.textContent)),(e=r(t.parentNode).find("a[data-fr-linked]")).removeAttr("data-fr-linked"),t.parentNode.removeChild(t),a.events.trigger("url.linked",[e.get(0)])):t.textContent.split(" ").length<=2&&t.previousSibling&&"A"===t.previousSibling.tagName&&(n=t.previousSibling.innerText+t.textContent,o().test(f(n)))&&(e=(new DOMParser).parseFromString(l(n),"text/html").body.childNodes,t.parentNode.replaceChild(e[0],t.previousSibling),e.length&&r(t).before(e[0]),t.parentNode.removeChild(t)))}}return{_init:function(){a.events.on("keypress",function(e){!a.selection.isCollapsed()||")"!=e.key&&"("!=e.key||n()},!0),a.events.on("keydown",function(e){e=e.which;!a.selection.isCollapsed()||e!=s.KEYCODE.ENTER&&e!=s.KEYCODE.SPACE||n()},!0),a.events.on("paste.beforeCleanup",function(e){if(a.helpers.isURL(e))return t=null,a.opts.linkAlwaysBlank&&(a.opts.linkNoOpener&&(t?t+=" noopener":t="noopener"),a.opts.linkNoReferrer)&&(t?t+=" noreferrer":t="noreferrer"),"<a".concat(a.opts.linkAlwaysBlank?' target="_blank"':"").concat(t?' rel="'.concat(t,'"'):"",' href="').concat(e,'" >').concat(e,"</a>");if(a.$el[0].getAttribute("plainpaste")){var t=e;if("string"==typeof t)return t.replace(/(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[-A-Z0-9+&@#\/%=~_|$?!:,.])*(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[A-Z0-9+&@#\/%=~_|$])/gim,l).replace(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)/gim,l)}})}}}}); //# sourceMappingURL=url.min.min.js.map