(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-default btn-sm').addClass(btnClass);if(btnClass.match(/btn\-(primary|success|info|warning|danger|link)/)){buttonContainer.removeClass('btn-default')}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.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.data('markdown',this)},__setEventListeners:function(){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))}},__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){if(typeof src=='object'){var customIcon=this.$options.customIcons[src.name];return typeof customIcon=='undefined'?src.icon[this.$options.iconlibrary]:customIcon}else{return 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');this.$options.onFullscreenExit(this);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=$('