(function(factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else if(typeof exports==="object"){factory(require("jquery"))}else{factory(jQuery)}})(function($){"use strict";var Markdown=function(element,options){var opts=["autofocus","savable","hideable","width","height","resize","iconlibrary","language","footer","fullscreen","hiddenButtons","disabledButtons"];$.each(opts,function(_,opt){if(typeof $(element).data(opt)!=="undefined"){options=typeof options=="object"?options:{};options[opt]=$(element).data(opt)}});this.$ns="bootstrap-markdown";this.$element=$(element);this.$editable={el:null,type:null,attrKeys:[],attrValues:[],content:null};this.$options=$.extend(true,{},$.fn.markdown.defaults,options,this.$element.data("options"));this.$oldContent=null;this.$isPreview=false;this.$isFullscreen=false;this.$editor=null;this.$textarea=null;this.$handler=[];this.$callback=[];this.$nextTab=[];this.showEditor()};Markdown.prototype={constructor:Markdown,__alterButtons:function(name,alter){var handler=this.$handler,isAll=name=="all",that=this;$.each(handler,function(k,v){var halt=true;if(isAll){halt=false}else{halt=v.indexOf(name)<0}if(halt===false){alter(that.$editor.find('button[data-handler="'+v+'"]'))}})},__buildButtons:function(buttonsArray,container){var i,ns=this.$ns,handler=this.$handler,callback=this.$callback;for(i=0;i",{class:"btn-group"});for(z=0;z");buttonContainer.text(" "+this.__localize(btnText)).addClass("btn-light").addClass(btnClass);if(btnClass.match(/btn\-(primary|success|info|warning|danger|link)/)){buttonContainer.removeClass("btn-light")}buttonContainer.attr({type:"button",title:this.__localize(button.title)+hotkeyCaption,tabindex:tabIndex,"data-provider":ns,"data-handler":buttonHandler,"data-hotkey":hotkey});if(button.toggle===true){buttonContainer.attr("data-toggle","button")}buttonIconContainer=$("");buttonIconContainer.addClass(buttonIcon);buttonIconContainer.prependTo(buttonContainer);btnGroupContainer.addClass("mr-2");btnGroupContainer.append(buttonContainer);handler.push(buttonHandler);callback.push(button.callback)}container.append(btnGroupContainer)}}return container},__setListener:function(){var hasRows=typeof this.$textarea.attr("rows")!=="undefined",maxRows=this.$textarea.val().split("\n").length>5?this.$textarea.val().split("\n").length:"5",rowsVal=hasRows?this.$textarea.attr("rows"):maxRows;this.$textarea.attr("rows",rowsVal);if(this.$options.resize){this.$textarea.css("resize",this.$options.resize)}this.$textarea.on({focus:$.proxy(this.focus,this),keyup:$.proxy(this.keyup,this),change:$.proxy(this.change,this),select:$.proxy(this.select,this)});if(this.eventSupported("keydown")){this.$textarea.on("keydown",$.proxy(this.keydown,this))}if(this.eventSupported("keypress")){this.$textarea.on("keypress",$.proxy(this.keypress,this))}this.$textarea.data("markdown",this)},__handle:function(e){var target=$(e.currentTarget),handler=this.$handler,callback=this.$callback,handlerName=target.attr("data-handler"),callbackIndex=handler.indexOf(handlerName),callbackHandler=callback[callbackIndex];$(e.currentTarget).focus();callbackHandler(this);this.change(this);if(handlerName.indexOf("cmdSave")<0){this.$textarea.focus()}e.preventDefault()},__localize:function(string){var messages=$.fn.markdown.messages,language=this.$options.language;if(typeof messages!=="undefined"&&typeof messages[language]!=="undefined"&&typeof messages[language][string]!=="undefined"){return messages[language][string]}return string},__getIcon:function(src){return typeof src=="object"?src[this.$options.iconlibrary]:src},setFullscreen:function(mode){var $editor=this.$editor,$textarea=this.$textarea;if(mode===true){$editor.addClass("md-fullscreen-mode");$("body").addClass("md-nooverflow");this.$options.onFullscreen(this)}else{$editor.removeClass("md-fullscreen-mode");$("body").removeClass("md-nooverflow");if(this.$isPreview==true)this.hidePreview().showPreview()}this.$isFullscreen=mode;$textarea.focus()},showEditor:function(){var instance=this,textarea,ns=this.$ns,container=this.$element,originalHeigth=container.css("height"),originalWidth=container.css("width"),editable=this.$editable,handler=this.$handler,callback=this.$callback,options=this.$options,editor=$("
",{class:"md-editor",click:function(){instance.focus()}});if(this.$editor===null){var editorHeader=$("
",{class:"md-header btn-toolbar"});var allBtnGroups=[];if(options.buttons.length>0)allBtnGroups=allBtnGroups.concat(options.buttons[0]);if(options.additionalButtons.length>0){$.each(options.additionalButtons[0],function(idx,buttonGroup){var matchingGroups=$.grep(allBtnGroups,function(allButtonGroup,allIdx){return allButtonGroup.name===buttonGroup.name});if(matchingGroups.length>0){matchingGroups[0].data=matchingGroups[0].data.concat(buttonGroup.data)}else{allBtnGroups.push(options.additionalButtons[0][idx])}})}if(options.reorderButtonGroups.length>0){allBtnGroups=allBtnGroups.filter(function(btnGroup){return options.reorderButtonGroups.indexOf(btnGroup.name)>-1}).sort(function(a,b){if(options.reorderButtonGroups.indexOf(a.name)options.reorderButtonGroups.indexOf(b.name))return 1;return 0})}if(allBtnGroups.length>0){editorHeader=this.__buildButtons([allBtnGroups],editorHeader)}if(options.fullscreen.enable){editorHeader.append('
').on("click",".md-control-fullscreen",function(e){e.preventDefault();instance.setFullscreen(true)})}editor.append(editorHeader);if(container.is("textarea")){container.before(editor);textarea=container;textarea.addClass("md-input");editor.append(textarea)}else{var rawContent=typeof toMarkdown=="function"?toMarkdown(container.html()):container.html(),currentContent=$.trim(rawContent);textarea=$("