text: /*! Summernote v0.8.9 | (c) 2013- Alan Hong and other contributors | MIT license */ (function(global,factory){typeof exports==='object'&&typeof module!=='undefined'?factory(require('jquery')):typeof define==='function'&&define.amd?define(['jquery'],factory):(factory(global.jQuery))}(this,(function($$1){'use strict';$$1=$$1&&$$1.hasOwnProperty('default')?$$1['default']:$$1;var Renderer=(function(){function Renderer(markup,children,options,callback){this.markup=markup;this.children=children;this.options=options;this.callback=callback} Renderer.prototype.render=function($parent){var $node=$$1(this.markup);if(this.options&&this.options.contents){$node.html(this.options.contents)} if(this.options&&this.options.className){$node.addClass(this.options.className)} if(this.options&&this.options.data){$$1.each(this.options.data,function(k,v){$node.attr('data-'+k,v)})} if(this.options&&this.options.click){$node.on('click',this.options.click)} if(this.children){var $container_1=$node.find('.note-children-container');this.children.forEach(function(child){child.render($container_1.length?$container_1:$node)})} if(this.callback){this.callback($node,this.options)} if(this.options&&this.options.callback){this.options.callback($node)} if($parent){$parent.append($node)} return $node};return Renderer}());var renderer={create:function(markup,callback){return function(){var options=typeof arguments[1]==='object'?arguments[1]:arguments[0];var children=$$1.isArray(arguments[0])?arguments[0]:[];if(options&&options.children){children=options.children} return new Renderer(markup,children,options,callback)}}};var editor=renderer.create('<div class="note-editor note-frame card"/>');var toolbar=renderer.create('<div class="note-toolbar-wrapper"><div class="note-toolbar card-header"></div></div>');var editingArea=renderer.create('<div class="note-editing-area"/>');var codable=renderer.create('<textarea class="note-codable"/>');var editable=renderer.create('<div class="note-editable card-block" contentEditable="true"/>');var statusbar=renderer.create(['<div class="note-statusbar">','  <div class="note-resizebar">','    <div class="note-icon-bar"/>','    <div class="note-icon-bar"/>','    <div class="note-icon-bar"/>','  </div>','</div>'].join(''));var airEditor=renderer.create('<div class="note-editor"/>');var airEditable=renderer.create('<div class="note-editable" contentEditable="true"/>');var buttonGroup=renderer.create('<div class="note-btn-group btn-group">');var dropdown=renderer.create('<div class="dropdown-menu">',function($node,options){var markup=$$1.isArray(options.items)?options.items.map(function(item){var value=(typeof item==='string')?item:(item.value||'');var content=options.template?options.template(item):item;var option=(typeof item==='object')?item.option:undefined;var dataValue='data-value="'+value+'"';var dataOption=(option!==undefined)?' data-option="'+option+'"':'';return'<a class="dropdown-item" href="#" '+(dataValue+dataOption)+'>'+content+'</a>'}).join(''):options.items;$node.html(markup)});var dropdownButtonContents=function(contents){return contents};var dropdownCheck=renderer.create('<div class="dropdown-menu note-check">',function($node,options){var markup=$$1.isArray(options.items)?options.items.map(function(item){var value=(typeof item==='string')?item:(item.value||'');var content=options.template?options.template(item):item;return'<a class="dropdown-item" href="#" data-value="'+value+'">'+icon(options.checkClassName)+' '+content+'</a>'}).join(''):options.items;$node.html(markup)});var palette=renderer.create('<div class="note-color-palette"/>',function($node,options){var contents=[];for(var row=0,rowSize=options.colors.length;row<rowSize;row++){var eventName=options.eventName;var colors=options.colors[row];var buttons=[];for(var col=0,colSize=colors.length;col<colSize;col++){var color=colors[col];buttons.push(['<button type="button" class="note-color-btn"','style="background-color:',color,'" ','data-event="',eventName,'" ','data-value="',color,'" ','title="',color,'" ','data-toggle="button" tabindex="-1"></button>'].join(''))} contents.push('<div class="note-color-row">'+buttons.join('')+'</div>')} $node.html(contents.join(''));if(options.tooltip){$node.find('.note-color-btn').tooltip({container:options.container,trigger:'hover',placement:'bottom'})}});var dialog=renderer.create('<div class="modal" aria-hidden="false" tabindex="-1"/>',function($node,options){if(options.fade){$node.addClass('fade')} $node.html(['<div class="modal-dialog">','  <div class="modal-content">',(options.title?'    <div class="modal-header">'+'      <h4 class="modal-title">'+options.title+'</h4>'+'      <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+'    </div>':''),'    <div class="modal-body">'+options.body+'</div>',(options.footer?'    <div class="modal-footer">'+options.footer+'</div>':''),'  </div>','</div>'].join(''))});var popover=renderer.create(['<div class="note-popover popover in">','  <div class="arrow"/>','  <div class="popover-content note-children-container"/>','</div>'].join(''),function($node,options){var direction=typeof options.direction!=='undefined'?options.direction:'bottom';$node.addClass(direction);if(options.hideArrow){$node.find('.arrow').hide()}});var checkbox=renderer.create('<label class="custom-control custom-checkbox"></label>',function($node,options){if(options.id){$node.attr('for',options.id)} $node.html([' <input type="checkbox" class="custom-control-input"'+(options.id?' id="'+options.id+'"':''),(options.checked?' checked':'')+'/>',' <span class="custom-control-indicator"></span>',' <span class="custom-control-description">'+(options.text?options.text:'')+'</span>','</label>'].join(''))});var icon=function(iconClassName,tagName){tagName=tagName||'i';return'<'+tagName+' class="'+iconClassName+'"/>'};var ui={editor:editor,toolbar:toolbar,editingArea:editingArea,codable:codable,editable:editable,statusbar:statusbar,airEditor:airEditor,airEditable:airEditable,buttonGroup:buttonGroup,dropdown:dropdown,dropdownButtonContents:dropdownButtonContents,dropdownCheck:dropdownCheck,palette:palette,dialog:dialog,popover:popover,icon:icon,checkbox:checkbox,options:{},button:function($node,options){return renderer.create('<button type="button" class="note-btn btn btn-light btn-sm" tabindex="-1">',function($node,options){if(options&&options.tooltip){$node.attr({title:options.tooltip}).tooltip({container:options.container,trigger:'hover',placement:'bottom'})}})($node,options)},toggleBtn:function($btn,isEnable){$btn.toggleClass('disabled',!isEnable);$btn.attr('disabled',!isEnable)},toggleBtnActive:function($btn,isActive){$btn.toggleClass('active',isActive)},onDialogShown:function($dialog,handler){$dialog.one('shown.bs.modal',handler)},onDialogHidden:function($dialog,handler){$dialog.one('hidden.bs.modal',handler)},showDialog:function($dialog){$dialog.modal('show')},hideDialog:function($dialog){$dialog.modal('hide')},createLayout:function($note,options){var $editor=(options.airMode?ui.airEditor([ui.editingArea([ui.airEditable()])]):ui.editor([ui.toolbar(),ui.editingArea([ui.codable(),ui.editable()]),ui.statusbar()])).render();$editor.insertAfter($note);return{note:$note,editor:$editor,toolbar:$editor.find('.note-toolbar'),editingArea:$editor.find('.note-editing-area'),editable:$editor.find('.note-editable'),codable:$editor.find('.note-codable'),statusbar:$editor.find('.note-statusbar')}},removeLayout:function($note,layoutInfo){$note.html(layoutInfo.editable.html());layoutInfo.editor.remove();$note.show()}};function eq(itemA){return function(itemB){return itemA===itemB}} function eq2(itemA,itemB){return itemA===itemB} function peq2(propName){return function(itemA,itemB){return itemA[propName]===itemB[propName]}} function ok(){return!0} function fail(){return!1} function not(f){return function(){return!f.apply(f,arguments)}} function and(fA,fB){return function(item){return fA(item)&&fB(item)}} function self(a){return a} function invoke(obj,method){return function(){return obj[method].apply(obj,arguments)}} var idCounter=0;function uniqueId(prefix){var id=++idCounter+'';return prefix?prefix+id:id} function rect2bnd(rect){var $document=$(document);return{top:rect.top+$document.scrollTop(),left:rect.left+$document.scrollLeft(),width:rect.right-rect.left,height:rect.bottom-rect.top}} function invertObject(obj){var inverted={};for(var key in obj){if(obj.hasOwnProperty(key)){inverted[obj[key]]=key}} return inverted} function namespaceToCamel(namespace,prefix){prefix=prefix||'';return prefix+namespace.split('.').map(function(name){return name.substring(0,1).toUpperCase()+name.substring(1)}).join('')} function debounce(func,wait,immediate){var _this=this;var timeout;return function(){var context=_this;var args=arguments;var later=function(){timeout=null;if(!immediate){func.apply(context,args)}};var callNow=immediate&&!timeout;clearTimeout(timeout);timeout=setTimeout(later,wait);if(callNow){func.apply(context,args)}}} var func={eq:eq,eq2:eq2,peq2:peq2,ok:ok,fail:fail,self:self,not:not,and:and,invoke:invoke,uniqueId:uniqueId,rect2bnd:rect2bnd,invertObject:invertObject,namespaceToCamel:namespaceToCamel,debounce:debounce};function head(array){return array[0]} function last(array){return array[array.length-1]} function initial(array){return array.slice(0,array.length-1)} function tail(array){return array.slice(1)} function find(array,pred){for(var idx=0,len=array.length;idx<len;idx++){var item=array[idx];if(pred(item)){return item}}} function all(array,pred){for(var idx=0,len=array.length;idx<len;idx++){if(!pred(array[idx])){return!1}} return!0} function indexOf(array,item){return $$1.inArray(item,array)} function contains(array,item){return indexOf(array,item)!==-1} function sum(array,fn){fn=fn||func.self;return array.reduce(function(memo,v){return memo+fn(v)},0)} function from(collection){var result=[];var length=collection.length;var idx=-1;while(++idx<length){result[idx]=collection[idx]} return result} function isEmpty$1(array){return!array||!array.length} function clusterBy(array,fn){if(!array.length){return[]} var aTail=tail(array);return aTail.reduce(function(memo,v){var aLast=last(memo);if(fn(last(aLast),v)){aLast[aLast.length]=v} else{memo[memo.length]=[v]} return memo},[[head(array)]])} function compact(array){var aResult=[];for(var idx=0,len=array.length;idx<len;idx++){if(array[idx]){aResult.push(array[idx])}} return aResult} function unique(array){var results=[];for(var idx=0,len=array.length;idx<len;idx++){if(!contains(results,array[idx])){results.push(array[idx])}} return results} function next(array,item){var idx=indexOf(array,item);if(idx===-1){return null} return array[idx+1]} function prev(array,item){var idx=indexOf(array,item);if(idx===-1){return null} return array[idx-1]} var lists={head:head,last:last,initial:initial,tail:tail,prev:prev,next:next,find:find,contains:contains,all:all,sum:sum,from:from,isEmpty:isEmpty$1,clusterBy:clusterBy,compact:compact,unique:unique};var isSupportAmd=typeof define==='function'&&define.amd;function isFontInstalled(fontName){var testFontName=fontName==='Comic Sans MS'?'Courier New':'Comic Sans MS';var $tester=$$1('<div>').css({position:'absolute',left:'-9999px',top:'-9999px',fontSize:'200px'}).text('mmmmmmmmmwwwwwww').appendTo(document.body);var originalWidth=$tester.css('fontFamily',testFontName).width();var width=$tester.css('fontFamily',fontName+','+testFontName).width();$tester.remove();return originalWidth!==width} var userAgent=navigator.userAgent;var isMSIE=/MSIE|Trident/i.test(userAgent);var browserVersion;if(isMSIE){var matches=/MSIE (\d+[.]\d+)/.exec(userAgent);if(matches){browserVersion=parseFloat(matches[1])} matches=/Trident\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(userAgent);if(matches){browserVersion=parseFloat(matches[1])}} var isEdge=/Edge\/\d+/.test(userAgent);var hasCodeMirror=!!window.CodeMirror;if(!hasCodeMirror&&isSupportAmd){if(typeof __webpack_require__==='function'){try{require.resolve('codemirror');hasCodeMirror=!0} catch(e){}} else if(typeof require!=='undefined'){if(typeof require.resolve!=='undefined'){try{require.resolve('codemirror');hasCodeMirror=!0} catch(e){}} else if(typeof require.specified!=='undefined'){hasCodeMirror=require.specified('codemirror')}}} var isSupportTouch=(('ontouchstart' in window)||(navigator.MaxTouchPoints>0)||(navigator.msMaxTouchPoints>0));var inputEventName=(isMSIE||isEdge)?'DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted':'input';var env={isMac:navigator.appVersion.indexOf('Mac')>-1,isMSIE:isMSIE,isEdge:isEdge,isFF:!isEdge&&/firefox/i.test(userAgent),isPhantom:/PhantomJS/i.test(userAgent),isWebkit:!isEdge&&/webkit/i.test(userAgent),isChrome:!isEdge&&/chrome/i.test(userAgent),isSafari:!isEdge&&/safari/i.test(userAgent),browserVersion:browserVersion,jqueryVersion:parseFloat($$1.fn.jquery),isSupportAmd:isSupportAmd,isSupportTouch:isSupportTouch,hasCodeMirror:hasCodeMirror,isFontInstalled:isFontInstalled,isW3CRangeSupport:!!document.createRange,inputEventName:inputEventName};var NBSP_CHAR=String.fromCharCode(160);var ZERO_WIDTH_NBSP_CHAR='\ufeff';function isEditable(node){return node&&$$1(node).hasClass('note-editable')} function isControlSizing(node){return node&&$$1(node).hasClass('note-control-sizing')} function makePredByNodeName(nodeName){nodeName=nodeName.toUpperCase();return function(node){return node&&node.nodeName.toUpperCase()===nodeName}} function isText(node){return node&&node.nodeType===3} function isElement(node){return node&&node.nodeType===1} function isVoid(node){return node&&/^BR|^IMG|^HR|^IFRAME|^BUTTON|^INPUT/.test(node.nodeName.toUpperCase())} function isPara(node){if(isEditable(node)){return!1} return node&&/^DIV|^P|^LI|^H[1-7]/.test(node.nodeName.toUpperCase())} function isHeading(node){return node&&/^H[1-7]/.test(node.nodeName.toUpperCase())} var isPre=makePredByNodeName('PRE');var isLi=makePredByNodeName('LI');function isPurePara(node){return isPara(node)&&!isLi(node)} var isTable=makePredByNodeName('TABLE');var isData=makePredByNodeName('DATA');function isInline(node){return!isBodyContainer(node)&&!isList(node)&&!isHr(node)&&!isPara(node)&&!isTable(node)&&!isBlockquote(node)&&!isData(node)} function isList(node){return node&&/^UL|^OL/.test(node.nodeName.toUpperCase())} var isHr=makePredByNodeName('HR');function isCell(node){return node&&/^TD|^TH/.test(node.nodeName.toUpperCase())} var isBlockquote=makePredByNodeName('BLOCKQUOTE');function isBodyContainer(node){return isCell(node)||isBlockquote(node)||isEditable(node)} var isAnchor=makePredByNodeName('A');function isParaInline(node){return isInline(node)&&!!ancestor(node,isPara)} function isBodyInline(node){return isInline(node)&&!ancestor(node,isPara)} var isBody=makePredByNodeName('BODY');function isClosestSibling(nodeA,nodeB){return nodeA.nextSibling===nodeB||nodeA.previousSibling===nodeB} function withClosestSiblings(node,pred){pred=pred||func.ok;var siblings=[];if(node.previousSibling&&pred(node.previousSibling)){siblings.push(node.previousSibling)} siblings.push(node);if(node.nextSibling&&pred(node.nextSibling)){siblings.push(node.nextSibling)} return siblings} var blankHTML=env.isMSIE&&env.browserVersion<11?'&nbsp;':'<br>';function nodeLength(node){if(isText(node)){return node.nodeValue.length} if(node){return node.childNodes.length} return 0} function isEmpty(node){var len=nodeLength(node);if(len===0){return!0} else if(!isText(node)&&len===1&&node.innerHTML===blankHTML){return!0} else if(lists.all(node.childNodes,isText)&&node.innerHTML===''){return!0} return!1} function paddingBlankHTML(node){if(!isVoid(node)&&!nodeLength(node)){node.innerHTML=blankHTML}} function ancestor(node,pred){while(node){if(pred(node)){return node} if(isEditable(node)){break} node=node.parentNode} return null} function singleChildAncestor(node,pred){node=node.parentNode;while(node){if(nodeLength(node)!==1){break} if(pred(node)){return node} if(isEditable(node)){break} node=node.parentNode} return null} function listAncestor(node,pred){pred=pred||func.fail;var ancestors=[];ancestor(node,function(el){if(!isEditable(el)){ancestors.push(el)} return pred(el)});return ancestors} function lastAncestor(node,pred){var ancestors=listAncestor(node);return lists.last(ancestors.filter(pred))} function commonAncestor(nodeA,nodeB){var ancestors=listAncestor(nodeA);for(var n=nodeB;n;n=n.parentNode){if($$1.inArray(n,ancestors)>-1){return n}} return null} function listPrev(node,pred){pred=pred||func.fail;var nodes=[];while(node){if(pred(node)){break} nodes.push(node);node=node.previousSibling} return nodes} function listNext(node,pred){pred=pred||func.fail;var nodes=[];while(node){if(pred(node)){break} nodes.push(node);node=node.nextSibling} return nodes} function listDescendant(node,pred){var descendants=[];pred=pred||func.ok;(function fnWalk(current){if(node!==current&&pred(current)){descendants.push(current)} for(var idx=0,len=current.childNodes.length;idx<len;idx++){fnWalk(current.childNodes[idx])}})(node);return descendants} function wrap(node,wrapperName){var parent=node.parentNode;var wrapper=$$1('<'+wrapperName+'>')[0];parent.insertBefore(wrapper,node);wrapper.appendChild(node);return wrapper} function insertAfter(node,preceding){var next=preceding.nextSibling;var parent=preceding.parentNode;if(next){parent.insertBefore(node,next)} else{parent.appendChild(node)} return node} function appendChildNodes(node,aChild){$$1.each(aChild,function(idx,child){node.appendChild(child)});return node} function isLeftEdgePoint(point){return point.offset===0} function isRightEdgePoint(point){return point.offset===nodeLength(point.node)} function isEdgePoint(point){return isLeftEdgePoint(point)||isRightEdgePoint(point)} function isLeftEdgeOf(node,ancestor){while(node&&node!==ancestor){if(position(node)!==0){return!1} node=node.parentNode} return!0} function isRightEdgeOf(node,ancestor){if(!ancestor){return!1} while(node&&node!==ancestor){if(position(node)!==nodeLength(node.parentNode)-1){return!1} node=node.parentNode} return!0} function isLeftEdgePointOf(point,ancestor){return isLeftEdgePoint(point)&&isLeftEdgeOf(point.node,ancestor)} function isRightEdgePointOf(point,ancestor){return isRightEdgePoint(point)&&isRightEdgeOf(point.node,ancestor)} function position(node){var offset=0;while((node=node.previousSibling)){offset+=1} return offset} function hasChildren(node){return!!(node&&node.childNodes&&node.childNodes.length)} function prevPoint(point,isSkipInnerOffset){var node;var offset;if(point.offset===0){if(isEditable(point.node)){return null} node=point.node.parentNode;offset=position(point.node)} else if(hasChildren(point.node)){node=point.node.childNodes[point.offset-1];offset=nodeLength(node)} else{node=point.node;offset=isSkipInnerOffset?0:point.offset-1} return{node:node,offset:offset}} function nextPoint(point,isSkipInnerOffset){var node,offset;if(nodeLength(point.node)===point.offset){if(isEditable(point.node)){return null} node=point.node.parentNode;offset=position(point.node)+1} else if(hasChildren(point.node)){node=point.node.childNodes[point.offset];offset=0} else{node=point.node;offset=isSkipInnerOffset?nodeLength(point.node):point.offset+1} return{node:node,offset:offset}} function isSamePoint(pointA,pointB){return pointA.node===pointB.node&&pointA.offset===pointB.offset} function isVisiblePoint(point){if(isText(point.node)||!hasChildren(point.node)||isEmpty(point.node)){return!0} var leftNode=point.node.childNodes[point.offset-1];var rightNode=point.node.childNodes[point.offset];if((!leftNode||isVoid(leftNode))&&(!rightNode||isVoid(rightNode))){return!0} return!1} function prevPointUntil(point,pred){while(point){if(pred(point)){return point} point=prevPoint(point)} return null} function nextPointUntil(point,pred){while(point){if(pred(point)){return point} point=nextPoint(point)} return null} function isCharPoint(point){if(!isText(point.node)){return!1} var ch=point.node.nodeValue.charAt(point.offset-1);return ch&&(ch!==' '&&ch!==NBSP_CHAR)} function walkPoint(startPoint,endPoint,handler,isSkipInnerOffset){var point=startPoint;while(point){handler(point);if(isSamePoint(point,endPoint)){break} var isSkipOffset=isSkipInnerOffset&&startPoint.node!==point.node&&endPoint.node!==point.node;point=nextPoint(point,isSkipOffset)}} function makeOffsetPath(ancestor,node){var ancestors=listAncestor(node,func.eq(ancestor));return ancestors.map(position).reverse()} function fromOffsetPath(ancestor,offsets){var current=ancestor;for(var i=0,len=offsets.length;i<len;i++){if(current.childNodes.length<=offsets[i]){current=current.childNodes[current.childNodes.length-1]} else{current=current.childNodes[offsets[i]]}} return current} function splitNode(point,options){var isSkipPaddingBlankHTML=options&&options.isSkipPaddingBlankHTML;var isNotSplitEdgePoint=options&&options.isNotSplitEdgePoint;if(isEdgePoint(point)&&(isText(point.node)||isNotSplitEdgePoint)){if(isLeftEdgePoint(point)){return point.node} else if(isRightEdgePoint(point)){return point.node.nextSibling}} if(isText(point.node)){return point.node.splitText(point.offset)} else{var childNode=point.node.childNodes[point.offset];var clone=insertAfter(point.node.cloneNode(!1),point.node);appendChildNodes(clone,listNext(childNode));if(!isSkipPaddingBlankHTML){paddingBlankHTML(point.node);paddingBlankHTML(clone)} return clone}} function splitTree(root,point,options){var ancestors=listAncestor(point.node,func.eq(root));if(!ancestors.length){return null} else if(ancestors.length===1){return splitNode(point,options)} return ancestors.reduce(function(node,parent){if(node===point.node){node=splitNode(point,options)} return splitNode({node:parent,offset:node?position(node):nodeLength(parent)},options)})} function splitPoint(point,isInline){var pred=isInline?isPara:isBodyContainer;var ancestors=listAncestor(point.node,pred);var topAncestor=lists.last(ancestors)||point.node;var splitRoot,container;if(pred(topAncestor)){splitRoot=ancestors[ancestors.length-2];container=topAncestor} else{splitRoot=topAncestor;container=splitRoot.parentNode} var pivot=splitRoot&&splitTree(splitRoot,point,{isSkipPaddingBlankHTML:isInline,isNotSplitEdgePoint:isInline});if(!pivot&&container===point.node){pivot=point.node.childNodes[point.offset]} return{rightNode:pivot,container:container}} function create(nodeName){return document.createElement(nodeName)} function createText(text){return document.createTextNode(text)} function remove(node,isRemoveChild){if(!node||!node.parentNode){return} if(node.removeNode){return node.removeNode(isRemoveChild)} var parent=node.parentNode;if(!isRemoveChild){var nodes=[];for(var i=0,len=node.childNodes.length;i<len;i++){nodes.push(node.childNodes[i])} for(var i=0,len=nodes.length;i<len;i++){parent.insertBefore(nodes[i],node)}} parent.removeChild(node)} function removeWhile(node,pred){while(node){if(isEditable(node)||!pred(node)){break} var parent=node.parentNode;remove(node);node=parent}} function replace(node,nodeName){if(node.nodeName.toUpperCase()===nodeName.toUpperCase()){return node} var newNode=create(nodeName);if(node.style.cssText){newNode.style.cssText=node.style.cssText} appendChildNodes(newNode,lists.from(node.childNodes));insertAfter(newNode,node);remove(node);return newNode} var isTextarea=makePredByNodeName('TEXTAREA');function value($node,stripLinebreaks){var val=isTextarea($node[0])?$node.val():$node.html();if(stripLinebreaks){return val.replace(/[\n\r]/g,'')} return val} function html($node,isNewlineOnBlock){var markup=value($node);if(isNewlineOnBlock){var regexTag=/<(\/?)(\b(?!!)[^>\s]*)(.*?)(\s*\/?>)/g;markup=markup.replace(regexTag,function(match,endSlash,name){name=name.toUpperCase();var isEndOfInlineContainer=/^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(name)&&!!endSlash;var isBlockNode=/^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(name);return match+((isEndOfInlineContainer||isBlockNode)?'\n':'')});markup=$$1.trim(markup)} return markup} function posFromPlaceholder(placeholder){var $placeholder=$$1(placeholder);var pos=$placeholder.offset();var height=$placeholder.outerHeight(!0);return{left:pos.left,top:pos.top+height}} function attachEvents($node,events){Object.keys(events).forEach(function(key){$node.on(key,events[key])})} function detachEvents($node,events){Object.keys(events).forEach(function(key){$node.off(key,events[key])})} function isCustomStyleTag(node){return node&&!isText(node)&&lists.contains(node.classList,'note-styletag')} var dom={NBSP_CHAR:NBSP_CHAR,ZERO_WIDTH_NBSP_CHAR:ZERO_WIDTH_NBSP_CHAR,blank:blankHTML,emptyPara:"<p>"+blankHTML+"</p>",makePredByNodeName:makePredByNodeName,isEditable:isEditable,isControlSizing:isControlSizing,isText:isText,isElement:isElement,isVoid:isVoid,isPara:isPara,isPurePara:isPurePara,isHeading:isHeading,isInline:isInline,isBlock:func.not(isInline),isBodyInline:isBodyInline,isBody:isBody,isParaInline:isParaInline,isPre:isPre,isList:isList,isTable:isTable,isData:isData,isCell:isCell,isBlockquote:isBlockquote,isBodyContainer:isBodyContainer,isAnchor:isAnchor,isDiv:makePredByNodeName('DIV'),isLi:isLi,isBR:makePredByNodeName('BR'),isSpan:makePredByNodeName('SPAN'),isB:makePredByNodeName('B'),isU:makePredByNodeName('U'),isS:makePredByNodeName('S'),isI:makePredByNodeName('I'),isImg:makePredByNodeName('IMG'),isTextarea:isTextarea,isEmpty:isEmpty,isEmptyAnchor:func.and(isAnchor,isEmpty),isClosestSibling:isClosestSibling,withClosestSiblings:withClosestSiblings,nodeLength:nodeLength,isLeftEdgePoint:isLeftEdgePoint,isRightEdgePoint:isRightEdgePoint,isEdgePoint:isEdgePoint,isLeftEdgeOf:isLeftEdgeOf,isRightEdgeOf:isRightEdgeOf,isLeftEdgePointOf:isLeftEdgePointOf,isRightEdgePointOf:isRightEdgePointOf,prevPoint:prevPoint,nextPoint:nextPoint,isSamePoint:isSamePoint,isVisiblePoint:isVisiblePoint,prevPointUntil:prevPointUntil,nextPointUntil:nextPointUntil,isCharPoint:isCharPoint,walkPoint:walkPoint,ancestor:ancestor,singleChildAncestor:singleChildAncestor,listAncestor:listAncestor,lastAncestor:lastAncestor,listNext:listNext,listPrev:listPrev,listDescendant:listDescendant,commonAncestor:commonAncestor,wrap:wrap,insertAfter:insertAfter,appendChildNodes:appendChildNodes,position:position,hasChildren:hasChildren,makeOffsetPath:makeOffsetPath,fromOffsetPath:fromOffsetPath,splitTree:splitTree,splitPoint:splitPoint,create:create,createText:createText,remove:remove,removeWhile:removeWhile,replace:replace,html:html,value:value,posFromPlaceholder:posFromPlaceholder,attachEvents:attachEvents,detachEvents:detachEvents,isCustomStyleTag:isCustomStyleTag};$$1.summernote=$$1.summernote||{lang:{}};$$1.extend($$1.summernote.lang,{'en-US':{font:{bold:'Bold',italic:'Italic',underline:'Underline',clear:'Remove Font Style',height:'Line Height',name:'Font Family',strikethrough:'Strikethrough',subscript:'Subscript',superscript:'Superscript',size:'Font Size'},image:{image:'Picture',insert:'Insert Image',resizeFull:'Resize Full',resizeHalf:'Resize Half',resizeQuarter:'Resize Quarter',floatLeft:'Float Left',floatRight:'Float Right',floatNone:'Float None',shapeRounded:'Shape: Rounded',shapeCircle:'Shape: Circle',shapeThumbnail:'Shape: Thumbnail',shapeNone:'Shape: None',dragImageHere:'Drag image or text here',dropImage:'Drop image or Text',selectFromFiles:'Select from files',maximumFileSize:'Maximum file size',maximumFileSizeError:'Maximum file size exceeded.',url:'Image URL',remove:'Remove Image',original:'Original'},video:{video:'Video',videoLink:'Video Link',insert:'Insert Video',url:'Video URL',providers:'(YouTube, Vimeo, Vine, Instagram, DailyMotion or Youku)'},link:{link:'Link',insert:'Insert Link',unlink:'Unlink',edit:'Edit',textToDisplay:'Text to display',url:'To what URL should this link go?',openInNewWindow:'Open in new window'},table:{table:'Table',addRowAbove:'Add row above',addRowBelow:'Add row below',addColLeft:'Add column left',addColRight:'Add column right',delRow:'Delete row',delCol:'Delete column',delTable:'Delete table'},hr:{insert:'Insert Horizontal Rule'},style:{style:'Style',p:'Normal',blockquote:'Quote',pre:'Code',h1:'Header 1',h2:'Header 2',h3:'Header 3',h4:'Header 4',h5:'Header 5',h6:'Header 6'},lists:{unordered:'Unordered list',ordered:'Ordered list'},options:{help:'Help',fullscreen:'Full Screen',codeview:'Code View'},paragraph:{paragraph:'Paragraph',outdent:'Outdent',indent:'Indent',left:'Align left',center:'Align center',right:'Align right',justify:'Justify full'},color:{recent:'Recent Color',more:'More Color',background:'Background Color',foreground:'Foreground Color',transparent:'Transparent',setTransparent:'Set transparent',reset:'Reset',resetToDefault:'Reset to default'},shortcut:{shortcuts:'Keyboard shortcuts',close:'Close',textFormatting:'Text formatting',action:'Action',paragraphFormatting:'Paragraph formatting',documentStyle:'Document Style',extraKeys:'Extra keys'},help:{'insertParagraph':'Insert Paragraph','undo':'Undoes the last command','redo':'Redoes the last command','tab':'Tab','untab':'Untab','bold':'Set a bold style','italic':'Set a italic style','underline':'Set a underline style','strikethrough':'Set a strikethrough style','removeFormat':'Clean a style','justifyLeft':'Set left align','justifyCenter':'Set center align','justifyRight':'Set right align','justifyFull':'Set full align','insertUnorderedList':'Toggle unordered list','insertOrderedList':'Toggle ordered list','outdent':'Outdent on current paragraph','indent':'Indent on current paragraph','formatPara':'Change current block\'s format as a paragraph(P tag)','formatH1':'Change current block\'s format as H1','formatH2':'Change current block\'s format as H2','formatH3':'Change current block\'s format as H3','formatH4':'Change current block\'s format as H4','formatH5':'Change current block\'s format as H5','formatH6':'Change current block\'s format as H6','insertHorizontalRule':'Insert horizontal rule','linkDialog.show':'Show Link Dialog'},history:{undo:'Undo',redo:'Redo'},specialChar:{specialChar:'SPECIAL CHARACTERS',select:'Select Special characters'}}});var KEY_MAP={'BACKSPACE':8,'TAB':9,'ENTER':13,'SPACE':32,'DELETE':46,'LEFT':37,'UP':38,'RIGHT':39,'DOWN':40,'NUM0':48,'NUM1':49,'NUM2':50,'NUM3':51,'NUM4':52,'NUM5':53,'NUM6':54,'NUM7':55,'NUM8':56,'B':66,'E':69,'I':73,'J':74,'K':75,'L':76,'R':82,'S':83,'U':85,'V':86,'Y':89,'Z':90,'SLASH':191,'LEFTBRACKET':219,'BACKSLASH':220,'RIGHTBRACKET':221};var key={isEdit:function(keyCode){return lists.contains([KEY_MAP.BACKSPACE,KEY_MAP.TAB,KEY_MAP.ENTER,KEY_MAP.SPACE,KEY_MAP.DELETE],keyCode)},isMove:function(keyCode){return lists.contains([KEY_MAP.LEFT,KEY_MAP.UP,KEY_MAP.RIGHT,KEY_MAP.DOWN],keyCode)},nameFromCode:func.invertObject(KEY_MAP),code:KEY_MAP};function textRangeToPoint(textRange,isStart){var container=textRange.parentElement();var offset;var tester=document.body.createTextRange();var prevContainer;var childNodes=lists.from(container.childNodes);for(offset=0;offset<childNodes.length;offset++){if(dom.isText(childNodes[offset])){continue} tester.moveToElementText(childNodes[offset]);if(tester.compareEndPoints('StartToStart',textRange)>=0){break} prevContainer=childNodes[offset]} if(offset!==0&&dom.isText(childNodes[offset-1])){var textRangeStart=document.body.createTextRange();var curTextNode=null;textRangeStart.moveToElementText(prevContainer||container);textRangeStart.collapse(!prevContainer);curTextNode=prevContainer?prevContainer.nextSibling:container.firstChild;var pointTester=textRange.duplicate();pointTester.setEndPoint('StartToStart',textRangeStart);var textCount=pointTester.text.replace(/[\r\n]/g,'').length;while(textCount>curTextNode.nodeValue.length&&curTextNode.nextSibling){textCount-=curTextNode.nodeValue.length;curTextNode=curTextNode.nextSibling} var dummy=curTextNode.nodeValue;if(isStart&&curTextNode.nextSibling&&dom.isText(curTextNode.nextSibling)&&textCount===curTextNode.nodeValue.length){textCount-=curTextNode.nodeValue.length;curTextNode=curTextNode.nextSibling} container=curTextNode;offset=textCount} return{cont:container,offset:offset}} function pointToTextRange(point){var textRangeInfo=function(container,offset){var node,isCollapseToStart;if(dom.isText(container)){var prevTextNodes=dom.listPrev(container,func.not(dom.isText));var prevContainer=lists.last(prevTextNodes).previousSibling;node=prevContainer||container.parentNode;offset+=lists.sum(lists.tail(prevTextNodes),dom.nodeLength);isCollapseToStart=!prevContainer} else{node=container.childNodes[offset]||container;if(dom.isText(node)){return textRangeInfo(node,0)} offset=0;isCollapseToStart=!1} return{node:node,collapseToStart:isCollapseToStart,offset:offset}};var textRange=document.body.createTextRange();var info=textRangeInfo(point.node,point.offset);textRange.moveToElementText(info.node);textRange.collapse(info.collapseToStart);textRange.moveStart('character',info.offset);return textRange} var WrappedRange=(function(){function WrappedRange(sc,so,ec,eo){this.sc=sc;this.so=so;this.ec=ec;this.eo=eo;this.isOnEditable=this.makeIsOn(dom.isEditable);this.isOnList=this.makeIsOn(dom.isList);this.isOnAnchor=this.makeIsOn(dom.isAnchor);this.isOnCell=this.makeIsOn(dom.isCell);this.isOnData=this.makeIsOn(dom.isData)} WrappedRange.prototype.nativeRange=function(){if(env.isW3CRangeSupport){var w3cRange=document.createRange();w3cRange.setStart(this.sc,this.so);w3cRange.setEnd(this.ec,this.eo);return w3cRange} else{var textRange=pointToTextRange({node:this.sc,offset:this.so});textRange.setEndPoint('EndToEnd',pointToTextRange({node:this.ec,offset:this.eo}));return textRange}};WrappedRange.prototype.getPoints=function(){return{sc:this.sc,so:this.so,ec:this.ec,eo:this.eo}};WrappedRange.prototype.getStartPoint=function(){return{node:this.sc,offset:this.so}};WrappedRange.prototype.getEndPoint=function(){return{node:this.ec,offset:this.eo}};WrappedRange.prototype.select=function(){var nativeRng=this.nativeRange();if(env.isW3CRangeSupport){var selection=document.getSelection();if(selection.rangeCount>0){selection.removeAllRanges()} selection.addRange(nativeRng)} else{nativeRng.select()} return this};WrappedRange.prototype.scrollIntoView=function(container){var height=$$1(container).height();if(container.scrollTop+height<this.sc.offsetTop){container.scrollTop+=Math.abs(container.scrollTop+height-this.sc.offsetTop)} return this};WrappedRange.prototype.normalize=function(){var getVisiblePoint=function(point,isLeftToRight){if((dom.isVisiblePoint(point)&&!dom.isEdgePoint(point))||(dom.isVisiblePoint(point)&&dom.isRightEdgePoint(point)&&!isLeftToRight)||(dom.isVisiblePoint(point)&&dom.isLeftEdgePoint(point)&&isLeftToRight)||(dom.isVisiblePoint(point)&&dom.isBlock(point.node)&&dom.isEmpty(point.node))){return point} var block=dom.ancestor(point.node,dom.isBlock);if(((dom.isLeftEdgePointOf(point,block)||dom.isVoid(dom.prevPoint(point).node))&&!isLeftToRight)||((dom.isRightEdgePointOf(point,block)||dom.isVoid(dom.nextPoint(point).node))&&isLeftToRight)){if(dom.isVisiblePoint(point)){return point} isLeftToRight=!isLeftToRight} var nextPoint=isLeftToRight?dom.nextPointUntil(dom.nextPoint(point),dom.isVisiblePoint):dom.prevPointUntil(dom.prevPoint(point),dom.isVisiblePoint);return nextPoint||point};var endPoint=getVisiblePoint(this.getEndPoint(),!1);var startPoint=this.isCollapsed()?endPoint:getVisiblePoint(this.getStartPoint(),!0);return new WrappedRange(startPoint.node,startPoint.offset,endPoint.node,endPoint.offset)};WrappedRange.prototype.nodes=function(pred,options){pred=pred||func.ok;var includeAncestor=options&&options.includeAncestor;var fullyContains=options&&options.fullyContains;var startPoint=this.getStartPoint();var endPoint=this.getEndPoint();var nodes=[];var leftEdgeNodes=[];dom.walkPoint(startPoint,endPoint,function(point){if(dom.isEditable(point.node)){return} var node;if(fullyContains){if(dom.isLeftEdgePoint(point)){leftEdgeNodes.push(point.node)} if(dom.isRightEdgePoint(point)&&lists.contains(leftEdgeNodes,point.node)){node=point.node}} else if(includeAncestor){node=dom.ancestor(point.node,pred)} else{node=point.node} if(node&&pred(node)){nodes.push(node)}},!0);return lists.unique(nodes)};WrappedRange.prototype.commonAncestor=function(){return dom.commonAncestor(this.sc,this.ec)};WrappedRange.prototype.expand=function(pred){var startAncestor=dom.ancestor(this.sc,pred);var endAncestor=dom.ancestor(this.ec,pred);if(!startAncestor&&!endAncestor){return new WrappedRange(this.sc,this.so,this.ec,this.eo)} var boundaryPoints=this.getPoints();if(startAncestor){boundaryPoints.sc=startAncestor;boundaryPoints.so=0} if(endAncestor){boundaryPoints.ec=endAncestor;boundaryPoints.eo=dom.nodeLength(endAncestor)} return new WrappedRange(boundaryPoints.sc,boundaryPoints.so,boundaryPoints.ec,boundaryPoints.eo)};WrappedRange.prototype.collapse=function(isCollapseToStart){if(isCollapseToStart){return new WrappedRange(this.sc,this.so,this.sc,this.so)} else{return new WrappedRange(this.ec,this.eo,this.ec,this.eo)}};WrappedRange.prototype.splitText=function(){var isSameContainer=this.sc===this.ec;var boundaryPoints=this.getPoints();if(dom.isText(this.ec)&&!dom.isEdgePoint(this.getEndPoint())){this.ec.splitText(this.eo)} if(dom.isText(this.sc)&&!dom.isEdgePoint(this.getStartPoint())){boundaryPoints.sc=this.sc.splitText(this.so);boundaryPoints.so=0;if(isSameContainer){boundaryPoints.ec=boundaryPoints.sc;boundaryPoints.eo=this.eo-this.so}} return new WrappedRange(boundaryPoints.sc,boundaryPoints.so,boundaryPoints.ec,boundaryPoints.eo)};WrappedRange.prototype.deleteContents=function(){if(this.isCollapsed()){return this} var rng=this.splitText();var nodes=rng.nodes(null,{fullyContains:!0});var point=dom.prevPointUntil(rng.getStartPoint(),function(point){return!lists.contains(nodes,point.node)});var emptyParents=[];$$1.each(nodes,function(idx,node){var parent=node.parentNode;if(point.node!==parent&&dom.nodeLength(parent)===1){emptyParents.push(parent)} dom.remove(node,!1)});$$1.each(emptyParents,function(idx,node){dom.remove(node,!1)});return new WrappedRange(point.node,point.offset,point.node,point.offset).normalize()};WrappedRange.prototype.makeIsOn=function(pred){return function(){var ancestor=dom.ancestor(this.sc,pred);return!!ancestor&&(ancestor===dom.ancestor(this.ec,pred))}};WrappedRange.prototype.isLeftEdgeOf=function(pred){if(!dom.isLeftEdgePoint(this.getStartPoint())){return!1} var node=dom.ancestor(this.sc,pred);return node&&dom.isLeftEdgeOf(this.sc,node)};WrappedRange.prototype.isCollapsed=function(){return this.sc===this.ec&&this.so===this.eo};WrappedRange.prototype.wrapBodyInlineWithPara=function(){if(dom.isBodyContainer(this.sc)&&dom.isEmpty(this.sc)){this.sc.innerHTML=dom.emptyPara;return new WrappedRange(this.sc.firstChild,0,this.sc.firstChild,0)} var rng=this.normalize();if(dom.isParaInline(this.sc)||dom.isPara(this.sc)){return rng} var topAncestor;if(dom.isInline(rng.sc)){var ancestors=dom.listAncestor(rng.sc,func.not(dom.isInline));topAncestor=lists.last(ancestors);if(!dom.isInline(topAncestor)){topAncestor=ancestors[ancestors.length-2]||rng.sc.childNodes[rng.so]}} else{topAncestor=rng.sc.childNodes[rng.so>0?rng.so-1:0]} var inlineSiblings=dom.listPrev(topAncestor,dom.isParaInline).reverse();inlineSiblings=inlineSiblings.concat(dom.listNext(topAncestor.nextSibling,dom.isParaInline));if(inlineSiblings.length){var para=dom.wrap(lists.head(inlineSiblings),'p');dom.appendChildNodes(para,lists.tail(inlineSiblings))} return this.normalize()};WrappedRange.prototype.insertNode=function(node){var rng=this.wrapBodyInlineWithPara().deleteContents();var info=dom.splitPoint(rng.getStartPoint(),dom.isInline(node));if(info.rightNode){info.rightNode.parentNode.insertBefore(node,info.rightNode)} else{info.container.appendChild(node)} return node};WrappedRange.prototype.pasteHTML=function(markup){var contentsContainer=$$1('<div></div>').html(markup)[0];var childNodes=lists.from(contentsContainer.childNodes);var rng=this.wrapBodyInlineWithPara().deleteContents();return childNodes.reverse().map(function(childNode){return rng.insertNode(childNode)}).reverse()};WrappedRange.prototype.toString=function(){var nativeRng=this.nativeRange();return env.isW3CRangeSupport?nativeRng.toString():nativeRng.text};WrappedRange.prototype.getWordRange=function(findAfter){var endPoint=this.getEndPoint();if(!dom.isCharPoint(endPoint)){return this} var startPoint=dom.prevPointUntil(endPoint,function(point){return!dom.isCharPoint(point)});if(findAfter){endPoint=dom.nextPointUntil(endPoint,function(point){return!dom.isCharPoint(point)})} return new WrappedRange(startPoint.node,startPoint.offset,endPoint.node,endPoint.offset)};WrappedRange.prototype.bookmark=function(editable){return{s:{path:dom.makeOffsetPath(editable,this.sc),offset:this.so},e:{path:dom.makeOffsetPath(editable,this.ec),offset:this.eo}}};WrappedRange.prototype.paraBookmark=function(paras){return{s:{path:lists.tail(dom.makeOffsetPath(lists.head(paras),this.sc)),offset:this.so},e:{path:lists.tail(dom.makeOffsetPath(lists.last(paras),this.ec)),offset:this.eo}}};WrappedRange.prototype.getClientRects=function(){var nativeRng=this.nativeRange();return nativeRng.getClientRects()};return WrappedRange}());var range={create:function(sc,so,ec,eo){if(arguments.length===4){return new WrappedRange(sc,so,ec,eo)} else if(arguments.length===2){ec=sc;eo=so;return new WrappedRange(sc,so,ec,eo)} else{var wrappedRange=this.createFromSelection();if(!wrappedRange&&arguments.length===1){wrappedRange=this.createFromNode(arguments[0]);return wrappedRange.collapse(dom.emptyPara===arguments[0].innerHTML)} return wrappedRange}},createFromSelection:function(){var sc,so,ec,eo;if(env.isW3CRangeSupport){var selection=document.getSelection();if(!selection||selection.rangeCount===0){return null} else if(dom.isBody(selection.anchorNode)){return null} var nativeRng=selection.getRangeAt(0);sc=nativeRng.startContainer;so=nativeRng.startOffset;ec=nativeRng.endContainer;eo=nativeRng.endOffset} else{var textRange=document.selection.createRange();var textRangeEnd=textRange.duplicate();textRangeEnd.collapse(!1);var textRangeStart=textRange;textRangeStart.collapse(!0);var startPoint=textRangeToPoint(textRangeStart,!0);var endPoint=textRangeToPoint(textRangeEnd,!1);if(dom.isText(startPoint.node)&&dom.isLeftEdgePoint(startPoint)&&dom.isTextNode(endPoint.node)&&dom.isRightEdgePoint(endPoint)&&endPoint.node.nextSibling===startPoint.node){startPoint=endPoint} sc=startPoint.cont;so=startPoint.offset;ec=endPoint.cont;eo=endPoint.offset} return new WrappedRange(sc,so,ec,eo)},createFromNode:function(node){var sc=node;var so=0;var ec=node;var eo=dom.nodeLength(ec);if(dom.isVoid(sc)){so=dom.listPrev(sc).length-1;sc=sc.parentNode} if(dom.isBR(ec)){eo=dom.listPrev(ec).length-1;ec=ec.parentNode} else if(dom.isVoid(ec)){eo=dom.listPrev(ec).length;ec=ec.parentNode} return this.create(sc,so,ec,eo)},createFromNodeBefore:function(node){return this.createFromNode(node).collapse(!0)},createFromNodeAfter:function(node){return this.createFromNode(node).collapse()},createFromBookmark:function(editable,bookmark){var sc=dom.fromOffsetPath(editable,bookmark.s.path);var so=bookmark.s.offset;var ec=dom.fromOffsetPath(editable,bookmark.e.path);var eo=bookmark.e.offset;return new WrappedRange(sc,so,ec,eo)},createFromParaBookmark:function(bookmark,paras){var so=bookmark.s.offset;var eo=bookmark.e.offset;var sc=dom.fromOffsetPath(lists.head(paras),bookmark.s.path);var ec=dom.fromOffsetPath(lists.last(paras),bookmark.e.path);return new WrappedRange(sc,so,ec,eo)}};function readFileAsDataURL(file){return $$1.Deferred(function(deferred){$$1.extend(new FileReader(),{onload:function(e){var dataURL=e.target.result;deferred.resolve(dataURL)},onerror:function(err){deferred.reject(err)}}).readAsDataURL(file)}).promise()} function createImage(url){return $$1.Deferred(function(deferred){var $img=$$1('<img>');$img.one('load',function(){$img.off('error abort');deferred.resolve($img)}).one('error abort',function(){$img.off('load').detach();deferred.reject($img)}).css({display:'none'}).appendTo(document.body).attr('src',url)}).promise()} var History=(function(){function History($editable){this.stack=[];this.stackOffset=-1;this.$editable=$editable;this.editable=$editable[0]} History.prototype.makeSnapshot=function(){var rng=range.create(this.editable);var emptyBookmark={s:{path:[],offset:0},e:{path:[],offset:0}};return{contents:this.$editable.html(),bookmark:(rng?rng.bookmark(this.editable):emptyBookmark)}};History.prototype.applySnapshot=function(snapshot){if(snapshot.contents!==null){this.$editable.html(snapshot.contents)} if(snapshot.bookmark!==null){range.createFromBookmark(this.editable,snapshot.bookmark).select()}};History.prototype.rewind=function(){if(this.$editable.html()!==this.stack[this.stackOffset].contents){this.recordUndo()} this.stackOffset=0;this.applySnapshot(this.stack[this.stackOffset])};History.prototype.reset=function(){this.stack=[];this.stackOffset=-1;this.$editable.html('');this.recordUndo()};History.prototype.undo=function(){if(this.$editable.html()!==this.stack[this.stackOffset].contents){this.recordUndo()} if(this.stackOffset>0){this.stackOffset--;this.applySnapshot(this.stack[this.stackOffset])}};History.prototype.redo=function(){if(this.stack.length-1>this.stackOffset){this.stackOffset++;this.applySnapshot(this.stack[this.stackOffset])}};History.prototype.recordUndo=function(){this.stackOffset++;if(this.stack.length>this.stackOffset){this.stack=this.stack.slice(0,this.stackOffset)} this.stack.push(this.makeSnapshot())};return History}());var Style=(function(){function Style(){} Style.prototype.jQueryCSS=function($obj,propertyNames){if(env.jqueryVersion<1.9){var result_1={};$$1.each(propertyNames,function(idx,propertyName){result_1[propertyName]=$obj.css(propertyName)});return result_1} return $obj.css(propertyNames)};Style.prototype.fromNode=function($node){var properties=['font-family','font-size','text-align','list-style-type','line-height'];var styleInfo=this.jQueryCSS($node,properties)||{};styleInfo['font-size']=parseInt(styleInfo['font-size'],10);return styleInfo};Style.prototype.stylePara=function(rng,styleInfo){$$1.each(rng.nodes(dom.isPara,{includeAncestor:!0}),function(idx,para){$$1(para).css(styleInfo)})};Style.prototype.styleNodes=function(rng,options){rng=rng.splitText();var nodeName=(options&&options.nodeName)||'SPAN';var expandClosestSibling=!!(options&&options.expandClosestSibling);var onlyPartialContains=!!(options&&options.onlyPartialContains);if(rng.isCollapsed()){return[rng.insertNode(dom.create(nodeName))]} var pred=dom.makePredByNodeName(nodeName);var nodes=rng.nodes(dom.isText,{fullyContains:!0}).map(function(text){return dom.singleChildAncestor(text,pred)||dom.wrap(text,nodeName)});if(expandClosestSibling){if(onlyPartialContains){var nodesInRange_1=rng.nodes();pred=func.and(pred,function(node){return lists.contains(nodesInRange_1,node)})} return nodes.map(function(node){var siblings=dom.withClosestSiblings(node,pred);var head=lists.head(siblings);var tails=lists.tail(siblings);$$1.each(tails,function(idx,elem){dom.appendChildNodes(head,elem.childNodes);dom.remove(elem)});return lists.head(siblings)})} else{return nodes}};Style.prototype.current=function(rng){var $cont=$$1(!dom.isElement(rng.sc)?rng.sc.parentNode:rng.sc);var styleInfo=this.fromNode($cont);try{styleInfo=$$1.extend(styleInfo,{'font-bold':document.queryCommandState('bold')?'bold':'normal','font-italic':document.queryCommandState('italic')?'italic':'normal','font-underline':document.queryCommandState('underline')?'underline':'normal','font-subscript':document.queryCommandState('subscript')?'subscript':'normal','font-superscript':document.queryCommandState('superscript')?'superscript':'normal','font-strikethrough':document.queryCommandState('strikethrough')?'strikethrough':'normal','font-family':document.queryCommandValue('fontname')||styleInfo['font-family']})} catch(e){} if(!rng.isOnList()){styleInfo['list-style']='none'} else{var orderedTypes=['circle','disc','disc-leading-zero','square'];var isUnordered=$$1.inArray(styleInfo['list-style-type'],orderedTypes)>-1;styleInfo['list-style']=isUnordered?'unordered':'ordered'} var para=dom.ancestor(rng.sc,dom.isPara);if(para&&para.style['line-height']){styleInfo['line-height']=para.style.lineHeight} else{var lineHeight=parseInt(styleInfo['line-height'],10)/parseInt(styleInfo['font-size'],10);styleInfo['line-height']=lineHeight.toFixed(1)} styleInfo.anchor=rng.isOnAnchor()&&dom.ancestor(rng.sc,dom.isAnchor);styleInfo.ancestors=dom.listAncestor(rng.sc,dom.isEditable);styleInfo.range=rng;return styleInfo};return Style}());var Bullet=(function(){function Bullet(){} Bullet.prototype.insertOrderedList=function(editable){this.toggleList('OL',editable)};Bullet.prototype.insertUnorderedList=function(editable){this.toggleList('UL',editable)};Bullet.prototype.indent=function(editable){var _this=this;var rng=range.create(editable).wrapBodyInlineWithPara();var paras=rng.nodes(dom.isPara,{includeAncestor:!0});var clustereds=lists.clusterBy(paras,func.peq2('parentNode'));$$1.each(clustereds,function(idx,paras){var head=lists.head(paras);if(dom.isLi(head)){_this.wrapList(paras,head.parentNode.nodeName)} else{$$1.each(paras,function(idx,para){$$1(para).css('marginLeft',function(idx,val){return(parseInt(val,10)||0)+25})})}});rng.select()};Bullet.prototype.outdent=function(editable){var _this=this;var rng=range.create(editable).wrapBodyInlineWithPara();var paras=rng.nodes(dom.isPara,{includeAncestor:!0});var clustereds=lists.clusterBy(paras,func.peq2('parentNode'));$$1.each(clustereds,function(idx,paras){var head=lists.head(paras);if(dom.isLi(head)){_this.releaseList([paras])} else{$$1.each(paras,function(idx,para){$$1(para).css('marginLeft',function(idx,val){val=(parseInt(val,10)||0);return val>25?val-25:''})})}});rng.select()};Bullet.prototype.toggleList=function(listName,editable){var _this=this;var rng=range.create(editable).wrapBodyInlineWithPara();var paras=rng.nodes(dom.isPara,{includeAncestor:!0});var bookmark=rng.paraBookmark(paras);var clustereds=lists.clusterBy(paras,func.peq2('parentNode'));if(lists.find(paras,dom.isPurePara)){var wrappedParas_1=[];$$1.each(clustereds,function(idx,paras){wrappedParas_1=wrappedParas_1.concat(_this.wrapList(paras,listName))});paras=wrappedParas_1} else{var diffLists=rng.nodes(dom.isList,{includeAncestor:!0}).filter(function(listNode){return!$$1.nodeName(listNode,listName)});if(diffLists.length){$$1.each(diffLists,function(idx,listNode){dom.replace(listNode,listName)})} else{paras=this.releaseList(clustereds,!0)}} range.createFromParaBookmark(bookmark,paras).select()};Bullet.prototype.wrapList=function(paras,listName){var head=lists.head(paras);var last=lists.last(paras);var prevList=dom.isList(head.previousSibling)&&head.previousSibling;var nextList=dom.isList(last.nextSibling)&&last.nextSibling;var listNode=prevList||dom.insertAfter(dom.create(listName||'UL'),last);paras=paras.map(function(para){return dom.isPurePara(para)?dom.replace(para,'LI'):para});dom.appendChildNodes(listNode,paras);if(nextList){dom.appendChildNodes(listNode,lists.from(nextList.childNodes));dom.remove(nextList)} return paras};Bullet.prototype.releaseList=function(clustereds,isEscapseToBody){var releasedParas=[];$$1.each(clustereds,function(idx,paras){var head=lists.head(paras);var last=lists.last(paras);var headList=isEscapseToBody?dom.lastAncestor(head,dom.isList):head.parentNode;var lastList=headList.childNodes.length>1?dom.splitTree(headList,{node:last.parentNode,offset:dom.position(last)+1},{isSkipPaddingBlankHTML:!0}):null;var middleList=dom.splitTree(headList,{node:head.parentNode,offset:dom.position(head)},{isSkipPaddingBlankHTML:!0});paras=isEscapseToBody?dom.listDescendant(middleList,dom.isLi):lists.from(middleList.childNodes).filter(dom.isLi);if(isEscapseToBody||!dom.isList(headList.parentNode)){paras=paras.map(function(para){return dom.replace(para,'P')})} $$1.each(lists.from(paras).reverse(),function(idx,para){dom.insertAfter(para,headList)});var rootLists=lists.compact([headList,middleList,lastList]);$$1.each(rootLists,function(idx,rootList){var listNodes=[rootList].concat(dom.listDescendant(rootList,dom.isList));$$1.each(listNodes.reverse(),function(idx,listNode){if(!dom.nodeLength(listNode)){dom.remove(listNode,!0)}})});releasedParas=releasedParas.concat(paras)});return releasedParas};return Bullet}());var Typing=(function(){function Typing(){this.bullet=new Bullet()} Typing.prototype.insertTab=function(rng,tabsize){var tab=dom.createText(new Array(tabsize+1).join(dom.NBSP_CHAR));rng=rng.deleteContents();rng.insertNode(tab,!0);rng=range.create(tab,tabsize);rng.select()};Typing.prototype.insertParagraph=function(editable){var rng=range.create(editable);rng=rng.deleteContents();rng=rng.wrapBodyInlineWithPara();var splitRoot=dom.ancestor(rng.sc,dom.isPara);var nextPara;if(splitRoot){if(dom.isEmpty(splitRoot)&&dom.isLi(splitRoot)){this.bullet.toggleList(splitRoot.parentNode.nodeName);return} else if(dom.isEmpty(splitRoot)&&dom.isPara(splitRoot)&&dom.isBlockquote(splitRoot.parentNode)){dom.insertAfter(splitRoot,splitRoot.parentNode);nextPara=splitRoot} else{nextPara=dom.splitTree(splitRoot,rng.getStartPoint());var emptyAnchors=dom.listDescendant(splitRoot,dom.isEmptyAnchor);emptyAnchors=emptyAnchors.concat(dom.listDescendant(nextPara,dom.isEmptyAnchor));$$1.each(emptyAnchors,function(idx,anchor){dom.remove(anchor)});if((dom.isHeading(nextPara)||dom.isPre(nextPara)||dom.isCustomStyleTag(nextPara))&&dom.isEmpty(nextPara)){nextPara=dom.replace(nextPara,'p')}}} else{var next=rng.sc.childNodes[rng.so];nextPara=$$1(dom.emptyPara)[0];if(next){rng.sc.insertBefore(nextPara,next)} else{rng.sc.appendChild(nextPara)}} range.create(nextPara,0).normalize().select().scrollIntoView(editable)};return Typing}());var TableResultAction=function(startPoint,where,action,domTable){var _startPoint={'colPos':0,'rowPos':0};var _virtualTable=[];var _actionCellList=[];function setStartPoint(){if(!startPoint||!startPoint.tagName||(startPoint.tagName.toLowerCase()!=='td'&&startPoint.tagName.toLowerCase()!=='th')){console.error('Impossible to identify start Cell point.',startPoint);return} _startPoint.colPos=startPoint.cellIndex;if(!startPoint.parentElement||!startPoint.parentElement.tagName||startPoint.parentElement.tagName.toLowerCase()!=='tr'){console.error('Impossible to identify start Row point.',startPoint);return} _startPoint.rowPos=startPoint.parentElement.rowIndex} function setVirtualTablePosition(rowIndex,cellIndex,baseRow,baseCell,isRowSpan,isColSpan,isVirtualCell){var objPosition={'baseRow':baseRow,'baseCell':baseCell,'isRowSpan':isRowSpan,'isColSpan':isColSpan,'isVirtual':isVirtualCell};if(!_virtualTable[rowIndex]){_virtualTable[rowIndex]=[]} _virtualTable[rowIndex][cellIndex]=objPosition} function getActionCell(virtualTableCellObj,resultAction,virtualRowPosition,virtualColPosition){return{'baseCell':virtualTableCellObj.baseCell,'action':resultAction,'virtualTable':{'rowIndex':virtualRowPosition,'cellIndex':virtualColPosition}}} function recoverCellIndex(rowIndex,cellIndex){if(!_virtualTable[rowIndex]){return cellIndex} if(!_virtualTable[rowIndex][cellIndex]){return cellIndex} var newCellIndex=cellIndex;while(_virtualTable[rowIndex][newCellIndex]){newCellIndex++;if(!_virtualTable[rowIndex][newCellIndex]){return newCellIndex}}} function addCellInfoToVirtual(row,cell){var cellIndex=recoverCellIndex(row.rowIndex,cell.cellIndex);var cellHasColspan=(cell.colSpan>1);var cellHasRowspan=(cell.rowSpan>1);var isThisSelectedCell=(row.rowIndex===_startPoint.rowPos&&cell.cellIndex===_startPoint.colPos);setVirtualTablePosition(row.rowIndex,cellIndex,row,cell,cellHasRowspan,cellHasColspan,!1);var rowspanNumber=cell.attributes.rowSpan?parseInt(cell.attributes.rowSpan.value,10):0;if(rowspanNumber>1){for(var rp=1;rp<rowspanNumber;rp++){var rowspanIndex=row.rowIndex+rp;adjustStartPoint(rowspanIndex,cellIndex,cell,isThisSelectedCell);setVirtualTablePosition(rowspanIndex,cellIndex,row,cell,!0,cellHasColspan,!0)}} var colspanNumber=cell.attributes.colSpan?parseInt(cell.attributes.colSpan.value,10):0;if(colspanNumber>1){for(var cp=1;cp<colspanNumber;cp++){var cellspanIndex=recoverCellIndex(row.rowIndex,(cellIndex+cp));adjustStartPoint(row.rowIndex,cellspanIndex,cell,isThisSelectedCell);setVirtualTablePosition(row.rowIndex,cellspanIndex,row,cell,cellHasRowspan,!0,!0)}}} function adjustStartPoint(rowIndex,cellIndex,cell,isSelectedCell){if(rowIndex===_startPoint.rowPos&&_startPoint.colPos>=cell.cellIndex&&cell.cellIndex<=cellIndex&&!isSelectedCell){_startPoint.colPos++}} function createVirtualTable(){var rows=domTable.rows;for(var rowIndex=0;rowIndex<rows.length;rowIndex++){var cells=rows[rowIndex].cells;for(var cellIndex=0;cellIndex<cells.length;cellIndex++){addCellInfoToVirtual(rows[rowIndex],cells[cellIndex])}}} function getDeleteResultActionToCell(cell){switch(where){case TableResultAction.where.Column:if(cell.isColSpan){return TableResultAction.resultAction.SubtractSpanCount} break;case TableResultAction.where.Row:if(!cell.isVirtual&&cell.isRowSpan){return TableResultAction.resultAction.AddCell} else if(cell.isRowSpan){return TableResultAction.resultAction.SubtractSpanCount} break} return TableResultAction.resultAction.RemoveCell} function getAddResultActionToCell(cell){switch(where){case TableResultAction.where.Column:if(cell.isColSpan){return TableResultAction.resultAction.SumSpanCount} else if(cell.isRowSpan&&cell.isVirtual){return TableResultAction.resultAction.Ignore} break;case TableResultAction.where.Row:if(cell.isRowSpan){return TableResultAction.resultAction.SumSpanCount} else if(cell.isColSpan&&cell.isVirtual){return TableResultAction.resultAction.Ignore} break} return TableResultAction.resultAction.AddCell} function init(){setStartPoint();createVirtualTable()} this.getActionList=function(){var fixedRow=(where===TableResultAction.where.Row)?_startPoint.rowPos:-1;var fixedCol=(where===TableResultAction.where.Column)?_startPoint.colPos:-1;var actualPosition=0;var canContinue=!0;while(canContinue){var rowPosition=(fixedRow>=0)?fixedRow:actualPosition;var colPosition=(fixedCol>=0)?fixedCol:actualPosition;var row=_virtualTable[rowPosition];if(!row){canContinue=!1;return _actionCellList} var cell=row[colPosition];if(!cell){canContinue=!1;return _actionCellList} var resultAction=TableResultAction.resultAction.Ignore;switch(action){case TableResultAction.requestAction.Add:resultAction=getAddResultActionToCell(cell);break;case TableResultAction.requestAction.Delete:resultAction=getDeleteResultActionToCell(cell);break} _actionCellList.push(getActionCell(cell,resultAction,rowPosition,colPosition));actualPosition++} return _actionCellList};init()};TableResultAction.where={'Row':0,'Column':1};TableResultAction.requestAction={'Add':0,'Delete':1};TableResultAction.resultAction={'Ignore':0,'SubtractSpanCount':1,'RemoveCell':2,'AddCell':3,'SumSpanCount':4};var Table=(function(){function Table(){} Table.prototype.tab=function(rng,isShift){var cell=dom.ancestor(rng.commonAncestor(),dom.isCell);var table=dom.ancestor(cell,dom.isTable);var cells=dom.listDescendant(table,dom.isCell);var nextCell=lists[isShift?'prev':'next'](cells,cell);if(nextCell){range.create(nextCell,0).select()}};Table.prototype.addRow=function(rng,position){var cell=dom.ancestor(rng.commonAncestor(),dom.isCell);var currentTr=$$1(cell).closest('tr');var trAttributes=this.recoverAttributes(currentTr);var html=$$1('<tr'+trAttributes+'></tr>');var vTable=new TableResultAction(cell,TableResultAction.where.Row,TableResultAction.requestAction.Add,$$1(currentTr).closest('table')[0]);var actions=vTable.getActionList();for(var idCell=0;idCell<actions.length;idCell++){var currentCell=actions[idCell];var tdAttributes=this.recoverAttributes(currentCell.baseCell);switch(currentCell.action){case TableResultAction.resultAction.AddCell:html.append('<td'+tdAttributes+'>'+dom.blank+'</td>');break;case TableResultAction.resultAction.SumSpanCount:if(position==='top'){var baseCellTr=currentCell.baseCell.parent;var isTopFromRowSpan=(!baseCellTr?0:currentCell.baseCell.closest('tr').rowIndex)<=currentTr[0].rowIndex;if(isTopFromRowSpan){var newTd=$$1('<div></div>').append($$1('<td'+tdAttributes+'>'+dom.blank+'</td>').removeAttr('rowspan')).html();html.append(newTd);break}} var rowspanNumber=parseInt(currentCell.baseCell.rowSpan,10);rowspanNumber++;currentCell.baseCell.setAttribute('rowSpan',rowspanNumber);break}} if(position==='top'){currentTr.before(html)} else{var cellHasRowspan=(cell.rowSpan>1);if(cellHasRowspan){var lastTrIndex=currentTr[0].rowIndex+(cell.rowSpan-2);$$1($$1(currentTr).parent().find('tr')[lastTrIndex]).after($$1(html));return} currentTr.after(html)}};Table.prototype.addCol=function(rng,position){var cell=dom.ancestor(rng.commonAncestor(),dom.isCell);var row=$$1(cell).closest('tr');var rowsGroup=$$1(row).siblings();rowsGroup.push(row);var vTable=new TableResultAction(cell,TableResultAction.where.Column,TableResultAction.requestAction.Add,$$1(row).closest('table')[0]);var actions=vTable.getActionList();for(var actionIndex=0;actionIndex<actions.length;actionIndex++){var currentCell=actions[actionIndex];var tdAttributes=this.recoverAttributes(currentCell.baseCell);switch(currentCell.action){case TableResultAction.resultAction.AddCell:if(position==='right'){$$1(currentCell.baseCell).after('<td'+tdAttributes+'>'+dom.blank+'</td>')} else{$$1(currentCell.baseCell).before('<td'+tdAttributes+'>'+dom.blank+'</td>')} break;case TableResultAction.resultAction.SumSpanCount:if(position==='right'){var colspanNumber=parseInt(currentCell.baseCell.colSpan,10);colspanNumber++;currentCell.baseCell.setAttribute('colSpan',colspanNumber)} else{$$1(currentCell.baseCell).before('<td'+tdAttributes+'>'+dom.blank+'</td>')} break}}};Table.prototype.recoverAttributes=function(el){var resultStr='';if(!el){return resultStr} var attrList=el.attributes||[];for(var i=0;i<attrList.length;i++){if(attrList[i].name.toLowerCase()==='id'){continue} if(attrList[i].specified){resultStr+=' '+attrList[i].name+'=\''+attrList[i].value+'\''}} return resultStr};Table.prototype.deleteRow=function(rng){var cell=dom.ancestor(rng.commonAncestor(),dom.isCell);var row=$$1(cell).closest('tr');var cellPos=row.children('td, th').index($$1(cell));var rowPos=row[0].rowIndex;var vTable=new TableResultAction(cell,TableResultAction.where.Row,TableResultAction.requestAction.Delete,$$1(row).closest('table')[0]);var actions=vTable.getActionList();for(var actionIndex=0;actionIndex<actions.length;actionIndex++){if(!actions[actionIndex]){continue} var baseCell=actions[actionIndex].baseCell;var virtualPosition=actions[actionIndex].virtualTable;var hasRowspan=(baseCell.rowSpan&&baseCell.rowSpan>1);var rowspanNumber=(hasRowspan)?parseInt(baseCell.rowSpan,10):0;switch(actions[actionIndex].action){case TableResultAction.resultAction.Ignore:continue;case TableResultAction.resultAction.AddCell:var nextRow=row.next('tr')[0];if(!nextRow){continue} var cloneRow=row[0].cells[cellPos];if(hasRowspan){if(rowspanNumber>2){rowspanNumber--;nextRow.insertBefore(cloneRow,nextRow.cells[cellPos]);nextRow.cells[cellPos].setAttribute('rowSpan',rowspanNumber);nextRow.cells[cellPos].innerHTML=''} else if(rowspanNumber===2){nextRow.insertBefore(cloneRow,nextRow.cells[cellPos]);nextRow.cells[cellPos].removeAttribute('rowSpan');nextRow.cells[cellPos].innerHTML=''}} continue;case TableResultAction.resultAction.SubtractSpanCount:if(hasRowspan){if(rowspanNumber>2){rowspanNumber--;baseCell.setAttribute('rowSpan',rowspanNumber);if(virtualPosition.rowIndex!==rowPos&&baseCell.cellIndex===cellPos){baseCell.innerHTML=''}} else if(rowspanNumber===2){baseCell.removeAttribute('rowSpan');if(virtualPosition.rowIndex!==rowPos&&baseCell.cellIndex===cellPos){baseCell.innerHTML=''}}} continue;case TableResultAction.resultAction.RemoveCell:continue}} row.remove()};Table.prototype.deleteCol=function(rng){var cell=dom.ancestor(rng.commonAncestor(),dom.isCell);var row=$$1(cell).closest('tr');var cellPos=row.children('td, th').index($$1(cell));var vTable=new TableResultAction(cell,TableResultAction.where.Column,TableResultAction.requestAction.Delete,$$1(row).closest('table')[0]);var actions=vTable.getActionList();for(var actionIndex=0;actionIndex<actions.length;actionIndex++){if(!actions[actionIndex]){continue} switch(actions[actionIndex].action){case TableResultAction.resultAction.Ignore:continue;case TableResultAction.resultAction.SubtractSpanCount:var baseCell=actions[actionIndex].baseCell;var hasColspan=(baseCell.colSpan&&baseCell.colSpan>1);if(hasColspan){var colspanNumber=(baseCell.colSpan)?parseInt(baseCell.colSpan,10):0;if(colspanNumber>2){colspanNumber--;baseCell.setAttribute('colSpan',colspanNumber);if(baseCell.cellIndex===cellPos){baseCell.innerHTML=''}} else if(colspanNumber===2){baseCell.removeAttribute('colSpan');if(baseCell.cellIndex===cellPos){baseCell.innerHTML=''}}} continue;case TableResultAction.resultAction.RemoveCell:dom.remove(actions[actionIndex].baseCell,!0);continue}}};Table.prototype.createTable=function(colCount,rowCount,options){var tds=[];var tdHTML;for(var idxCol=0;idxCol<colCount;idxCol++){tds.push('<td>'+dom.blank+'</td>')} tdHTML=tds.join('');var trs=[];var trHTML;for(var idxRow=0;idxRow<rowCount;idxRow++){trs.push('<tr>'+tdHTML+'</tr>')} trHTML=trs.join('');var $table=$$1('<table>'+trHTML+'</table>');if(options&&options.tableClassName){$table.addClass(options.tableClassName)} return $table[0]};Table.prototype.deleteTable=function(rng){var cell=dom.ancestor(rng.commonAncestor(),dom.isCell);$$1(cell).closest('table').remove()};return Table}());var KEY_BOGUS='bogus';var Editor=(function(){function Editor(context){var _this=this;this.context=context;this.$note=context.layoutInfo.note;this.$editor=context.layoutInfo.editor;this.$editable=context.layoutInfo.editable;this.options=context.options;this.lang=this.options.langInfo;this.editable=this.$editable[0];this.lastRange=null;this.style=new Style();this.table=new Table();this.typing=new Typing();this.bullet=new Bullet();this.history=new History(this.$editable);this.context.memo('help.undo',this.lang.help.undo);this.context.memo('help.redo',this.lang.help.redo);this.context.memo('help.tab',this.lang.help.tab);this.context.memo('help.untab',this.lang.help.untab);this.context.memo('help.insertParagraph',this.lang.help.insertParagraph);this.context.memo('help.insertOrderedList',this.lang.help.insertOrderedList);this.context.memo('help.insertUnorderedList',this.lang.help.insertUnorderedList);this.context.memo('help.indent',this.lang.help.indent);this.context.memo('help.outdent',this.lang.help.outdent);this.context.memo('help.formatPara',this.lang.help.formatPara);this.context.memo('help.insertHorizontalRule',this.lang.help.insertHorizontalRule);this.context.memo('help.fontName',this.lang.help.fontName);var commands=['bold','italic','underline','strikethrough','superscript','subscript','justifyLeft','justifyCenter','justifyRight','justifyFull','formatBlock','removeFormat','backColor'];for(var idx=0,len=commands.length;idx<len;idx++){this[commands[idx]]=(function(sCmd){return function(value){_this.beforeCommand();document.execCommand(sCmd,!1,value);_this.afterCommand(!0)}})(commands[idx]);this.context.memo('help.'+commands[idx],this.lang.help[commands[idx]])} this.fontName=this.wrapCommand(function(value){return _this.fontStyling('font-family',"\'"+value+"\'")});this.fontSize=this.wrapCommand(function(value){return _this.fontStyling('font-size',value+'px')});for(var idx=1;idx<=6;idx++){this['formatH'+idx]=(function(idx){return function(){_this.formatBlock('H'+idx)}})(idx);this.context.memo('help.formatH'+idx,this.lang.help['formatH'+idx])} this.insertParagraph=this.wrapCommand(function(){_this.typing.insertParagraph(_this.editable)});this.insertOrderedList=this.wrapCommand(function(){_this.bullet.insertOrderedList(_this.editable)});this.insertUnorderedList=this.wrapCommand(function(){_this.bullet.insertUnorderedList(_this.editable)});this.indent=this.wrapCommand(function(){_this.bullet.indent(_this.editable)});this.outdent=this.wrapCommand(function(){_this.bullet.outdent(_this.editable)});this.insertNode=this.wrapCommand(function(node){if(_this.isLimited($$1(node).text().length)){return} var rng=_this.createRange();rng.insertNode(node);range.createFromNodeAfter(node).select()});this.insertText=this.wrapCommand(function(text){if(_this.isLimited(text.length)){return} var rng=_this.createRange();var textNode=rng.insertNode(dom.createText(text));range.create(textNode,dom.nodeLength(textNode)).select()});this.pasteHTML=this.wrapCommand(function(markup){if(_this.isLimited(markup.length)){return} var contents=_this.createRange().pasteHTML(markup);range.createFromNodeAfter(lists.last(contents)).select()});this.formatBlock=this.wrapCommand(function(tagName,$target){var onApplyCustomStyle=_this.options.callbacks.onApplyCustomStyle;if(onApplyCustomStyle){onApplyCustomStyle.call(_this,$target,_this.context,_this.onFormatBlock)} else{_this.onFormatBlock(tagName,$target)}});this.insertHorizontalRule=this.wrapCommand(function(){var hrNode=_this.createRange().insertNode(dom.create('HR'));if(hrNode.nextSibling){range.create(hrNode.nextSibling,0).normalize().select()}});this.lineHeight=this.wrapCommand(function(value){_this.style.stylePara(_this.createRange(),{lineHeight:value})});this.createLink=this.wrapCommand(function(linkInfo){var linkUrl=linkInfo.url;var linkText=linkInfo.text;var isNewWindow=linkInfo.isNewWindow;var rng=linkInfo.range||_this.createRange();var isTextChanged=rng.toString()!==linkText;if(typeof linkUrl==='string'){linkUrl=linkUrl.trim()} if(_this.options.onCreateLink){linkUrl=_this.options.onCreateLink(linkUrl)} else{linkUrl=/^[A-Za-z][A-Za-z0-9+-.]*\:[\/\/]?/.test(linkUrl)?linkUrl:'http://'+linkUrl} var anchors=[];if(isTextChanged){rng=rng.deleteContents();var anchor=rng.insertNode($$1('<A>'+linkText+'</A>')[0]);anchors.push(anchor)} else{anchors=_this.style.styleNodes(rng,{nodeName:'A',expandClosestSibling:!0,onlyPartialContains:!0})} $$1.each(anchors,function(idx,anchor){$$1(anchor).attr('href',linkUrl);if(isNewWindow){$$1(anchor).attr('target','_blank')} else{$$1(anchor).removeAttr('target')}});var startRange=range.createFromNodeBefore(lists.head(anchors));var startPoint=startRange.getStartPoint();var endRange=range.createFromNodeAfter(lists.last(anchors));var endPoint=endRange.getEndPoint();range.create(startPoint.node,startPoint.offset,endPoint.node,endPoint.offset).select()});this.color=this.wrapCommand(function(colorInfo){var foreColor=colorInfo.foreColor;var backColor=colorInfo.backColor;if(foreColor){document.execCommand('foreColor',!1,foreColor)} if(backColor){document.execCommand('backColor',!1,backColor)}});this.foreColor=this.wrapCommand(function(colorInfo){document.execCommand('styleWithCSS',!1,!0);document.execCommand('foreColor',!1,colorInfo)});this.insertTable=this.wrapCommand(function(dim){var dimension=dim.split('x');var rng=_this.createRange().deleteContents();rng.insertNode(_this.table.createTable(dimension[0],dimension[1],_this.options))});this.removeMedia=this.wrapCommand(function(){var $target=$$1(_this.restoreTarget()).parent();if($target.parent('figure').length){$target.parent('figure').remove()} else{$target=$$1(_this.restoreTarget()).detach()} _this.context.triggerEvent('media.delete',$target,_this.$editable)});this.floatMe=this.wrapCommand(function(value){var $target=$$1(_this.restoreTarget());$target.toggleClass('note-float-left',value==='left');$target.toggleClass('note-float-right',value==='right');$target.css('float',value)});this.resize=this.wrapCommand(function(value){var $target=$$1(_this.restoreTarget());$target.css({width:value*100+'%',height:''})})} Editor.prototype.initialize=function(){var _this=this;this.$editable.on('keydown',function(event){if(event.keyCode===key.code.ENTER){_this.context.triggerEvent('enter',event)} _this.context.triggerEvent('keydown',event);if(!event.isDefaultPrevented()){if(_this.options.shortcuts){_this.handleKeyMap(event)} else{_this.preventDefaultEditableShortCuts(event)}} if(_this.isLimited(1,event)){return!1}}).on('keyup',function(event){_this.context.triggerEvent('keyup',event)}).on('focus',function(event){_this.context.triggerEvent('focus',event)}).on('blur',function(event){_this.context.triggerEvent('blur',event)}).on('mousedown',function(event){_this.context.triggerEvent('mousedown',event)}).on('mouseup',function(event){_this.context.triggerEvent('mouseup',event)}).on('scroll',function(event){_this.context.triggerEvent('scroll',event)}).on('paste',function(event){_this.context.triggerEvent('paste',event)});this.$editable.html(dom.html(this.$note)||dom.emptyPara);this.$editable.on(env.inputEventName,func.debounce(function(){_this.context.triggerEvent('change',_this.$editable.html())},100));this.$editor.on('focusin',function(event){_this.context.triggerEvent('focusin',event)}).on('focusout',function(event){_this.context.triggerEvent('focusout',event)});if(!this.options.airMode){if(this.options.width){this.$editor.outerWidth(this.options.width)} if(this.options.height){this.$editable.outerHeight(this.options.height)} if(this.options.maxHeight){this.$editable.css('max-height',this.options.maxHeight)} if(this.options.minHeight){this.$editable.css('min-height',this.options.minHeight)}} this.history.recordUndo()};Editor.prototype.destroy=function(){this.$editable.off()};Editor.prototype.handleKeyMap=function(event){var keyMap=this.options.keyMap[env.isMac?'mac':'pc'];var keys=[];if(event.metaKey){keys.push('CMD')} if(event.ctrlKey&&!event.altKey){keys.push('CTRL')} if(event.shiftKey){keys.push('SHIFT')} var keyName=key.nameFromCode[event.keyCode];if(keyName){keys.push(keyName)} var eventName=keyMap[keys.join('+')];if(eventName){if(this.context.invoke(eventName)!==!1){event.preventDefault()}} else if(key.isEdit(event.keyCode)){this.afterCommand()}};Editor.prototype.preventDefaultEditableShortCuts=function(event){if((event.ctrlKey||event.metaKey)&&lists.contains([66,73,85],event.keyCode)){event.preventDefault()}};Editor.prototype.isLimited=function(pad,event){pad=pad||0;if(typeof event!=='undefined'){if(key.isMove(event.keyCode)||(event.ctrlKey||event.metaKey)||lists.contains([key.code.BACKSPACE,key.code.DELETE],event.keyCode)){return!1}} if(this.options.maxTextLength>0){if((this.$editable.text().length+pad)>=this.options.maxTextLength){return!0}} return!1};Editor.prototype.createRange=function(){this.focus();return range.create(this.editable)};Editor.prototype.saveRange=function(thenCollapse){this.lastRange=this.createRange();if(thenCollapse){this.lastRange.collapse().select()}};Editor.prototype.restoreRange=function(){if(this.lastRange){this.lastRange.select();this.focus()}};Editor.prototype.saveTarget=function(node){this.$editable.data('target',node)};Editor.prototype.clearTarget=function(){this.$editable.removeData('target')};Editor.prototype.restoreTarget=function(){return this.$editable.data('target')};Editor.prototype.currentStyle=function(){var rng=range.create();if(rng){rng=rng.normalize()} return rng?this.style.current(rng):this.style.fromNode(this.$editable)};Editor.prototype.styleFromNode=function($node){return this.style.fromNode($node)};Editor.prototype.undo=function(){this.context.triggerEvent('before.command',this.$editable.html());this.history.undo();this.context.triggerEvent('change',this.$editable.html())};Editor.prototype.redo=function(){this.context.triggerEvent('before.command',this.$editable.html());this.history.redo();this.context.triggerEvent('change',this.$editable.html())};Editor.prototype.beforeCommand=function(){this.context.triggerEvent('before.command',this.$editable.html());this.focus()};Editor.prototype.afterCommand=function(isPreventTrigger){this.history.recordUndo();if(!isPreventTrigger){this.context.triggerEvent('change',this.$editable.html())}};Editor.prototype.tab=function(){var rng=this.createRange();if(rng.isCollapsed()&&rng.isOnCell()){this.table.tab(rng)} else{if(this.options.tabSize===0){return!1} if(!this.isLimited(this.options.tabSize)){this.beforeCommand();this.typing.insertTab(rng,this.options.tabSize);this.afterCommand()}}};Editor.prototype.untab=function(){var rng=this.createRange();if(rng.isCollapsed()&&rng.isOnCell()){this.table.tab(rng,!0)} else{if(this.options.tabSize===0){return!1}}};Editor.prototype.wrapCommand=function(fn){var _this=this;return function(){_this.beforeCommand();fn.apply(_this,arguments);_this.afterCommand()}};Editor.prototype.insertImage=function(src,param){var _this=this;return createImage(src,param).then(function($image){_this.beforeCommand();if(typeof param==='function'){param($image)} else{if(typeof param==='string'){$image.attr('data-filename',param)} $image.css('width',Math.min(_this.$editable.width(),$image.width()))} $image.show();range.create(_this.editable).insertNode($image[0]);range.createFromNodeAfter($image[0]).select();_this.afterCommand()}).fail(function(e){_this.context.triggerEvent('image.upload.error',e)})};Editor.prototype.insertImages=function(files){var _this=this;$$1.each(files,function(idx,file){var filename=file.name;if(_this.options.maximumImageFileSize&&_this.options.maximumImageFileSize<file.size){_this.context.triggerEvent('image.upload.error',_this.lang.image.maximumFileSizeError)} else{readFileAsDataURL(file).then(function(dataURL){return _this.insertImage(dataURL,filename)}).fail(function(){_this.context.triggerEvent('image.upload.error')})}})};Editor.prototype.insertImagesOrCallback=function(files){var callbacks=this.options.callbacks;if(callbacks.onImageUpload){this.context.triggerEvent('image.upload',files)} else{this.insertImages(files)}};Editor.prototype.getSelectedText=function(){var rng=this.createRange();if(rng.isOnAnchor()){rng=range.createFromNode(dom.ancestor(rng.sc,dom.isAnchor))} return rng.toString()};Editor.prototype.onFormatBlock=function(tagName,$target){tagName=env.isMSIE?'<'+tagName+'>':tagName;document.execCommand('FormatBlock',!1,tagName);if($target&&$target.length){var className=$target[0].className||'';if(className){var currentRange=this.createRange();var $parent=$$1([currentRange.sc,currentRange.ec]).closest(tagName);$parent.addClass(className)}}};Editor.prototype.formatPara=function(){this.formatBlock('P')};Editor.prototype.fontStyling=function(target,value){var rng=this.createRange();if(rng){var spans=this.style.styleNodes(rng);$$1(spans).css(target,value);if(rng.isCollapsed()){var firstSpan=lists.head(spans);if(firstSpan&&!dom.nodeLength(firstSpan)){firstSpan.innerHTML=dom.ZERO_WIDTH_NBSP_CHAR;range.createFromNodeAfter(firstSpan.firstChild).select();this.$editable.data(KEY_BOGUS,firstSpan)}}}};Editor.prototype.unlink=function(){var rng=this.createRange();if(rng.isOnAnchor()){var anchor=dom.ancestor(rng.sc,dom.isAnchor);rng=range.createFromNode(anchor);rng.select();this.beforeCommand();document.execCommand('unlink');this.afterCommand()}};Editor.prototype.getLinkInfo=function(){var rng=this.createRange().expand(dom.isAnchor);var $anchor=$$1(lists.head(rng.nodes(dom.isAnchor)));var linkInfo={range:rng,text:rng.toString(),url:$anchor.length?$anchor.attr('href'):''};if($anchor.length){linkInfo.isNewWindow=$anchor.attr('target')==='_blank'} return linkInfo};Editor.prototype.addRow=function(position){var rng=this.createRange(this.$editable);if(rng.isCollapsed()&&rng.isOnCell()){this.beforeCommand();this.table.addRow(rng,position);this.afterCommand()}};Editor.prototype.addCol=function(position){var rng=this.createRange(this.$editable);if(rng.isCollapsed()&&rng.isOnCell()){this.beforeCommand();this.table.addCol(rng,position);this.afterCommand()}};Editor.prototype.deleteRow=function(){var rng=this.createRange(this.$editable);if(rng.isCollapsed()&&rng.isOnCell()){this.beforeCommand();this.table.deleteRow(rng);this.afterCommand()}};Editor.prototype.deleteCol=function(){var rng=this.createRange(this.$editable);if(rng.isCollapsed()&&rng.isOnCell()){this.beforeCommand();this.table.deleteCol(rng);this.afterCommand()}};Editor.prototype.deleteTable=function(){var rng=this.createRange(this.$editable);if(rng.isCollapsed()&&rng.isOnCell()){this.beforeCommand();this.table.deleteTable(rng);this.afterCommand()}};Editor.prototype.resizeTo=function(pos,$target,bKeepRatio){var imageSize;if(bKeepRatio){var newRatio=pos.y/pos.x;var ratio=$target.data('ratio');imageSize={width:ratio>newRatio?pos.x:pos.y/ratio,height:ratio>newRatio?pos.x*ratio:pos.y}} else{imageSize={width:pos.x,height:pos.y}} $target.css(imageSize)};Editor.prototype.hasFocus=function(){return this.$editable.is(':focus')};Editor.prototype.focus=function(){if(!this.hasFocus()){this.$editable.focus()}};Editor.prototype.isEmpty=function(){return dom.isEmpty(this.$editable[0])||dom.emptyPara===this.$editable.html()};Editor.prototype.empty=function(){this.context.invoke('code',dom.emptyPara)};return Editor}());var Clipboard=(function(){function Clipboard(context){this.context=context;this.$editable=context.layoutInfo.editable} Clipboard.prototype.initialize=function(){this.$editable.on('paste',this.pasteByEvent.bind(this))};Clipboard.prototype.pasteByEvent=function(event){var clipboardData=event.originalEvent.clipboardData;if(clipboardData&&clipboardData.items&&clipboardData.items.length){var item=lists.head(clipboardData.items);if(item.kind==='file'&&item.type.indexOf('image/')!==-1){this.context.invoke('editor.insertImagesOrCallback',[item.getAsFile()])} this.context.invoke('editor.afterCommand')}};return Clipboard}());var Dropzone=(function(){function Dropzone(context){this.context=context;this.$eventListener=$$1(document);this.$editor=context.layoutInfo.editor;this.$editable=context.layoutInfo.editable;this.options=context.options;this.lang=this.options.langInfo;this.documentEventHandlers={};this.$dropzone=$$1(['<div class="note-dropzone">','  <div class="note-dropzone-message"/>','</div>'].join('')).prependTo(this.$editor)} Dropzone.prototype.initialize=function(){if(this.options.disableDragAndDrop){this.documentEventHandlers.onDrop=function(e){e.preventDefault()};this.$eventListener=this.$dropzone;this.$eventListener.on('drop',this.documentEventHandlers.onDrop)} else{this.attachDragAndDropEvent()}};Dropzone.prototype.attachDragAndDropEvent=function(){var _this=this;var collection=$$1();var $dropzoneMessage=this.$dropzone.find('.note-dropzone-message');this.documentEventHandlers.onDragenter=function(e){var isCodeview=_this.context.invoke('codeview.isActivated');var hasEditorSize=_this.$editor.width()>0&&_this.$editor.height()>0;if(!isCodeview&&!collection.length&&hasEditorSize){_this.$editor.addClass('dragover');_this.$dropzone.width(_this.$editor.width());_this.$dropzone.height(_this.$editor.height());$dropzoneMessage.text(_this.lang.image.dragImageHere)} collection=collection.add(e.target)};this.documentEventHandlers.onDragleave=function(e){collection=collection.not(e.target);if(!collection.length){_this.$editor.removeClass('dragover')}};this.documentEventHandlers.onDrop=function(){collection=$$1();_this.$editor.removeClass('dragover')};this.$eventListener.on('dragenter',this.documentEventHandlers.onDragenter).on('dragleave',this.documentEventHandlers.onDragleave).on('drop',this.documentEventHandlers.onDrop);this.$dropzone.on('dragenter',function(){_this.$dropzone.addClass('hover');$dropzoneMessage.text(_this.lang.image.dropImage)}).on('dragleave',function(){_this.$dropzone.removeClass('hover');$dropzoneMessage.text(_this.lang.image.dragImageHere)});this.$dropzone.on('drop',function(event){var dataTransfer=event.originalEvent.dataTransfer;event.preventDefault();if(dataTransfer&&dataTransfer.files&&dataTransfer.files.length){_this.$editable.focus();_this.context.invoke('editor.insertImagesOrCallback',dataTransfer.files)} else{$$1.each(dataTransfer.types,function(idx,type){var content=dataTransfer.getData(type);if(type.toLowerCase().indexOf('text')>-1){_this.context.invoke('editor.pasteHTML',content)} else{$$1(content).each(function(idx,item){_this.context.invoke('editor.insertNode',item)})}})}}).on('dragover',!1)};Dropzone.prototype.destroy=function(){var _this=this;Object.keys(this.documentEventHandlers).forEach(function(key){_this.$eventListener.off(key.substr(2).toLowerCase(),_this.documentEventHandlers[key])});this.documentEventHandlers={}};return Dropzone}());var CodeMirror;if(env.hasCodeMirror){if(env.isSupportAmd){require(['codemirror'],function(cm){CodeMirror=cm})} else{CodeMirror=window.CodeMirror}} var CodeView=(function(){function CodeView(context){this.context=context;this.$editor=context.layoutInfo.editor;this.$editable=context.layoutInfo.editable;this.$codable=context.layoutInfo.codable;this.options=context.options} CodeView.prototype.sync=function(){var isCodeview=this.isActivated();if(isCodeview&&env.hasCodeMirror){this.$codable.data('cmEditor').save()}};CodeView.prototype.isActivated=function(){return this.$editor.hasClass('codeview')};CodeView.prototype.toggle=function(){if(this.isActivated()){this.deactivate()} else{this.activate()} this.context.triggerEvent('codeview.toggled')};CodeView.prototype.activate=function(){var _this=this;this.$codable.val(dom.html(this.$editable,this.options.prettifyHtml));this.$codable.height(this.$editable.height());this.context.invoke('toolbar.updateCodeview',!0);this.$editor.addClass('codeview');this.$codable.focus();if(env.hasCodeMirror){var cmEditor_1=CodeMirror.fromTextArea(this.$codable[0],this.options.codemirror);if(this.options.codemirror.tern){var server_1=new CodeMirror.TernServer(this.options.codemirror.tern);cmEditor_1.ternServer=server_1;cmEditor_1.on('cursorActivity',function(cm){server_1.updateArgHints(cm)})} cmEditor_1.on('blur',function(event){_this.context.triggerEvent('blur.codeview',cmEditor_1.getValue(),event)});cmEditor_1.setSize(null,this.$editable.outerHeight());this.$codable.data('cmEditor',cmEditor_1)} else{this.$codable.on('blur',function(event){_this.context.triggerEvent('blur.codeview',_this.$codable.val(),event)})}};CodeView.prototype.deactivate=function(){if(env.hasCodeMirror){var cmEditor=this.$codable.data('cmEditor');this.$codable.val(cmEditor.getValue());cmEditor.toTextArea()} var value=dom.value(this.$codable,this.options.prettifyHtml)||dom.emptyPara;var isChange=this.$editable.html()!==value;this.$editable.html(value);this.$editable.height(this.options.height?this.$codable.height():'auto');this.$editor.removeClass('codeview');if(isChange){this.context.triggerEvent('change',this.$editable.html(),this.$editable)} this.$editable.focus();this.context.invoke('toolbar.updateCodeview',!1)};CodeView.prototype.destroy=function(){if(this.isActivated()){this.deactivate()}};return CodeView}());var EDITABLE_PADDING=24;var Statusbar=(function(){function Statusbar(context){this.$document=$$1(document);this.$statusbar=context.layoutInfo.statusbar;this.$editable=context.layoutInfo.editable;this.options=context.options} Statusbar.prototype.initialize=function(){var _this=this;if(this.options.airMode||this.options.disableResizeEditor){this.destroy();return} this.$statusbar.on('mousedown',function(event){event.preventDefault();event.stopPropagation();var editableTop=_this.$editable.offset().top-_this.$document.scrollTop();var onMouseMove=function(event){var height=event.clientY-(editableTop+EDITABLE_PADDING);height=(_this.options.minheight>0)?Math.max(height,_this.options.minheight):height;height=(_this.options.maxHeight>0)?Math.min(height,_this.options.maxHeight):height;_this.$editable.height(height)};_this.$document.on('mousemove',onMouseMove).one('mouseup',function(){_this.$document.off('mousemove',onMouseMove)})})};Statusbar.prototype.destroy=function(){this.$statusbar.off()};return Statusbar}());var Fullscreen=(function(){function Fullscreen(context){var _this=this;this.context=context;this.$editor=context.layoutInfo.editor;this.$toolbar=context.layoutInfo.toolbar;this.$editable=context.layoutInfo.editable;this.$codable=context.layoutInfo.codable;this.$window=$$1(window);this.$scrollbar=$$1('html, body');this.onResize=function(){_this.resizeTo({h:_this.$window.height()-_this.$toolbar.outerHeight()})}} Fullscreen.prototype.resizeTo=function(size){this.$editable.css('height',size.h);this.$codable.css('height',size.h);if(this.$codable.data('cmeditor')){this.$codable.data('cmeditor').setsize(null,size.h)}};Fullscreen.prototype.toggle=function(){this.$editor.toggleClass('fullscreen');if(this.isFullscreen()){this.$editable.data('orgHeight',this.$editable.css('height'));this.$window.on('resize',this.onResize).trigger('resize');this.$scrollbar.css('overflow','hidden')} else{this.$window.off('resize',this.onResize);this.resizeTo({h:this.$editable.data('orgHeight')});this.$scrollbar.css('overflow','visible')} this.context.invoke('toolbar.updateFullscreen',this.isFullscreen())};Fullscreen.prototype.isFullscreen=function(){return this.$editor.hasClass('fullscreen')};return Fullscreen}());var Handle=(function(){function Handle(context){var _this=this;this.context=context;this.$document=$$1(document);this.$editingArea=context.layoutInfo.editingArea;this.options=context.options;this.lang=this.options.langInfo;this.events={'summernote.mousedown':function(we,e){if(_this.update(e.target)){e.preventDefault()}},'summernote.keyup summernote.scroll summernote.change summernote.dialog.shown':function(){_this.update()},'summernote.disable':function(){_this.hide()},'summernote.codeview.toggled':function(){_this.update()}}} Handle.prototype.initialize=function(){var _this=this;this.$handle=$$1(['<div class="note-handle">','<div class="note-control-selection">','<div class="note-control-selection-bg"></div>','<div class="note-control-holder note-control-nw"></div>','<div class="note-control-holder note-control-ne"></div>','<div class="note-control-holder note-control-sw"></div>','<div class="',(this.options.disableResizeImage?'note-control-holder':'note-control-sizing'),' note-control-se"></div>',(this.options.disableResizeImage?'':'<div class="note-control-selection-info"></div>'),'</div>','</div>'].join('')).prependTo(this.$editingArea);this.$handle.on('mousedown',function(event){if(dom.isControlSizing(event.target)){event.preventDefault();event.stopPropagation();var $target_1=_this.$handle.find('.note-control-selection').data('target');var posStart_1=$target_1.offset();var scrollTop_1=_this.$document.scrollTop();var onMouseMove_1=function(event){_this.context.invoke('editor.resizeTo',{x:event.clientX-posStart_1.left,y:event.clientY-(posStart_1.top-scrollTop_1)},$target_1,!event.shiftKey);_this.update($target_1[0])};_this.$document.on('mousemove',onMouseMove_1).one('mouseup',function(e){e.preventDefault();_this.$document.off('mousemove',onMouseMove_1);_this.context.invoke('editor.afterCommand')});if(!$target_1.data('ratio')){$target_1.data('ratio',$target_1.height()/$target_1.width())}}});this.$handle.on('wheel',function(e){e.preventDefault();_this.update()})};Handle.prototype.destroy=function(){this.$handle.remove()};Handle.prototype.update=function(target){if(this.context.isDisabled()){return!1} var isImage=dom.isImg(target);var $selection=this.$handle.find('.note-control-selection');this.context.invoke('imagePopover.update',target);if(isImage){var $image=$$1(target);var position=$image.position();var pos={left:position.left+parseInt($image.css('marginLeft'),10),top:position.top+parseInt($image.css('marginTop'),10)};var imageSize={w:$image.outerWidth(!1),h:$image.outerHeight(!1)};$selection.css({display:'block',left:pos.left,top:pos.top,width:imageSize.w,height:imageSize.h}).data('target',$image);var origImageObj=new Image();origImageObj.src=$image.attr('src');var sizingText=imageSize.w+'x'+imageSize.h+' ('+this.lang.image.original+': '+origImageObj.width+'x'+origImageObj.height+')';$selection.find('.note-control-selection-info').text(sizingText);this.context.invoke('editor.saveTarget',target)} else{this.hide()} return isImage};Handle.prototype.hide=function(){this.context.invoke('editor.clearTarget');this.$handle.children().hide()};return Handle}());var defaultScheme='http://';var linkPattern=/^([A-Za-z][A-Za-z0-9+-.]*\:[\/\/]?|mailto:[A-Z0-9._%+-]+@)?(www\.)?(.+)$/i;var AutoLink=(function(){function AutoLink(context){var _this=this;this.context=context;this.events={'summernote.keyup':function(we,e){if(!e.isDefaultPrevented()){_this.handleKeyup(e)}},'summernote.keydown':function(we,e){_this.handleKeydown(e)}}} AutoLink.prototype.initialize=function(){this.lastWordRange=null};AutoLink.prototype.destroy=function(){this.lastWordRange=null};AutoLink.prototype.replace=function(){if(!this.lastWordRange){return} var keyword=this.lastWordRange.toString();var match=keyword.match(linkPattern);if(match&&(match[1]||match[2])){var link=match[1]?keyword:defaultScheme+keyword;var node=$$1('<a />').html(keyword).attr('href',link)[0];this.lastWordRange.insertNode(node);this.lastWordRange=null;this.context.invoke('editor.focus')}};AutoLink.prototype.handleKeydown=function(e){if(lists.contains([key.code.ENTER,key.code.SPACE],e.keyCode)){var wordRange=this.context.invoke('editor.createRange').getWordRange();this.lastWordRange=wordRange}};AutoLink.prototype.handleKeyup=function(e){if(lists.contains([key.code.ENTER,key.code.SPACE],e.keyCode)){this.replace()}};return AutoLink}());var AutoSync=(function(){function AutoSync(context){var _this=this;this.$note=context.layoutInfo.note;this.events={'summernote.change':function(){_this.$note.val(context.invoke('code'))}}} AutoSync.prototype.shouldInitialize=function(){return dom.isTextarea(this.$note[0])};return AutoSync}());var Placeholder=(function(){function Placeholder(context){var _this=this;this.context=context;this.$editingArea=context.layoutInfo.editingArea;this.options=context.options;this.events={'summernote.init summernote.change':function(){_this.update()},'summernote.codeview.toggled':function(){_this.update()}}} Placeholder.prototype.shouldInitialize=function(){return!!this.options.placeholder};Placeholder.prototype.initialize=function(){var _this=this;this.$placeholder=$$1('<div class="note-placeholder">');this.$placeholder.on('click',function(){_this.context.invoke('focus')}).text(this.options.placeholder).prependTo(this.$editingArea);this.update()};Placeholder.prototype.destroy=function(){this.$placeholder.remove()};Placeholder.prototype.update=function(){var isShow=!this.context.invoke('codeview.isActivated')&&this.context.invoke('editor.isEmpty');this.$placeholder.toggle(isShow)};return Placeholder}());var Buttons=(function(){function Buttons(context){this.ui=$$1.summernote.ui;this.context=context;this.$toolbar=context.layoutInfo.toolbar;this.options=context.options;this.lang=this.options.langInfo;this.invertedKeyMap=func.invertObject(this.options.keyMap[env.isMac?'mac':'pc'])} Buttons.prototype.representShortcut=function(editorMethod){var shortcut=this.invertedKeyMap[editorMethod];if(!this.options.shortcuts||!shortcut){return''} if(env.isMac){shortcut=shortcut.replace('CMD','⌘').replace('SHIFT','⇧')} shortcut=shortcut.replace('BACKSLASH','\\').replace('SLASH','/').replace('LEFTBRACKET','[').replace('RIGHTBRACKET',']');return' ('+shortcut+')'};Buttons.prototype.button=function(o){if(!this.options.tooltip&&o.tooltip){delete o.tooltip} o.container=this.options.container;return this.ui.button(o)};Buttons.prototype.initialize=function(){this.addToolbarButtons();this.addImagePopoverButtons();this.addLinkPopoverButtons();this.addTablePopoverButtons();this.fontInstalledMap={}};Buttons.prototype.destroy=function(){delete this.fontInstalledMap};Buttons.prototype.isFontInstalled=function(name){if(!this.fontInstalledMap.hasOwnProperty(name)){this.fontInstalledMap[name]=env.isFontInstalled(name)||lists.contains(this.options.fontNamesIgnoreCheck,name)} return this.fontInstalledMap[name]};Buttons.prototype.isFontDeservedToAdd=function(name){var genericFamilies=['sans-serif','serif','monospace','cursive','fantasy'];name=name.toLowerCase();return((name!=='')&&this.isFontInstalled(name)&&($$1.inArray(name,genericFamilies)===-1))};Buttons.prototype.addToolbarButtons=function(){var _this=this;this.context.memo('button.style',function(){return _this.ui.buttonGroup([_this.button({className:'dropdown-toggle',contents:_this.ui.dropdownButtonContents(_this.ui.icon(_this.options.icons.magic),_this.options),tooltip:_this.lang.style.style,data:{toggle:'dropdown'}}),_this.ui.dropdown({className:'dropdown-style',items:_this.options.styleTags,template:function(item){if(typeof item==='string'){item={tag:item,title:(_this.lang.style.hasOwnProperty(item)?_this.lang.style[item]:item)}} var tag=item.tag;var title=item.title;var style=item.style?' style="'+item.style+'" ':'';var className=item.className?' class="'+item.className+'"':'';return'<'+tag+style+className+'>'+title+'</'+tag+'>'},click:_this.context.createInvokeHandler('editor.formatBlock')})]).render()});var _loop_1=function(styleIdx,styleLen){var item=this_1.options.styleTags[styleIdx];this_1.context.memo('button.style.'+item,function(){return _this.button({className:'note-btn-style-'+item,contents:'<div data-value="'+item+'">'+item.toUpperCase()+'</div>',tooltip:item.toUpperCase(),click:_this.context.createInvokeHandler('editor.formatBlock')}).render()})};var this_1=this;for(var styleIdx=0,styleLen=this.options.styleTags.length;styleIdx<styleLen;styleIdx++){_loop_1(styleIdx,styleLen)} this.context.memo('button.bold',function(){return _this.button({className:'note-btn-bold',contents:_this.ui.icon(_this.options.icons.bold),tooltip:_this.lang.font.bold+_this.representShortcut('bold'),click:_this.context.createInvokeHandlerAndUpdateState('editor.bold')}).render()});this.context.memo('button.italic',function(){return _this.button({className:'note-btn-italic',contents:_this.ui.icon(_this.options.icons.italic),tooltip:_this.lang.font.italic+_this.representShortcut('italic'),click:_this.context.createInvokeHandlerAndUpdateState('editor.italic')}).render()});this.context.memo('button.underline',function(){return _this.button({className:'note-btn-underline',contents:_this.ui.icon(_this.options.icons.underline),tooltip:_this.lang.font.underline+_this.representShortcut('underline'),click:_this.context.createInvokeHandlerAndUpdateState('editor.underline')}).render()});this.context.memo('button.clear',function(){return _this.button({contents:_this.ui.icon(_this.options.icons.eraser),tooltip:_this.lang.font.clear+_this.representShortcut('removeFormat'),click:_this.context.createInvokeHandler('editor.removeFormat')}).render()});this.context.memo('button.strikethrough',function(){return _this.button({className:'note-btn-strikethrough',contents:_this.ui.icon(_this.options.icons.strikethrough),tooltip:_this.lang.font.strikethrough+_this.representShortcut('strikethrough'),click:_this.context.createInvokeHandlerAndUpdateState('editor.strikethrough')}).render()});this.context.memo('button.superscript',function(){return _this.button({className:'note-btn-superscript',contents:_this.ui.icon(_this.options.icons.superscript),tooltip:_this.lang.font.superscript,click:_this.context.createInvokeHandlerAndUpdateState('editor.superscript')}).render()});this.context.memo('button.subscript',function(){return _this.button({className:'note-btn-subscript',contents:_this.ui.icon(_this.options.icons.subscript),tooltip:_this.lang.font.subscript,click:_this.context.createInvokeHandlerAndUpdateState('editor.subscript')}).render()});this.context.memo('button.fontname',function(){var styleInfo=_this.context.invoke('editor.currentStyle');$$1.each(styleInfo['font-family'].split(','),function(idx,fontname){fontname=fontname.trim().replace(/['"]+/g,'');if(_this.isFontDeservedToAdd(fontname)){if($$1.inArray(fontname,_this.options.fontNames)===-1){_this.options.fontNames.push(fontname)}}});return _this.ui.buttonGroup([_this.button({className:'dropdown-toggle',contents:_this.ui.dropdownButtonContents('<span class="note-current-fontname"/>',_this.options),tooltip:_this.lang.font.name,data:{toggle:'dropdown'}}),_this.ui.dropdownCheck({className:'dropdown-fontname',checkClassName:_this.options.icons.menuCheck,items:_this.options.fontNames.filter(_this.isFontInstalled.bind(_this)),template:function(item){return'<span style="font-family: \''+item+'\'">'+item+'</span>'},click:_this.context.createInvokeHandlerAndUpdateState('editor.fontName')})]).render()});this.context.memo('button.fontsize',function(){return _this.ui.buttonGroup([_this.button({className:'dropdown-toggle',contents:_this.ui.dropdownButtonContents('<span class="note-current-fontsize"/>',_this.options),tooltip:_this.lang.font.size,data:{toggle:'dropdown'}}),_this.ui.dropdownCheck({className:'dropdown-fontsize',checkClassName:_this.options.icons.menuCheck,items:_this.options.fontSizes,click:_this.context.createInvokeHandlerAndUpdateState('editor.fontSize')})]).render()});this.context.memo('button.color',function(){return _this.ui.buttonGroup({className:'note-color',children:[_this.button({className:'note-current-color-button',contents:_this.ui.icon(_this.options.icons.font+' note-recent-color'),tooltip:_this.lang.color.recent,click:function(e){var $button=$$1(e.currentTarget);_this.context.invoke('editor.color',{backColor:$button.attr('data-backColor'),foreColor:$button.attr('data-foreColor')})},callback:function($button){var $recentColor=$button.find('.note-recent-color');$recentColor.css('background-color','#FFFF00');$button.attr('data-backColor','#FFFF00')}}),_this.button({className:'dropdown-toggle',contents:_this.ui.dropdownButtonContents('',_this.options),tooltip:_this.lang.color.more,data:{toggle:'dropdown'}}),_this.ui.dropdown({items:['<div class="note-palette">','  <div class="note-palette-title">'+_this.lang.color.background+'</div>','  <div>','    <button type="button" class="note-color-reset btn btn-light" data-event="backColor" data-value="inherit">',_this.lang.color.transparent,'    </button>','  </div>','  <div class="note-holder" data-event="backColor"/>','</div>','<div class="note-palette">','  <div class="note-palette-title">'+_this.lang.color.foreground+'</div>','  <div>','    <button type="button" class="note-color-reset btn btn-light" data-event="removeFormat" data-value="foreColor">',_this.lang.color.resetToDefault,'    </button>','  </div>','  <div class="note-holder" data-event="foreColor"/>','</div>'].join(''),callback:function($dropdown){$dropdown.find('.note-holder').each(function(idx,item){var $holder=$$1(item);$holder.append(_this.ui.palette({colors:_this.options.colors,eventName:$holder.data('event'),container:_this.options.container,tooltip:_this.options.tooltip}).render())})},click:function(event){var $button=$$1(event.target);var eventName=$button.data('event');var value=$button.data('value');if(eventName&&value){var key=eventName==='backColor'?'background-color':'color';var $color=$button.closest('.note-color').find('.note-recent-color');var $currentButton=$button.closest('.note-color').find('.note-current-color-button');$color.css(key,value);$currentButton.attr('data-'+eventName,value);_this.context.invoke('editor.'+eventName,value)}}})]}).render()});this.context.memo('button.ul',function(){return _this.button({contents:_this.ui.icon(_this.options.icons.unorderedlist),tooltip:_this.lang.lists.unordered+_this.representShortcut('insertUnorderedList'),click:_this.context.createInvokeHandler('editor.insertUnorderedList')}).render()});this.context.memo('button.ol',function(){return _this.button({contents:_this.ui.icon(_this.options.icons.orderedlist),tooltip:_this.lang.lists.ordered+_this.representShortcut('insertOrderedList'),click:_this.context.createInvokeHandler('editor.insertOrderedList')}).render()});var justifyLeft=this.button({contents:this.ui.icon(this.options.icons.alignLeft),tooltip:this.lang.paragraph.left+this.representShortcut('justifyLeft'),click:this.context.createInvokeHandler('editor.justifyLeft')});var justifyCenter=this.button({contents:this.ui.icon(this.options.icons.alignCenter),tooltip:this.lang.paragraph.center+this.representShortcut('justifyCenter'),click:this.context.createInvokeHandler('editor.justifyCenter')});var justifyRight=this.button({contents:this.ui.icon(this.options.icons.alignRight),tooltip:this.lang.paragraph.right+this.representShortcut('justifyRight'),click:this.context.createInvokeHandler('editor.justifyRight')});var justifyFull=this.button({contents:this.ui.icon(this.options.icons.alignJustify),tooltip:this.lang.paragraph.justify+this.representShortcut('justifyFull'),click:this.context.createInvokeHandler('editor.justifyFull')});var outdent=this.button({contents:this.ui.icon(this.options.icons.outdent),tooltip:this.lang.paragraph.outdent+this.representShortcut('outdent'),click:this.context.createInvokeHandler('editor.outdent')});var indent=this.button({contents:this.ui.icon(this.options.icons.indent),tooltip:this.lang.paragraph.indent+this.representShortcut('indent'),click:this.context.createInvokeHandler('editor.indent')});this.context.memo('button.justifyLeft',func.invoke(justifyLeft,'render'));this.context.memo('button.justifyCenter',func.invoke(justifyCenter,'render'));this.context.memo('button.justifyRight',func.invoke(justifyRight,'render'));this.context.memo('button.justifyFull',func.invoke(justifyFull,'render'));this.context.memo('button.outdent',func.invoke(outdent,'render'));this.context.memo('button.indent',func.invoke(indent,'render'));this.context.memo('button.paragraph',function(){return _this.ui.buttonGroup([_this.button({className:'dropdown-toggle',contents:_this.ui.dropdownButtonContents(_this.ui.icon(_this.options.icons.alignLeft),_this.options),tooltip:_this.lang.paragraph.paragraph,data:{toggle:'dropdown'}}),_this.ui.dropdown([_this.ui.buttonGroup({className:'note-align',children:[justifyLeft,justifyCenter,justifyRight,justifyFull]}),_this.ui.buttonGroup({className:'note-list',children:[outdent,indent]})])]).render()});this.context.memo('button.height',function(){return _this.ui.buttonGroup([_this.button({className:'dropdown-toggle',contents:_this.ui.dropdownButtonContents(_this.ui.icon(_this.options.icons.textHeight),_this.options),tooltip:_this.lang.font.height,data:{toggle:'dropdown'}}),_this.ui.dropdownCheck({items:_this.options.lineHeights,checkClassName:_this.options.icons.menuCheck,className:'dropdown-line-height',click:_this.context.createInvokeHandler('editor.lineHeight')})]).render()});this.context.memo('button.table',function(){return _this.ui.buttonGroup([_this.button({className:'dropdown-toggle',contents:_this.ui.dropdownButtonContents(_this.ui.icon(_this.options.icons.table),_this.options),tooltip:_this.lang.table.table,data:{toggle:'dropdown'}}),_this.ui.dropdown({className:'note-table',items:['<div class="note-dimension-picker">','  <div class="note-dimension-picker-mousecatcher" data-event="insertTable" data-value="1x1"/>','  <div class="note-dimension-picker-highlighted"/>','  <div class="note-dimension-picker-unhighlighted"/>','</div>','<div class="note-dimension-display">1 x 1</div>'].join('')})],{callback:function($node){var $catcher=$node.find('.note-dimension-picker-mousecatcher');$catcher.css({width:_this.options.insertTableMaxSize.col+'em',height:_this.options.insertTableMaxSize.row+'em'}).mousedown(_this.context.createInvokeHandler('editor.insertTable')).on('mousemove',_this.tableMoveHandler.bind(_this))}}).render()});this.context.memo('button.link',function(){return _this.button({contents:_this.ui.icon(_this.options.icons.link),tooltip:_this.lang.link.link+_this.representShortcut('linkDialog.show'),click:_this.context.createInvokeHandler('linkDialog.show')}).render()});this.context.memo('button.picture',function(){return _this.button({contents:_this.ui.icon(_this.options.icons.picture),tooltip:_this.lang.image.image,click:_this.context.createInvokeHandler('imageDialog.show')}).render()});this.context.memo('button.video',function(){return _this.button({contents:_this.ui.icon(_this.options.icons.video),tooltip:_this.lang.video.video,click:_this.context.createInvokeHandler('videoDialog.show')}).render()});this.context.memo('button.hr',function(){return _this.button({contents:_this.ui.icon(_this.options.icons.minus),tooltip:_this.lang.hr.insert+_this.representShortcut('insertHorizontalRule'),click:_this.context.createInvokeHandler('editor.insertHorizontalRule')}).render()});this.context.memo('button.fullscreen',function(){return _this.button({className:'btn-fullscreen',contents:_this.ui.icon(_this.options.icons.arrowsAlt),tooltip:_this.options.fullscreen,click:_this.context.createInvokeHandler('fullscreen.toggle')}).render()});this.context.memo('button.codeview',function(){return _this.button({className:'btn-codeview',contents:_this.ui.icon(_this.options.icons.code),tooltip:_this.options.codeview,click:_this.context.createInvokeHandler('codeview.toggle')}).render()});this.context.memo('button.redo',function(){return _this.button({contents:_this.ui.icon(_this.options.icons.redo),tooltip:_this.lang.history.redo+_this.representShortcut('redo'),click:_this.context.createInvokeHandler('editor.redo')}).render()});this.context.memo('button.undo',function(){return _this.button({contents:_this.ui.icon(_this.options.icons.undo),tooltip:_this.lang.history.undo+_this.representShortcut('undo'),click:_this.context.createInvokeHandler('editor.undo')}).render()});this.context.memo('button.help',function(){return _this.button({contents:_this.ui.icon(_this.options.icons.question),tooltip:_this.options.help,click:_this.context.createInvokeHandler('helpDialog.show')}).render()})};Buttons.prototype.addImagePopoverButtons=function(){var _this=this;this.context.memo('button.imageSize100',function(){return _this.button({contents:'<span class="note-fontsize-10">100%</span>',tooltip:_this.lang.image.resizeFull,click:_this.context.createInvokeHandler('editor.resize','1')}).render()});this.context.memo('button.imageSize50',function(){return _this.button({contents:'<span class="note-fontsize-10">50%</span>',tooltip:_this.lang.image.resizeHalf,click:_this.context.createInvokeHandler('editor.resize','0.5')}).render()});this.context.memo('button.imageSize25',function(){return _this.button({contents:'<span class="note-fontsize-10">25%</span>',tooltip:_this.lang.image.resizeQuarter,click:_this.context.createInvokeHandler('editor.resize','0.25')}).render()});this.context.memo('button.floatLeft',function(){return _this.button({contents:_this.ui.icon(_this.options.icons.alignLeft),tooltip:_this.lang.image.floatLeft,click:_this.context.createInvokeHandler('editor.floatMe','left')}).render()});this.context.memo('button.floatRight',function(){return _this.button({contents:_this.ui.icon(_this.options.icons.alignRight),tooltip:_this.lang.image.floatRight,click:_this.context.createInvokeHandler('editor.floatMe','right')}).render()});this.context.memo('button.floatNone',function(){return _this.button({contents:_this.ui.icon(_this.options.icons.alignJustify),tooltip:_this.lang.image.floatNone,click:_this.context.createInvokeHandler('editor.floatMe','none')}).render()});this.context.memo('button.removeMedia',function(){return _this.button({contents:_this.ui.icon(_this.options.icons.trash),tooltip:_this.lang.image.remove,click:_this.context.createInvokeHandler('editor.removeMedia')}).render()})};Buttons.prototype.addLinkPopoverButtons=function(){var _this=this;this.context.memo('button.linkDialogShow',function(){return _this.button({contents:_this.ui.icon(_this.options.icons.link),tooltip:_this.lang.link.edit,click:_this.context.createInvokeHandler('linkDialog.show')}).render()});this.context.memo('button.unlink',function(){return _this.button({contents:_this.ui.icon(_this.options.icons.unlink),tooltip:_this.lang.link.unlink,click:_this.context.createInvokeHandler('editor.unlink')}).render()})};Buttons.prototype.addTablePopoverButtons=function(){var _this=this;this.context.memo('button.addRowUp',function(){return _this.button({className:'btn-md',contents:_this.ui.icon(_this.options.icons.rowAbove),tooltip:_this.lang.table.addRowAbove,click:_this.context.createInvokeHandler('editor.addRow','top')}).render()});this.context.memo('button.addRowDown',function(){return _this.button({className:'btn-md',contents:_this.ui.icon(_this.options.icons.rowBelow),tooltip:_this.lang.table.addRowBelow,click:_this.context.createInvokeHandler('editor.addRow','bottom')}).render()});this.context.memo('button.addColLeft',function(){return _this.button({className:'btn-md',contents:_this.ui.icon(_this.options.icons.colBefore),tooltip:_this.lang.table.addColLeft,click:_this.context.createInvokeHandler('editor.addCol','left')}).render()});this.context.memo('button.addColRight',function(){return _this.button({className:'btn-md',contents:_this.ui.icon(_this.options.icons.colAfter),tooltip:_this.lang.table.addColRight,click:_this.context.createInvokeHandler('editor.addCol','right')}).render()});this.context.memo('button.deleteRow',function(){return _this.button({className:'btn-md',contents:_this.ui.icon(_this.options.icons.rowRemove),tooltip:_this.lang.table.delRow,click:_this.context.createInvokeHandler('editor.deleteRow')}).render()});this.context.memo('button.deleteCol',function(){return _this.button({className:'btn-md',contents:_this.ui.icon(_this.options.icons.colRemove),tooltip:_this.lang.table.delCol,click:_this.context.createInvokeHandler('editor.deleteCol')}).render()});this.context.memo('button.deleteTable',function(){return _this.button({className:'btn-md',contents:_this.ui.icon(_this.options.icons.trash),tooltip:_this.lang.table.delTable,click:_this.context.createInvokeHandler('editor.deleteTable')}).render()})};Buttons.prototype.build=function($container,groups){for(var groupIdx=0,groupLen=groups.length;groupIdx<groupLen;groupIdx++){var group=groups[groupIdx];var groupName=$$1.isArray(group)?group[0]:group;var buttons=$$1.isArray(group)?((group.length===1)?[group[0]]:group[1]):[group];var $group=this.ui.buttonGroup({className:'note-'+groupName}).render();for(var idx=0,len=buttons.length;idx<len;idx++){var btn=this.context.memo('button.'+buttons[idx]);if(btn){$group.append(typeof btn==='function'?btn(this.context):btn)}} $group.appendTo($container)}};Buttons.prototype.updateCurrentStyle=function($container){var _this=this;var $cont=$container||this.$toolbar;var styleInfo=this.context.invoke('editor.currentStyle');this.updateBtnStates($cont,{'.note-btn-bold':function(){return styleInfo['font-bold']==='bold'},'.note-btn-italic':function(){return styleInfo['font-italic']==='italic'},'.note-btn-underline':function(){return styleInfo['font-underline']==='underline'},'.note-btn-subscript':function(){return styleInfo['font-subscript']==='subscript'},'.note-btn-superscript':function(){return styleInfo['font-superscript']==='superscript'},'.note-btn-strikethrough':function(){return styleInfo['font-strikethrough']==='strikethrough'}});if(styleInfo['font-family']){var fontNames=styleInfo['font-family'].split(',').map(function(name){return name.replace(/[\'\"]/g,'').replace(/\s+$/,'').replace(/^\s+/,'')});var fontName_1=lists.find(fontNames,this.isFontInstalled.bind(this));$cont.find('.dropdown-fontname a').each(function(idx,item){var $item=$$1(item);var isChecked=($item.data('value')+'')===(fontName_1+'');$item.toggleClass('checked',isChecked)});$cont.find('.note-current-fontname').text(fontName_1).css('font-family',fontName_1)} if(styleInfo['font-size']){var fontSize_1=styleInfo['font-size'];$cont.find('.dropdown-fontsize a').each(function(idx,item){var $item=$$1(item);var isChecked=($item.data('value')+'')===(fontSize_1+'');$item.toggleClass('checked',isChecked)});$cont.find('.note-current-fontsize').text(fontSize_1)} if(styleInfo['line-height']){var lineHeight_1=styleInfo['line-height'];$cont.find('.dropdown-line-height li a').each(function(idx,item){var isChecked=($$1(item).data('value')+'')===(lineHeight_1+'');_this.className=isChecked?'checked':''})}};Buttons.prototype.updateBtnStates=function($container,infos){var _this=this;$$1.each(infos,function(selector,pred){_this.ui.toggleBtnActive($container.find(selector),pred())})};Buttons.prototype.tableMoveHandler=function(event){var PX_PER_EM=18;var $picker=$$1(event.target.parentNode);var $dimensionDisplay=$picker.next();var $catcher=$picker.find('.note-dimension-picker-mousecatcher');var $highlighted=$picker.find('.note-dimension-picker-highlighted');var $unhighlighted=$picker.find('.note-dimension-picker-unhighlighted');var posOffset;if(event.offsetX===undefined){var posCatcher=$$1(event.target).offset();posOffset={x:event.pageX-posCatcher.left,y:event.pageY-posCatcher.top}} else{posOffset={x:event.offsetX,y:event.offsetY}} var dim={c:Math.ceil(posOffset.x/PX_PER_EM)||1,r:Math.ceil(posOffset.y/PX_PER_EM)||1};$highlighted.css({width:dim.c+'em',height:dim.r+'em'});$catcher.data('value',dim.c+'x'+dim.r);if(dim.c>3&&dim.c<this.options.insertTableMaxSize.col){$unhighlighted.css({width:dim.c+1+'em'})} if(dim.r>3&&dim.r<this.options.insertTableMaxSize.row){$unhighlighted.css({height:dim.r+1+'em'})} $dimensionDisplay.html(dim.c+' x '+dim.r)};return Buttons}());var Toolbar=(function(){function Toolbar(context){this.context=context;this.$window=$$1(window);this.$document=$$1(document);this.ui=$$1.summernote.ui;this.$note=context.layoutInfo.note;this.$editor=context.layoutInfo.editor;this.$toolbar=context.layoutInfo.toolbar;this.options=context.options;this.followScroll=this.followScroll.bind(this)} Toolbar.prototype.shouldInitialize=function(){return!this.options.airMode};Toolbar.prototype.initialize=function(){var _this=this;this.options.toolbar=this.options.toolbar||[];if(!this.options.toolbar.length){this.$toolbar.hide()} else{this.context.invoke('buttons.build',this.$toolbar,this.options.toolbar)} if(this.options.toolbarContainer){this.$toolbar.appendTo(this.options.toolbarContainer)} this.changeContainer(!1);this.$note.on('summernote.keyup summernote.mouseup summernote.change',function(){_this.context.invoke('buttons.updateCurrentStyle')});this.context.invoke('buttons.updateCurrentStyle');if(this.options.followingToolbar){this.$window.on('scroll resize',this.followScroll)}};Toolbar.prototype.destroy=function(){this.$toolbar.children().remove();if(this.options.followingToolbar){this.$window.off('scroll resize',this.followScroll)}};Toolbar.prototype.followScroll=function(){if(this.$editor.hasClass('fullscreen')){return!1} var $toolbarWrapper=this.$toolbar.parent('.note-toolbar-wrapper');var editorHeight=this.$editor.outerHeight();var editorWidth=this.$editor.width();var toolbarHeight=this.$toolbar.height();$toolbarWrapper.css({height:toolbarHeight});var otherBarHeight=0;if(this.options.otherStaticBar){otherBarHeight=$$1(this.options.otherStaticBar).outerHeight()} var currentOffset=this.$document.scrollTop();var editorOffsetTop=this.$editor.offset().top;var editorOffsetBottom=editorOffsetTop+editorHeight;var activateOffset=editorOffsetTop-otherBarHeight;var deactivateOffsetBottom=editorOffsetBottom-otherBarHeight-toolbarHeight;if((currentOffset>activateOffset)&&(currentOffset<deactivateOffsetBottom)){this.$toolbar.css({position:'fixed',top:otherBarHeight,width:editorWidth})} else{this.$toolbar.css({position:'relative',top:0,width:'100%'})}};Toolbar.prototype.changeContainer=function(isFullscreen){if(isFullscreen){this.$toolbar.prependTo(this.$editor)} else{if(this.options.toolbarContainer){this.$toolbar.appendTo(this.options.toolbarContainer)}}};Toolbar.prototype.updateFullscreen=function(isFullscreen){this.ui.toggleBtnActive(this.$toolbar.find('.btn-fullscreen'),isFullscreen);this.changeContainer(isFullscreen)};Toolbar.prototype.updateCodeview=function(isCodeview){this.ui.toggleBtnActive(this.$toolbar.find('.btn-codeview'),isCodeview);if(isCodeview){this.deactivate()} else{this.activate()}};Toolbar.prototype.activate=function(isIncludeCodeview){var $btn=this.$toolbar.find('button');if(!isIncludeCodeview){$btn=$btn.not('.btn-codeview')} this.ui.toggleBtn($btn,!0)};Toolbar.prototype.deactivate=function(isIncludeCodeview){var $btn=this.$toolbar.find('button');if(!isIncludeCodeview){$btn=$btn.not('.btn-codeview')} this.ui.toggleBtn($btn,!1)};return Toolbar}());var LinkDialog=(function(){function LinkDialog(context){this.context=context;this.ui=$$1.summernote.ui;this.$body=$$1(document.body);this.$editor=context.layoutInfo.editor;this.options=context.options;this.lang=this.options.langInfo;context.memo('help.linkDialog.show',this.options.langInfo.help['linkDialog.show'])} LinkDialog.prototype.initialize=function(){var $container=this.options.dialogsInBody?this.$body:this.$editor;var body=['<div class="form-group note-form-group">',"<label class=\"note-form-label\">"+this.lang.link.textToDisplay+"</label>",'<input class="note-link-text form-control note-form-control  note-input" type="text" />','</div>','<div class="form-group note-form-group">',"<label class=\"note-form-label\">"+this.lang.link.url+"</label>",'<input class="note-link-url form-control note-form-control note-input" type="text" value="http://" />','</div>',!this.options.disableLinkTarget?$$1('<div/>').append(this.ui.checkbox({id:'sn-checkbox-open-in-new-window',text:this.lang.link.openInNewWindow,checked:!0}).render()).html():''].join('');var buttonClass='btn btn-primary note-btn note-btn-primary note-link-btn';var footer="<button type=\"submit\" href=\"#\" class=\""+buttonClass+"\" disabled>"+this.lang.link.insert+"</button>";this.$dialog=this.ui.dialog({className:'link-dialog',title:this.lang.link.insert,fade:this.options.dialogsFade,body:body,footer:footer}).render().appendTo($container)};LinkDialog.prototype.destroy=function(){this.ui.hideDialog(this.$dialog);this.$dialog.remove()};LinkDialog.prototype.bindEnterKey=function($input,$btn){$input.on('keypress',function(event){if(event.keyCode===key.code.ENTER){event.preventDefault();$btn.trigger('click')}})};LinkDialog.prototype.toggleLinkBtn=function($linkBtn,$linkText,$linkUrl){this.ui.toggleBtn($linkBtn,$linkText.val()&&$linkUrl.val())};LinkDialog.prototype.showLinkDialog=function(linkInfo){var _this=this;return $$1.Deferred(function(deferred){var $linkText=_this.$dialog.find('.note-link-text');var $linkUrl=_this.$dialog.find('.note-link-url');var $linkBtn=_this.$dialog.find('.note-link-btn');var $openInNewWindow=_this.$dialog.find('input[type=checkbox]');_this.ui.onDialogShown(_this.$dialog,function(){_this.context.triggerEvent('dialog.shown');if(!linkInfo.url){linkInfo.url=linkInfo.text} $linkText.val(linkInfo.text);var handleLinkTextUpdate=function(){_this.toggleLinkBtn($linkBtn,$linkText,$linkUrl);linkInfo.text=$linkText.val()};$linkText.on('input',handleLinkTextUpdate).on('paste',function(){setTimeout(handleLinkTextUpdate,0)});var handleLinkUrlUpdate=function(){_this.toggleLinkBtn($linkBtn,$linkText,$linkUrl);if(!linkInfo.text){$linkText.val($linkUrl.val())}};$linkUrl.on('input',handleLinkUrlUpdate).on('paste',function(){setTimeout(handleLinkUrlUpdate,0)}).val(linkInfo.url);if(!env.isSupportTouch){$linkUrl.trigger('focus')} _this.toggleLinkBtn($linkBtn,$linkText,$linkUrl);_this.bindEnterKey($linkUrl,$linkBtn);_this.bindEnterKey($linkText,$linkBtn);var isChecked=linkInfo.isNewWindow!==undefined?linkInfo.isNewWindow:_this.context.options.linkTargetBlank;$openInNewWindow.prop('checked',isChecked);$linkBtn.one('click',function(event){event.preventDefault();deferred.resolve({range:linkInfo.range,url:$linkUrl.val(),text:$linkText.val(),isNewWindow:$openInNewWindow.is(':checked')});_this.ui.hideDialog(_this.$dialog)})});_this.ui.onDialogHidden(_this.$dialog,function(){$linkText.off('input paste keypress');$linkUrl.off('input paste keypress');$linkBtn.off('click');if(deferred.state()==='pending'){deferred.reject()}});_this.ui.showDialog(_this.$dialog)}).promise()};LinkDialog.prototype.show=function(){var _this=this;var linkInfo=this.context.invoke('editor.getLinkInfo');this.context.invoke('editor.saveRange');this.showLinkDialog(linkInfo).then(function(linkInfo){_this.context.invoke('editor.restoreRange');_this.context.invoke('editor.createLink',linkInfo)}).fail(function(){_this.context.invoke('editor.restoreRange')})};return LinkDialog}());var LinkPopover=(function(){function LinkPopover(context){var _this=this;this.context=context;this.ui=$$1.summernote.ui;this.options=context.options;this.events={'summernote.keyup summernote.mouseup summernote.change summernote.scroll':function(){_this.update()},'summernote.disable summernote.dialog.shown':function(){_this.hide()}}} LinkPopover.prototype.shouldInitialize=function(){return!lists.isEmpty(this.options.popover.link)};LinkPopover.prototype.initialize=function(){this.$popover=this.ui.popover({className:'note-link-popover',callback:function($node){var $content=$node.find('.popover-content,.note-popover-content');$content.prepend('<span><a target="_blank"></a>&nbsp;</span>')}}).render().appendTo(this.options.container);var $content=this.$popover.find('.popover-content,.note-popover-content');this.context.invoke('buttons.build',$content,this.options.popover.link)};LinkPopover.prototype.destroy=function(){this.$popover.remove()};LinkPopover.prototype.update=function(){if(!this.context.invoke('editor.hasFocus')){this.hide();return} var rng=this.context.invoke('editor.createRange');if(rng.isCollapsed()&&rng.isOnAnchor()){var anchor=dom.ancestor(rng.sc,dom.isAnchor);var href=$$1(anchor).attr('href');this.$popover.find('a').attr('href',href).html(href);var pos=dom.posFromPlaceholder(anchor);this.$popover.css({display:'block',left:pos.left,top:pos.top})} else{this.hide()}};LinkPopover.prototype.hide=function(){this.$popover.hide()};return LinkPopover}());var ImageDialog=(function(){function ImageDialog(context){this.context=context;this.ui=$$1.summernote.ui;this.$body=$$1(document.body);this.$editor=context.layoutInfo.editor;this.options=context.options;this.lang=this.options.langInfo} ImageDialog.prototype.initialize=function(){var $container=this.options.dialogsInBody?this.$body:this.$editor;var imageLimitation='';if(this.options.maximumImageFileSize){var unit=Math.floor(Math.log(this.options.maximumImageFileSize)/Math.log(1024));var readableSize=(this.options.maximumImageFileSize/Math.pow(1024,unit)).toFixed(2)*1+' '+' KMGTP'[unit]+'B';imageLimitation="<small>"+(this.lang.image.maximumFileSize+' : '+readableSize)+"</small>"} var body=['<div class="form-group note-form-group note-group-select-from-files">','<label class="note-form-label">'+this.lang.image.selectFromFiles+'</label>','<input class="note-image-input note-form-control note-input" ',' type="file" name="files" accept="image/*" multiple="multiple" />',imageLimitation,'</div>','<div class="form-group note-group-image-url" style="overflow:auto;">','<label class="note-form-label">'+this.lang.image.url+'</label>','<input class="note-image-url form-control note-form-control note-input ',' col-md-12" type="text" />','</div>'].join('');var buttonClass='btn btn-primary note-btn note-btn-primary note-image-btn';var footer="<button type=\"submit\" href=\"#\" class=\""+buttonClass+"\" disabled>"+this.lang.image.insert+"</button>";this.$dialog=this.ui.dialog({title:this.lang.image.insert,fade:this.options.dialogsFade,body:body,footer:footer}).render().appendTo($container)};ImageDialog.prototype.destroy=function(){this.ui.hideDialog(this.$dialog);this.$dialog.remove()};ImageDialog.prototype.bindEnterKey=function($input,$btn){$input.on('keypress',function(event){if(event.keyCode===key.code.ENTER){event.preventDefault();$btn.trigger('click')}})};ImageDialog.prototype.show=function(){var _this=this;this.context.invoke('editor.saveRange');this.showImageDialog().then(function(data){_this.ui.hideDialog(_this.$dialog);_this.context.invoke('editor.restoreRange');if(typeof data==='string'){_this.context.invoke('editor.insertImage',data)} else{_this.context.invoke('editor.insertImagesOrCallback',data)}}).fail(function(){_this.context.invoke('editor.restoreRange')})};ImageDialog.prototype.showImageDialog=function(){var _this=this;return $$1.Deferred(function(deferred){var $imageInput=_this.$dialog.find('.note-image-input');var $imageUrl=_this.$dialog.find('.note-image-url');var $imageBtn=_this.$dialog.find('.note-image-btn');_this.ui.onDialogShown(_this.$dialog,function(){_this.context.triggerEvent('dialog.shown');$imageInput.replaceWith($imageInput.clone().on('change',function(event){deferred.resolve(event.target.files||event.target.value)}).val(''));$imageBtn.click(function(event){event.preventDefault();deferred.resolve($imageUrl.val())});$imageUrl.on('keyup paste',function(){var url=$imageUrl.val();_this.ui.toggleBtn($imageBtn,url)}).val('');if(!env.isSupportTouch){$imageUrl.trigger('focus')} _this.bindEnterKey($imageUrl,$imageBtn)});_this.ui.onDialogHidden(_this.$dialog,function(){$imageInput.off('change');$imageUrl.off('keyup paste keypress');$imageBtn.off('click');if(deferred.state()==='pending'){deferred.reject()}});_this.ui.showDialog(_this.$dialog)})};return ImageDialog}());var ImagePopover=(function(){function ImagePopover(context){var _this=this;this.context=context;this.ui=$$1.summernote.ui;this.editable=context.layoutInfo.editable[0];this.options=context.options;this.events={'summernote.disable':function(){_this.hide()}}} ImagePopover.prototype.shouldInitialize=function(){return!lists.isEmpty(this.options.popover.image)};ImagePopover.prototype.initialize=function(){this.$popover=this.ui.popover({className:'note-image-popover'}).render().appendTo(this.options.container);var $content=this.$popover.find('.popover-content,.note-popover-content');this.context.invoke('buttons.build',$content,this.options.popover.image)};ImagePopover.prototype.destroy=function(){this.$popover.remove()};ImagePopover.prototype.update=function(target){if(dom.isImg(target)){var pos=dom.posFromPlaceholder(target);var posEditor=dom.posFromPlaceholder(this.editable);this.$popover.css({display:'block',left:this.options.popatmouse?event.pageX-20:pos.left,top:this.options.popatmouse?event.pageY:Math.min(pos.top,posEditor.top)})} else{this.hide()}};ImagePopover.prototype.hide=function(){this.$popover.hide()};return ImagePopover}());var TablePopover=(function(){function TablePopover(context){var _this=this;this.context=context;this.ui=$$1.summernote.ui;this.options=context.options;this.events={'summernote.mousedown':function(we,e){_this.update(e.target)},'summernote.keyup summernote.scroll summernote.change':function(){_this.update()},'summernote.disable':function(){_this.hide()}}} TablePopover.prototype.shouldInitialize=function(){return!lists.isEmpty(this.options.popover.table)};TablePopover.prototype.initialize=function(){this.$popover=this.ui.popover({className:'note-table-popover'}).render().appendTo(this.options.container);var $content=this.$popover.find('.popover-content,.note-popover-content');this.context.invoke('buttons.build',$content,this.options.popover.table);if(env.isFF){document.execCommand('enableInlineTableEditing',!1,!1)}};TablePopover.prototype.destroy=function(){this.$popover.remove()};TablePopover.prototype.update=function(target){if(this.context.isDisabled()){return!1} var isCell=dom.isCell(target);if(isCell){var pos=dom.posFromPlaceholder(target);this.$popover.css({display:'block',left:pos.left,top:pos.top})} else{this.hide()} return isCell};TablePopover.prototype.hide=function(){this.$popover.hide()};return TablePopover}());var VideoDialog=(function(){function VideoDialog(context){this.context=context;this.ui=$$1.summernote.ui;this.$body=$$1(document.body);this.$editor=context.layoutInfo.editor;this.options=context.options;this.lang=this.options.langInfo} VideoDialog.prototype.initialize=function(){var $container=this.options.dialogsInBody?this.$body:this.$editor;var body=['<div class="form-group note-form-group row-fluid">',"<label class=\"note-form-label\">"+this.lang.video.url+" <small class=\"text-muted\">"+this.lang.video.providers+"</small></label>",'<input class="note-video-url form-control note-form-control note-input" type="text" />','</div>'].join('');var buttonClass='btn btn-primary note-btn note-btn-primary note-video-btn';var footer="<button type=\"submit\" href=\"#\" class=\""+buttonClass+"\" disabled>"+this.lang.video.insert+"</button>";this.$dialog=this.ui.dialog({title:this.lang.video.insert,fade:this.options.dialogsFade,body:body,footer:footer}).render().appendTo($container)};VideoDialog.prototype.destroy=function(){this.ui.hideDialog(this.$dialog);this.$dialog.remove()};VideoDialog.prototype.bindEnterKey=function($input,$btn){$input.on('keypress',function(event){if(event.keyCode===key.code.ENTER){event.preventDefault();$btn.trigger('click')}})};VideoDialog.prototype.createVideoNode=function(url){var ytRegExp=/^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/;var ytMatch=url.match(ytRegExp);var igRegExp=/(?:www\.|\/\/)instagram\.com\/p\/(.[a-zA-Z0-9_-]*)/;var igMatch=url.match(igRegExp);var vRegExp=/\/\/vine\.co\/v\/([a-zA-Z0-9]+)/;var vMatch=url.match(vRegExp);var vimRegExp=/\/\/(player\.)?vimeo\.com\/([a-z]*\/)*(\d+)[?]?.*/;var vimMatch=url.match(vimRegExp);var dmRegExp=/.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/;var dmMatch=url.match(dmRegExp);var youkuRegExp=/\/\/v\.youku\.com\/v_show\/id_(\w+)=*\.html/;var youkuMatch=url.match(youkuRegExp);var qqRegExp=/\/\/v\.qq\.com.*?vid=(.+)/;var qqMatch=url.match(qqRegExp);var qqRegExp2=/\/\/v\.qq\.com\/x?\/?(page|cover).*?\/([^\/]+)\.html\??.*/;var qqMatch2=url.match(qqRegExp2);var mp4RegExp=/^.+.(mp4|m4v)$/;var mp4Match=url.match(mp4RegExp);var oggRegExp=/^.+.(ogg|ogv)$/;var oggMatch=url.match(oggRegExp);var webmRegExp=/^.+.(webm)$/;var webmMatch=url.match(webmRegExp);var $video;if(ytMatch&&ytMatch[1].length===11){var youtubeId=ytMatch[1];$video=$$1('<iframe>').attr('frameborder',0).attr('src','//www.youtube.com/embed/'+youtubeId).attr('width','640').attr('height','360')} else if(igMatch&&igMatch[0].length){$video=$$1('<iframe>').attr('frameborder',0).attr('src','https://instagram.com/p/'+igMatch[1]+'/embed/').attr('width','612').attr('height','710').attr('scrolling','no').attr('allowtransparency','true')} else if(vMatch&&vMatch[0].length){$video=$$1('<iframe>').attr('frameborder',0).attr('src',vMatch[0]+'/embed/simple').attr('width','600').attr('height','600').attr('class','vine-embed')} else if(vimMatch&&vimMatch[3].length){$video=$$1('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>').attr('frameborder',0).attr('src','//player.vimeo.com/video/'+vimMatch[3]).attr('width','640').attr('height','360')} else if(dmMatch&&dmMatch[2].length){$video=$$1('<iframe>').attr('frameborder',0).attr('src','//www.dailymotion.com/embed/video/'+dmMatch[2]).attr('width','640').attr('height','360')} else if(youkuMatch&&youkuMatch[1].length){$video=$$1('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>').attr('frameborder',0).attr('height','498').attr('width','510').attr('src','//player.youku.com/embed/'+youkuMatch[1])} else if((qqMatch&&qqMatch[1].length)||(qqMatch2&&qqMatch2[2].length)){var vid=((qqMatch&&qqMatch[1].length)?qqMatch[1]:qqMatch2[2]);$video=$$1('<iframe webkitallowfullscreen mozallowfullscreen allowfullscreen>').attr('frameborder',0).attr('height','310').attr('width','500').attr('src','http://v.qq.com/iframe/player.html?vid='+vid+'&amp;auto=0')} else if(mp4Match||oggMatch||webmMatch){$video=$$1('<video controls>').attr('src',url).attr('width','640').attr('height','360')} else{return!1} $video.addClass('note-video-clip');return $video[0]};VideoDialog.prototype.show=function(){var _this=this;var text=this.context.invoke('editor.getSelectedText');this.context.invoke('editor.saveRange');this.showVideoDialog(text).then(function(url){_this.ui.hideDialog(_this.$dialog);_this.context.invoke('editor.restoreRange');var $node=_this.createVideoNode(url);if($node){_this.context.invoke('editor.insertNode',$node)}}).fail(function(){_this.context.invoke('editor.restoreRange')})};VideoDialog.prototype.showVideoDialog=function(text){var _this=this;return $$1.Deferred(function(deferred){var $videoUrl=_this.$dialog.find('.note-video-url');var $videoBtn=_this.$dialog.find('.note-video-btn');_this.ui.onDialogShown(_this.$dialog,function(){_this.context.triggerEvent('dialog.shown');$videoUrl.val(text).on('input',function(){_this.ui.toggleBtn($videoBtn,$videoUrl.val())});if(!env.isSupportTouch){$videoUrl.trigger('focus')} $videoBtn.click(function(event){event.preventDefault();deferred.resolve($videoUrl.val())});_this.bindEnterKey($videoUrl,$videoBtn)});_this.ui.onDialogHidden(_this.$dialog,function(){$videoUrl.off('input');$videoBtn.off('click');if(deferred.state()==='pending'){deferred.reject()}});_this.ui.showDialog(_this.$dialog)})};return VideoDialog}());var HelpDialog=(function(){function HelpDialog(context){this.context=context;this.ui=$$1.summernote.ui;this.$body=$$1(document.body);this.$editor=context.layoutInfo.editor;this.options=context.options;this.lang=this.options.langInfo} HelpDialog.prototype.initialize=function(){var $container=this.options.dialogsInBody?this.$body:this.$editor;var body=['<p class="text-center">','<a href="http://summernote.org/" target="_blank">Summernote 0.8.9</a> · ','<a href="https://github.com/summernote/summernote" target="_blank">Project</a> · ','<a href="https://github.com/summernote/summernote/issues" target="_blank">Issues</a>','</p>'].join('');this.$dialog=this.ui.dialog({title:this.lang.options.help,fade:this.options.dialogsFade,body:this.createShortcutList(),footer:body,callback:function($node){$node.find('.modal-body,.note-modal-body').css({'max-height':300,'overflow':'scroll'})}}).render().appendTo($container)};HelpDialog.prototype.destroy=function(){this.ui.hideDialog(this.$dialog);this.$dialog.remove()};HelpDialog.prototype.createShortcutList=function(){var _this=this;var keyMap=this.options.keyMap[env.isMac?'mac':'pc'];return Object.keys(keyMap).map(function(key){var command=keyMap[key];var $row=$$1('<div><div class="help-list-item"/></div>');$row.append($$1('<label><kbd>'+key+'</kdb></label>').css({'width':180,'margin-right':10})).append($$1('<span/>').html(_this.context.memo('help.'+command)||command));return $row.html()}).join('')};HelpDialog.prototype.showHelpDialog=function(){var _this=this;return $$1.Deferred(function(deferred){_this.ui.onDialogShown(_this.$dialog,function(){_this.context.triggerEvent('dialog.shown');deferred.resolve()});_this.ui.showDialog(_this.$dialog)}).promise()};HelpDialog.prototype.show=function(){var _this=this;this.context.invoke('editor.saveRange');this.showHelpDialog().then(function(){_this.context.invoke('editor.restoreRange')})};return HelpDialog}());var AIR_MODE_POPOVER_X_OFFSET=20;var AirPopover=(function(){function AirPopover(context){var _this=this;this.context=context;this.ui=$$1.summernote.ui;this.options=context.options;this.events={'summernote.keyup summernote.mouseup summernote.scroll':function(){_this.update()},'summernote.disable summernote.change summernote.dialog.shown':function(){_this.hide()},'summernote.focusout':function(we,e){if(env.isFF){return} if(!e.relatedTarget||!dom.ancestor(e.relatedTarget,func.eq(_this.$popover[0]))){_this.hide()}}}} AirPopover.prototype.shouldInitialize=function(){return this.options.airMode&&!lists.isEmpty(this.options.popover.air)};AirPopover.prototype.initialize=function(){this.$popover=this.ui.popover({className:'note-air-popover'}).render().appendTo(this.options.container);var $content=this.$popover.find('.popover-content');this.context.invoke('buttons.build',$content,this.options.popover.air)};AirPopover.prototype.destroy=function(){this.$popover.remove()};AirPopover.prototype.update=function(){var styleInfo=this.context.invoke('editor.currentStyle');if(styleInfo.range&&!styleInfo.range.isCollapsed()){var rect=lists.last(styleInfo.range.getClientRects());if(rect){var bnd=func.rect2bnd(rect);this.$popover.css({display:'block',left:Math.max(bnd.left+bnd.width/2,0)-AIR_MODE_POPOVER_X_OFFSET,top:bnd.top+bnd.height});this.context.invoke('buttons.updateCurrentStyle',this.$popover)}} else{this.hide()}};AirPopover.prototype.hide=function(){this.$popover.hide()};return AirPopover}());var POPOVER_DIST=5;var HintPopover=(function(){function HintPopover(context){var _this=this;this.context=context;this.ui=$$1.summernote.ui;this.$editable=context.layoutInfo.editable;this.options=context.options;this.hint=this.options.hint||[];this.direction=this.options.hintDirection||'bottom';this.hints=$$1.isArray(this.hint)?this.hint:[this.hint];this.events={'summernote.keyup':function(we,e){if(!e.isDefaultPrevented()){_this.handleKeyup(e)}},'summernote.keydown':function(we,e){_this.handleKeydown(e)},'summernote.disable summernote.dialog.shown':function(){_this.hide()}}} HintPopover.prototype.shouldInitialize=function(){return this.hints.length>0};HintPopover.prototype.initialize=function(){var _this=this;this.lastWordRange=null;this.$popover=this.ui.popover({className:'note-hint-popover',hideArrow:!0,direction:''}).render().appendTo(this.options.container);this.$popover.hide();this.$content=this.$popover.find('.popover-content,.note-popover-content');this.$content.on('click','.note-hint-item',function(){_this.$content.find('.active').removeClass('active');$$1(_this).addClass('active');_this.replace()})};HintPopover.prototype.destroy=function(){this.$popover.remove()};HintPopover.prototype.selectItem=function($item){this.$content.find('.active').removeClass('active');$item.addClass('active');this.$content[0].scrollTop=$item[0].offsetTop-(this.$content.innerHeight()/2)};HintPopover.prototype.moveDown=function(){var $current=this.$content.find('.note-hint-item.active');var $next=$current.next();if($next.length){this.selectItem($next)} else{var $nextGroup=$current.parent().next();if(!$nextGroup.length){$nextGroup=this.$content.find('.note-hint-group').first()} this.selectItem($nextGroup.find('.note-hint-item').first())}};HintPopover.prototype.moveUp=function(){var $current=this.$content.find('.note-hint-item.active');var $prev=$current.prev();if($prev.length){this.selectItem($prev)} else{var $prevGroup=$current.parent().prev();if(!$prevGroup.length){$prevGroup=this.$content.find('.note-hint-group').last()} this.selectItem($prevGroup.find('.note-hint-item').last())}};HintPopover.prototype.replace=function(){var $item=this.$content.find('.note-hint-item.active');if($item.length){var node=this.nodeFromItem($item);this.lastWordRange.insertNode(node);range.createFromNode(node).collapse().select();this.lastWordRange=null;this.hide();this.context.triggerEvent('change',this.$editable.html(),this.$editable[0]);this.context.invoke('editor.focus')}};HintPopover.prototype.nodeFromItem=function($item){var hint=this.hints[$item.data('index')];var item=$item.data('item');var node=hint.content?hint.content(item):item;if(typeof node==='string'){node=dom.createText(node)} return node};HintPopover.prototype.createItemTemplates=function(hintIdx,items){var hint=this.hints[hintIdx];return items.map(function(item,idx){var $item=$$1('<div class="note-hint-item"/>');$item.append(hint.template?hint.template(item):item+'');$item.data({'index':hintIdx,'item':item});return $item})};HintPopover.prototype.handleKeydown=function(e){if(!this.$popover.is(':visible')){return} if(e.keyCode===key.code.ENTER){e.preventDefault();this.replace()} else if(e.keyCode===key.code.UP){e.preventDefault();this.moveUp()} else if(e.keyCode===key.code.DOWN){e.preventDefault();this.moveDown()}};HintPopover.prototype.searchKeyword=function(index,keyword,callback){var hint=this.hints[index];if(hint&&hint.match.test(keyword)&&hint.search){var matches=hint.match.exec(keyword);hint.search(matches[1],callback)} else{callback()}};HintPopover.prototype.createGroup=function(idx,keyword){var _this=this;var $group=$$1('<div class="note-hint-group note-hint-group-'+idx+'"/>');this.searchKeyword(idx,keyword,function(items){items=items||[];if(items.length){$group.html(_this.createItemTemplates(idx,items));_this.show()}});return $group};HintPopover.prototype.handleKeyup=function(e){var _this=this;if(!lists.contains([key.code.ENTER,key.code.UP,key.code.DOWN],e.keyCode)){var wordRange=this.context.invoke('editor.createRange').getWordRange();var keyword_1=wordRange.toString();if(this.hints.length&&keyword_1){this.$content.empty();var bnd=func.rect2bnd(lists.last(wordRange.getClientRects()));if(bnd){this.$popover.hide();this.lastWordRange=wordRange;this.hints.forEach(function(hint,idx){if(hint.match.test(keyword_1)){_this.createGroup(idx,keyword_1).appendTo(_this.$content)}});this.$content.find('.note-hint-item:first').addClass('active');if(this.direction==='top'){this.$popover.css({left:bnd.left,top:bnd.top-this.$popover.outerHeight()-POPOVER_DIST})} else{this.$popover.css({left:bnd.left,top:bnd.top+bnd.height+POPOVER_DIST})}}} else{this.hide()}}};HintPopover.prototype.show=function(){this.$popover.show()};HintPopover.prototype.hide=function(){this.$popover.hide()};return HintPopover}());var Context=(function(){function Context($note,options){this.ui=$$1.summernote.ui;this.$note=$note;this.memos={};this.modules={};this.layoutInfo={};this.options=options;this.initialize()} Context.prototype.initialize=function(){this.layoutInfo=this.ui.createLayout(this.$note,this.options);this._initialize();this.$note.hide();return this};Context.prototype.destroy=function(){this._destroy();this.$note.removeData('summernote');this.ui.removeLayout(this.$note,this.layoutInfo)};Context.prototype.reset=function(){var disabled=this.isDisabled();this.code(dom.emptyPara);this._destroy();this._initialize();if(disabled){this.disable()}};Context.prototype._initialize=function(){var _this=this;var buttons=$$1.extend({},this.options.buttons);Object.keys(buttons).forEach(function(key){_this.memo('button.'+key,buttons[key])});var modules=$$1.extend({},this.options.modules,$$1.summernote.plugins||{});Object.keys(modules).forEach(function(key){_this.module(key,modules[key],!0)});Object.keys(this.modules).forEach(function(key){_this.initializeModule(key)})};Context.prototype._destroy=function(){var _this=this;Object.keys(this.modules).reverse().forEach(function(key){_this.removeModule(key)});Object.keys(this.memos).forEach(function(key){_this.removeMemo(key)});this.triggerEvent('destroy',this)};Context.prototype.code=function(html){var isActivated=this.invoke('codeview.isActivated');if(html===undefined){this.invoke('codeview.sync');return isActivated?this.layoutInfo.codable.val():this.layoutInfo.editable.html()} else{if(isActivated){this.layoutInfo.codable.val(html)} else{this.layoutInfo.editable.html(html)} this.$note.val(html);this.triggerEvent('change',html)}};Context.prototype.isDisabled=function(){return this.layoutInfo.editable.attr('contenteditable')==='false'};Context.prototype.enable=function(){this.layoutInfo.editable.attr('contenteditable',!0);this.invoke('toolbar.activate',!0);this.triggerEvent('disable',!1)};Context.prototype.disable=function(){if(this.invoke('codeview.isActivated')){this.invoke('codeview.deactivate')} this.layoutInfo.editable.attr('contenteditable',!1);this.invoke('toolbar.deactivate',!0);this.triggerEvent('disable',!0)};Context.prototype.triggerEvent=function(){var namespace=lists.head(arguments);var args=lists.tail(lists.from(arguments));var callback=this.options.callbacks[func.namespaceToCamel(namespace,'on')];if(callback){callback.apply(this.$note[0],args)} this.$note.trigger('summernote.'+namespace,args)};Context.prototype.initializeModule=function(key){var module=this.modules[key];module.shouldInitialize=module.shouldInitialize||func.ok;if(!module.shouldInitialize()){return} if(module.initialize){module.initialize()} if(module.events){dom.attachEvents(this.$note,module.events)}};Context.prototype.module=function(key,ModuleClass,withoutIntialize){if(arguments.length===1){return this.modules[key]} this.modules[key]=new ModuleClass(this);if(!withoutIntialize){this.initializeModule(key)}};Context.prototype.removeModule=function(key){var module=this.modules[key];if(module.shouldInitialize()){if(module.events){dom.detachEvents(this.$note,module.events)} if(module.destroy){module.destroy()}} delete this.modules[key]};Context.prototype.memo=function(key,obj){if(arguments.length===1){return this.memos[key]} this.memos[key]=obj};Context.prototype.removeMemo=function(key){if(this.memos[key]&&this.memos[key].destroy){this.memos[key].destroy()} delete this.memos[key]};Context.prototype.createInvokeHandlerAndUpdateState=function(namespace,value){var _this=this;return function(event){_this.createInvokeHandler(namespace,value)(event);_this.invoke('buttons.updateCurrentStyle')}};Context.prototype.createInvokeHandler=function(namespace,value){var _this=this;return function(event){event.preventDefault();var $target=$$1(event.target);_this.invoke(namespace,value||$target.closest('[data-value]').data('value'),$target)}};Context.prototype.invoke=function(){var namespace=lists.head(arguments);var args=lists.tail(lists.from(arguments));var splits=namespace.split('.');var hasSeparator=splits.length>1;var moduleName=hasSeparator&&lists.head(splits);var methodName=hasSeparator?lists.last(splits):lists.head(splits);var module=this.modules[moduleName||'editor'];if(!moduleName&&this[methodName]){return this[methodName].apply(this,args)} else if(module&&module[methodName]&&module.shouldInitialize()){return module[methodName].apply(module,args)}};return Context}());$$1.fn.extend({summernote:function(){var type=$$1.type(lists.head(arguments));var isExternalAPICalled=type==='string';var hasInitOptions=type==='object';var options=$$1.extend({},$$1.summernote.options,hasInitOptions?lists.head(arguments):{});options.langInfo=$$1.extend(!0,{},$$1.summernote.lang['en-US'],$$1.summernote.lang[options.lang]);options.icons=$$1.extend(!0,{},$$1.summernote.options.icons,options.icons);options.tooltip=options.tooltip==='auto'?!env.isSupportTouch:options.tooltip;this.each(function(idx,note){var $note=$$1(note);if(!$note.data('summernote')){var context=new Context($note,options);$note.data('summernote',context);$note.data('summernote').triggerEvent('init',context.layoutInfo)}});var $note=this.first();if($note.length){var context=$note.data('summernote');if(isExternalAPICalled){return context.invoke.apply(context,lists.from(arguments))} else if(options.focus){context.invoke('editor.focus')}} return this}});$$1.summernote=$$1.extend($$1.summernote,{version:'0.8.9',ui:ui,dom:dom,plugins:{},options:{modules:{'editor':Editor,'clipboard':Clipboard,'dropzone':Dropzone,'codeview':CodeView,'statusbar':Statusbar,'fullscreen':Fullscreen,'handle':Handle,'hintPopover':HintPopover,'autoLink':AutoLink,'autoSync':AutoSync,'placeholder':Placeholder,'buttons':Buttons,'toolbar':Toolbar,'linkDialog':LinkDialog,'linkPopover':LinkPopover,'imageDialog':ImageDialog,'imagePopover':ImagePopover,'tablePopover':TablePopover,'videoDialog':VideoDialog,'helpDialog':HelpDialog,'airPopover':AirPopover},buttons:{},lang:'en-US',followingToolbar:!0,otherStaticBar:'',toolbar:[['style',['style']],['font',['bold','underline','clear']],['fontname',['fontname']],['color',['color']],['para',['ul','ol','paragraph']],['table',['table']],['insert',['link','picture','video']],['view',['fullscreen','codeview','help']]],popatmouse:!0,popover:{image:[['imagesize',['imageSize100','imageSize50','imageSize25']],['float',['floatLeft','floatRight','floatNone']],['remove',['removeMedia']]],link:[['link',['linkDialogShow','unlink']]],table:[['add',['addRowDown','addRowUp','addColLeft','addColRight']],['delete',['deleteRow','deleteCol','deleteTable']]],air:[['color',['color']],['font',['bold','underline','clear']],['para',['ul','paragraph']],['table',['table']],['insert',['link','picture']]]},airMode:!1,width:null,height:null,linkTargetBlank:!0,focus:!1,tabSize:4,styleWithSpan:!0,shortcuts:!0,textareaAutoSync:!0,hintDirection:'bottom',tooltip:'auto',container:'body',maxTextLength:0,styleTags:['p',{title:'Blockquote',tag:'blockquote',className:'blockquote',value:'blockquote'},'pre','h1','h2','h3','h4','h5','h6'],fontNames:['Arial','Arial Black','Comic Sans MS','Courier New','Helvetica Neue','Helvetica','Impact','Lucida Grande','Tahoma','Times New Roman','Verdana'],fontSizes:['8','9','10','11','12','14','18','24','36'],colors:[['#000000','#424242','#636363','#9C9C94','#CEC6CE','#EFEFEF','#F7F7F7','#FFFFFF'],['#FF0000','#FF9C00','#FFFF00','#00FF00','#00FFFF','#0000FF','#9C00FF','#FF00FF'],['#F7C6CE','#FFE7CE','#FFEFC6','#D6EFD6','#CEDEE7','#CEE7F7','#D6D6E7','#E7D6DE'],['#E79C9C','#FFC69C','#FFE79C','#B5D6A5','#A5C6CE','#9CC6EF','#B5A5D6','#D6A5BD'],['#E76363','#F7AD6B','#FFD663','#94BD7B','#73A5AD','#6BADDE','#8C7BC6','#C67BA5'],['#CE0000','#E79439','#EFC631','#6BA54A','#4A7B8C','#3984C6','#634AA5','#A54A7B'],['#9C0000','#B56308','#BD9400','#397B21','#104A5A','#085294','#311873','#731842'],['#630000','#7B3900','#846300','#295218','#083139','#003163','#21104A','#4A1031']],lineHeights:['1.0','1.2','1.4','1.5','1.6','1.8','2.0','3.0'],tableClassName:'table table-bordered',insertTableMaxSize:{col:10,row:10},dialogsInBody:!1,dialogsFade:!1,maximumImageFileSize:null,callbacks:{onInit:null,onFocus:null,onBlur:null,onBlurCodeview:null,onEnter:null,onKeyup:null,onKeydown:null,onImageUpload:null,onImageUploadError:null},codemirror:{mode:'text/html',htmlMode:!0,lineNumbers:!0},keyMap:{pc:{'ENTER':'insertParagraph','CTRL+Z':'undo','CTRL+Y':'redo','TAB':'tab','SHIFT+TAB':'untab','CTRL+B':'bold','CTRL+I':'italic','CTRL+U':'underline','CTRL+SHIFT+S':'strikethrough','CTRL+BACKSLASH':'removeFormat','CTRL+SHIFT+L':'justifyLeft','CTRL+SHIFT+E':'justifyCenter','CTRL+SHIFT+R':'justifyRight','CTRL+SHIFT+J':'justifyFull','CTRL+SHIFT+NUM7':'insertUnorderedList','CTRL+SHIFT+NUM8':'insertOrderedList','CTRL+LEFTBRACKET':'outdent','CTRL+RIGHTBRACKET':'indent','CTRL+NUM0':'formatPara','CTRL+NUM1':'formatH1','CTRL+NUM2':'formatH2','CTRL+NUM3':'formatH3','CTRL+NUM4':'formatH4','CTRL+NUM5':'formatH5','CTRL+NUM6':'formatH6','CTRL+ENTER':'insertHorizontalRule','CTRL+K':'linkDialog.show'},mac:{'ENTER':'insertParagraph','CMD+Z':'undo','CMD+SHIFT+Z':'redo','TAB':'tab','SHIFT+TAB':'untab','CMD+B':'bold','CMD+I':'italic','CMD+U':'underline','CMD+SHIFT+S':'strikethrough','CMD+BACKSLASH':'removeFormat','CMD+SHIFT+L':'justifyLeft','CMD+SHIFT+E':'justifyCenter','CMD+SHIFT+R':'justifyRight','CMD+SHIFT+J':'justifyFull','CMD+SHIFT+NUM7':'insertUnorderedList','CMD+SHIFT+NUM8':'insertOrderedList','CMD+LEFTBRACKET':'outdent','CMD+RIGHTBRACKET':'indent','CMD+NUM0':'formatPara','CMD+NUM1':'formatH1','CMD+NUM2':'formatH2','CMD+NUM3':'formatH3','CMD+NUM4':'formatH4','CMD+NUM5':'formatH5','CMD+NUM6':'formatH6','CMD+ENTER':'insertHorizontalRule','CMD+K':'linkDialog.show'}},icons:{'align':'note-icon-align','alignCenter':'note-icon-align-center','alignJustify':'note-icon-align-justify','alignLeft':'note-icon-align-left','alignRight':'note-icon-align-right','rowBelow':'note-icon-row-below','colBefore':'note-icon-col-before','colAfter':'note-icon-col-after','rowAbove':'note-icon-row-above','rowRemove':'note-icon-row-remove','colRemove':'note-icon-col-remove','indent':'note-icon-align-indent','outdent':'note-icon-align-outdent','arrowsAlt':'note-icon-arrows-alt','bold':'note-icon-bold','caret':'note-icon-caret','circle':'note-icon-circle','close':'note-icon-close','code':'note-icon-code','eraser':'note-icon-eraser','font':'note-icon-font','frame':'note-icon-frame','italic':'note-icon-italic','link':'note-icon-link','unlink':'note-icon-chain-broken','magic':'note-icon-magic','menuCheck':'note-icon-menu-check','minus':'note-icon-minus','orderedlist':'note-icon-orderedlist','pencil':'note-icon-pencil','picture':'note-icon-picture','question':'note-icon-question','redo':'note-icon-redo','square':'note-icon-square','strikethrough':'note-icon-strikethrough','subscript':'note-icon-subscript','superscript':'note-icon-superscript','table':'note-icon-table','textHeight':'note-icon-text-height','trash':'note-icon-trash','underline':'note-icon-underline','undo':'note-icon-undo','unorderedlist':'note-icon-unorderedlist','video':'note-icon-video'}}})})))