!function(a){var b;window.UIkit&&(b=a(UIkit)),"function"==typeof define&&define.amd&&define("uikit-htmleditor",["uikit"],function(){return b||a(UIkit)})}(function(a){"use strict";var b=[];return a.component("htmleditor",{defaults:{iframe:!1,mode:"split",markdown:!1,autocomplete:!0,enablescripts:!1,height:500,maxsplitsize:1e3,codemirror:{mode:"htmlmixed",lineWrapping:!0,dragDrop:!1,autoCloseTags:!0,matchTags:!0,autoCloseBrackets:!0,matchBrackets:!0,indentUnit:4,indentWithTabs:!1,tabSize:4,hintOptions:{completionSingle:!1}},toolbar:["bold","italic","strike","link","image","blockquote","listUl","listOl"],lblPreview:"Preview",lblCodeview:"HTML",lblMarkedview:"Markdown"},boot:function(){a.ready(function(b){a.$("textarea[data-uk-htmleditor]",b).each(function(){var b=a.$(this);b.data("htmleditor")||a.htmleditor(b,a.Utils.options(b.attr("data-uk-htmleditor")))})})},init:function(){var c=this,d=a.components.htmleditor.template;this.CodeMirror=this.options.CodeMirror||CodeMirror,this.buttons={},d=d.replace(/\{:lblPreview}/g,this.options.lblPreview),d=d.replace(/\{:lblCodeview}/g,this.options.lblCodeview),this.htmleditor=a.$(d),this.content=this.htmleditor.find(".uk-htmleditor-content"),this.toolbar=this.htmleditor.find(".uk-htmleditor-toolbar"),this.preview=this.htmleditor.find(".uk-htmleditor-preview").children().eq(0),this.code=this.htmleditor.find(".uk-htmleditor-code"),this.element.before(this.htmleditor).appendTo(this.code),this.editor=this.CodeMirror.fromTextArea(this.element[0],this.options.codemirror),this.editor.htmleditor=this,this.editor.on("change",a.Utils.debounce(function(){c.render()},150)),this.editor.on("change",function(){c.editor.save(),c.element.trigger("input")}),this.code.find(".CodeMirror").css("height",this.options.height),this.options.iframe?(this.iframe=a.$(''),this.preview.append(this.iframe),this.iframe[0].contentWindow.document.open(),this.iframe[0].contentWindow.document.close(),this.preview.container=a.$(this.iframe[0].contentWindow.document).find("body"),"string"==typeof this.options.iframe&&this.preview.container.parent().append('')):this.preview.container=this.preview,a.$win.on("resize load",a.Utils.debounce(function(){c.fit()},200));var e=this.iframe?this.preview.container:c.preview.parent(),f=this.code.find(".CodeMirror-sizer"),g=this.code.find(".CodeMirror-scroll").on("scroll",a.Utils.debounce(function(){if("tab"!=c.htmleditor.attr("data-mode")){var a=f.height()-g.height(),b=e[0].scrollHeight-(c.iframe?c.iframe.height():e.height()),d=b/a,h=g.scrollTop()*d;e.scrollTop(h)}},10));this.htmleditor.on("click",".uk-htmleditor-button-code, .uk-htmleditor-button-preview",function(b){b.preventDefault(),"tab"==c.htmleditor.attr("data-mode")&&(c.htmleditor.find(".uk-htmleditor-button-code, .uk-htmleditor-button-preview").removeClass("uk-active").filter(this).addClass("uk-active"),c.activetab=a.$(this).hasClass("uk-htmleditor-button-code")?"code":"preview",c.htmleditor.attr("data-active-tab",c.activetab),c.editor.refresh())}),this.htmleditor.on("click","a[data-htmleditor-button]",function(){c.code.is(":visible")&&c.trigger("action."+a.$(this).data("htmleditor-button"),[c.editor])}),this.preview.parent().css("height",this.code.height()),this.options.autocomplete&&this.CodeMirror.showHint&&this.CodeMirror.hint&&this.CodeMirror.hint.html&&this.editor.on("inputRead",a.Utils.debounce(function(){var a=c.editor.getDoc(),b=a.getCursor(),d=c.CodeMirror.innerMode(c.editor.getMode(),c.editor.getTokenAt(b).state).mode.name;if("xml"==d){var e=c.editor.getCursor(),f=c.editor.getTokenAt(e);"<"!=f.string.charAt(0)&&"attribute"!=f.type||c.CodeMirror.showHint(c.editor,c.CodeMirror.hint.html,{completeSingle:!1})}},100)),this.debouncedRedraw=a.Utils.debounce(function(){c.redraw()},5),this.on("init.uk.component",function(){c.debouncedRedraw()}),this.element.attr("data-uk-check-display",1).on("display.uk.check",function(a){this.htmleditor.is(":visible")&&this.fit()}.bind(this)),b.push(this)},addButton:function(a,b){this.buttons[a]=b},addButtons:function(b){a.$.extend(this.buttons,b)},replaceInPreview:function(a,b){function c(a){var b=d.getValue().substring(0,a).split("\n");return{line:b.length-1,ch:b[b.length-1].length}}var d=this.editor,e=[],f=d.getValue(),g=-1,h=0;return this.currentvalue=this.currentvalue.replace(a,function(){g=f.indexOf(arguments[0],++g);var a={matches:arguments,from:c(g),to:c(g+arguments[0].length),replace:function(b){d.replaceRange(b,a.from,a.to)},inRange:function(b){return b.line===a.from.line&&b.line===a.to.line?b.ch>=a.from.ch&&b.ch=a.from.ch||b.line>a.from.line&&b.line'+a.buttons[c].label+"")}}),this.toolbar.html(b.join("\n"))}},fit:function(){var a=this.options.mode;"split"==a&&this.htmleditor.width())<[^<]*)*<\/(script|style)>/gim,"")),this.currentvalue?(this.trigger("render",[this]),this.trigger("renderLate",[this]),void this.preview.container.html(this.currentvalue)):(this.element.val(""),void this.preview.container.html(""))},addShortcut:function(b,c){var d={};return a.$.isArray(b)||(b=[b]),b.forEach(function(a){d[a]=c}),this.editor.addKeyMap(d),d},addShortcutAction:function(a,b){var c=this;this.addShortcut(b,function(){c.element.trigger("action."+a,[c.editor])})},replaceSelection:function(a){var b=this.editor.getSelection();if(!b.length){for(var c=this.editor.getCursor(),d=this.editor.getLine(c.line),e=c.ch,f=e;f','",'",""].join(""),a.plugin("htmleditor","base",{init:function(b){function c(a,c,d){b.on("action."+a,function(){"html"==b.getCursorMode()&&b["replaceLine"==d?"replaceLine":"replaceSelection"](c)})}b.addButtons({fullscreen:{title:"Fullscreen",label:''},bold:{title:"Bold",label:''},italic:{title:"Italic",label:''},strike:{title:"Strikethrough",label:''},blockquote:{title:"Blockquote",label:''},link:{title:"Link",label:''},image:{title:"Image",label:''},listUl:{title:"Unordered List",label:''},listOl:{title:"Ordered List",label:''}}),c("bold","$1"),c("italic","$1"),c("strike","$1"),c("blockquote","$1
","replaceLine"),c("link",'$1'),c("image",'
');var d=function(a){if("html"==b.getCursorMode()){a=a||"ul";for(var c=b.editor,d=c.getDoc(),e=d.getCursor(!0),f=d.getCursor(!1),g=CodeMirror.innerMode(c.getMode(),c.getTokenAt(c.getCursor()).state),h=g&&g.state&&g.state.context&&["ul","ol"].indexOf(g.state.context.tagName)!=-1,i=e.line;i"+c.getLine(i)+"",{line:i,ch:0},{line:i,ch:c.getLine(i).length});h?c.setCursor({line:f.line,ch:c.getLine(f.line).length}):(c.replaceRange("<"+a+">\n"+c.getLine(e.line),{line:e.line,ch:0},{line:e.line,ch:c.getLine(e.line).length}),c.replaceRange(c.getLine(f.line+1)+"\n"+a+">",{line:f.line+1,ch:0},{line:f.line+1,ch:c.getLine(f.line+1).length}),c.setCursor({line:f.line+1,ch:c.getLine(f.line+1).length})),c.focus()}};b.on("action.listUl",function(){d("ul")}),b.on("action.listOl",function(){d("ol")}),b.htmleditor.on("click",'a[data-htmleditor-button="fullscreen"]',function(){b.htmleditor.toggleClass("uk-htmleditor-fullscreen");var c=b.editor.getWrapperElement();if(b.htmleditor.hasClass("uk-htmleditor-fullscreen")){var d=!1,e=b.htmleditor.parents().each(function(){"fixed"!=a.$(this).css("position")||a.$(this).is("html")||(d=a.$(this))});if(b.htmleditor.data("fixedParents",!1),d){var f=[];d=d.parent().find(e).each(function(){"none"!=a.$(this).css("transform")&&f.push(a.$(this).data("transform-reset",{transform:this.style.transform,"-webkit-transform":this.style.webkitTransform,"-webkit-transition":this.style.webkitTransition,transition:this.style.transition}).css({transform:"none","-webkit-transform":"none","-webkit-transition":"none",transition:"none"}))}),b.htmleditor.data("fixedParents",f)}b.editor.state.fullScreenRestore={scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,width:c.style.width,height:c.style.height},c.style.width="",c.style.height=b.content.height()+"px",document.documentElement.style.overflow="hidden"}else{document.documentElement.style.overflow="";var g=b.editor.state.fullScreenRestore;c.style.width=g.width,c.style.height=g.height,window.scrollTo(g.scrollLeft,g.scrollTop),b.htmleditor.data("fixedParents")&&b.htmleditor.data("fixedParents").forEach(function(a){a.css(a.data("transform-reset"))})}setTimeout(function(){b.fit(),a.$win.trigger("resize")},50)}),b.addShortcut(["Ctrl-S","Cmd-S"],function(){b.element.trigger("htmleditor-save",[b])}),b.addShortcutAction("bold",["Ctrl-B","Cmd-B"])}}),a.plugin("htmleditor","markdown",{init:function(b){function c(){b.editor.setOption("mode","gfm"),b.htmleditor.find(".uk-htmleditor-button-code a").html(b.options.lblMarkedview)}function d(a,c,d){b.on("action."+a,function(){"markdown"==b.getCursorMode()&&b["replaceLine"==d?"replaceLine":"replaceSelection"](c)})}var e=b.options.mdparser||window.marked||null;e&&(b.options.markdown&&c(),d("bold","**$1**"),d("italic","*$1*"),d("strike","~~$1~~"),d("blockquote","> $1","replaceLine"),d("link","[$1](http://)"),d("image",""),b.on("action.listUl",function(){if("markdown"==b.getCursorMode()){for(var a=b.editor,c=a.getDoc().getCursor(!0),d=a.getDoc().getCursor(!1),e=c.line;e0){var f,g=a.getLine(c.line-1);(f=g.match(/^(\d+)\./))&&(e=Number(f[1])+1)}for(var h=c.line;h