Socket
Socket
Sign inDemoInstall

medium-editor

Package Overview
Dependencies
Maintainers
3
Versions
125
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

medium-editor - npm Package Compare versions

Comparing version 4.0.3 to 4.1.0

.jshintrc

2

bower.json
{
"name": "medium-editor",
"version": "4.0.3",
"version": "4.1.0",
"homepage": "http://daviferreira.github.io/medium-editor/",

@@ -5,0 +5,0 @@ "authors": [

@@ -0,1 +1,9 @@

4.1.0 / 2015-03-29
==================
* Expose Util and Selection methods externally via MediumEditor.util and MediumEditor.selection
* Expose MediumEditor.version for version info
* Add support for custom cleaning of attributes and tags for .pasteHTML
* Move from jslint to jshint
4.0.3 / 2015-03-27

@@ -2,0 +10,0 @@ ==================

@@ -1,2 +0,2 @@

"classList"in document.createElement("_")||!function(a){"use strict";if("Element"in a){var b="classList",c="prototype",d=a.Element[c],e=Object,f=String[c].trim||function(){return this.replace(/^\s+|\s+$/g,"")},g=Array[c].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1},h=function(a,b){this.name=a,this.code=DOMException[a],this.message=b},i=function(a,b){if(""===b)throw new h("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(b))throw new h("INVALID_CHARACTER_ERR","String contains an invalid character");return g.call(a,b)},j=function(a){for(var b=f.call(a.getAttribute("class")||""),c=b?b.split(/\s+/):[],d=0,e=c.length;e>d;d++)this.push(c[d]);this._updateClassName=function(){a.setAttribute("class",this.toString())}},k=j[c]=[],l=function(){return new j(this)};if(h[c]=Error[c],k.item=function(a){return this[a]||null},k.contains=function(a){return a+="",-1!==i(this,a)},k.add=function(){var a,b=arguments,c=0,d=b.length,e=!1;do a=b[c]+"",-1===i(this,a)&&(this.push(a),e=!0);while(++c<d);e&&this._updateClassName()},k.remove=function(){var a,b,c=arguments,d=0,e=c.length,f=!1;do for(a=c[d]+"",b=i(this,a);-1!==b;)this.splice(b,1),f=!0,b=i(this,a);while(++d<e);f&&this._updateClassName()},k.toggle=function(a,b){a+="";var c=this.contains(a),d=c?b!==!0&&"remove":b!==!1&&"add";return d&&this[d](a),b===!0||b===!1?b:!c},k.toString=function(){return this.join(" ")},e.defineProperty){var m={get:l,enumerable:!0,configurable:!0};try{e.defineProperty(d,b,m)}catch(n){-2146823252===n.number&&(m.enumerable=!1,e.defineProperty(d,b,m))}}else e[c].__defineGetter__&&d.__defineGetter__(b,l)}}(self),function(a){"use strict";if(a.URL=a.URL||a.webkitURL,a.Blob&&a.URL)try{return void new Blob}catch(b){}var c=a.BlobBuilder||a.WebKitBlobBuilder||a.MozBlobBuilder||function(a){var b=function(a){return Object.prototype.toString.call(a).match(/^\[object\s(.*)\]$/)[1]},c=function(){this.data=[]},d=function(a,b,c){this.data=a,this.size=a.length,this.type=b,this.encoding=c},e=c.prototype,f=d.prototype,g=a.FileReaderSync,h=function(a){this.code=this[this.name=a]},i="NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR".split(" "),j=i.length,k=a.URL||a.webkitURL||a,l=k.createObjectURL,m=k.revokeObjectURL,n=k,o=a.btoa,p=a.atob,q=a.ArrayBuffer,r=a.Uint8Array,s=/^[\w-]+:\/*\[?[\w\.:-]+\]?(?::[0-9]+)?/;for(d.fake=f.fake=!0;j--;)h.prototype[i[j]]=j+1;return k.createObjectURL||(n=a.URL=function(a){var b,c=document.createElementNS("http://www.w3.org/1999/xhtml","a");return c.href=a,"origin"in c||("data:"===c.protocol.toLowerCase()?c.origin=null:(b=a.match(s),c.origin=b&&b[1])),c}),n.createObjectURL=function(a){var b,c=a.type;return null===c&&(c="application/octet-stream"),a instanceof d?(b="data:"+c,"base64"===a.encoding?b+";base64,"+a.data:"URI"===a.encoding?b+","+decodeURIComponent(a.data):o?b+";base64,"+o(a.data):b+","+encodeURIComponent(a.data)):l?l.call(k,a):void 0},n.revokeObjectURL=function(a){"data:"!==a.substring(0,5)&&m&&m.call(k,a)},e.append=function(a){var c=this.data;if(r&&(a instanceof q||a instanceof r)){for(var e="",f=new r(a),i=0,j=f.length;j>i;i++)e+=String.fromCharCode(f[i]);c.push(e)}else if("Blob"===b(a)||"File"===b(a)){if(!g)throw new h("NOT_READABLE_ERR");var k=new g;c.push(k.readAsBinaryString(a))}else a instanceof d?"base64"===a.encoding&&p?c.push(p(a.data)):"URI"===a.encoding?c.push(decodeURIComponent(a.data)):"raw"===a.encoding&&c.push(a.data):("string"!=typeof a&&(a+=""),c.push(unescape(encodeURIComponent(a))))},e.getBlob=function(a){return arguments.length||(a=null),new d(this.data.join(""),a,"raw")},e.toString=function(){return"[object BlobBuilder]"},f.slice=function(a,b,c){var e=arguments.length;return 3>e&&(c=null),new d(this.data.slice(a,e>1?b:this.data.length),c,this.encoding)},f.toString=function(){return"[object Blob]"},f.close=function(){this.size=0,delete this.data},c}(a);a.Blob=function(a,b){var d=b?b.type||"":"",e=new c;if(a)for(var f=0,g=a.length;g>f;f++)e.append(Uint8Array&&a[f]instanceof Uint8Array?a[f].buffer:a[f]);var h=e.getBlob(d);return!h.slice&&h.webkitSlice&&(h.slice=h.webkitSlice),h};var d=Object.getPrototypeOf||function(a){return a.__proto__};a.Blob.prototype=d(new a.Blob)}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content||this),function(a,b){"use strict";"object"==typeof module?module.exports=b:"function"==typeof define&&define.amd?define(function(){return b}):a.MediumEditor=b}(this,function(){"use strict";function a(a,b){return this.init(a,b)}var b;!function(a){function c(a,b,c){var d;a=a||{};for(d in b)b.hasOwnProperty(d)&&(c||a.hasOwnProperty(d)===!1)&&(a[d]=b[d]);return a}b={isIE:"Microsoft Internet Explorer"===navigator.appName||"Netscape"===navigator.appName&&null!==new RegExp("Trident/.*rv:([0-9]{1,}[.0-9]{0,})").exec(navigator.userAgent),keyCode:{BACKSPACE:8,TAB:9,ENTER:13,ESCAPE:27,SPACE:32,DELETE:46},parentElements:["p","h1","h2","h3","h4","h5","h6","blockquote","pre"],defaults:function(a,b){return c(a,b)},derives:function(a,b){function d(){}var e=b.prototype;return d.prototype=a.prototype,b.prototype=new d,b.prototype.constructor=a,b.prototype=c(b.prototype,e),b},findAdjacentTextNodeWithContent:function(a,b,c){var d,e=!1,f=c.createNodeIterator(a,NodeFilter.SHOW_TEXT,null,!1);for(d=f.nextNode();d;){if(d===b)e=!0;else if(e&&3===d.nodeType&&d.nodeValue&&d.nodeValue.trim().length>0)break;d=f.nextNode()}return d},isDescendant:function(a,b){if(!a||!b)return!1;for(var c=b.parentNode;null!==c;){if(c===a)return!0;c=c.parentNode}return!1},isElement:function(a){return!(!a||1!==a.nodeType)},now:Date.now,throttle:function(a,c){var d,e,f,g=50,h=null,i=0,j=function(){i=b.now(),h=null,f=a.apply(d,e),h||(d=e=null)};return c||0===c||(c=g),function(){var g=b.now(),k=c-(g-i);return d=this,e=arguments,0>=k||k>c?(h&&(clearTimeout(h),h=null),i=g,f=a.apply(d,e),h||(d=e=null)):h||(h=setTimeout(j,k)),f}},traverseUp:function(a,b){do{if(1===a.nodeType){if(b(a))return a;if(a.getAttribute("data-medium-element"))return!1}a=a.parentNode}while(a);return!1},htmlEntities:function(a){return String(a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")},insertHTMLCommand:function(a,b){var c,d,e,f,g,h,i;if(a.queryCommandSupported("insertHTML"))try{return a.execCommand("insertHTML",!1,b)}catch(j){}if(c=a.defaultView.getSelection(),c.getRangeAt&&c.rangeCount){if(d=c.getRangeAt(0),i=d.commonAncestorContainer,3===i.nodeType&&i.nodeValue===d.toString()||3!==i.nodeType&&i.innerHTML===d.toString()){for(;i.parentNode&&1===i.parentNode.childNodes.length&&!i.parentNode.getAttribute("data-medium-element");)i=i.parentNode;d.selectNode(i)}for(d.deleteContents(),e=a.createElement("div"),e.innerHTML=b,f=a.createDocumentFragment();e.firstChild;)g=e.firstChild,h=f.appendChild(g);d.insertNode(f),h&&(d=d.cloneRange(),d.setStartAfter(h),d.collapse(!0),c.removeAllRanges(),c.addRange(d))}},getSelectionRange:function(a){var b=a.getSelection();return 0===b.rangeCount?null:b.getRangeAt(0)},getSelectionStart:function(a){var b=a.getSelection().anchorNode,c=b&&3===b.nodeType?b.parentNode:b;return c},getSelectionData:function(a){var b;for(a&&a.tagName&&(b=a.tagName.toLowerCase());a&&-1===this.parentElements.indexOf(b);)a=a.parentNode,a&&a.tagName&&(b=a.tagName.toLowerCase());return{el:a,tagName:b}},execFormatBlock:function(a,b){var c=this.getSelectionData(this.getSelectionStart(a));if("blockquote"===b&&c.el&&"blockquote"===c.el.parentNode.tagName.toLowerCase())return a.execCommand("outdent",!1,null);if(c.tagName===b&&(b="p"),this.isIE){if("blockquote"===b)return a.execCommand("indent",!1,b);b="<"+b+">"}return a.execCommand("formatBlock",!1,b)},setTargetBlank:function(a){var b;if("a"===a.tagName.toLowerCase())a.target="_blank";else for(a=a.getElementsByTagName("a"),b=0;b<a.length;b+=1)a[b].target="_blank"},addClassToAnchors:function(a,b){var c,d,e=b.split(" ");if("a"===a.tagName.toLowerCase())for(d=0;d<e.length;d+=1)a.classList.add(e[d]);else for(a=a.getElementsByTagName("a"),c=0;c<a.length;c+=1)for(d=0;d<e.length;d+=1)a[c].classList.add(e[d])},isListItem:function(a){if(!a)return!1;if("li"===a.tagName.toLowerCase())return!0;for(var b=a.parentNode,c=b.tagName.toLowerCase();-1===this.parentElements.indexOf(c)&&"div"!==c;){if("li"===c)return!0;if(b=b.parentNode,!b||!b.tagName)return!1;c=b.tagName.toLowerCase()}return!1},cleanListDOM:function(a){if("li"===a.tagName.toLowerCase()){var b=a.parentElement;"p"===b.parentElement.tagName.toLowerCase()&&this.unwrapElement(b.parentElement)}},unwrapElement:function(a){var b,c=a.parentNode,d=a.firstChild;do b=d.nextSibling,c.insertBefore(d,a),d=b;while(d);c.removeChild(a)},deprecatedMethod:function(b,c,d){void 0!==a.console&&console.warn(b+" is deprecated and will be removed, please use "+c+" instead"),"function"==typeof this[c]&&this[c].apply(this,d)}}}(window,document);var c;!function(a){c={findMatchingSelectionParent:function(a,c){var d,e,f=c.getSelection();return 0===f.rangeCount?!1:(d=f.getRangeAt(0),e=d.commonAncestorContainer,b.traverseUp(e,a))},getSelectionElement:function(a){return this.findMatchingSelectionParent(function(a){return a.getAttribute("data-medium-element")},a)},selectionInContentEditableFalse:function(a){return this.findMatchingSelectionParent(function(a){return a&&"#text"!==a.nodeName&&"false"===a.getAttribute("contenteditable")},a)},getSelectionHtml:function(){var a,b,c,d="",e=this.options.contentWindow.getSelection();if(e.rangeCount){for(c=this.options.ownerDocument.createElement("div"),a=0,b=e.rangeCount;b>a;a+=1)c.appendChild(e.getRangeAt(a).cloneContents());d=c.innerHTML}return d},getCaretOffsets:function(b,c){var d,e;return c||(c=a.getSelection().getRangeAt(0)),d=c.cloneRange(),e=c.cloneRange(),d.selectNodeContents(b),d.setEnd(c.endContainer,c.endOffset),e.selectNodeContents(b),e.setStart(c.endContainer,c.endOffset),{left:d.toString().length,right:e.toString().length}},rangeSelectsSingleNode:function(a){var b=a.startContainer;return b===a.endContainer&&b.hasChildNodes()&&a.endOffset===a.startOffset+1},getSelectedParentElement:function(a){var b=null;return b=this.rangeSelectsSingleNode(a)&&3!==a.startContainer.childNodes[a.startOffset].nodeType?a.startContainer.childNodes[a.startOffset]:3===a.startContainer.nodeType?a.startContainer.parentNode:a.startContainer}}}(document,window);var d;!function(){d=function(a){this.base=a,this.options=this.base.options,this.events=[],this.customEvents={},this.listeners={}},d.prototype={attachDOMEvent:function(a,b,c,d){a.addEventListener(b,c,d),this.events.push([a,b,c,d])},detachDOMEvent:function(a,b,c,d){var e,f=this.indexOfListener(a,b,c,d);-1!==f&&(e=this.events.splice(f,1)[0],e[0].removeEventListener(e[1],e[2],e[3]))},indexOfListener:function(a,b,c,d){var e,f,g;for(e=0,f=this.events.length;f>e;e+=1)if(g=this.events[e],g[0]===a&&g[1]===b&&g[2]===c&&g[3]===d)return e;return-1},detachAllDOMEvents:function(){for(var a=this.events.pop();a;)a[0].removeEventListener(a[1],a[2],a[3]),a=this.events.pop()},attachCustomEvent:function(a,b){this.setupListener(a),this.listeners[a]&&(this.customEvents[a]||(this.customEvents[a]=[]),this.customEvents[a].push(b))},triggerCustomEvent:function(a,b,c){this.customEvents[a]&&this.customEvents[a].forEach(function(a){a(b,c)})},setupListener:function(a){if(!this.listeners[a])switch(a){case"externalInteraction":this.attachDOMEvent(this.options.ownerDocument.body,"click",this.handleInteraction.bind(this),!0),this.attachDOMEvent(this.options.ownerDocument.body,"focus",this.handleInteraction.bind(this),!0),this.listeners[a]=!0;break;case"editableClick":this.base.elements.forEach(function(a){this.attachDOMEvent(a,"click",this.handleClick.bind(this))}.bind(this)),this.listeners[a]=!0;break;case"editableBlur":this.base.elements.forEach(function(a){this.attachDOMEvent(a,"blur",this.handleBlur.bind(this))}.bind(this)),this.listeners[a]=!0;break;case"editableKeypress":this.base.elements.forEach(function(a){this.attachDOMEvent(a,"keypress",this.handleKeypress.bind(this))}.bind(this)),this.listeners[a]=!0;break;case"editableKeydown":this.base.elements.forEach(function(a){this.attachDOMEvent(a,"keydown",this.handleKeydown.bind(this))}.bind(this)),this.listeners[a]=!0;break;case"editableKeydownEnter":this.setupListener("editableKeydown"),this.listeners[a]=!0;break;case"editableKeydownTab":this.setupListener("editableKeydown"),this.listeners[a]=!0;break;case"editableKeydownDelete":this.setupListener("editableKeydown"),this.listeners[a]=!0;break;case"editableMouseover":this.base.elements.forEach(function(a){this.attachDOMEvent(a,"mouseover",this.handleMouseover.bind(this))}.bind(this)),this.listeners[a]=!0;break;case"editableDrag":this.base.elements.forEach(function(a){this.attachDOMEvent(a,"dragover",this.handleDragging.bind(this)),this.attachDOMEvent(a,"dragleave",this.handleDragging.bind(this))}.bind(this)),this.listeners[a]=!0;break;case"editableDrop":this.base.elements.forEach(function(a){this.attachDOMEvent(a,"drop",this.handleDrop.bind(this))}.bind(this)),this.listeners[a]=!0;break;case"editablePaste":this.base.elements.forEach(function(a){this.attachDOMEvent(a,"paste",this.handlePaste.bind(this))}.bind(this)),this.listeners[a]=!0}},handleInteraction:function(a){var d,e=!1,f=this.options.contentWindow.getSelection(),g=this.base.toolbar?this.base.toolbar.getToolbarElement():null,h=this.base.getExtensionByName("anchor-preview"),i=h&&h.getPreviewElement?h.getPreviewElement():null,j=f.isCollapsed?null:c.getSelectedParentElement(f.getRangeAt(0));for(d=0;d<this.base.elements.length;d+=1)if(this.base.elements[d]===a.target||b.isDescendant(this.base.elements[d],a.target)||b.isDescendant(this.base.elements[d],j)){e=!0;break}e||g&&(g===a.target||b.isDescendant(g,a.target))||i&&(i===a.target||b.isDescendant(i,a.target))||this.triggerCustomEvent("externalInteraction",a)},handleClick:function(a){this.triggerCustomEvent("editableClick",a,a.currentTarget)},handleBlur:function(a){this.triggerCustomEvent("editableBlur",a,a.currentTarget)},handleKeypress:function(a){this.triggerCustomEvent("editableKeypress",a,a.currentTarget)},handleMouseover:function(a){this.triggerCustomEvent("editableMouseover",a,a.currentTarget)},handleDragging:function(a){this.triggerCustomEvent("editableDrag",a,a.currentTarget)},handleDrop:function(a){this.triggerCustomEvent("editableDrop",a,a.currentTarget)},handlePaste:function(a){this.triggerCustomEvent("editablePaste",a,a.currentTarget)},handleKeydown:function(a){switch(this.triggerCustomEvent("editableKeydown",a,a.currentTarget),a.which){case b.keyCode.ENTER:this.triggerCustomEvent("editableKeydownEnter",a,a.currentTarget);break;case b.keyCode.TAB:this.triggerCustomEvent("editableKeydownTab",a,a.currentTarget);break;case b.keyCode.DELETE:case b.keyCode.BACKSPACE:this.triggerCustomEvent("editableKeydownDelete",a,a.currentTarget)}}}}(window,document);var e,f;!function(){f={bold:{name:"bold",action:"bold",aria:"bold",tagNames:["b","strong"],style:{prop:"font-weight",value:"700|bold"},useQueryState:!0,contentDefault:"<b>B</b>",contentFA:'<i class="fa fa-bold"></i>',key:"b"},italic:{name:"italic",action:"italic",aria:"italic",tagNames:["i","em"],style:{prop:"font-style",value:"italic"},useQueryState:!0,contentDefault:"<b><i>I</i></b>",contentFA:'<i class="fa fa-italic"></i>',key:"i"},underline:{name:"underline",action:"underline",aria:"underline",tagNames:["u"],style:{prop:"text-decoration",value:"underline"},useQueryState:!0,contentDefault:"<b><u>U</u></b>",contentFA:'<i class="fa fa-underline"></i>',key:"u"},strikethrough:{name:"strikethrough",action:"strikethrough",aria:"strike through",tagNames:["strike"],style:{prop:"text-decoration",value:"line-through"},useQueryState:!0,contentDefault:"<s>A</s>",contentFA:'<i class="fa fa-strikethrough"></i>'},superscript:{name:"superscript",action:"superscript",aria:"superscript",tagNames:["sup"],contentDefault:"<b>x<sup>1</sup></b>",contentFA:'<i class="fa fa-superscript"></i>'},subscript:{name:"subscript",action:"subscript",aria:"subscript",tagNames:["sub"],contentDefault:"<b>x<sub>1</sub></b>",contentFA:'<i class="fa fa-subscript"></i>'},image:{name:"image",action:"image",aria:"image",tagNames:["img"],contentDefault:"<b>image</b>",contentFA:'<i class="fa fa-picture-o"></i>'},quote:{name:"quote",action:"append-blockquote",aria:"blockquote",tagNames:["blockquote"],contentDefault:"<b>&ldquo;</b>",contentFA:'<i class="fa fa-quote-right"></i>'},orderedlist:{name:"orderedlist",action:"insertorderedlist",aria:"ordered list",tagNames:["ol"],useQueryState:!0,contentDefault:"<b>1.</b>",contentFA:'<i class="fa fa-list-ol"></i>'},unorderedlist:{name:"unorderedlist",action:"insertunorderedlist",aria:"unordered list",tagNames:["ul"],useQueryState:!0,contentDefault:"<b>&bull;</b>",contentFA:'<i class="fa fa-list-ul"></i>'},pre:{name:"pre",action:"append-pre",aria:"preformatted text",tagNames:["pre"],contentDefault:"<b>0101</b>",contentFA:'<i class="fa fa-code fa-lg"></i>'},indent:{name:"indent",action:"indent",aria:"indent",tagNames:[],contentDefault:"<b>&rarr;</b>",contentFA:'<i class="fa fa-indent"></i>'},outdent:{name:"outdent",action:"outdent",aria:"outdent",tagNames:[],contentDefault:"<b>&larr;</b>",contentFA:'<i class="fa fa-outdent"></i>'},justifyCenter:{name:"justifyCenter",action:"justifyCenter",aria:"center justify",tagNames:[],style:{prop:"text-align",value:"center"},useQueryState:!0,contentDefault:"<b>C</b>",contentFA:'<i class="fa fa-align-center"></i>'},justifyFull:{name:"justifyFull",action:"justifyFull",aria:"full justify",tagNames:[],style:{prop:"text-align",value:"justify"},useQueryState:!0,contentDefault:"<b>J</b>",contentFA:'<i class="fa fa-align-justify"></i>'},justifyLeft:{name:"justifyLeft",action:"justifyLeft",aria:"left justify",tagNames:[],style:{prop:"text-align",value:"left"},useQueryState:!0,contentDefault:"<b>L</b>",contentFA:'<i class="fa fa-align-left"></i>'},justifyRight:{name:"justifyRight",action:"justifyRight",aria:"right justify",tagNames:[],style:{prop:"text-align",value:"right"},useQueryState:!0,contentDefault:"<b>R</b>",contentFA:'<i class="fa fa-align-right"></i>'},header1:{name:"header1",action:function(a){return"append-"+a.firstHeader},aria:function(a){return a.firstHeader},tagNames:function(a){return[a.firstHeader]},contentDefault:"<b>H1</b>"},header2:{name:"header2",action:function(a){return"append-"+a.secondHeader},aria:function(a){return a.secondHeader},tagNames:function(a){return[a.secondHeader]},contentDefault:"<b>H2</b>"},removeFormat:{name:"removeFormat",aria:"remove formatting",action:"removeFormat",contentDefault:"<b>X</b>",contentFA:'<i class="fa fa-eraser"></i>'}},e=function(a,b){this.options=a,this.name=a.name,this.init(b)},e.prototype={init:function(a){this.base=a,this.button=this.createButton(),this.base.on(this.button,"click",this.handleClick.bind(this)),this.options.key&&this.base.subscribe("editableKeydown",this.handleKeydown.bind(this))},getButton:function(){return this.button},getAction:function(){return"function"==typeof this.options.action?this.options.action(this.base.options):this.options.action},getAria:function(){return"function"==typeof this.options.aria?this.options.aria(this.base.options):this.options.aria},getTagNames:function(){return"function"==typeof this.options.tagNames?this.options.tagNames(this.base.options):this.options.tagNames},createButton:function(){var a=this.base.options.ownerDocument.createElement("button"),b=this.options.contentDefault;return a.classList.add("medium-editor-action"),a.classList.add("medium-editor-action-"+this.name),a.setAttribute("data-action",this.getAction()),a.setAttribute("aria-label",this.getAria()),this.base.options.buttonLabels&&("fontawesome"===this.base.options.buttonLabels&&this.options.contentFA?b=this.options.contentFA:"object"==typeof this.base.options.buttonLabels&&this.base.options.buttonLabels[this.name]&&(b=this.base.options.buttonLabels[this.options.name])),a.innerHTML=b,a},handleKeydown:function(a){var b,c;(a.ctrlKey||a.metaKey)&&(b=String.fromCharCode(a.which||a.keyCode).toLowerCase(),this.options.key===b&&(a.preventDefault(),a.stopPropagation(),c=this.getAction(),c&&this.base.execAction(c)))},handleClick:function(a){a.preventDefault(),a.stopPropagation();var b=this.getAction();b&&this.base.execAction(b)},isActive:function(){return this.button.classList.contains(this.base.options.activeButtonClass)},setInactive:function(){this.button.classList.remove(this.base.options.activeButtonClass),delete this.knownState},setActive:function(){this.button.classList.add(this.base.options.activeButtonClass),delete this.knownState},queryCommandState:function(){var a=null;return this.options.useQueryState&&(a=this.base.queryCommandState(this.getAction())),a},isAlreadyApplied:function(a){var b,c,d=!1,e=this.getTagNames();return this.knownState===!1||this.knownState===!0?this.knownState:(e&&e.length>0&&a.tagName&&(d=-1!==e.indexOf(a.tagName.toLowerCase())),!d&&this.options.style&&(b=this.options.style.value.split("|"),c=this.base.options.contentWindow.getComputedStyle(a,null).getPropertyValue(this.options.style.prop),b.forEach(function(a){this.knownState||(d=-1!==c.indexOf(a),(d||"text-decoration"!==this.options.style.prop)&&(this.knownState=d))}.bind(this))),d)}}}(window,document);var g;!function(){function a(){return[[new RegExp(/<[^>]*docs-internal-guid[^>]*>/gi),""],[new RegExp(/<\/b>(<br[^>]*>)?$/gi),""],[new RegExp(/<span class="Apple-converted-space">\s+<\/span>/g)," "],[new RegExp(/<br class="Apple-interchange-newline">/g),"<br>"],[new RegExp(/<span[^>]*(font-style:italic;font-weight:bold|font-weight:bold;font-style:italic)[^>]*>/gi),'<span class="replace-with italic bold">'],[new RegExp(/<span[^>]*font-style:italic[^>]*>/gi),'<span class="replace-with italic">'],[new RegExp(/<span[^>]*font-weight:bold[^>]*>/gi),'<span class="replace-with bold">'],[new RegExp(/&lt;(\/?)(i|b|a)&gt;/gi),"<$1$2>"],[new RegExp(/&lt;a\s+href=(&quot;|&rdquo;|&ldquo;|“|”)([^&]+)(&quot;|&rdquo;|&ldquo;|“|”)&gt;/gi),'<a href="$2">'],[new RegExp(/<\/p>\n+/gi),"</p>"],[new RegExp(/\n+<p/gi),"<p"],[new RegExp(/<\/?o:[a-z]*>/gi),""]]}g=function(a){this.base=a,this.options=this.base.options,(this.options.forcePlainText||this.options.cleanPastedHTML)&&this.base.subscribe("editablePaste",this.handlePaste.bind(this))},g.prototype={handlePaste:function(a,c){var d,e,f="",g="text/html",h="text/plain";if(this.options.contentWindow.clipboardData&&void 0===a.clipboardData&&(a.clipboardData=this.options.contentWindow.clipboardData,g="Text",h="Text"),a.clipboardData&&a.clipboardData.getData&&!a.defaultPrevented){if(a.preventDefault(),this.options.cleanPastedHTML&&a.clipboardData.getData(g))return this.cleanPaste(a.clipboardData.getData(g));if(this.options.disableReturn||c.getAttribute("data-disable-return"))f=b.htmlEntities(a.clipboardData.getData(h)),b.insertHTMLCommand(this.options.ownerDocument,f);else{for(d=a.clipboardData.getData(h).split(/[\r\n]/g),e=0;e<d.length;e+=1)""!==d[e]&&(f+="<p>"+b.htmlEntities(d[e])+"</p>");b.insertHTMLCommand(this.options.ownerDocument,f)}}},cleanPaste:function(d){var e,f,g,h=c.getSelectionElement(this.options.contentWindow),i=/<p|<br|<div/.test(d),j=a();for(e=0;e<j.length;e+=1)d=d.replace(j[e][0],j[e][1]);if(i){f=d.split("<br><br>"),this.pasteHTML("<p>"+f.join("</p><p>")+"</p>");try{this.options.ownerDocument.execCommand("insertText",!1,"\n")}catch(k){}for(f=h.querySelectorAll("a,p,div,br"),e=0;e<f.length;e+=1)switch(g=f[e],g.innerHTML=g.innerHTML.replace(/\n/gi," "),g.tagName.toLowerCase()){case"a":this.options.targetBlank&&b.setTargetBlank(g);break;case"p":case"div":this.filterCommonBlocks(g);break;case"br":this.filterLineBreak(g)}}else this.pasteHTML(d)},pasteHTML:function(a){var c,d,e,f,g=this.options.ownerDocument.createDocumentFragment();for(g.appendChild(this.options.ownerDocument.createElement("body")),f=g.querySelector("body"),f.innerHTML=a,this.cleanupSpans(f),c=f.querySelectorAll("*"),e=0;e<c.length;e+=1)d=c[e],d.removeAttribute("class"),d.removeAttribute("style"),d.removeAttribute("dir"),"meta"===d.tagName.toLowerCase()&&d.parentNode.removeChild(d);b.insertHTMLCommand(this.options.ownerDocument,f.innerHTML.replace(/&nbsp;/g," "))},isCommonBlock:function(a){return a&&("p"===a.tagName.toLowerCase()||"div"===a.tagName.toLowerCase())},filterCommonBlocks:function(a){/^\s*$/.test(a.textContent)&&a.parentNode&&a.parentNode.removeChild(a)},filterLineBreak:function(a){this.isCommonBlock(a.previousElementSibling)?this.removeWithParent(a):!this.isCommonBlock(a.parentNode)||a.parentNode.firstChild!==a&&a.parentNode.lastChild!==a?a.parentNode&&1===a.parentNode.childElementCount&&""===a.parentNode.textContent&&this.removeWithParent(a):this.removeWithParent(a)},removeWithParent:function(a){a&&a.parentNode&&(a.parentNode.parentNode&&1===a.parentNode.childElementCount?a.parentNode.parentNode.removeChild(a.parentNode):a.parentNode.removeChild(a))},cleanupSpans:function(a){var c,d,e,f=a.querySelectorAll(".replace-with"),g=function(a){return a&&"#text"!==a.nodeName&&"false"===a.getAttribute("contenteditable")};for(c=0;c<f.length;c+=1)d=f[c],e=this.options.ownerDocument.createElement(d.classList.contains("bold")?"b":"i"),e.innerHTML=d.classList.contains("bold")&&d.classList.contains("italic")?"<i>"+d.innerHTML+"</i>":d.innerHTML,d.parentNode.replaceChild(e,d);for(f=a.querySelectorAll("span"),c=0;c<f.length;c+=1){if(d=f[c],b.traverseUp(d,g))return!1;/^\s*$/.test()?d.parentNode.removeChild(d):d.parentNode.replaceChild(this.options.ownerDocument.createTextNode(d.textContent),d)}}}}(window,document);var h;!function(){function a(){this.parent=!0,this.options={name:"anchor",action:"createLink",aria:"link",tagNames:["a"],contentDefault:"<b>#</b>",contentFA:'<i class="fa fa-link"></i>'},this.name="anchor",this.hasForm=!0}a.prototype={formSaveLabel:"&#10003;",formCloseLabel:"&times;",handleClick:function(a){a.preventDefault(),a.stopPropagation();var d=c.getSelectedParentElement(b.getSelectionRange(this.base.options.ownerDocument));return d.tagName&&"a"===d.tagName.toLowerCase()?this.base.execAction("unlink"):(this.isDisplayed()||this.showForm(),!1)},getForm:function(){return this.form||(this.form=this.createForm()),this.form},getTemplate:function(){var a=['<input type="text" class="medium-editor-toolbar-input" placeholder="',this.base.options.anchorInputPlaceholder,'">'];return a.push('<a href="#" class="medium-editor-toolbar-save">',"fontawesome"===this.base.options.buttonLabels?'<i class="fa fa-check"></i>':this.formSaveLabel,"</a>"),a.push('<a href="#" class="medium-editor-toolbar-close">',"fontawesome"===this.base.options.buttonLabels?'<i class="fa fa-times"></i>':this.formCloseLabel,"</a>"),this.base.options.anchorTarget&&a.push('<input type="checkbox" class="medium-editor-toolbar-anchor-target">',"<label>",this.base.options.anchorInputCheckboxLabel,"</label>"),this.base.options.anchorButton&&a.push('<input type="checkbox" class="medium-editor-toolbar-anchor-button">',"<label>Button</label>"),a.join("")},isDisplayed:function(){return"block"===this.getForm().style.display},hideForm:function(){this.getForm().style.display="none",this.getInput().value=""},showForm:function(a){var b=this.getInput();this.base.saveSelection(),this.base.hideToolbarDefaultActions(),this.getForm().style.display="block",this.base.setToolbarPosition(),b.value=a||"",b.focus()},deactivate:function(){return this.form?(this.form.parentNode&&this.form.parentNode.removeChild(this.form),void delete this.form):!1},getFormOpts:function(){var a=this.getForm().querySelector(".medium-editor-toolbar-anchor-target"),b=this.getForm().querySelector(".medium-editor-toolbar-anchor-button"),c={url:this.getInput().value};return this.base.options.checkLinkFormat&&(c.url=this.checkLinkFormat(c.url)),c.target=a&&a.checked?"_blank":"_self",b&&b.checked&&(c.buttonClass=this.base.options.anchorButtonClass),c},doFormSave:function(){var a=this.getFormOpts();this.completeFormSave(a)},completeFormSave:function(a){this.base.restoreSelection(),this.base.createLink(a),this.base.checkSelection()},checkLinkFormat:function(a){var b=/^(https?|ftps?|rtmpt?):\/\/|mailto:/;return(b.test(a)?"":"http://")+a},doFormCancel:function(){this.base.restoreSelection(),this.base.checkSelection()},attachFormEvents:function(a){var b=a.querySelector(".medium-editor-toolbar-close"),c=a.querySelector(".medium-editor-toolbar-save"),d=a.querySelector(".medium-editor-toolbar-input");this.base.on(a,"click",this.handleFormClick.bind(this)),this.base.on(d,"keyup",this.handleTextboxKeyup.bind(this)),this.base.on(b,"click",this.handleCloseClick.bind(this)),this.base.on(c,"click",this.handleSaveClick.bind(this),!0)},createForm:function(){var a=this.base.options.ownerDocument,b=a.createElement("div");return b.className="medium-editor-toolbar-form",b.id="medium-editor-toolbar-form-anchor-"+this.base.id,b.innerHTML=this.getTemplate(),this.attachFormEvents(b),b},getInput:function(){return this.getForm().querySelector("input.medium-editor-toolbar-input")},handleTextboxKeyup:function(a){return a.keyCode===b.keyCode.ENTER?(a.preventDefault(),void this.doFormSave()):void(a.keyCode===b.keyCode.ESCAPE&&(a.preventDefault(),this.doFormCancel()))},handleFormClick:function(a){a.stopPropagation()},handleSaveClick:function(a){a.preventDefault(),this.doFormSave()},handleCloseClick:function(a){a.preventDefault(),this.doFormCancel()}},h=b.derives(e,a)}(window,document);var i;!function(){i=function(){this.parent=!0,this.name="anchor-preview"},i.prototype={previewValueSelector:"i",init:function(a){this.base=a,this.anchorPreview=this.createPreview(),this.base.options.elementsContainer.appendChild(this.anchorPreview),this.attachToEditables()},getPreviewElement:function(){return this.anchorPreview},createPreview:function(){var a=this.base.options.ownerDocument.createElement("div");return a.id="medium-editor-anchor-preview-"+this.base.id,a.className="medium-editor-anchor-preview",a.innerHTML=this.getTemplate(),this.base.on(a,"click",this.handleClick.bind(this)),a},getTemplate:function(){return'<div class="medium-editor-toolbar-anchor-preview" id="medium-editor-toolbar-anchor-preview"> <i class="medium-editor-toolbar-anchor-preview-inner"></i></div>'},deactivate:function(){this.anchorPreview&&(this.anchorPreview.parentNode&&this.anchorPreview.parentNode.removeChild(this.anchorPreview),delete this.anchorPreview)},hidePreview:function(){this.anchorPreview.classList.remove("medium-editor-anchor-preview-active"),this.activeAnchor=null},showPreview:function(a){return this.anchorPreview.classList.contains("medium-editor-anchor-preview-active")||a.getAttribute("data-disable-preview")?!0:(this.previewValueSelector&&(this.anchorPreview.querySelector(this.previewValueSelector).textContent=a.attributes.href.value),this.anchorPreview.classList.add("medium-toolbar-arrow-over"),this.anchorPreview.classList.remove("medium-toolbar-arrow-under"),this.anchorPreview.classList.contains("medium-editor-anchor-preview-active")||this.anchorPreview.classList.add("medium-editor-anchor-preview-active"),this.activeAnchor=a,this.positionPreview(),this.attachPreviewHandlers(),this)},positionPreview:function(){var a,b,c=40,d=this.activeAnchor.getBoundingClientRect(),e=(d.left+d.right)/2;a=this.anchorPreview.offsetWidth/2,b=this.base.options.diffLeft-a,this.anchorPreview.style.top=Math.round(c+d.bottom-this.base.options.diffTop+this.base.options.contentWindow.pageYOffset-this.anchorPreview.offsetHeight)+"px",this.anchorPreview.style.left=a>e?b+a+"px":this.base.options.contentWindow.innerWidth-e<a?this.base.options.contentWindow.innerWidth+b-a+"px":b+e+"px"},attachToEditables:function(){this.base.subscribe("editableMouseover",this.handleEditableMouseover.bind(this))},handleClick:function(){var a,b,c=this.base.getExtensionByName("anchor"),d=this.activeAnchor;c&&d&&(a=this.base.options.ownerDocument.createRange(),a.selectNodeContents(this.activeAnchor),b=this.base.options.contentWindow.getSelection(),b.removeAllRanges(),b.addRange(a),this.base.delay(function(){d&&(c.showForm(d.attributes.href.value),d=null)
}.bind(this))),this.hidePreview()},handleAnchorMouseout:function(){this.anchorToPreview=null,this.base.off(this.activeAnchor,"mouseout",this.instance_handleAnchorMouseout),this.instance_handleAnchorMouseout=null},handleEditableMouseover:function(a){if(a.target&&"a"===a.target.tagName.toLowerCase()){if(!/href=["']\S+["']/.test(a.target.outerHTML)||/href=["']#\S+["']/.test(a.target.outerHTML))return!0;if(this.base.toolbar&&this.base.toolbar.isDisplayed())return!0;this.activeAnchor&&this.activeAnchor!==a.target&&this.detachPreviewHandlers(),this.anchorToPreview=a.target,this.instance_handleAnchorMouseout=this.handleAnchorMouseout.bind(this),this.base.on(this.anchorToPreview,"mouseout",this.instance_handleAnchorMouseout),this.base.delay(function(){this.anchorToPreview&&this.showPreview(this.anchorToPreview)}.bind(this))}},handlePreviewMouseover:function(){this.lastOver=(new Date).getTime(),this.hovering=!0},handlePreviewMouseout:function(a){a.relatedTarget&&/anchor-preview/.test(a.relatedTarget.className)||(this.hovering=!1)},updatePreview:function(){if(this.hovering)return!0;var a=(new Date).getTime()-this.lastOver;a>this.base.options.anchorPreviewHideDelay&&this.detachPreviewHandlers()},detachPreviewHandlers:function(){clearInterval(this.interval_timer),this.instance_handlePreviewMouseover&&(this.base.off(this.anchorPreview,"mouseover",this.instance_handlePreviewMouseover),this.base.off(this.anchorPreview,"mouseout",this.instance_handlePreviewMouseout),this.activeAnchor&&(this.base.off(this.activeAnchor,"mouseover",this.instance_handlePreviewMouseover),this.base.off(this.activeAnchor,"mouseout",this.instance_handlePreviewMouseout))),this.hidePreview(),this.hovering=this.instance_handlePreviewMouseover=this.instance_handlePreviewMouseout=null},attachPreviewHandlers:function(){this.lastOver=(new Date).getTime(),this.hovering=!0,this.instance_handlePreviewMouseover=this.handlePreviewMouseover.bind(this),this.instance_handlePreviewMouseout=this.handlePreviewMouseout.bind(this),this.interval_timer=setInterval(this.updatePreview.bind(this),200),this.base.on(this.anchorPreview,"mouseover",this.instance_handlePreviewMouseover),this.base.on(this.anchorPreview,"mouseout",this.instance_handlePreviewMouseout),this.base.on(this.activeAnchor,"mouseover",this.instance_handlePreviewMouseover),this.base.on(this.activeAnchor,"mouseout",this.instance_handlePreviewMouseout)}}}(window,document);var j;!function(){j=function(a){this.base=a,this.options=a.options,this.initThrottledMethods()},j.prototype={createToolbar:function(){var a=this.base.options.ownerDocument.createElement("div");return a.id="medium-editor-toolbar-"+this.base.id,a.className="medium-editor-toolbar",a.className+=this.options.staticToolbar?" static-toolbar":" stalker-toolbar",a.appendChild(this.createToolbarButtons()),this.base.commands.forEach(function(b){b.hasForm&&a.appendChild(b.getForm())}),this.attachEventHandlers(),this.base.subscribe("externalInteraction",this.handleBlur.bind(this)),a},createToolbarButtons:function(){var a,c,d,e=this.base.options.ownerDocument.createElement("ul");return e.id="medium-editor-toolbar-actions"+this.base.id,e.className="medium-editor-toolbar-actions clearfix",e.style.display="block",this.base.commands.forEach(function(d){"function"==typeof d.getButton&&(c=d.getButton(this.base),a=this.base.options.ownerDocument.createElement("li"),b.isElement(c)?a.appendChild(c):a.innerHTML=c,e.appendChild(a))}.bind(this)),d=e.querySelectorAll("button"),d.length>0&&(d[0].classList.add(this.options.firstButtonClass),d[d.length-1].classList.add(this.options.lastButtonClass)),e},deactivate:function(){this.toolbar&&(this.toolbar.parentNode&&this.toolbar.parentNode.removeChild(this.toolbar),delete this.toolbar)},getToolbarElement:function(){return this.toolbar||(this.toolbar=this.createToolbar()),this.toolbar},getToolbarActionsElement:function(){return this.getToolbarElement().querySelector(".medium-editor-toolbar-actions")},initThrottledMethods:function(){this.throttledPositionToolbar=b.throttle(function(){this.base.isActive&&this.positionToolbarIfShown()}.bind(this))},attachEventHandlers:function(){this.base.on(this.options.ownerDocument.documentElement,"mousedown",this.handleDocumentMousedown.bind(this)),this.base.on(this.options.ownerDocument.documentElement,"mouseup",this.handleDocumentMouseup.bind(this)),this.options.staticToolbar&&this.options.stickyToolbar&&this.base.on(this.options.contentWindow,"scroll",this.handleWindowScroll.bind(this),!0),this.base.on(this.options.contentWindow,"resize",this.handleWindowResize.bind(this)),this.base.elements.forEach(function(a){this.base.on(a,"click",this.handleEditableClick.bind(this)),this.base.on(a,"keyup",this.handleEditableKeyup.bind(this)),this.base.on(a,"blur",this.handleEditableBlur.bind(this))}.bind(this))},handleWindowScroll:function(){this.positionToolbarIfShown()},handleWindowResize:function(){this.throttledPositionToolbar()},handleDocumentMousedown:function(a){this.lastMousedownTarget=a.target},handleDocumentMouseup:function(a){return this.lastMousedownTarget=null,a&&a.target&&b.isDescendant(this.getToolbarElement(),a.target)?!1:void this.checkState()},handleEditableClick:function(){setTimeout(function(){this.checkState()}.bind(this),0)},handleEditableKeyup:function(){this.checkState()},handleEditableBlur:function(a){var c=!1,d=a&&a.relatedTarget?a.relatedTarget:this.lastMousedownTarget;return b.isDescendant(this.getToolbarElement(),d)?!1:(d&&(this.base.elements.forEach(function(a){c=c||b.isDescendant(a,d)||d===a},this),c||this.options.contentWindow.getSelection().removeAllRanges()),void this.checkState())},handleBlur:function(){setTimeout(function(){this.hideToolbar()}.bind(this),0)},isDisplayed:function(){return this.getToolbarElement().classList.contains("medium-editor-toolbar-active")},showToolbar:function(){this.isDisplayed()||(this.getToolbarElement().classList.add("medium-editor-toolbar-active"),"function"==typeof this.options.onShowToolbar&&this.options.onShowToolbar())},hideToolbar:function(){this.isDisplayed()&&(this.base.commands.forEach(function(a){"function"==typeof a.onHide&&a.onHide()}),this.getToolbarElement().classList.remove("medium-editor-toolbar-active"),"function"==typeof this.options.onHideToolbar&&this.options.onHideToolbar())},isToolbarDefaultActionsDisplayed:function(){return"block"===this.getToolbarActionsElement().style.display},hideToolbarDefaultActions:function(){this.isToolbarDefaultActionsDisplayed()&&(this.getToolbarActionsElement().style.display="none")},showToolbarDefaultActions:function(){this.hideExtensionForms(),this.isToolbarDefaultActionsDisplayed()||(this.getToolbarActionsElement().style.display="block"),this.base.delay(function(){this.showToolbar()}.bind(this))},hideExtensionForms:function(){this.base.commands.forEach(function(a){a.hasForm&&a.isDisplayed()&&a.hideForm()})},multipleBlockElementsSelected:function(){var a=c.getSelectionHtml.call(this).replace(/<[\S]+><\/[\S]+>/gim,""),b=a.match(/<(p|h[1-6]|blockquote)[^>]*>/g);return!!b&&b.length>1},checkSelectionElement:function(a,d){var e,f,g,h=0,i=a.getRangeAt(0);if(this.options.standardizeSelectionStart&&i.startContainer.nodeValue&&i.startOffset===i.startContainer.nodeValue.length&&(f=b.findAdjacentTextNodeWithContent(c.getSelectionElement(this.options.contentWindow),i.startContainer,this.options.ownerDocument))){for(h=0;0===f.nodeValue.substr(h,1).trim().length;)h+=1;g=this.options.ownerDocument.createRange(),g.setStart(f,h),g.setEnd(i.endContainer,i.endOffset),a.removeAllRanges(),a.addRange(g),i=g}for(e=0;e<this.base.elements.length;e+=1)if(this.base.elements[e]===d)return void this.showAndUpdateToolbar();this.options.staticToolbar||this.hideToolbar()},checkState:function(){var a,b;this.base.preventSelectionUpdates||(a=this.options.contentWindow.getSelection(),!this.options.updateOnEmptySelection&&""===a.toString().trim()||this.options.allowMultiParagraphSelection===!1&&this.multipleBlockElementsSelected()||c.selectionInContentEditableFalse(this.options.contentWindow)?this.options.staticToolbar?this.showAndUpdateToolbar():this.hideToolbar():(b=c.getSelectionElement(this.options.contentWindow),!b||b.getAttribute("data-disable-toolbar")?this.options.staticToolbar||this.hideToolbar():this.checkSelectionElement(a,b)))},showAndUpdateToolbar:function(){this.setToolbarButtonStates(),this.showToolbarDefaultActions(),this.setToolbarPosition()},setToolbarButtonStates:function(){this.base.commands.forEach(function(a){"function"==typeof a.isActive&&a.setInactive()}.bind(this)),this.checkActiveButtons()},checkActiveButtons:function(){var a,d=[],e=null,f=b.getSelectionRange(this.options.ownerDocument),g=function(b){"function"==typeof b.checkState?b.checkState(a):"function"==typeof b.isActive&&"function"==typeof b.isAlreadyApplied&&!b.isActive()&&b.isAlreadyApplied(a)&&b.setActive()};if(f)for(a=c.getSelectedParentElement(f),this.base.commands.forEach(function(a){return"function"==typeof a.queryCommandState&&(e=a.queryCommandState(),null!==e)?void(e&&a.setActive()):void d.push(a)});void 0!==a.tagName&&-1===b.parentElements.indexOf(a.tagName.toLowerCase)&&(d.forEach(g),-1===this.base.elements.indexOf(a));)a=a.parentNode},positionToolbarIfShown:function(){this.isDisplayed()&&this.setToolbarPosition()},setToolbarPosition:function(){var a,b=c.getSelectionElement(this.options.contentWindow),d=this.options.contentWindow.getSelection();return b&&this.options.contentWindow.getSelection().focusNode?-1===this.base.elements.indexOf(b)?this:(this.options.staticToolbar?(this.showToolbar(),this.positionStaticToolbar(b)):d.isCollapsed||(this.showToolbar(),this.positionToolbar(d)),a=this.base.getExtensionByName("anchor-preview"),void(a&&"function"==typeof a.hidePreview&&a.hidePreview())):this},positionStaticToolbar:function(a){this.getToolbarElement().style.left="0";var b,c=this.options.ownerDocument.documentElement&&this.options.ownerDocument.documentElement.scrollTop||this.options.ownerDocument.body.scrollTop,d=this.options.contentWindow.innerWidth,e=this.getToolbarElement(),f=a.getBoundingClientRect(),g=f.top+c,h=f.left+f.width/2,i=e.offsetHeight,j=e.offsetWidth,k=j/2;this.options.stickyToolbar?c>g+a.offsetHeight-i?(e.style.top=g+a.offsetHeight-i+"px",e.classList.remove("sticky-toolbar")):c>g-i?(e.classList.add("sticky-toolbar"),e.style.top="0px"):(e.classList.remove("sticky-toolbar"),e.style.top=g-i+"px"):e.style.top=g-i+"px","left"===this.options.toolbarAlign?b=f.left:"center"===this.options.toolbarAlign?b=h-k:"right"===this.options.toolbarAlign&&(b=f.right-j),0>b?b=0:b+j>d&&(b=d-j),e.style.left=b+"px"},positionToolbar:function(a){this.getToolbarElement().style.left="0";var b=this.options.contentWindow.innerWidth,c=a.getRangeAt(0),d=c.getBoundingClientRect(),e=(d.left+d.right)/2,f=this.getToolbarElement(),g=f.offsetHeight,h=f.offsetWidth,i=h/2,j=50,k=this.options.diffLeft-i;d.top<j?(f.classList.add("medium-toolbar-arrow-over"),f.classList.remove("medium-toolbar-arrow-under"),f.style.top=j+d.bottom-this.options.diffTop+this.options.contentWindow.pageYOffset-g+"px"):(f.classList.add("medium-toolbar-arrow-under"),f.classList.remove("medium-toolbar-arrow-over"),f.style.top=d.top+this.options.diffTop+this.options.contentWindow.pageYOffset-g+"px"),f.style.left=i>e?k+i+"px":i>b-e?b+k-i+"px":k+e+"px"}}}(window,document);var k;return function(){k=function(a){this.base=a,this.initPlaceholders(),this.attachEventHandlers()},k.prototype={initPlaceholders:function(){this.base.elements.forEach(function(a){this.updatePlaceholder(a)}.bind(this))},showPlaceholder:function(a){a&&a.classList.add("medium-editor-placeholder")},hidePlaceholder:function(a){a&&a.classList.remove("medium-editor-placeholder")},updatePlaceholder:function(a){a.querySelector("img")||a.querySelector("blockquote")||""!==a.textContent.replace(/^\s+|\s+$/g,"")?this.hidePlaceholder(a):this.showPlaceholder(a)},attachEventHandlers:function(){this.base.subscribe("externalInteraction",this.handleExternalInteraction.bind(this)),this.base.subscribe("editableBlur",this.handleBlur.bind(this)),this.base.subscribe("editableClick",this.handleHidePlaceholderEvent.bind(this)),this.base.subscribe("editableKeypress",this.handleHidePlaceholderEvent.bind(this)),this.base.subscribe("editablePaste",this.handleHidePlaceholderEvent.bind(this))},handleHidePlaceholderEvent:function(a,b){this.hidePlaceholder(b)},handleBlur:function(a,b){this.updatePlaceholder(b)},handleExternalInteraction:function(){this.initPlaceholders()}}}(window,document),function(){function l(a,c){if(this.options.disableReturn||c.getAttribute("data-disable-return"))a.preventDefault();else if(this.options.disableDoubleReturn||this.getAttribute("data-disable-double-return")){var d=b.getSelectionStart(this.options.ownerDocument);d&&""===d.textContent.trim()&&a.preventDefault()}}function m(a){var c=b.getSelectionStart(this.options.ownerDocument),d=c&&c.tagName.toLowerCase();"pre"===d&&(a.preventDefault(),b.insertHTMLCommand(this.options.ownerDocument," ")),b.isListItem(c)&&(a.preventDefault(),a.shiftKey?this.options.ownerDocument.execCommand("outdent",!1,null):this.options.ownerDocument.execCommand("indent",!1,null))}function n(a){var d,e,f,g=b.getSelectionStart(this.options.ownerDocument),h=g.tagName.toLowerCase(),i=/^(\s+|<br\/?>)?$/i,j=/h\d/i;(a.which===b.keyCode.BACKSPACE||a.which===b.keyCode.ENTER)&&g.previousElementSibling&&j.test(h)&&0===c.getCaretOffsets(g).left?a.which===b.keyCode.BACKSPACE&&i.test(g.previousElementSibling.innerHTML)?(g.previousElementSibling.parentNode.removeChild(g.previousElementSibling),a.preventDefault()):a.which===b.keyCode.ENTER&&(f=this.options.ownerDocument.createElement("p"),f.innerHTML="<br>",g.previousElementSibling.parentNode.insertBefore(f,g),a.preventDefault()):a.which===b.keyCode.DELETE&&g.nextElementSibling&&g.previousElementSibling&&!j.test(h)&&i.test(g.innerHTML)&&j.test(g.nextElementSibling.tagName)?(d=this.options.ownerDocument.createRange(),e=this.options.ownerDocument.getSelection(),d.setStart(g.nextElementSibling,0),d.collapse(!0),e.removeAllRanges(),e.addRange(d),g.previousElementSibling.parentNode.removeChild(g),a.preventDefault()):a.which!==b.keyCode.BACKSPACE||"li"!==h||!i.test(g.innerHTML)||g.previousElementSibling||g.parentElement.previousElementSibling||"li"!==g.nextElementSibling.tagName.toLowerCase()||(f=this.options.ownerDocument.createElement("p"),f.innerHTML="<br>",g.parentElement.parentElement.insertBefore(f,g.parentElement),d=this.options.ownerDocument.createRange(),e=this.options.ownerDocument.getSelection(),d.setStart(f,0),d.collapse(!0),e.removeAllRanges(),e.addRange(d),g.parentElement.removeChild(g),a.preventDefault())}function o(a){var b="medium-editor-dragover";a.preventDefault(),a.dataTransfer.dropEffect="copy","dragover"===a.type?a.target.classList.add(b):"dragleave"===a.type&&a.target.classList.remove(b)}function p(a){var c,d="medium-editor-dragover";a.preventDefault(),a.stopPropagation(),a.dataTransfer.files&&(c=Array.prototype.slice.call(a.dataTransfer.files,0),c.some(function(a){if(a.type.match("image")){var c,d;c=new FileReader,c.readAsDataURL(a),d="medium-img-"+ +new Date,b.insertHTMLCommand(this.options.ownerDocument,'<img class="medium-image-loading" id="'+d+'" />'),c.onload=function(){var a=this.options.ownerDocument.getElementById(d);a&&(a.removeAttribute("id"),a.removeAttribute("class"),a.src=c.result)}.bind(this)}}.bind(this))),a.target.classList.remove(d)}function q(a){var c,d=b.getSelectionStart(this.options.ownerDocument);d&&(d.getAttribute("data-medium-element")&&0===d.children.length&&this.options.ownerDocument.execCommand("formatBlock",!1,"p"),a.which!==b.keyCode.ENTER||b.isListItem(d)||(c=d.tagName.toLowerCase(),"a"===c?this.options.ownerDocument.execCommand("unlink",!1,null):a.shiftKey||/h\d/.test(c)||this.options.ownerDocument.execCommand("formatBlock",!1,"p")))}function r(a){a||(a=[]),"string"==typeof a&&(a=this.options.ownerDocument.querySelectorAll(a)),b.isElement(a)&&(a=[a]),this.elements=Array.prototype.slice.apply(a)}function s(a,b,c){return a.parent&&(a.base=c),"function"==typeof a.init&&a.init(c),a.name||(a.name=b),a}function t(){var a,b=!1;if(this.options.disableAnchorPreview)return!1;if(this.options.extensions["anchor-preview"])return!1;if(this.options.disableToolbar)return!1;for(a=0;a<this.elements.length;a+=1)if(!this.elements[a].getAttribute("data-disable-toolbar")){b=!0;break}return b}function u(){var a,b=!1;for(a=0;a<this.elements.length;a+=1)this.options.disableEditing||this.elements[a].getAttribute("data-disable-editing")||this.elements[a].setAttribute("contentEditable",!0),this.elements[a].getAttribute("data-placeholder")||this.elements[a].setAttribute("data-placeholder",this.options.placeholder),this.elements[a].setAttribute("data-medium-element",!0),this.elements[a].setAttribute("role","textbox"),this.elements[a].setAttribute("aria-multiline",!0),this.options.disableToolbar||this.elements[a].getAttribute("data-disable-toolbar")||(b=!0);!this.toolbar&&b&&(this.toolbar=new j(this),this.options.elementsContainer.appendChild(this.toolbar.getToolbarElement()))}function v(){var a;if(this.subscribe("editableKeydownTab",m.bind(this)),this.subscribe("editableKeydownDelete",n.bind(this)),this.subscribe("editableKeydownEnter",n.bind(this)),this.options.disableReturn||this.options.disableDoubleReturn)this.subscribe("editableKeydownEnter",l.bind(this));else for(a=0;a<this.elements.length;a+=1)if(this.elements[a].getAttribute("data-disable-return")||this.elements[a].getAttribute("data-disable-double-return")){this.subscribe("editableKeydownEnter",l.bind(this));break}this.options.disableReturn||this.elements.forEach(function(a){a.getAttribute("data-disable-return")||this.on(a,"keyup",q.bind(this))}.bind(this)),this.options.imageDragging&&(this.subscribe("editableDrag",o.bind(this)),this.subscribe("editableDrop",p.bind(this)))}function w(){var a,b,c=this.options.buttons,d=this.options.extensions;this.commands=[],c.forEach(function(b){d[b]?(a=s(d[b],b,this),this.commands.push(a)):"anchor"===b?(a=s(new h,b,this),this.commands.push(a)):f.hasOwnProperty(b)&&(a=new e(f[b],this),this.commands.push(a))}.bind(this));for(b in d)d.hasOwnProperty(b)&&-1===c.indexOf(b)&&(a=s(d[b],b,this));t.call(this)&&this.commands.push(s(new i,"anchor-preview",this))}function x(a,c){var d,e=/^append-(.+)$/gi;return d=e.exec(a),d?b.execFormatBlock(this.options.ownerDocument,d[1]):"createLink"===a?this.createLink(c):"image"===a?this.options.ownerDocument.execCommand("insertImage",!1,this.options.contentWindow.getSelection()):this.options.ownerDocument.execCommand(a,!1,null)}a.statics={ButtonsData:f,DefaultButton:e,AnchorExtension:h,Toolbar:j,AnchorPreview:i},a.prototype={defaults:{allowMultiParagraphSelection:!0,anchorInputPlaceholder:"Paste or type a link",anchorInputCheckboxLabel:"Open in new window",anchorPreviewHideDelay:500,buttons:["bold","italic","underline","anchor","header1","header2","quote"],buttonLabels:!1,checkLinkFormat:!1,cleanPastedHTML:!1,delay:0,diffLeft:0,diffTop:-10,disableReturn:!1,disableDoubleReturn:!1,disableToolbar:!1,disableAnchorPreview:!1,disableEditing:!1,disablePlaceholders:!1,toolbarAlign:"center",elementsContainer:!1,imageDragging:!0,standardizeSelectionStart:!1,contentWindow:window,ownerDocument:document,firstHeader:"h3",forcePlainText:!0,placeholder:"Type your text",secondHeader:"h4",targetBlank:!1,anchorTarget:!1,anchorButton:!1,anchorButtonClass:"btn",extensions:{},activeButtonClass:"medium-editor-button-active",firstButtonClass:"medium-editor-button-first",lastButtonClass:"medium-editor-button-last"},init:function(a,c){var d=1;if(this.options=b.defaults(c,this.defaults),r.call(this,a),0!==this.elements.length){for(this.options.elementsContainer||(this.options.elementsContainer=this.options.ownerDocument.body);this.options.elementsContainer.querySelector("#medium-editor-toolbar-"+d);)d+=1;return this.id=d,this.setup()}},setup:function(){this.isActive||(this.events=new d(this),this.isActive=!0,w.call(this),u.call(this),v.call(this),this.pasteHandler=new g(this),this.options.disablePlaceholders||(this.placeholders=new k(this)))},destroy:function(){if(this.isActive){var a;for(this.isActive=!1,void 0!==this.toolbar&&(this.toolbar.deactivate(),delete this.toolbar),a=0;a<this.elements.length;a+=1)this.elements[a].removeAttribute("contentEditable"),this.elements[a].removeAttribute("data-medium-element");this.commands.forEach(function(a){"function"==typeof a.deactivate&&a.deactivate()}.bind(this)),this.events.detachAllDOMEvents()}},on:function(a,b,c,d){this.events.attachDOMEvent(a,b,c,d)},off:function(a,b,c,d){this.events.detachDOMEvent(a,b,c,d)},subscribe:function(a,b){this.events.attachCustomEvent(a,b)},delay:function(a){var b=this;setTimeout(function(){b.isActive&&a()},this.options.delay)},serialize:function(){var a,b,c={};for(a=0;a<this.elements.length;a+=1)b=""!==this.elements[a].id?this.elements[a].id:"element-"+a,c[b]={value:this.elements[a].innerHTML.trim()};return c},getExtensionByName:function(a){var b;return this.commands&&this.commands.length&&this.commands.forEach(function(c){c.name===a&&(b=c)}),b},callExtensions:function(a){if(!(arguments.length<1)){var b,c,d=Array.prototype.slice.call(arguments,1);for(c in this.options.extensions)this.options.extensions.hasOwnProperty(c)&&(b=this.options.extensions[c],void 0!==b[a]&&b[a].apply(b,d));return this}},stopSelectionUpdates:function(){this.preventSelectionUpdates=!0},startSelectionUpdates:function(){this.preventSelectionUpdates=!1},checkSelection:function(){return this.toolbar&&this.toolbar.checkState(),this},queryCommandState:function(a){var b,c=/^full-(.+)$/gi,d=null;b=c.exec(a),b&&(a=b[1]);try{d=this.options.ownerDocument.queryCommandState(a)}catch(e){d=null}return d},execAction:function(a,c){var d,e,f=/^full-(.+)$/gi;return d=f.exec(a),d?(this.saveSelection(),this.selectAllContents(),e=x.call(this,d[1],c),this.restoreSelection()):e=x.call(this,a,c),("insertunorderedlist"===a||"insertorderedlist"===a)&&b.cleanListDOM(this.getSelectedParentElement()),this.checkSelection(),e},getSelectedParentElement:function(a){return void 0===a&&(a=this.options.contentWindow.getSelection().getRangeAt(0)),c.getSelectedParentElement(a)},hideToolbarDefaultActions:function(){return this.toolbar&&this.toolbar.hideToolbarDefaultActions(),this},setToolbarPosition:function(){this.toolbar&&this.toolbar.setToolbarPosition()},selectAllContents:function(){var a=this.options.ownerDocument.createRange(),b=this.options.contentWindow.getSelection(),d=c.getSelectionElement(this.options.contentWindow);if(d){for(;1===d.children.length;)d=d.children[0];a.selectNodeContents(d),b.removeAllRanges(),b.addRange(a)}},saveSelection:function(){this.selectionState=null;var a,c,d,e=this.options.contentWindow.getSelection(),f=-1;e.rangeCount>0&&(a=e.getRangeAt(0),c=a.cloneRange(),this.elements.forEach(function(c,d){return c===a.startContainer||b.isDescendant(c,a.startContainer)?(f=d,!1):void 0}),f>-1&&(c.selectNodeContents(this.elements[f]),c.setEnd(a.startContainer,a.startOffset),d=c.toString().length,this.selectionState={start:d,end:d+a.toString().length,editableElementIndex:f}))},restoreSelection:function(){if(this.selectionState){var a,b,c,d,e=this.elements[this.selectionState.editableElementIndex],f=0,g=this.options.ownerDocument.createRange(),h=[e],i=!1,j=!1;for(g.setStart(e,0),g.collapse(!0),a=h.pop();!j&&a;){if(3===a.nodeType)d=f+a.length,!i&&this.selectionState.start>=f&&this.selectionState.start<=d&&(g.setStart(a,this.selectionState.start-f),i=!0),i&&this.selectionState.end>=f&&this.selectionState.end<=d&&(g.setEnd(a,this.selectionState.end-f),j=!0),f=d;else for(b=a.childNodes.length-1;b>=0;)h.push(a.childNodes[b]),b-=1;j||(a=h.pop())}c=this.options.contentWindow.getSelection(),c.removeAllRanges(),c.addRange(g)}},createLink:function(a){var c,d;if(a.url&&a.url.trim().length>0&&(this.options.ownerDocument.execCommand("createLink",!1,a.url),(this.options.targetBlank||"_blank"===a.target)&&b.setTargetBlank(b.getSelectionStart(this.options.ownerDocument)),a.buttonClass&&b.addClassToAnchors(b.getSelectionStart(this.options.ownerDocument),a.buttonClass)),this.options.targetBlank||"_blank"===a.target||a.buttonClass)for(c=this.options.ownerDocument.createEvent("HTMLEvents"),c.initEvent("input",!0,!0,this.options.contentWindow),d=0;d<this.elements.length;d+=1)this.elements[d].dispatchEvent(c)},activate:function(){b.deprecatedMethod.call(this,"activate","setup",arguments)},deactivate:function(){b.deprecatedMethod.call(this,"deactivate","destroy",arguments)},cleanPaste:function(a){this.pasteHandler.cleanPaste(a)},pasteHTML:function(a){this.pasteHandler.pasteHTML(a)}}}(),a}());
"classList"in document.createElement("_")||!function(a){"use strict";if("Element"in a){var b="classList",c="prototype",d=a.Element[c],e=Object,f=String[c].trim||function(){return this.replace(/^\s+|\s+$/g,"")},g=Array[c].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1},h=function(a,b){this.name=a,this.code=DOMException[a],this.message=b},i=function(a,b){if(""===b)throw new h("SYNTAX_ERR","An invalid or illegal string was specified");if(/\s/.test(b))throw new h("INVALID_CHARACTER_ERR","String contains an invalid character");return g.call(a,b)},j=function(a){for(var b=f.call(a.getAttribute("class")||""),c=b?b.split(/\s+/):[],d=0,e=c.length;e>d;d++)this.push(c[d]);this._updateClassName=function(){a.setAttribute("class",this.toString())}},k=j[c]=[],l=function(){return new j(this)};if(h[c]=Error[c],k.item=function(a){return this[a]||null},k.contains=function(a){return a+="",-1!==i(this,a)},k.add=function(){var a,b=arguments,c=0,d=b.length,e=!1;do a=b[c]+"",-1===i(this,a)&&(this.push(a),e=!0);while(++c<d);e&&this._updateClassName()},k.remove=function(){var a,b,c=arguments,d=0,e=c.length,f=!1;do for(a=c[d]+"",b=i(this,a);-1!==b;)this.splice(b,1),f=!0,b=i(this,a);while(++d<e);f&&this._updateClassName()},k.toggle=function(a,b){a+="";var c=this.contains(a),d=c?b!==!0&&"remove":b!==!1&&"add";return d&&this[d](a),b===!0||b===!1?b:!c},k.toString=function(){return this.join(" ")},e.defineProperty){var m={get:l,enumerable:!0,configurable:!0};try{e.defineProperty(d,b,m)}catch(n){-2146823252===n.number&&(m.enumerable=!1,e.defineProperty(d,b,m))}}else e[c].__defineGetter__&&d.__defineGetter__(b,l)}}(self),function(a){"use strict";if(a.URL=a.URL||a.webkitURL,a.Blob&&a.URL)try{return void new Blob}catch(b){}var c=a.BlobBuilder||a.WebKitBlobBuilder||a.MozBlobBuilder||function(a){var b=function(a){return Object.prototype.toString.call(a).match(/^\[object\s(.*)\]$/)[1]},c=function(){this.data=[]},d=function(a,b,c){this.data=a,this.size=a.length,this.type=b,this.encoding=c},e=c.prototype,f=d.prototype,g=a.FileReaderSync,h=function(a){this.code=this[this.name=a]},i="NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR".split(" "),j=i.length,k=a.URL||a.webkitURL||a,l=k.createObjectURL,m=k.revokeObjectURL,n=k,o=a.btoa,p=a.atob,q=a.ArrayBuffer,r=a.Uint8Array,s=/^[\w-]+:\/*\[?[\w\.:-]+\]?(?::[0-9]+)?/;for(d.fake=f.fake=!0;j--;)h.prototype[i[j]]=j+1;return k.createObjectURL||(n=a.URL=function(a){var b,c=document.createElementNS("http://www.w3.org/1999/xhtml","a");return c.href=a,"origin"in c||("data:"===c.protocol.toLowerCase()?c.origin=null:(b=a.match(s),c.origin=b&&b[1])),c}),n.createObjectURL=function(a){var b,c=a.type;return null===c&&(c="application/octet-stream"),a instanceof d?(b="data:"+c,"base64"===a.encoding?b+";base64,"+a.data:"URI"===a.encoding?b+","+decodeURIComponent(a.data):o?b+";base64,"+o(a.data):b+","+encodeURIComponent(a.data)):l?l.call(k,a):void 0},n.revokeObjectURL=function(a){"data:"!==a.substring(0,5)&&m&&m.call(k,a)},e.append=function(a){var c=this.data;if(r&&(a instanceof q||a instanceof r)){for(var e="",f=new r(a),i=0,j=f.length;j>i;i++)e+=String.fromCharCode(f[i]);c.push(e)}else if("Blob"===b(a)||"File"===b(a)){if(!g)throw new h("NOT_READABLE_ERR");var k=new g;c.push(k.readAsBinaryString(a))}else a instanceof d?"base64"===a.encoding&&p?c.push(p(a.data)):"URI"===a.encoding?c.push(decodeURIComponent(a.data)):"raw"===a.encoding&&c.push(a.data):("string"!=typeof a&&(a+=""),c.push(unescape(encodeURIComponent(a))))},e.getBlob=function(a){return arguments.length||(a=null),new d(this.data.join(""),a,"raw")},e.toString=function(){return"[object BlobBuilder]"},f.slice=function(a,b,c){var e=arguments.length;return 3>e&&(c=null),new d(this.data.slice(a,e>1?b:this.data.length),c,this.encoding)},f.toString=function(){return"[object Blob]"},f.close=function(){this.size=0,delete this.data},c}(a);a.Blob=function(a,b){var d=b?b.type||"":"",e=new c;if(a)for(var f=0,g=a.length;g>f;f++)e.append(Uint8Array&&a[f]instanceof Uint8Array?a[f].buffer:a[f]);var h=e.getBlob(d);return!h.slice&&h.webkitSlice&&(h.slice=h.webkitSlice),h};var d=Object.getPrototypeOf||function(a){return a.__proto__};a.Blob.prototype=d(new a.Blob)}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content||this),function(a,b){"use strict";"object"==typeof module?module.exports=b:"function"==typeof define&&define.amd?define(function(){return b}):a.MediumEditor=b}(this,function(){"use strict";function a(a,b){return this.init(a,b)}var b;!function(a){function c(a,b,c){var d;a=a||{};for(d in b)b.hasOwnProperty(d)&&(c||a.hasOwnProperty(d)===!1)&&(a[d]=b[d]);return a}b={isIE:"Microsoft Internet Explorer"===navigator.appName||"Netscape"===navigator.appName&&null!==new RegExp("Trident/.*rv:([0-9]{1,}[.0-9]{0,})").exec(navigator.userAgent),keyCode:{BACKSPACE:8,TAB:9,ENTER:13,ESCAPE:27,SPACE:32,DELETE:46},parentElements:["p","h1","h2","h3","h4","h5","h6","blockquote","pre"],defaults:function(a,b){return c(a,b)},derives:function(a,b){function d(){}var e=b.prototype;return d.prototype=a.prototype,b.prototype=new d,b.prototype.constructor=a,b.prototype=c(b.prototype,e),b},findAdjacentTextNodeWithContent:function(a,b,c){var d,e=!1,f=c.createNodeIterator(a,NodeFilter.SHOW_TEXT,null,!1);for(d=f.nextNode();d;){if(d===b)e=!0;else if(e&&3===d.nodeType&&d.nodeValue&&d.nodeValue.trim().length>0)break;d=f.nextNode()}return d},isDescendant:function(a,b){if(!a||!b)return!1;for(var c=b.parentNode;null!==c;){if(c===a)return!0;c=c.parentNode}return!1},isElement:function(a){return!(!a||1!==a.nodeType)},now:Date.now,throttle:function(a,c){var d,e,f,g=50,h=null,i=0,j=function(){i=b.now(),h=null,f=a.apply(d,e),h||(d=e=null)};return c||0===c||(c=g),function(){var g=b.now(),k=c-(g-i);return d=this,e=arguments,0>=k||k>c?(h&&(clearTimeout(h),h=null),i=g,f=a.apply(d,e),h||(d=e=null)):h||(h=setTimeout(j,k)),f}},traverseUp:function(a,b){do{if(1===a.nodeType){if(b(a))return a;if(a.getAttribute("data-medium-element"))return!1}a=a.parentNode}while(a);return!1},htmlEntities:function(a){return String(a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")},insertHTMLCommand:function(a,b){var c,d,e,f,g,h,i;if(a.queryCommandSupported("insertHTML"))try{return a.execCommand("insertHTML",!1,b)}catch(j){}if(c=a.defaultView.getSelection(),c.getRangeAt&&c.rangeCount){if(d=c.getRangeAt(0),i=d.commonAncestorContainer,3===i.nodeType&&i.nodeValue===d.toString()||3!==i.nodeType&&i.innerHTML===d.toString()){for(;i.parentNode&&1===i.parentNode.childNodes.length&&!i.parentNode.getAttribute("data-medium-element");)i=i.parentNode;d.selectNode(i)}for(d.deleteContents(),e=a.createElement("div"),e.innerHTML=b,f=a.createDocumentFragment();e.firstChild;)g=e.firstChild,h=f.appendChild(g);d.insertNode(f),h&&(d=d.cloneRange(),d.setStartAfter(h),d.collapse(!0),c.removeAllRanges(),c.addRange(d))}},getSelectionRange:function(a){var b=a.getSelection();return 0===b.rangeCount?null:b.getRangeAt(0)},getSelectionStart:function(a){var b=a.getSelection().anchorNode,c=b&&3===b.nodeType?b.parentNode:b;return c},getSelectionData:function(a){var b;for(a&&a.tagName&&(b=a.tagName.toLowerCase());a&&-1===this.parentElements.indexOf(b);)a=a.parentNode,a&&a.tagName&&(b=a.tagName.toLowerCase());return{el:a,tagName:b}},execFormatBlock:function(a,b){var c=this.getSelectionData(this.getSelectionStart(a));if("blockquote"===b&&c.el&&"blockquote"===c.el.parentNode.tagName.toLowerCase())return a.execCommand("outdent",!1,null);if(c.tagName===b&&(b="p"),this.isIE){if("blockquote"===b)return a.execCommand("indent",!1,b);b="<"+b+">"}return a.execCommand("formatBlock",!1,b)},setTargetBlank:function(a){var b;if("a"===a.tagName.toLowerCase())a.target="_blank";else for(a=a.getElementsByTagName("a"),b=0;b<a.length;b+=1)a[b].target="_blank"},addClassToAnchors:function(a,b){var c,d,e=b.split(" ");if("a"===a.tagName.toLowerCase())for(d=0;d<e.length;d+=1)a.classList.add(e[d]);else for(a=a.getElementsByTagName("a"),c=0;c<a.length;c+=1)for(d=0;d<e.length;d+=1)a[c].classList.add(e[d])},isListItem:function(a){if(!a)return!1;if("li"===a.tagName.toLowerCase())return!0;for(var b=a.parentNode,c=b.tagName.toLowerCase();-1===this.parentElements.indexOf(c)&&"div"!==c;){if("li"===c)return!0;if(b=b.parentNode,!b||!b.tagName)return!1;c=b.tagName.toLowerCase()}return!1},cleanListDOM:function(a){if("li"===a.tagName.toLowerCase()){var b=a.parentElement;"p"===b.parentElement.tagName.toLowerCase()&&this.unwrapElement(b.parentElement)}},unwrapElement:function(a){var b,c=a.parentNode,d=a.firstChild;do b=d.nextSibling,c.insertBefore(d,a),d=b;while(d);c.removeChild(a)},deprecatedMethod:function(b,c,d){void 0!==a.console&&console.warn(b+" is deprecated and will be removed, please use "+c+" instead"),"function"==typeof this[c]&&this[c].apply(this,d)},cleanupAttrs:function(a,b){b.forEach(function(b){a.removeAttribute(b)})},cleanupTags:function(a,b){b.forEach(function(b){a.tagName.toLowerCase()===b&&a.parentNode.removeChild(a)})}}}(window);var c;!function(){c={findMatchingSelectionParent:function(a,c){var d,e,f=c.getSelection();return 0===f.rangeCount?!1:(d=f.getRangeAt(0),e=d.commonAncestorContainer,b.traverseUp(e,a))},getSelectionElement:function(a){return this.findMatchingSelectionParent(function(a){return a.getAttribute("data-medium-element")},a)},selectionInContentEditableFalse:function(a){return this.findMatchingSelectionParent(function(a){return a&&"#text"!==a.nodeName&&"false"===a.getAttribute("contenteditable")},a)},getSelectionHtml:function(){var a,b,c,d="",e=this.options.contentWindow.getSelection();if(e.rangeCount){for(c=this.options.ownerDocument.createElement("div"),a=0,b=e.rangeCount;b>a;a+=1)c.appendChild(e.getRangeAt(a).cloneContents());d=c.innerHTML}return d},getCaretOffsets:function(a,b){var c,d;return b||(b=window.getSelection().getRangeAt(0)),c=b.cloneRange(),d=b.cloneRange(),c.selectNodeContents(a),c.setEnd(b.endContainer,b.endOffset),d.selectNodeContents(a),d.setStart(b.endContainer,b.endOffset),{left:c.toString().length,right:d.toString().length}},rangeSelectsSingleNode:function(a){var b=a.startContainer;return b===a.endContainer&&b.hasChildNodes()&&a.endOffset===a.startOffset+1},getSelectedParentElement:function(a){var b=null;return b=this.rangeSelectsSingleNode(a)&&3!==a.startContainer.childNodes[a.startOffset].nodeType?a.startContainer.childNodes[a.startOffset]:3===a.startContainer.nodeType?a.startContainer.parentNode:a.startContainer}}}();var d;!function(){d=function(a){this.base=a,this.options=this.base.options,this.events=[],this.customEvents={},this.listeners={}},d.prototype={attachDOMEvent:function(a,b,c,d){a.addEventListener(b,c,d),this.events.push([a,b,c,d])},detachDOMEvent:function(a,b,c,d){var e,f=this.indexOfListener(a,b,c,d);-1!==f&&(e=this.events.splice(f,1)[0],e[0].removeEventListener(e[1],e[2],e[3]))},indexOfListener:function(a,b,c,d){var e,f,g;for(e=0,f=this.events.length;f>e;e+=1)if(g=this.events[e],g[0]===a&&g[1]===b&&g[2]===c&&g[3]===d)return e;return-1},detachAllDOMEvents:function(){for(var a=this.events.pop();a;)a[0].removeEventListener(a[1],a[2],a[3]),a=this.events.pop()},attachCustomEvent:function(a,b){this.setupListener(a),this.listeners[a]&&(this.customEvents[a]||(this.customEvents[a]=[]),this.customEvents[a].push(b))},triggerCustomEvent:function(a,b,c){this.customEvents[a]&&this.customEvents[a].forEach(function(a){a(b,c)})},setupListener:function(a){if(!this.listeners[a])switch(a){case"externalInteraction":this.attachDOMEvent(this.options.ownerDocument.body,"click",this.handleInteraction.bind(this),!0),this.attachDOMEvent(this.options.ownerDocument.body,"focus",this.handleInteraction.bind(this),!0),this.listeners[a]=!0;break;case"editableClick":this.base.elements.forEach(function(a){this.attachDOMEvent(a,"click",this.handleClick.bind(this))}.bind(this)),this.listeners[a]=!0;break;case"editableBlur":this.base.elements.forEach(function(a){this.attachDOMEvent(a,"blur",this.handleBlur.bind(this))}.bind(this)),this.listeners[a]=!0;break;case"editableKeypress":this.base.elements.forEach(function(a){this.attachDOMEvent(a,"keypress",this.handleKeypress.bind(this))}.bind(this)),this.listeners[a]=!0;break;case"editableKeydown":this.base.elements.forEach(function(a){this.attachDOMEvent(a,"keydown",this.handleKeydown.bind(this))}.bind(this)),this.listeners[a]=!0;break;case"editableKeydownEnter":this.setupListener("editableKeydown"),this.listeners[a]=!0;break;case"editableKeydownTab":this.setupListener("editableKeydown"),this.listeners[a]=!0;break;case"editableKeydownDelete":this.setupListener("editableKeydown"),this.listeners[a]=!0;break;case"editableMouseover":this.base.elements.forEach(function(a){this.attachDOMEvent(a,"mouseover",this.handleMouseover.bind(this))}.bind(this)),this.listeners[a]=!0;break;case"editableDrag":this.base.elements.forEach(function(a){this.attachDOMEvent(a,"dragover",this.handleDragging.bind(this)),this.attachDOMEvent(a,"dragleave",this.handleDragging.bind(this))}.bind(this)),this.listeners[a]=!0;break;case"editableDrop":this.base.elements.forEach(function(a){this.attachDOMEvent(a,"drop",this.handleDrop.bind(this))}.bind(this)),this.listeners[a]=!0;break;case"editablePaste":this.base.elements.forEach(function(a){this.attachDOMEvent(a,"paste",this.handlePaste.bind(this))}.bind(this)),this.listeners[a]=!0}},handleInteraction:function(a){var d,e=!1,f=this.options.contentWindow.getSelection(),g=this.base.toolbar?this.base.toolbar.getToolbarElement():null,h=this.base.getExtensionByName("anchor-preview"),i=h&&h.getPreviewElement?h.getPreviewElement():null,j=f.isCollapsed?null:c.getSelectedParentElement(f.getRangeAt(0));for(d=0;d<this.base.elements.length;d+=1)if(this.base.elements[d]===a.target||b.isDescendant(this.base.elements[d],a.target)||b.isDescendant(this.base.elements[d],j)){e=!0;break}e||g&&(g===a.target||b.isDescendant(g,a.target))||i&&(i===a.target||b.isDescendant(i,a.target))||this.triggerCustomEvent("externalInteraction",a)},handleClick:function(a){this.triggerCustomEvent("editableClick",a,a.currentTarget)},handleBlur:function(a){this.triggerCustomEvent("editableBlur",a,a.currentTarget)},handleKeypress:function(a){this.triggerCustomEvent("editableKeypress",a,a.currentTarget)},handleMouseover:function(a){this.triggerCustomEvent("editableMouseover",a,a.currentTarget)},handleDragging:function(a){this.triggerCustomEvent("editableDrag",a,a.currentTarget)},handleDrop:function(a){this.triggerCustomEvent("editableDrop",a,a.currentTarget)},handlePaste:function(a){this.triggerCustomEvent("editablePaste",a,a.currentTarget)},handleKeydown:function(a){switch(this.triggerCustomEvent("editableKeydown",a,a.currentTarget),a.which){case b.keyCode.ENTER:this.triggerCustomEvent("editableKeydownEnter",a,a.currentTarget);break;case b.keyCode.TAB:this.triggerCustomEvent("editableKeydownTab",a,a.currentTarget);break;case b.keyCode.DELETE:case b.keyCode.BACKSPACE:this.triggerCustomEvent("editableKeydownDelete",a,a.currentTarget)}}}}();var e,f;!function(){f={bold:{name:"bold",action:"bold",aria:"bold",tagNames:["b","strong"],style:{prop:"font-weight",value:"700|bold"},useQueryState:!0,contentDefault:"<b>B</b>",contentFA:'<i class="fa fa-bold"></i>',key:"b"},italic:{name:"italic",action:"italic",aria:"italic",tagNames:["i","em"],style:{prop:"font-style",value:"italic"},useQueryState:!0,contentDefault:"<b><i>I</i></b>",contentFA:'<i class="fa fa-italic"></i>',key:"i"},underline:{name:"underline",action:"underline",aria:"underline",tagNames:["u"],style:{prop:"text-decoration",value:"underline"},useQueryState:!0,contentDefault:"<b><u>U</u></b>",contentFA:'<i class="fa fa-underline"></i>',key:"u"},strikethrough:{name:"strikethrough",action:"strikethrough",aria:"strike through",tagNames:["strike"],style:{prop:"text-decoration",value:"line-through"},useQueryState:!0,contentDefault:"<s>A</s>",contentFA:'<i class="fa fa-strikethrough"></i>'},superscript:{name:"superscript",action:"superscript",aria:"superscript",tagNames:["sup"],contentDefault:"<b>x<sup>1</sup></b>",contentFA:'<i class="fa fa-superscript"></i>'},subscript:{name:"subscript",action:"subscript",aria:"subscript",tagNames:["sub"],contentDefault:"<b>x<sub>1</sub></b>",contentFA:'<i class="fa fa-subscript"></i>'},image:{name:"image",action:"image",aria:"image",tagNames:["img"],contentDefault:"<b>image</b>",contentFA:'<i class="fa fa-picture-o"></i>'},quote:{name:"quote",action:"append-blockquote",aria:"blockquote",tagNames:["blockquote"],contentDefault:"<b>&ldquo;</b>",contentFA:'<i class="fa fa-quote-right"></i>'},orderedlist:{name:"orderedlist",action:"insertorderedlist",aria:"ordered list",tagNames:["ol"],useQueryState:!0,contentDefault:"<b>1.</b>",contentFA:'<i class="fa fa-list-ol"></i>'},unorderedlist:{name:"unorderedlist",action:"insertunorderedlist",aria:"unordered list",tagNames:["ul"],useQueryState:!0,contentDefault:"<b>&bull;</b>",contentFA:'<i class="fa fa-list-ul"></i>'},pre:{name:"pre",action:"append-pre",aria:"preformatted text",tagNames:["pre"],contentDefault:"<b>0101</b>",contentFA:'<i class="fa fa-code fa-lg"></i>'},indent:{name:"indent",action:"indent",aria:"indent",tagNames:[],contentDefault:"<b>&rarr;</b>",contentFA:'<i class="fa fa-indent"></i>'},outdent:{name:"outdent",action:"outdent",aria:"outdent",tagNames:[],contentDefault:"<b>&larr;</b>",contentFA:'<i class="fa fa-outdent"></i>'},justifyCenter:{name:"justifyCenter",action:"justifyCenter",aria:"center justify",tagNames:[],style:{prop:"text-align",value:"center"},useQueryState:!0,contentDefault:"<b>C</b>",contentFA:'<i class="fa fa-align-center"></i>'},justifyFull:{name:"justifyFull",action:"justifyFull",aria:"full justify",tagNames:[],style:{prop:"text-align",value:"justify"},useQueryState:!0,contentDefault:"<b>J</b>",contentFA:'<i class="fa fa-align-justify"></i>'},justifyLeft:{name:"justifyLeft",action:"justifyLeft",aria:"left justify",tagNames:[],style:{prop:"text-align",value:"left"},useQueryState:!0,contentDefault:"<b>L</b>",contentFA:'<i class="fa fa-align-left"></i>'},justifyRight:{name:"justifyRight",action:"justifyRight",aria:"right justify",tagNames:[],style:{prop:"text-align",value:"right"},useQueryState:!0,contentDefault:"<b>R</b>",contentFA:'<i class="fa fa-align-right"></i>'},header1:{name:"header1",action:function(a){return"append-"+a.firstHeader},aria:function(a){return a.firstHeader},tagNames:function(a){return[a.firstHeader]},contentDefault:"<b>H1</b>"},header2:{name:"header2",action:function(a){return"append-"+a.secondHeader},aria:function(a){return a.secondHeader},tagNames:function(a){return[a.secondHeader]},contentDefault:"<b>H2</b>"},removeFormat:{name:"removeFormat",aria:"remove formatting",action:"removeFormat",contentDefault:"<b>X</b>",contentFA:'<i class="fa fa-eraser"></i>'}},e=function(a,b){this.options=a,this.name=a.name,this.init(b)},e.prototype={init:function(a){this.base=a,this.button=this.createButton(),this.base.on(this.button,"click",this.handleClick.bind(this)),this.options.key&&this.base.subscribe("editableKeydown",this.handleKeydown.bind(this))},getButton:function(){return this.button},getAction:function(){return"function"==typeof this.options.action?this.options.action(this.base.options):this.options.action},getAria:function(){return"function"==typeof this.options.aria?this.options.aria(this.base.options):this.options.aria},getTagNames:function(){return"function"==typeof this.options.tagNames?this.options.tagNames(this.base.options):this.options.tagNames},createButton:function(){var a=this.base.options.ownerDocument.createElement("button"),b=this.options.contentDefault;return a.classList.add("medium-editor-action"),a.classList.add("medium-editor-action-"+this.name),a.setAttribute("data-action",this.getAction()),a.setAttribute("aria-label",this.getAria()),this.base.options.buttonLabels&&("fontawesome"===this.base.options.buttonLabels&&this.options.contentFA?b=this.options.contentFA:"object"==typeof this.base.options.buttonLabels&&this.base.options.buttonLabels[this.name]&&(b=this.base.options.buttonLabels[this.options.name])),a.innerHTML=b,a},handleKeydown:function(a){var b,c;(a.ctrlKey||a.metaKey)&&(b=String.fromCharCode(a.which||a.keyCode).toLowerCase(),this.options.key===b&&(a.preventDefault(),a.stopPropagation(),c=this.getAction(),c&&this.base.execAction(c)))},handleClick:function(a){a.preventDefault(),a.stopPropagation();var b=this.getAction();b&&this.base.execAction(b)},isActive:function(){return this.button.classList.contains(this.base.options.activeButtonClass)},setInactive:function(){this.button.classList.remove(this.base.options.activeButtonClass),delete this.knownState},setActive:function(){this.button.classList.add(this.base.options.activeButtonClass),delete this.knownState},queryCommandState:function(){var a=null;return this.options.useQueryState&&(a=this.base.queryCommandState(this.getAction())),a},isAlreadyApplied:function(a){var b,c,d=!1,e=this.getTagNames();return this.knownState===!1||this.knownState===!0?this.knownState:(e&&e.length>0&&a.tagName&&(d=-1!==e.indexOf(a.tagName.toLowerCase())),!d&&this.options.style&&(b=this.options.style.value.split("|"),c=this.base.options.contentWindow.getComputedStyle(a,null).getPropertyValue(this.options.style.prop),b.forEach(function(a){this.knownState||(d=-1!==c.indexOf(a),(d||"text-decoration"!==this.options.style.prop)&&(this.knownState=d))}.bind(this))),d)}}}();var g;!function(){function a(){return[[new RegExp(/<[^>]*docs-internal-guid[^>]*>/gi),""],[new RegExp(/<\/b>(<br[^>]*>)?$/gi),""],[new RegExp(/<span class="Apple-converted-space">\s+<\/span>/g)," "],[new RegExp(/<br class="Apple-interchange-newline">/g),"<br>"],[new RegExp(/<span[^>]*(font-style:italic;font-weight:bold|font-weight:bold;font-style:italic)[^>]*>/gi),'<span class="replace-with italic bold">'],[new RegExp(/<span[^>]*font-style:italic[^>]*>/gi),'<span class="replace-with italic">'],[new RegExp(/<span[^>]*font-weight:bold[^>]*>/gi),'<span class="replace-with bold">'],[new RegExp(/&lt;(\/?)(i|b|a)&gt;/gi),"<$1$2>"],[new RegExp(/&lt;a\s+href=(&quot;|&rdquo;|&ldquo;|“|”)([^&]+)(&quot;|&rdquo;|&ldquo;|“|”)&gt;/gi),'<a href="$2">'],[new RegExp(/<\/p>\n+/gi),"</p>"],[new RegExp(/\n+<p/gi),"<p"],[new RegExp(/<\/?o:[a-z]*>/gi),""]]}g=function(a){this.base=a,this.options=this.base.options,(this.options.forcePlainText||this.options.cleanPastedHTML)&&this.base.subscribe("editablePaste",this.handlePaste.bind(this))},g.prototype={handlePaste:function(a,c){var d,e,f="",g="text/html",h="text/plain";if(this.options.contentWindow.clipboardData&&void 0===a.clipboardData&&(a.clipboardData=this.options.contentWindow.clipboardData,g="Text",h="Text"),a.clipboardData&&a.clipboardData.getData&&!a.defaultPrevented){if(a.preventDefault(),this.options.cleanPastedHTML&&a.clipboardData.getData(g))return this.cleanPaste(a.clipboardData.getData(g));if(this.options.disableReturn||c.getAttribute("data-disable-return"))f=b.htmlEntities(a.clipboardData.getData(h)),b.insertHTMLCommand(this.options.ownerDocument,f);else{for(d=a.clipboardData.getData(h).split(/[\r\n]/g),e=0;e<d.length;e+=1)""!==d[e]&&(f+="<p>"+b.htmlEntities(d[e])+"</p>");b.insertHTMLCommand(this.options.ownerDocument,f)}}},cleanPaste:function(d){var e,f,g,h=c.getSelectionElement(this.options.contentWindow),i=/<p|<br|<div/.test(d),j=a();for(e=0;e<j.length;e+=1)d=d.replace(j[e][0],j[e][1]);if(i){f=d.split("<br><br>"),this.pasteHTML("<p>"+f.join("</p><p>")+"</p>");try{this.options.ownerDocument.execCommand("insertText",!1,"\n")}catch(k){}for(f=h.querySelectorAll("a,p,div,br"),e=0;e<f.length;e+=1)switch(g=f[e],g.innerHTML=g.innerHTML.replace(/\n/gi," "),g.tagName.toLowerCase()){case"a":this.options.targetBlank&&b.setTargetBlank(g);break;case"p":case"div":this.filterCommonBlocks(g);break;case"br":this.filterLineBreak(g)}}else this.pasteHTML(d)},pasteHTML:function(a,c){c=b.defaults(c,{cleanAttrs:["class","style","dir"],cleanTags:["meta"]});var d,e,f,g,h=this.options.ownerDocument.createDocumentFragment();for(h.appendChild(this.options.ownerDocument.createElement("body")),g=h.querySelector("body"),g.innerHTML=a,this.cleanupSpans(g),d=g.querySelectorAll("*"),f=0;f<d.length;f+=1)e=d[f],b.cleanupAttrs(e,c.cleanAttrs),b.cleanupTags(e,c.cleanTags);b.insertHTMLCommand(this.options.ownerDocument,g.innerHTML.replace(/&nbsp;/g," "))},isCommonBlock:function(a){return a&&("p"===a.tagName.toLowerCase()||"div"===a.tagName.toLowerCase())},filterCommonBlocks:function(a){/^\s*$/.test(a.textContent)&&a.parentNode&&a.parentNode.removeChild(a)},filterLineBreak:function(a){this.isCommonBlock(a.previousElementSibling)?this.removeWithParent(a):!this.isCommonBlock(a.parentNode)||a.parentNode.firstChild!==a&&a.parentNode.lastChild!==a?a.parentNode&&1===a.parentNode.childElementCount&&""===a.parentNode.textContent&&this.removeWithParent(a):this.removeWithParent(a)},removeWithParent:function(a){a&&a.parentNode&&(a.parentNode.parentNode&&1===a.parentNode.childElementCount?a.parentNode.parentNode.removeChild(a.parentNode):a.parentNode.removeChild(a))},cleanupSpans:function(a){var c,d,e,f=a.querySelectorAll(".replace-with"),g=function(a){return a&&"#text"!==a.nodeName&&"false"===a.getAttribute("contenteditable")};for(c=0;c<f.length;c+=1)d=f[c],e=this.options.ownerDocument.createElement(d.classList.contains("bold")?"b":"i"),e.innerHTML=d.classList.contains("bold")&&d.classList.contains("italic")?"<i>"+d.innerHTML+"</i>":d.innerHTML,d.parentNode.replaceChild(e,d);for(f=a.querySelectorAll("span"),c=0;c<f.length;c+=1){if(d=f[c],b.traverseUp(d,g))return!1;/^\s*$/.test()?d.parentNode.removeChild(d):d.parentNode.replaceChild(this.options.ownerDocument.createTextNode(d.textContent),d)}}}}();var h;!function(){function a(){this.parent=!0,this.options={name:"anchor",action:"createLink",aria:"link",tagNames:["a"],contentDefault:"<b>#</b>",contentFA:'<i class="fa fa-link"></i>'},this.name="anchor",this.hasForm=!0}a.prototype={formSaveLabel:"&#10003;",formCloseLabel:"&times;",handleClick:function(a){a.preventDefault(),a.stopPropagation();var d=c.getSelectedParentElement(b.getSelectionRange(this.base.options.ownerDocument));return d.tagName&&"a"===d.tagName.toLowerCase()?this.base.execAction("unlink"):(this.isDisplayed()||this.showForm(),!1)},getForm:function(){return this.form||(this.form=this.createForm()),this.form},getTemplate:function(){var a=['<input type="text" class="medium-editor-toolbar-input" placeholder="',this.base.options.anchorInputPlaceholder,'">'];return a.push('<a href="#" class="medium-editor-toolbar-save">',"fontawesome"===this.base.options.buttonLabels?'<i class="fa fa-check"></i>':this.formSaveLabel,"</a>"),a.push('<a href="#" class="medium-editor-toolbar-close">',"fontawesome"===this.base.options.buttonLabels?'<i class="fa fa-times"></i>':this.formCloseLabel,"</a>"),this.base.options.anchorTarget&&a.push('<input type="checkbox" class="medium-editor-toolbar-anchor-target">',"<label>",this.base.options.anchorInputCheckboxLabel,"</label>"),this.base.options.anchorButton&&a.push('<input type="checkbox" class="medium-editor-toolbar-anchor-button">',"<label>Button</label>"),a.join("")},isDisplayed:function(){return"block"===this.getForm().style.display},hideForm:function(){this.getForm().style.display="none",this.getInput().value=""},showForm:function(a){var b=this.getInput();this.base.saveSelection(),this.base.hideToolbarDefaultActions(),this.getForm().style.display="block",this.base.setToolbarPosition(),b.value=a||"",b.focus()},deactivate:function(){return this.form?(this.form.parentNode&&this.form.parentNode.removeChild(this.form),void delete this.form):!1},getFormOpts:function(){var a=this.getForm().querySelector(".medium-editor-toolbar-anchor-target"),b=this.getForm().querySelector(".medium-editor-toolbar-anchor-button"),c={url:this.getInput().value};return this.base.options.checkLinkFormat&&(c.url=this.checkLinkFormat(c.url)),c.target=a&&a.checked?"_blank":"_self",b&&b.checked&&(c.buttonClass=this.base.options.anchorButtonClass),c},doFormSave:function(){var a=this.getFormOpts();this.completeFormSave(a)},completeFormSave:function(a){this.base.restoreSelection(),this.base.createLink(a),this.base.checkSelection()},checkLinkFormat:function(a){var b=/^(https?|ftps?|rtmpt?):\/\/|mailto:/;return(b.test(a)?"":"http://")+a},doFormCancel:function(){this.base.restoreSelection(),this.base.checkSelection()},attachFormEvents:function(a){var b=a.querySelector(".medium-editor-toolbar-close"),c=a.querySelector(".medium-editor-toolbar-save"),d=a.querySelector(".medium-editor-toolbar-input");this.base.on(a,"click",this.handleFormClick.bind(this)),this.base.on(d,"keyup",this.handleTextboxKeyup.bind(this)),this.base.on(b,"click",this.handleCloseClick.bind(this)),this.base.on(c,"click",this.handleSaveClick.bind(this),!0)},createForm:function(){var a=this.base.options.ownerDocument,b=a.createElement("div");return b.className="medium-editor-toolbar-form",b.id="medium-editor-toolbar-form-anchor-"+this.base.id,b.innerHTML=this.getTemplate(),this.attachFormEvents(b),b},getInput:function(){return this.getForm().querySelector("input.medium-editor-toolbar-input")},handleTextboxKeyup:function(a){return a.keyCode===b.keyCode.ENTER?(a.preventDefault(),void this.doFormSave()):void(a.keyCode===b.keyCode.ESCAPE&&(a.preventDefault(),this.doFormCancel()))},handleFormClick:function(a){a.stopPropagation()},handleSaveClick:function(a){a.preventDefault(),this.doFormSave()},handleCloseClick:function(a){a.preventDefault(),this.doFormCancel()}},h=b.derives(e,a)}();var i;!function(){i=function(){this.parent=!0,this.name="anchor-preview"},i.prototype={previewValueSelector:"i",init:function(a){this.base=a,this.anchorPreview=this.createPreview(),this.base.options.elementsContainer.appendChild(this.anchorPreview),this.attachToEditables()},getPreviewElement:function(){return this.anchorPreview},createPreview:function(){var a=this.base.options.ownerDocument.createElement("div");return a.id="medium-editor-anchor-preview-"+this.base.id,a.className="medium-editor-anchor-preview",a.innerHTML=this.getTemplate(),this.base.on(a,"click",this.handleClick.bind(this)),a},getTemplate:function(){return'<div class="medium-editor-toolbar-anchor-preview" id="medium-editor-toolbar-anchor-preview"> <i class="medium-editor-toolbar-anchor-preview-inner"></i></div>'},deactivate:function(){this.anchorPreview&&(this.anchorPreview.parentNode&&this.anchorPreview.parentNode.removeChild(this.anchorPreview),delete this.anchorPreview)},hidePreview:function(){this.anchorPreview.classList.remove("medium-editor-anchor-preview-active"),this.activeAnchor=null},showPreview:function(a){return this.anchorPreview.classList.contains("medium-editor-anchor-preview-active")||a.getAttribute("data-disable-preview")?!0:(this.previewValueSelector&&(this.anchorPreview.querySelector(this.previewValueSelector).textContent=a.attributes.href.value),this.anchorPreview.classList.add("medium-toolbar-arrow-over"),this.anchorPreview.classList.remove("medium-toolbar-arrow-under"),this.anchorPreview.classList.contains("medium-editor-anchor-preview-active")||this.anchorPreview.classList.add("medium-editor-anchor-preview-active"),this.activeAnchor=a,this.positionPreview(),this.attachPreviewHandlers(),this)},positionPreview:function(){var a,b,c=40,d=this.activeAnchor.getBoundingClientRect(),e=(d.left+d.right)/2;a=this.anchorPreview.offsetWidth/2,b=this.base.options.diffLeft-a,this.anchorPreview.style.top=Math.round(c+d.bottom-this.base.options.diffTop+this.base.options.contentWindow.pageYOffset-this.anchorPreview.offsetHeight)+"px",this.anchorPreview.style.left=a>e?b+a+"px":this.base.options.contentWindow.innerWidth-e<a?this.base.options.contentWindow.innerWidth+b-a+"px":b+e+"px"},attachToEditables:function(){this.base.subscribe("editableMouseover",this.handleEditableMouseover.bind(this))},handleClick:function(){var a,b,c=this.base.getExtensionByName("anchor"),d=this.activeAnchor;c&&d&&(a=this.base.options.ownerDocument.createRange(),a.selectNodeContents(this.activeAnchor),b=this.base.options.contentWindow.getSelection(),b.removeAllRanges(),b.addRange(a),this.base.delay(function(){d&&(c.showForm(d.attributes.href.value),d=null)
}.bind(this))),this.hidePreview()},handleAnchorMouseout:function(){this.anchorToPreview=null,this.base.off(this.activeAnchor,"mouseout",this.instance_handleAnchorMouseout),this.instance_handleAnchorMouseout=null},handleEditableMouseover:function(a){if(a.target&&"a"===a.target.tagName.toLowerCase()){if(!/href=["']\S+["']/.test(a.target.outerHTML)||/href=["']#\S+["']/.test(a.target.outerHTML))return!0;if(this.base.toolbar&&this.base.toolbar.isDisplayed())return!0;this.activeAnchor&&this.activeAnchor!==a.target&&this.detachPreviewHandlers(),this.anchorToPreview=a.target,this.instance_handleAnchorMouseout=this.handleAnchorMouseout.bind(this),this.base.on(this.anchorToPreview,"mouseout",this.instance_handleAnchorMouseout),this.base.delay(function(){this.anchorToPreview&&this.showPreview(this.anchorToPreview)}.bind(this))}},handlePreviewMouseover:function(){this.lastOver=(new Date).getTime(),this.hovering=!0},handlePreviewMouseout:function(a){a.relatedTarget&&/anchor-preview/.test(a.relatedTarget.className)||(this.hovering=!1)},updatePreview:function(){if(this.hovering)return!0;var a=(new Date).getTime()-this.lastOver;a>this.base.options.anchorPreviewHideDelay&&this.detachPreviewHandlers()},detachPreviewHandlers:function(){clearInterval(this.interval_timer),this.instance_handlePreviewMouseover&&(this.base.off(this.anchorPreview,"mouseover",this.instance_handlePreviewMouseover),this.base.off(this.anchorPreview,"mouseout",this.instance_handlePreviewMouseout),this.activeAnchor&&(this.base.off(this.activeAnchor,"mouseover",this.instance_handlePreviewMouseover),this.base.off(this.activeAnchor,"mouseout",this.instance_handlePreviewMouseout))),this.hidePreview(),this.hovering=this.instance_handlePreviewMouseover=this.instance_handlePreviewMouseout=null},attachPreviewHandlers:function(){this.lastOver=(new Date).getTime(),this.hovering=!0,this.instance_handlePreviewMouseover=this.handlePreviewMouseover.bind(this),this.instance_handlePreviewMouseout=this.handlePreviewMouseout.bind(this),this.interval_timer=setInterval(this.updatePreview.bind(this),200),this.base.on(this.anchorPreview,"mouseover",this.instance_handlePreviewMouseover),this.base.on(this.anchorPreview,"mouseout",this.instance_handlePreviewMouseout),this.base.on(this.activeAnchor,"mouseover",this.instance_handlePreviewMouseover),this.base.on(this.activeAnchor,"mouseout",this.instance_handlePreviewMouseout)}}}();var j;!function(){j=function(a){this.base=a,this.options=a.options,this.initThrottledMethods()},j.prototype={createToolbar:function(){var a=this.base.options.ownerDocument.createElement("div");return a.id="medium-editor-toolbar-"+this.base.id,a.className="medium-editor-toolbar",a.className+=this.options.staticToolbar?" static-toolbar":" stalker-toolbar",a.appendChild(this.createToolbarButtons()),this.base.commands.forEach(function(b){b.hasForm&&a.appendChild(b.getForm())}),this.attachEventHandlers(),this.base.subscribe("externalInteraction",this.handleBlur.bind(this)),a},createToolbarButtons:function(){var a,c,d,e=this.base.options.ownerDocument.createElement("ul");return e.id="medium-editor-toolbar-actions"+this.base.id,e.className="medium-editor-toolbar-actions clearfix",e.style.display="block",this.base.commands.forEach(function(d){"function"==typeof d.getButton&&(c=d.getButton(this.base),a=this.base.options.ownerDocument.createElement("li"),b.isElement(c)?a.appendChild(c):a.innerHTML=c,e.appendChild(a))}.bind(this)),d=e.querySelectorAll("button"),d.length>0&&(d[0].classList.add(this.options.firstButtonClass),d[d.length-1].classList.add(this.options.lastButtonClass)),e},deactivate:function(){this.toolbar&&(this.toolbar.parentNode&&this.toolbar.parentNode.removeChild(this.toolbar),delete this.toolbar)},getToolbarElement:function(){return this.toolbar||(this.toolbar=this.createToolbar()),this.toolbar},getToolbarActionsElement:function(){return this.getToolbarElement().querySelector(".medium-editor-toolbar-actions")},initThrottledMethods:function(){this.throttledPositionToolbar=b.throttle(function(){this.base.isActive&&this.positionToolbarIfShown()}.bind(this))},attachEventHandlers:function(){this.base.on(this.options.ownerDocument.documentElement,"mousedown",this.handleDocumentMousedown.bind(this)),this.base.on(this.options.ownerDocument.documentElement,"mouseup",this.handleDocumentMouseup.bind(this)),this.options.staticToolbar&&this.options.stickyToolbar&&this.base.on(this.options.contentWindow,"scroll",this.handleWindowScroll.bind(this),!0),this.base.on(this.options.contentWindow,"resize",this.handleWindowResize.bind(this)),this.base.elements.forEach(function(a){this.base.on(a,"click",this.handleEditableClick.bind(this)),this.base.on(a,"keyup",this.handleEditableKeyup.bind(this)),this.base.on(a,"blur",this.handleEditableBlur.bind(this))}.bind(this))},handleWindowScroll:function(){this.positionToolbarIfShown()},handleWindowResize:function(){this.throttledPositionToolbar()},handleDocumentMousedown:function(a){this.lastMousedownTarget=a.target},handleDocumentMouseup:function(a){return this.lastMousedownTarget=null,a&&a.target&&b.isDescendant(this.getToolbarElement(),a.target)?!1:void this.checkState()},handleEditableClick:function(){setTimeout(function(){this.checkState()}.bind(this),0)},handleEditableKeyup:function(){this.checkState()},handleEditableBlur:function(a){var c=!1,d=a&&a.relatedTarget?a.relatedTarget:this.lastMousedownTarget;return b.isDescendant(this.getToolbarElement(),d)?!1:(d&&(this.base.elements.forEach(function(a){c=c||b.isDescendant(a,d)||d===a},this),c||this.options.contentWindow.getSelection().removeAllRanges()),void this.checkState())},handleBlur:function(){setTimeout(function(){this.hideToolbar()}.bind(this),0)},isDisplayed:function(){return this.getToolbarElement().classList.contains("medium-editor-toolbar-active")},showToolbar:function(){this.isDisplayed()||(this.getToolbarElement().classList.add("medium-editor-toolbar-active"),"function"==typeof this.options.onShowToolbar&&this.options.onShowToolbar())},hideToolbar:function(){this.isDisplayed()&&(this.base.commands.forEach(function(a){"function"==typeof a.onHide&&a.onHide()}),this.getToolbarElement().classList.remove("medium-editor-toolbar-active"),"function"==typeof this.options.onHideToolbar&&this.options.onHideToolbar())},isToolbarDefaultActionsDisplayed:function(){return"block"===this.getToolbarActionsElement().style.display},hideToolbarDefaultActions:function(){this.isToolbarDefaultActionsDisplayed()&&(this.getToolbarActionsElement().style.display="none")},showToolbarDefaultActions:function(){this.hideExtensionForms(),this.isToolbarDefaultActionsDisplayed()||(this.getToolbarActionsElement().style.display="block"),this.base.delay(function(){this.showToolbar()}.bind(this))},hideExtensionForms:function(){this.base.commands.forEach(function(a){a.hasForm&&a.isDisplayed()&&a.hideForm()})},multipleBlockElementsSelected:function(){var a=c.getSelectionHtml.call(this).replace(/<[\S]+><\/[\S]+>/gim,""),b=a.match(/<(p|h[1-6]|blockquote)[^>]*>/g);return!!b&&b.length>1},checkSelectionElement:function(a,d){var e,f,g,h=0,i=a.getRangeAt(0);if(this.options.standardizeSelectionStart&&i.startContainer.nodeValue&&i.startOffset===i.startContainer.nodeValue.length&&(f=b.findAdjacentTextNodeWithContent(c.getSelectionElement(this.options.contentWindow),i.startContainer,this.options.ownerDocument))){for(h=0;0===f.nodeValue.substr(h,1).trim().length;)h+=1;g=this.options.ownerDocument.createRange(),g.setStart(f,h),g.setEnd(i.endContainer,i.endOffset),a.removeAllRanges(),a.addRange(g),i=g}for(e=0;e<this.base.elements.length;e+=1)if(this.base.elements[e]===d)return void this.showAndUpdateToolbar();this.options.staticToolbar||this.hideToolbar()},checkState:function(){var a,b;this.base.preventSelectionUpdates||(a=this.options.contentWindow.getSelection(),!this.options.updateOnEmptySelection&&""===a.toString().trim()||this.options.allowMultiParagraphSelection===!1&&this.multipleBlockElementsSelected()||c.selectionInContentEditableFalse(this.options.contentWindow)?this.options.staticToolbar?this.showAndUpdateToolbar():this.hideToolbar():(b=c.getSelectionElement(this.options.contentWindow),!b||b.getAttribute("data-disable-toolbar")?this.options.staticToolbar||this.hideToolbar():this.checkSelectionElement(a,b)))},showAndUpdateToolbar:function(){this.setToolbarButtonStates(),this.showToolbarDefaultActions(),this.setToolbarPosition()},setToolbarButtonStates:function(){this.base.commands.forEach(function(a){"function"==typeof a.isActive&&a.setInactive()}.bind(this)),this.checkActiveButtons()},checkActiveButtons:function(){var a,d=[],e=null,f=b.getSelectionRange(this.options.ownerDocument),g=function(b){"function"==typeof b.checkState?b.checkState(a):"function"==typeof b.isActive&&"function"==typeof b.isAlreadyApplied&&!b.isActive()&&b.isAlreadyApplied(a)&&b.setActive()};if(f)for(a=c.getSelectedParentElement(f),this.base.commands.forEach(function(a){return"function"==typeof a.queryCommandState&&(e=a.queryCommandState(),null!==e)?void(e&&a.setActive()):void d.push(a)});void 0!==a.tagName&&-1===b.parentElements.indexOf(a.tagName.toLowerCase)&&(d.forEach(g),-1===this.base.elements.indexOf(a));)a=a.parentNode},positionToolbarIfShown:function(){this.isDisplayed()&&this.setToolbarPosition()},setToolbarPosition:function(){var a,b=c.getSelectionElement(this.options.contentWindow),d=this.options.contentWindow.getSelection();return b&&this.options.contentWindow.getSelection().focusNode?-1===this.base.elements.indexOf(b)?this:(this.options.staticToolbar?(this.showToolbar(),this.positionStaticToolbar(b)):d.isCollapsed||(this.showToolbar(),this.positionToolbar(d)),a=this.base.getExtensionByName("anchor-preview"),void(a&&"function"==typeof a.hidePreview&&a.hidePreview())):this},positionStaticToolbar:function(a){this.getToolbarElement().style.left="0";var b,c=this.options.ownerDocument.documentElement&&this.options.ownerDocument.documentElement.scrollTop||this.options.ownerDocument.body.scrollTop,d=this.options.contentWindow.innerWidth,e=this.getToolbarElement(),f=a.getBoundingClientRect(),g=f.top+c,h=f.left+f.width/2,i=e.offsetHeight,j=e.offsetWidth,k=j/2;this.options.stickyToolbar?c>g+a.offsetHeight-i?(e.style.top=g+a.offsetHeight-i+"px",e.classList.remove("sticky-toolbar")):c>g-i?(e.classList.add("sticky-toolbar"),e.style.top="0px"):(e.classList.remove("sticky-toolbar"),e.style.top=g-i+"px"):e.style.top=g-i+"px","left"===this.options.toolbarAlign?b=f.left:"center"===this.options.toolbarAlign?b=h-k:"right"===this.options.toolbarAlign&&(b=f.right-j),0>b?b=0:b+j>d&&(b=d-j),e.style.left=b+"px"},positionToolbar:function(a){this.getToolbarElement().style.left="0";var b=this.options.contentWindow.innerWidth,c=a.getRangeAt(0),d=c.getBoundingClientRect(),e=(d.left+d.right)/2,f=this.getToolbarElement(),g=f.offsetHeight,h=f.offsetWidth,i=h/2,j=50,k=this.options.diffLeft-i;d.top<j?(f.classList.add("medium-toolbar-arrow-over"),f.classList.remove("medium-toolbar-arrow-under"),f.style.top=j+d.bottom-this.options.diffTop+this.options.contentWindow.pageYOffset-g+"px"):(f.classList.add("medium-toolbar-arrow-under"),f.classList.remove("medium-toolbar-arrow-over"),f.style.top=d.top+this.options.diffTop+this.options.contentWindow.pageYOffset-g+"px"),f.style.left=i>e?k+i+"px":i>b-e?b+k-i+"px":k+e+"px"}}}();var k;return function(){k=function(a){this.base=a,this.initPlaceholders(),this.attachEventHandlers()},k.prototype={initPlaceholders:function(){this.base.elements.forEach(function(a){this.updatePlaceholder(a)}.bind(this))},showPlaceholder:function(a){a&&a.classList.add("medium-editor-placeholder")},hidePlaceholder:function(a){a&&a.classList.remove("medium-editor-placeholder")},updatePlaceholder:function(a){a.querySelector("img")||a.querySelector("blockquote")||""!==a.textContent.replace(/^\s+|\s+$/g,"")?this.hidePlaceholder(a):this.showPlaceholder(a)},attachEventHandlers:function(){this.base.subscribe("externalInteraction",this.handleExternalInteraction.bind(this)),this.base.subscribe("editableBlur",this.handleBlur.bind(this)),this.base.subscribe("editableClick",this.handleHidePlaceholderEvent.bind(this)),this.base.subscribe("editableKeypress",this.handleHidePlaceholderEvent.bind(this)),this.base.subscribe("editablePaste",this.handleHidePlaceholderEvent.bind(this))},handleHidePlaceholderEvent:function(a,b){this.hidePlaceholder(b)},handleBlur:function(a,b){this.updatePlaceholder(b)},handleExternalInteraction:function(){this.initPlaceholders()}}}(),function(){function l(a,c){if(this.options.disableReturn||c.getAttribute("data-disable-return"))a.preventDefault();else if(this.options.disableDoubleReturn||this.getAttribute("data-disable-double-return")){var d=b.getSelectionStart(this.options.ownerDocument);d&&""===d.textContent.trim()&&a.preventDefault()}}function m(a){var c=b.getSelectionStart(this.options.ownerDocument),d=c&&c.tagName.toLowerCase();"pre"===d&&(a.preventDefault(),b.insertHTMLCommand(this.options.ownerDocument," ")),b.isListItem(c)&&(a.preventDefault(),a.shiftKey?this.options.ownerDocument.execCommand("outdent",!1,null):this.options.ownerDocument.execCommand("indent",!1,null))}function n(a){var d,e,f,g=b.getSelectionStart(this.options.ownerDocument),h=g.tagName.toLowerCase(),i=/^(\s+|<br\/?>)?$/i,j=/h\d/i;(a.which===b.keyCode.BACKSPACE||a.which===b.keyCode.ENTER)&&g.previousElementSibling&&j.test(h)&&0===c.getCaretOffsets(g).left?a.which===b.keyCode.BACKSPACE&&i.test(g.previousElementSibling.innerHTML)?(g.previousElementSibling.parentNode.removeChild(g.previousElementSibling),a.preventDefault()):a.which===b.keyCode.ENTER&&(f=this.options.ownerDocument.createElement("p"),f.innerHTML="<br>",g.previousElementSibling.parentNode.insertBefore(f,g),a.preventDefault()):a.which===b.keyCode.DELETE&&g.nextElementSibling&&g.previousElementSibling&&!j.test(h)&&i.test(g.innerHTML)&&j.test(g.nextElementSibling.tagName)?(d=this.options.ownerDocument.createRange(),e=this.options.ownerDocument.getSelection(),d.setStart(g.nextElementSibling,0),d.collapse(!0),e.removeAllRanges(),e.addRange(d),g.previousElementSibling.parentNode.removeChild(g),a.preventDefault()):a.which!==b.keyCode.BACKSPACE||"li"!==h||!i.test(g.innerHTML)||g.previousElementSibling||g.parentElement.previousElementSibling||"li"!==g.nextElementSibling.tagName.toLowerCase()||(f=this.options.ownerDocument.createElement("p"),f.innerHTML="<br>",g.parentElement.parentElement.insertBefore(f,g.parentElement),d=this.options.ownerDocument.createRange(),e=this.options.ownerDocument.getSelection(),d.setStart(f,0),d.collapse(!0),e.removeAllRanges(),e.addRange(d),g.parentElement.removeChild(g),a.preventDefault())}function o(a){var b="medium-editor-dragover";a.preventDefault(),a.dataTransfer.dropEffect="copy","dragover"===a.type?a.target.classList.add(b):"dragleave"===a.type&&a.target.classList.remove(b)}function p(a){var c,d="medium-editor-dragover";a.preventDefault(),a.stopPropagation(),a.dataTransfer.files&&(c=Array.prototype.slice.call(a.dataTransfer.files,0),c.some(function(a){if(a.type.match("image")){var c,d;c=new FileReader,c.readAsDataURL(a),d="medium-img-"+ +new Date,b.insertHTMLCommand(this.options.ownerDocument,'<img class="medium-image-loading" id="'+d+'" />'),c.onload=function(){var a=this.options.ownerDocument.getElementById(d);a&&(a.removeAttribute("id"),a.removeAttribute("class"),a.src=c.result)}.bind(this)}}.bind(this))),a.target.classList.remove(d)}function q(a){var c,d=b.getSelectionStart(this.options.ownerDocument);d&&(d.getAttribute("data-medium-element")&&0===d.children.length&&this.options.ownerDocument.execCommand("formatBlock",!1,"p"),a.which!==b.keyCode.ENTER||b.isListItem(d)||(c=d.tagName.toLowerCase(),"a"===c?this.options.ownerDocument.execCommand("unlink",!1,null):a.shiftKey||/h\d/.test(c)||this.options.ownerDocument.execCommand("formatBlock",!1,"p")))}function r(a){a||(a=[]),"string"==typeof a&&(a=this.options.ownerDocument.querySelectorAll(a)),b.isElement(a)&&(a=[a]),this.elements=Array.prototype.slice.apply(a)}function s(a,b,c){return a.parent&&(a.base=c),"function"==typeof a.init&&a.init(c),a.name||(a.name=b),a}function t(){var a,b=!1;if(this.options.disableAnchorPreview)return!1;if(this.options.extensions["anchor-preview"])return!1;if(this.options.disableToolbar)return!1;for(a=0;a<this.elements.length;a+=1)if(!this.elements[a].getAttribute("data-disable-toolbar")){b=!0;break}return b}function u(){var a,b=!1;for(a=0;a<this.elements.length;a+=1)this.options.disableEditing||this.elements[a].getAttribute("data-disable-editing")||this.elements[a].setAttribute("contentEditable",!0),this.elements[a].getAttribute("data-placeholder")||this.elements[a].setAttribute("data-placeholder",this.options.placeholder),this.elements[a].setAttribute("data-medium-element",!0),this.elements[a].setAttribute("role","textbox"),this.elements[a].setAttribute("aria-multiline",!0),this.options.disableToolbar||this.elements[a].getAttribute("data-disable-toolbar")||(b=!0);!this.toolbar&&b&&(this.toolbar=new j(this),this.options.elementsContainer.appendChild(this.toolbar.getToolbarElement()))}function v(){var a;if(this.subscribe("editableKeydownTab",m.bind(this)),this.subscribe("editableKeydownDelete",n.bind(this)),this.subscribe("editableKeydownEnter",n.bind(this)),this.options.disableReturn||this.options.disableDoubleReturn)this.subscribe("editableKeydownEnter",l.bind(this));else for(a=0;a<this.elements.length;a+=1)if(this.elements[a].getAttribute("data-disable-return")||this.elements[a].getAttribute("data-disable-double-return")){this.subscribe("editableKeydownEnter",l.bind(this));break}this.options.disableReturn||this.elements.forEach(function(a){a.getAttribute("data-disable-return")||this.on(a,"keyup",q.bind(this))}.bind(this)),this.options.imageDragging&&(this.subscribe("editableDrag",o.bind(this)),this.subscribe("editableDrop",p.bind(this)))}function w(){var a,b,c=this.options.buttons,d=this.options.extensions;this.commands=[],c.forEach(function(b){d[b]?(a=s(d[b],b,this),this.commands.push(a)):"anchor"===b?(a=s(new h,b,this),this.commands.push(a)):f.hasOwnProperty(b)&&(a=new e(f[b],this),this.commands.push(a))}.bind(this));for(b in d)d.hasOwnProperty(b)&&-1===c.indexOf(b)&&(a=s(d[b],b,this));t.call(this)&&this.commands.push(s(new i,"anchor-preview",this))}function x(a,c){var d,e=/^append-(.+)$/gi;return d=e.exec(a),d?b.execFormatBlock(this.options.ownerDocument,d[1]):"createLink"===a?this.createLink(c):"image"===a?this.options.ownerDocument.execCommand("insertImage",!1,this.options.contentWindow.getSelection()):this.options.ownerDocument.execCommand(a,!1,null)}a.statics={ButtonsData:f,DefaultButton:e,AnchorExtension:h,Toolbar:j,AnchorPreview:i},a.util=b,a.selection=c,a.prototype={defaults:{allowMultiParagraphSelection:!0,anchorInputPlaceholder:"Paste or type a link",anchorInputCheckboxLabel:"Open in new window",anchorPreviewHideDelay:500,buttons:["bold","italic","underline","anchor","header1","header2","quote"],buttonLabels:!1,checkLinkFormat:!1,cleanPastedHTML:!1,delay:0,diffLeft:0,diffTop:-10,disableReturn:!1,disableDoubleReturn:!1,disableToolbar:!1,disableAnchorPreview:!1,disableEditing:!1,disablePlaceholders:!1,toolbarAlign:"center",elementsContainer:!1,imageDragging:!0,standardizeSelectionStart:!1,contentWindow:window,ownerDocument:document,firstHeader:"h3",forcePlainText:!0,placeholder:"Type your text",secondHeader:"h4",targetBlank:!1,anchorTarget:!1,anchorButton:!1,anchorButtonClass:"btn",extensions:{},activeButtonClass:"medium-editor-button-active",firstButtonClass:"medium-editor-button-first",lastButtonClass:"medium-editor-button-last"},init:function(a,c){var d=1;if(this.options=b.defaults(c,this.defaults),r.call(this,a),0!==this.elements.length){for(this.options.elementsContainer||(this.options.elementsContainer=this.options.ownerDocument.body);this.options.elementsContainer.querySelector("#medium-editor-toolbar-"+d);)d+=1;return this.id=d,this.setup()}},setup:function(){this.isActive||(this.events=new d(this),this.isActive=!0,w.call(this),u.call(this),v.call(this),this.pasteHandler=new g(this),this.options.disablePlaceholders||(this.placeholders=new k(this)))},destroy:function(){if(this.isActive){var a;for(this.isActive=!1,void 0!==this.toolbar&&(this.toolbar.deactivate(),delete this.toolbar),a=0;a<this.elements.length;a+=1)this.elements[a].removeAttribute("contentEditable"),this.elements[a].removeAttribute("data-medium-element");this.commands.forEach(function(a){"function"==typeof a.deactivate&&a.deactivate()}.bind(this)),this.events.detachAllDOMEvents()}},on:function(a,b,c,d){this.events.attachDOMEvent(a,b,c,d)},off:function(a,b,c,d){this.events.detachDOMEvent(a,b,c,d)},subscribe:function(a,b){this.events.attachCustomEvent(a,b)},delay:function(a){var b=this;setTimeout(function(){b.isActive&&a()},this.options.delay)},serialize:function(){var a,b,c={};for(a=0;a<this.elements.length;a+=1)b=""!==this.elements[a].id?this.elements[a].id:"element-"+a,c[b]={value:this.elements[a].innerHTML.trim()};return c},getExtensionByName:function(a){var b;return this.commands&&this.commands.length&&this.commands.forEach(function(c){c.name===a&&(b=c)}),b},callExtensions:function(a){if(!(arguments.length<1)){var b,c,d=Array.prototype.slice.call(arguments,1);for(c in this.options.extensions)this.options.extensions.hasOwnProperty(c)&&(b=this.options.extensions[c],void 0!==b[a]&&b[a].apply(b,d));return this}},stopSelectionUpdates:function(){this.preventSelectionUpdates=!0},startSelectionUpdates:function(){this.preventSelectionUpdates=!1},checkSelection:function(){return this.toolbar&&this.toolbar.checkState(),this},queryCommandState:function(a){var b,c=/^full-(.+)$/gi,d=null;b=c.exec(a),b&&(a=b[1]);try{d=this.options.ownerDocument.queryCommandState(a)}catch(e){d=null}return d},execAction:function(a,c){var d,e,f=/^full-(.+)$/gi;return d=f.exec(a),d?(this.saveSelection(),this.selectAllContents(),e=x.call(this,d[1],c),this.restoreSelection()):e=x.call(this,a,c),("insertunorderedlist"===a||"insertorderedlist"===a)&&b.cleanListDOM(this.getSelectedParentElement()),this.checkSelection(),e},getSelectedParentElement:function(a){return void 0===a&&(a=this.options.contentWindow.getSelection().getRangeAt(0)),c.getSelectedParentElement(a)},hideToolbarDefaultActions:function(){return this.toolbar&&this.toolbar.hideToolbarDefaultActions(),this},setToolbarPosition:function(){this.toolbar&&this.toolbar.setToolbarPosition()},selectAllContents:function(){var a=this.options.ownerDocument.createRange(),b=this.options.contentWindow.getSelection(),d=c.getSelectionElement(this.options.contentWindow);if(d){for(;1===d.children.length;)d=d.children[0];a.selectNodeContents(d),b.removeAllRanges(),b.addRange(a)}},saveSelection:function(){this.selectionState=null;var a,c,d,e=this.options.contentWindow.getSelection(),f=-1;e.rangeCount>0&&(a=e.getRangeAt(0),c=a.cloneRange(),this.elements.forEach(function(c,d){return c===a.startContainer||b.isDescendant(c,a.startContainer)?(f=d,!1):void 0}),f>-1&&(c.selectNodeContents(this.elements[f]),c.setEnd(a.startContainer,a.startOffset),d=c.toString().length,this.selectionState={start:d,end:d+a.toString().length,editableElementIndex:f}))},restoreSelection:function(){if(this.selectionState){var a,b,c,d,e=this.elements[this.selectionState.editableElementIndex],f=0,g=this.options.ownerDocument.createRange(),h=[e],i=!1,j=!1;for(g.setStart(e,0),g.collapse(!0),a=h.pop();!j&&a;){if(3===a.nodeType)d=f+a.length,!i&&this.selectionState.start>=f&&this.selectionState.start<=d&&(g.setStart(a,this.selectionState.start-f),i=!0),i&&this.selectionState.end>=f&&this.selectionState.end<=d&&(g.setEnd(a,this.selectionState.end-f),j=!0),f=d;else for(b=a.childNodes.length-1;b>=0;)h.push(a.childNodes[b]),b-=1;j||(a=h.pop())}c=this.options.contentWindow.getSelection(),c.removeAllRanges(),c.addRange(g)}},createLink:function(a){var c,d;if(a.url&&a.url.trim().length>0&&(this.options.ownerDocument.execCommand("createLink",!1,a.url),(this.options.targetBlank||"_blank"===a.target)&&b.setTargetBlank(b.getSelectionStart(this.options.ownerDocument)),a.buttonClass&&b.addClassToAnchors(b.getSelectionStart(this.options.ownerDocument),a.buttonClass)),this.options.targetBlank||"_blank"===a.target||a.buttonClass)for(c=this.options.ownerDocument.createEvent("HTMLEvents"),c.initEvent("input",!0,!0,this.options.contentWindow),d=0;d<this.elements.length;d+=1)this.elements[d].dispatchEvent(c)},activate:function(){b.deprecatedMethod.call(this,"activate","setup",arguments)},deactivate:function(){b.deprecatedMethod.call(this,"deactivate","destroy",arguments)},cleanPaste:function(a){this.pasteHandler.cleanPaste(a)},pasteHTML:function(a,b){this.pasteHandler.pasteHTML(a,b)}}}(),a.version=function(a,b,c){return{major:parseInt(a,10),minor:parseInt(b,10),revision:parseInt(c,10),toString:function(){return[a,b,c].join(".")}}}.apply(this,{version:"4.0.3"}.version.split(".")),a}());

@@ -25,3 +25,4 @@ /*global module, require, process*/

'src/js/placeholders.js',
'src/js/core.js'
'src/js/core.js',
'src/js/version.js'
],

@@ -66,5 +67,10 @@ browsers = [ {

gruntConfig.jslint = {
client: {
exclude: ['src/js/polyfills.js'],
// TODO: build check with debug and devel false
gruntConfig.jshint = {
options: {
ignores: ['src/js/polyfills.js'],
jshintrc: true,
reporter: require('jshint-stylish')
},
all: {
src: [

@@ -74,10 +80,3 @@ 'src/js/**/*.js',

'Gruntfile.js'
],
directives: {
browser: true,
unparam: true,
todo: true,
regexp: true,
debug: true
}
]
}

@@ -275,3 +274,3 @@ };

options: {
files: ['bower.json', 'package.json'],
files: ['bower.json', 'package.json','src/js/version.js'],
updateConfigs: [],

@@ -295,10 +294,10 @@ commit: false,

if (parseInt(process.env.TRAVIS_PULL_REQUEST, 10) > 0) {
grunt.registerTask('travis', ['jslint', 'jasmine:suite', 'csslint', 'coveralls']);
grunt.registerTask('travis', ['jshint', 'jasmine:suite', 'csslint', 'coveralls']);
} else {
grunt.registerTask('travis', ['connect', 'jslint', 'jasmine:suite', 'csslint', 'saucelabs-jasmine', 'coveralls']);
grunt.registerTask('travis', ['connect', 'jshint', 'jasmine:suite', 'csslint', 'saucelabs-jasmine', 'coveralls']);
}
grunt.registerTask('test', ['jslint', 'concat', 'jasmine:suite', 'csslint']);
grunt.registerTask('test', ['jshint', 'concat', 'jasmine:suite', 'csslint']);
grunt.registerTask('sauce', ['connect', 'saucelabs-jasmine']);
grunt.registerTask('js', ['jslint', 'concat', 'jasmine:suite', 'uglify']);
grunt.registerTask('js', ['jshint', 'concat', 'jasmine:suite', 'uglify']);
grunt.registerTask('css', ['sass', 'autoprefixer', 'cssmin', 'csslint']);

@@ -305,0 +304,0 @@ grunt.registerTask('default', ['js', 'css']);

{
"name": "medium-editor",
"version": "4.0.3",
"version": "4.1.0",
"author": "Davi Ferreira <hi@daviferreira.com>",

@@ -47,6 +47,6 @@ "contributors": [

"grunt-contrib-jasmine": "~0.8.2",
"grunt-contrib-jshint": "^0.11.1",
"grunt-contrib-uglify": "~0.8.0",
"grunt-contrib-watch": "~0.6.1",
"grunt-coveralls": "^1.0.0",
"grunt-jslint": "~1.1.12",
"grunt-plato": "~1.3.0",

@@ -56,2 +56,3 @@ "grunt-sass": "~0.18.1",

"grunt-template-jasmine-istanbul": "~0.3.3",
"jshint-stylish": "^1.0.1",
"load-grunt-tasks": "^3.1.0",

@@ -58,0 +59,0 @@ "time-grunt": "^1.0.0"

@@ -1,4 +0,3 @@

/*global MediumEditor, describe, it, xit, expect, spyOn,
afterEach, beforeEach, selectElementContents,
jasmine, fireEvent, console, tearDown*/
/*global MediumEditor, describe, it, expect, spyOn,
afterEach, beforeEach, jasmine, fireEvent, tearDown */

@@ -5,0 +4,0 @@ describe('Anchor Preview TestCase', function () {

/*global MediumEditor, describe, it, expect, spyOn,
afterEach, beforeEach, selectElementContents,
jasmine, fireEvent, console, tearDown,
selectElementContentsAndFire, xit */
jasmine, fireEvent, tearDown,
selectElementContentsAndFire */

@@ -6,0 +6,0 @@ describe('Anchor Button TestCase', function () {

/*global MediumEditor, describe, it, expect, spyOn,
afterEach, beforeEach, selectElementContents,
jasmine, fireEvent, tearDown, console,
selectElementContentsAndFire, xit, isOldIE, isIE */
afterEach, beforeEach, jasmine, fireEvent, tearDown,
selectElementContentsAndFire, isOldIE, isIE */

@@ -679,2 +678,3 @@ describe('Buttons TestCase', function () {

// TODO: IE does not unwrap something like <p><span style='color:red'>bar</span></p>
this.el.innerHTML = "<div><h2>b<i>a</i>r</h2><p><em><strong><u><sub><sup>foo</sup></sub></u></strong></em></p><pre>foo<i>bar</i>baz</pre></div>";

@@ -681,0 +681,0 @@ selectElementContentsAndFire(editor.elements[0].querySelector('div'));

@@ -1,4 +0,4 @@

/*global MediumEditor, describe, it, expect, spyOn, jasmine, fireEvent,
afterEach, beforeEach, selectElementContents, runs, waitsFor,
tearDown, placeCursorInsideElement, isFirefox, console, Util */
/*global MediumEditor, describe, it, expect, spyOn,
fireEvent, afterEach, beforeEach, selectElementContents,
tearDown, placeCursorInsideElement, isFirefox, Util */

@@ -5,0 +5,0 @@ describe('Content TestCase', function () {

@@ -1,4 +0,3 @@

/*global MediumEditor, describe, it, expect, spyOn, jasmine, fireEvent,
afterEach, beforeEach, selectElementContents, runs, waitsFor,
tearDown */
/*global MediumEditor, describe, it, expect, jasmine,
afterEach, beforeEach, tearDown */

@@ -5,0 +4,0 @@ describe('Delay TestCase', function () {

@@ -1,2 +0,2 @@

/*global MediumEditor, describe, it, expect, spyOn,
/*global MediumEditor, describe, it, expect,
afterEach, beforeEach, tearDown*/

@@ -3,0 +3,0 @@

@@ -1,4 +0,3 @@

/*global MediumEditor, describe, it, expect, spyOn, jasmine, fireEvent,
afterEach, beforeEach, selectElementContents, runs, waitsFor,
tearDown */
/*global MediumEditor, describe, it, expect, jasmine,
fireEvent, afterEach, beforeEach, tearDown */

@@ -5,0 +4,0 @@ describe('Events TestCase', function () {

@@ -1,4 +0,3 @@

/*global MediumEditor, describe, it, expect, spyOn,
afterEach, beforeEach, selectElementContents,
jasmine, fireEvent, console, tearDown*/
/*global MediumEditor, describe, it, expect, afterEach,
beforeEach, jasmine, tearDown */

@@ -43,3 +42,3 @@ describe('Exploits', function () {

clipboardData: {
getData: function (type) {
getData: function () {
// do we need to return different results for the different types? text/plain, text/html

@@ -84,3 +83,3 @@ return test.paste;

clipboardData: {
getData: function (type) {
getData: function () {
// do we need to return different results for the different types? text/plain, text/html

@@ -87,0 +86,0 @@ return test.paste;

/*global MediumEditor, describe, it, expect, spyOn,
afterEach, beforeEach, selectElementContents,
jasmine, fireEvent, tearDown, console,
selectElementContentsAndFire */
afterEach, beforeEach, jasmine, tearDown,
selectElementContentsAndFire */

@@ -47,4 +46,4 @@ describe('Extensions TestCase', function () {

Extension.prototype.aMethod = function (param) {
Extension.prototype.aMethod = function () {
// just a stub function
};

@@ -108,3 +107,3 @@

ExtensionWithNoButton = function () {
this.init = function (me) {};
this.init = function () {};
};

@@ -111,0 +110,0 @@

@@ -1,5 +0,3 @@

/*global MediumEditor, describe, it, expect, spyOn,
afterEach, beforeEach, selectElementContents,
jasmine, fireEvent, tearDown, console,
selectElementContentsAndFire, xit */
/*global MediumEditor, describe, it, expect, afterEach,
beforeEach, tearDown, selectElementContentsAndFire */

@@ -6,0 +4,0 @@ describe('Full Content Action TestCase', function () {

@@ -1,4 +0,3 @@

/*global MediumEditor, describe, it, expect, spyOn,
afterEach, beforeEach, fireEvent, waits,
jasmine, selectElementContents, tearDown */
/*global MediumEditor, describe, it, expect, afterEach,
beforeEach, fireEvent, jasmine, tearDown */

@@ -5,0 +4,0 @@ describe('Protect Header Tags TestCase', function () {

/*global MediumEditor, describe, it, expect, spyOn,
afterEach, beforeEach, selectElementContents,
jasmine, fireEvent, console, tearDown,
selectElementContentsAndFire */
afterEach, beforeEach, selectElementContents,
jasmine, tearDown, selectElementContentsAndFire */

@@ -166,2 +165,31 @@ describe('Pasting content', function () {

});
describe('pasteHTML', function () {
it('should remove certain attributes and tags by default', function () {
var editor = new MediumEditor('.editor');
selectElementContents(this.el.firstChild);
editor.pasteHTML('<p class="some-class" style="font-weight: bold" dir="ltr"><meta name="description" content="test" />test</p>');
expect(editor.elements[0].innerHTML).toBe('<p>test</p>');
});
it('should accept a list of attrs to clean up', function () {
var editor = new MediumEditor('.editor');
selectElementContents(this.el.firstChild);
editor.pasteHTML(
'<table class="medium-editor-table" dir="ltr" style="border: 1px solid red;"><tbody><tr><td>test</td></tr></tbody></table>',
{cleanAttrs: ['style', 'dir']}
);
expect(editor.elements[0].innerHTML).toBe('<table class="medium-editor-table"><tbody><tr><td>test</td></tr></tbody></table>');
});
it('should accept a list of tags to clean up', function () {
var editor = new MediumEditor('.editor');
selectElementContents(this.el.firstChild);
editor.pasteHTML(
'<div><i>test</i><meta name="description" content="test" /><b>test</b></div>',
{cleanTags: ['meta', 'b']}
);
expect(editor.elements[0].innerHTML).toBe('<div><i>test</i></div>');
});
});
});

@@ -1,4 +0,3 @@

/*global MediumEditor, describe, it, expect, spyOn,
afterEach, beforeEach, selectElementContents,
jasmine, fireEvent, tearDown, console */
/*global MediumEditor, describe, it, expect,
afterEach, beforeEach, fireEvent, tearDown */

@@ -5,0 +4,0 @@ describe('Placeholder TestCase', function () {

/*global MediumEditor, describe, it, expect,
afterEach, beforeEach, fireEvent, spyOn,
selectElementContentsAndFire, jasmine, tearDown,
console, xit*/
selectElementContentsAndFire, jasmine, tearDown */

@@ -6,0 +5,0 @@ describe('Resize TestCase', function () {

/*global MediumEditor, describe, it, expect, spyOn,
afterEach, beforeEach, fireEvent, waits,
afterEach, beforeEach, fireEvent,
jasmine, selectElementContents, tearDown,
selectElementContentsAndFire, console */
selectElementContentsAndFire, Selection */

@@ -22,2 +22,9 @@ describe('Selection TestCase', function () {

describe('Exposure', function () {
it("is exposed on the MediumEditor ctor", function () {
expect(MediumEditor.selection).toBeTruthy();
expect(MediumEditor.selection).toEqual(Selection);
});
});
describe('Saving Selection', function () {

@@ -24,0 +31,0 @@ it('should be applicable if html changes but text does not', function () {

@@ -1,4 +0,3 @@

/*global MediumEditor, describe, it, expect, spyOn,
afterEach, beforeEach, selectElementContents,
fireEvent, tearDown*/
/*global MediumEditor, describe, it, expect,
afterEach, beforeEach, tearDown */

@@ -5,0 +4,0 @@ describe('Anchor Button TestCase', function () {

@@ -1,4 +0,4 @@

/*global MediumEditor, describe, it, expect, spyOn, jasmine, fireEvent,
afterEach, beforeEach, selectElementContents, runs, waitsFor,
tearDown, xit, selectElementContentsAndFire */
/*global MediumEditor, describe, it, expect, spyOn, jasmine,
fireEvent, afterEach, beforeEach, selectElementContents,
tearDown, selectElementContentsAndFire */

@@ -5,0 +5,0 @@ describe('Setup/Destroy TestCase', function () {

/*global MediumEditor, describe, it, expect, spyOn,
afterEach, beforeEach, selectElementContents, runs,
fireEvent, waitsFor, tearDown, xit, jasmine,
selectElementContentsAndFire, placeCursorInsideElement,
console, Toolbar*/
afterEach, beforeEach, selectElementContents,
fireEvent, tearDown, jasmine, selectElementContentsAndFire,
placeCursorInsideElement, Toolbar */

@@ -7,0 +6,0 @@ describe('Toolbar TestCase', function () {

@@ -1,2 +0,2 @@

/*global Util, describe, it, expect, spyOn, jasmine*/
/*global MediumEditor, Util, describe, it, expect, spyOn */

@@ -6,2 +6,11 @@ describe('Util', function () {

describe('Exposure', function () {
it("is exposed on the MediumEditor ctor", function () {
expect(MediumEditor.util).toBeTruthy();
expect(MediumEditor.util).toEqual(Util);
});
});
describe('Deprecated', function () {

@@ -8,0 +17,0 @@ it('should warn when a method is deprecated', function () {

@@ -1,7 +0,5 @@

/*global console */
var DefaultButton,
ButtonsData;
(function (window, document) {
(function () {
'use strict';

@@ -356,2 +354,2 @@

};
}(window, document));
}());

@@ -1,3 +0,2 @@

/*global module, console, define, FileReader,
Util, ButtonsData, DefaultButton,
/*global FileReader, Util, ButtonsData, DefaultButton,
PasteHandler, Selection, AnchorExtension,

@@ -27,3 +26,3 @@ Toolbar, AnchorPreview, Events, Placeholders */

function handleTabKeydown(event, element) {
function handleTabKeydown(event) {
// Override tab only for pre nodes

@@ -51,3 +50,3 @@ var node = Util.getSelectionStart(this.options.ownerDocument),

function handleBlockDeleteKeydowns(event, element) {
function handleBlockDeleteKeydowns(event) {
var range, sel, p, node = Util.getSelectionStart(this.options.ownerDocument),

@@ -58,9 +57,9 @@ tagName = node.tagName.toLowerCase(),

if ((event.which === Util.keyCode.BACKSPACE || event.which === Util.keyCode.ENTER)
if ((event.which === Util.keyCode.BACKSPACE || event.which === Util.keyCode.ENTER) &&
// has a preceeding sibling
&& node.previousElementSibling
node.previousElementSibling &&
// in a header
&& isHeader.test(tagName)
isHeader.test(tagName) &&
// at the very end of the block
&& Selection.getCaretOffsets(node).left === 0) {
Selection.getCaretOffsets(node).left === 0) {
if (event.which === Util.keyCode.BACKSPACE && isEmpty.test(node.previousElementSibling.innerHTML)) {

@@ -80,12 +79,12 @@ // backspacing the begining of a header into an empty previous element will

}
} else if (event.which === Util.keyCode.DELETE
} else if (event.which === Util.keyCode.DELETE &&
// between two sibling elements
&& node.nextElementSibling
&& node.previousElementSibling
node.nextElementSibling &&
node.previousElementSibling &&
// not in a header
&& !isHeader.test(tagName)
!isHeader.test(tagName) &&
// in an empty tag
&& isEmpty.test(node.innerHTML)
isEmpty.test(node.innerHTML) &&
// when the next tag *is* a header
&& isHeader.test(node.nextElementSibling.tagName)) {
isHeader.test(node.nextElementSibling.tagName)) {
// hitting delete in an empty element preceding a header, ex:

@@ -109,12 +108,12 @@ // <p>[CURSOR]</p><h1>Header</h1>

event.preventDefault();
} else if (event.which === Util.keyCode.BACKSPACE
&& tagName === 'li'
} else if (event.which === Util.keyCode.BACKSPACE &&
tagName === 'li' &&
// hitting backspace inside an empty li
&& isEmpty.test(node.innerHTML)
isEmpty.test(node.innerHTML) &&
// is first element (no preceeding siblings)
&& !node.previousElementSibling
!node.previousElementSibling &&
// parent also does not have a sibling
&& !node.parentElement.previousElementSibling
!node.parentElement.previousElementSibling &&
// is not the only li in a list
&& node.nextElementSibling.tagName.toLowerCase() === 'li') {
node.nextElementSibling.tagName.toLowerCase() === 'li') {
// backspacing in an empty first list element in the first list (with more elements) ex:

@@ -148,3 +147,3 @@ // <ul><li>[CURSOR]</li><li>List Item 2</li></ul>

function handleDrag(event, element) {
function handleDrag(event) {
var className = 'medium-editor-dragover';

@@ -161,3 +160,3 @@ event.preventDefault();

function handleDrop(event, element) {
function handleDrop(event) {
var className = 'medium-editor-dragover',

@@ -406,2 +405,5 @@ files;

MediumEditor.util = Util;
MediumEditor.selection = Selection;
MediumEditor.prototype = {

@@ -828,6 +830,6 @@ defaults: {

pasteHTML: function (html) {
this.pasteHandler.pasteHTML(html);
pasteHTML: function (html, options) {
this.pasteHandler.pasteHTML(html, options);
}
};
}());

@@ -1,7 +0,6 @@

/*global Util, console, Selection,
ButtonsData, DefaultButton */
/*global Util, Selection */
var Events;
(function (window, document) {
(function () {
'use strict';

@@ -178,5 +177,5 @@

for (i = 0; i < this.base.elements.length; i += 1) {
if (this.base.elements[i] === event.target
|| Util.isDescendant(this.base.elements[i], event.target)
|| Util.isDescendant(this.base.elements[i], selRange)) {
if (this.base.elements[i] === event.target ||
Util.isDescendant(this.base.elements[i], event.target) ||
Util.isDescendant(this.base.elements[i], selRange)) {
isDescendantOfEditorElements = true;

@@ -187,5 +186,5 @@ break;

// If it's not part of the editor, toolbar, or anchor preview
if (!isDescendantOfEditorElements
&& (!toolbarEl || (toolbarEl !== event.target && !Util.isDescendant(toolbarEl, event.target)))
&& (!previewEl || (previewEl !== event.target && !Util.isDescendant(previewEl, event.target)))) {
if (!isDescendantOfEditorElements &&
(!toolbarEl || (toolbarEl !== event.target && !Util.isDescendant(toolbarEl, event.target))) &&
(!previewEl || (previewEl !== event.target && !Util.isDescendant(previewEl, event.target)))) {
this.triggerCustomEvent('externalInteraction', event);

@@ -241,2 +240,2 @@ }

}(window, document));
}());

@@ -1,6 +0,4 @@

/*global Util, Selection, console*/
var AnchorPreview;
(function (window, document) {
(function () {
'use strict';

@@ -64,4 +62,4 @@

showPreview: function (anchorEl) {
if (this.anchorPreview.classList.contains('medium-editor-anchor-preview-active')
|| anchorEl.getAttribute('data-disable-preview')) {
if (this.anchorPreview.classList.contains('medium-editor-anchor-preview-active') ||
anchorEl.getAttribute('data-disable-preview')) {
return true;

@@ -113,3 +111,3 @@ }

handleClick: function (event) {
handleClick: function () {
var range,

@@ -140,3 +138,3 @@ sel,

handleAnchorMouseout: function (event) {
handleAnchorMouseout: function () {
this.anchorToPreview = null;

@@ -184,3 +182,3 @@ this.base.off(this.activeAnchor, 'mouseout', this.instance_handleAnchorMouseout);

handlePreviewMouseover: function (event) {
handlePreviewMouseover: function () {
this.lastOver = (new Date()).getTime();

@@ -240,2 +238,2 @@ this.hovering = true;

};
}(window, document));
}());

@@ -1,7 +0,6 @@

/*global Util, console, Selection,
ButtonsData, DefaultButton */
/*global Util, Selection, DefaultButton */
var AnchorExtension;
(function (window, document) {
(function () {
'use strict';

@@ -257,2 +256,2 @@

}(window, document));
}());

@@ -1,5 +0,5 @@

/*global Util, Selection, console*/
/*global Util, Selection*/
var PasteHandler;
(function (window, document) {
(function () {
'use strict';

@@ -78,5 +78,5 @@ /*jslint regexp: true*/

if (event.clipboardData
&& event.clipboardData.getData
&& !event.defaultPrevented) {
if (event.clipboardData &&
event.clipboardData.getData &&
!event.defaultPrevented) {
event.preventDefault();

@@ -153,3 +153,8 @@

pasteHTML: function (html) {
pasteHTML: function (html, options) {
options = Util.defaults(options, {
cleanAttrs: ['class', 'style', 'dir'],
cleanTags: ['meta']
});
var elList, workEl, i, fragmentBody, pasteBlock = this.options.ownerDocument.createDocumentFragment();

@@ -165,19 +170,16 @@

elList = fragmentBody.querySelectorAll('*');
for (i = 0; i < elList.length; i += 1) {
workEl = elList[i];
Util.cleanupAttrs(workEl, options.cleanAttrs);
Util.cleanupTags(workEl, options.cleanTags);
}
// delete ugly attributes
workEl.removeAttribute('class');
workEl.removeAttribute('style');
workEl.removeAttribute('dir');
if (workEl.tagName.toLowerCase() === 'meta') {
workEl.parentNode.removeChild(workEl);
}
}
Util.insertHTMLCommand(this.options.ownerDocument, fragmentBody.innerHTML.replace(/&nbsp;/g, ' '));
},
isCommonBlock: function (el) {
return (el && (el.tagName.toLowerCase() === 'p' || el.tagName.toLowerCase() === 'div'));
},
filterCommonBlocks: function (el) {

@@ -188,2 +190,3 @@ if (/^\s*$/.test(el.textContent) && el.parentNode) {

},
filterLineBreak: function (el) {

@@ -254,2 +257,2 @@

};
}(window, document));
}());

@@ -1,7 +0,4 @@

/*global Util, console, Selection,
ButtonsData, DefaultButton */
var Placeholders;
(function (window, document) {
(function () {
'use strict';

@@ -69,3 +66,3 @@

handleExternalInteraction: function (event) {
handleExternalInteraction: function () {
// Update all placeholders

@@ -76,2 +73,2 @@ this.initPlaceholders();

}(window, document));
}());
/*global Util */
var Selection;
(function (window, document) {
(function () {
'use strict';

@@ -100,2 +100,2 @@

};
}(document, window));
}());

@@ -1,6 +0,6 @@

/*global Util, Selection, console*/
/*global Util, Selection*/
var Toolbar;
(function (window, document) {
(function () {
'use strict';

@@ -106,3 +106,3 @@

// - For some event (like resize) a slight lag in UI responsiveness is OK and provides performance benefits
this.throttledPositionToolbar = Util.throttle(function (event) {
this.throttledPositionToolbar = Util.throttle(function () {
if (this.base.isActive) {

@@ -141,7 +141,7 @@ this.positionToolbarIfShown();

handleWindowScroll: function (event) {
handleWindowScroll: function () {
this.positionToolbarIfShown();
},
handleWindowResize: function (event) {
handleWindowResize: function () {
this.throttledPositionToolbar();

@@ -165,3 +165,3 @@ },

handleEditableClick: function (event) {
handleEditableClick: function () {
// Delay the call to checkState to handle bug where selection is empty

@@ -174,3 +174,3 @@ // immediately after clicking inside a pre-existing selection

handleEditableKeyup: function (event) {
handleEditableKeyup: function () {
this.checkState();

@@ -206,3 +206,3 @@ },

handleBlur: function (event) {
handleBlur: function () {
// Delay the call to hideToolbar to handle bug with multiple editors on the page at once

@@ -566,2 +566,2 @@ setTimeout(function () {

};
}(window, document));
}());

@@ -5,3 +5,3 @@ /*global NodeFilter, console*/

(function (window, document) {
(function (window) {
'use strict';

@@ -368,4 +368,18 @@

}
},
cleanupAttrs: function (el, attrs) {
attrs.forEach(function (attr) {
el.removeAttribute(attr);
});
},
cleanupTags: function (el, tags) {
tags.forEach(function (tag) {
if (el.tagName.toLowerCase() === tag) {
el.parentNode.removeChild(el);
}
});
}
};
}(window, document));
}(window));

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc