tinymce.PluginManager.add('wpview',function(editor){var selected,Env=tinymce.Env,VK=tinymce.util.VK,TreeWalker=tinymce.dom.TreeWalker,toRemove=false,firstFocus=true,_noop=function(){return false;},isios=/iPad|iPod|iPhone/.test(navigator.userAgent),cursorInterval,lastKeyDownNode,setViewCursorTries,focus,execCommandView,execCommandBefore;function getView(node){return getParent(node,'wpview-wrap');}
function getParent(node,className){while(node&&node.parentNode){if(node.className&&(' '+ node.className+' ').indexOf(' '+ className+' ')!==-1){return node;}
node=node.parentNode;}
return false;}
function getViewText(view){if(view=getView(view)){return window.decodeURIComponent(editor.dom.getAttrib(view,'data-wpview-text')||'');}
return'';}
function setViewText(view,text){view=getView(view);if(view){editor.dom.setAttrib(view,'data-wpview-text',window.encodeURIComponent(text||''));return true;}
return false;}
function _stop(event){event.stopPropagation();}
function setViewCursor(before,view){var location=before?'before':'after',offset=before?0:1;deselect();editor.selection.setCursorLocation(editor.dom.select('.wpview-selection-'+ location,view)[0],offset);editor.nodeChanged();}
function handleEnter(view,before,key){var dom=editor.dom,padNode=dom.create('p');if(!(Env.ie&&Env.ie<11)){padNode.innerHTML='
';}
if(before){view.parentNode.insertBefore(padNode,view);}else{dom.insertAfter(padNode,view);}
deselect();if(before&&key===VK.ENTER){setViewCursor(before,view);}else{editor.selection.setCursorLocation(padNode,0);}
editor.nodeChanged();}
function removeView(view){editor.undoManager.transact(function(){handleEnter(view);editor.dom.remove(view);});}
function select(viewNode){var clipboard,dom=editor.dom;if(!viewNode){return;}
if(viewNode===selected){adjustToolbarPosition(viewNode);return;}
editor.getBody().focus();deselect();selected=viewNode;dom.setAttrib(viewNode,'data-mce-selected',1);adjustToolbarPosition(viewNode);clipboard=dom.create('div',{'class':'wpview-clipboard','contenteditable':'true'},getViewText(viewNode));editor.dom.select('.wpview-body',viewNode)[0].appendChild(clipboard);dom.bind(clipboard,'beforedeactivate focusin focusout',_stop);dom.bind(selected,'beforedeactivate focusin focusout',_stop);if(isios){editor.selection.select(clipboard);}else{editor.selection.select(clipboard,true);}
editor.nodeChanged();editor.fire('wpview-selected',viewNode);}
function adjustToolbarPosition(viewNode){var delta=0,toolbar=editor.$(viewNode).find('.toolbar'),editorToolbar=tinymce.$(editor.editorContainer).find('.mce-toolbar-grp')[0],editorToolbarBottom=(editorToolbar&&editorToolbar.getBoundingClientRect().bottom)||0;if(toolbar.length&&editor.iframeElement){delta=viewNode.getBoundingClientRect().top+ editor.iframeElement.getBoundingClientRect().top- editorToolbarBottom- 48;}
if(delta<0){toolbar.removeClass('mce-arrow-down').css({top:(-43+ delta*-1)});}else if(delta>0&&!toolbar.hasClass('mce-arrow-down')){toolbar.addClass('mce-arrow-down').css({top:''});}}
function deselect(){var clipboard,dom=editor.dom;if(selected){clipboard=editor.dom.select('.wpview-clipboard',selected)[0];dom.unbind(clipboard);dom.remove(clipboard);dom.unbind(selected,'beforedeactivate focusin focusout click mouseup',_stop);dom.setAttrib(selected,'data-mce-selected',null);}
selected=null;}
if(typeof wp==='undefined'||!wp.mce){return{getViewText:_noop,setViewText:_noop,getView:_noop};}
function emptyViews(content){return content.replace(/
'+ window.decodeURIComponent(shortcode)+'
';} return'';});}});function isSpecialKey(key){return((key<=47&&key!==VK.SPACEBAR&&key!==VK.ENTER&&key!==VK.DELETE&&key!==VK.BACKSPACE&&(key<37||key>40))||key>=224||(key>=144&&key<=150)||(key>=91&&key<=93)||(key>=112&&key<=135));} editor.on('keydown',function(event){var key=event.keyCode,dom=editor.dom,selection=editor.selection,node,view,cursorBefore,cursorAfter,range,clonedRange,tempRange;if(selected){if(((event.metaKey||event.ctrlKey)&&key!==VK.BACKSPACE&&key!==86)||(key>=112&&key<=123)){if((event.metaKey||event.ctrlKey)&&key===88){toRemove=selected;} return;} view=getView(selection.getNode());if(view!==selected){deselect();return;} if(key===VK.LEFT){setViewCursor(true,view);event.preventDefault();}else if(key===VK.UP){if(view.previousSibling){if(getView(view.previousSibling)){setViewCursor(true,view.previousSibling);}else{deselect();selection.select(view.previousSibling,true);selection.collapse();}}else{setViewCursor(true,view);} event.preventDefault();}else if(key===VK.RIGHT){setViewCursor(false,view);event.preventDefault();}else if(key===VK.DOWN){if(view.nextSibling){if(getView(view.nextSibling)){setViewCursor(false,view.nextSibling);}else{deselect();selection.setCursorLocation(view.nextSibling,0);}}else{setViewCursor(false,view);} event.preventDefault();}else if(!isSpecialKey(key)){removeView(selected);if(key===VK.ENTER||key===VK.DELETE||key===VK.BACKSPACE){event.preventDefault();}}}else{if(event.metaKey||event.ctrlKey||(key>=112&&key<=123)){return;} node=selection.getNode();lastKeyDownNode=node;view=getView(node);if(!selection.isCollapsed()){range=selection.getRng();if(view=getView(range.endContainer)){clonedRange=range.cloneRange();selection.select(view.previousSibling,true);selection.collapse();tempRange=selection.getRng();clonedRange.setEnd(tempRange.endContainer,tempRange.endOffset);selection.setRng(clonedRange);}else if(view=getView(range.startContainer)){clonedRange=range.cloneRange();clonedRange.setStart(view.nextSibling,0);selection.setRng(clonedRange);}} if(!view){if(event.keyCode===VK.BACKSPACE){if(editor.dom.isEmpty(node)){if(view=getView(node.previousSibling)){setViewCursor(false,view);editor.dom.remove(node);event.preventDefault();}}else if((range=selection.getRng())&&range.startOffset===0&&range.endOffset===0&&(view=getView(node.previousSibling))){setViewCursor(false,view);event.preventDefault();}} return;} if(!((cursorBefore=dom.hasClass(view,'wpview-selection-before'))||(cursorAfter=dom.hasClass(view,'wpview-selection-after')))){return;} if(isSpecialKey(key)){return;} if((cursorAfter&&key===VK.UP)||(cursorBefore&&key===VK.BACKSPACE)){if(view.previousSibling){if(getView(view.previousSibling)){setViewCursor(false,view.previousSibling);}else{if(dom.isEmpty(view.previousSibling)&&key===VK.BACKSPACE){dom.remove(view.previousSibling);}else{selection.select(view.previousSibling,true);selection.collapse();}}}else{setViewCursor(true,view);} event.preventDefault();}else if(cursorAfter&&(key===VK.DOWN||key===VK.RIGHT)){if(view.nextSibling){if(getView(view.nextSibling)){setViewCursor(key===VK.RIGHT,view.nextSibling);}else{selection.setCursorLocation(view.nextSibling,0);}} event.preventDefault();}else if(cursorBefore&&(key===VK.UP||key===VK.LEFT)){if(view.previousSibling){if(getView(view.previousSibling)){setViewCursor(key===VK.UP,view.previousSibling);}else{selection.select(view.previousSibling,true);selection.collapse();}} event.preventDefault();}else if(cursorBefore&&key===VK.DOWN){if(view.nextSibling){if(getView(view.nextSibling)){setViewCursor(true,view.nextSibling);}else{selection.setCursorLocation(view.nextSibling,0);}}else{setViewCursor(false,view);} event.preventDefault();}else if((cursorAfter&&key===VK.LEFT)||(cursorBefore&&key===VK.RIGHT)){select(view);event.preventDefault();}else if(cursorAfter&&key===VK.BACKSPACE){removeView(view);event.preventDefault();}else if(cursorAfter){handleEnter(view);}else if(cursorBefore){handleEnter(view,true,key);} if(key===VK.ENTER){event.preventDefault();}}});editor.on('keyup',function(){if(toRemove){removeView(toRemove);toRemove=false;}});editor.on('focus',function(){var view;focus=true;editor.dom.addClass(editor.getBody(),'has-focus');if(firstFocus&&(view=getView(editor.getBody().firstChild))){setViewCursor(true,view);} firstFocus=false;});editor.on('blur',function(){focus=false;editor.dom.removeClass(editor.getBody(),'has-focus');});editor.on('NodeChange',function(event){var dom=editor.dom,views=editor.dom.select('.wpview-wrap'),className=event.element.className,view=getView(event.element),lKDN=lastKeyDownNode;lastKeyDownNode=false;clearInterval(cursorInterval);tinymce.each(views,function(view){if(view.className){view.className=view.className.replace(/ ?\bwpview-(?:selection-before|selection-after|cursor-hide)\b/g,'');}});if(focus&&view){if((className==='wpview-selection-before'||className==='wpview-selection-after')&&editor.selection.isCollapsed()){setViewCursorTries=0;deselect();if(lKDN===view.previousSibling){setViewCursor(true,view);return;}else if(lKDN===view.nextSibling){setViewCursor(false,view);return;} dom.addClass(view,className);cursorInterval=setInterval(function(){if(dom.hasClass(view,'wpview-cursor-hide')){dom.removeClass(view,'wpview-cursor-hide');}else{dom.addClass(view,'wpview-cursor-hide');}},500);}else if(!getParent(event.element,'wpview-clipboard')&&!setViewCursorTries){deselect();setViewCursorTries++;setViewCursor(true,view);}}});editor.on('BeforeExecCommand',function(){var node=editor.selection.getNode(),view;if(node&&((execCommandBefore=node.className==='wpview-selection-before')||node.className==='wpview-selection-after')&&(view=getView(node))){handleEnter(view,execCommandBefore);execCommandView=view;}});editor.on('ExecCommand',function(){var toSelect,node;if(selected){toSelect=selected;deselect();select(toSelect);} if(execCommandView){node=execCommandView[execCommandBefore?'previousSibling':'nextSibling'];if(node&&node.nodeName==='P'&&editor.dom.isEmpty(node)){editor.dom.remove(node);setViewCursor(execCommandBefore,execCommandView);} execCommandView=false;}});editor.on('ResolveName',function(event){if(editor.dom.hasClass(event.target,'wpview-wrap')){event.name=editor.dom.getAttrib(event.target,'data-wpview-type')||'wpview';event.stopPropagation();}else if(getView(event.target)){event.preventDefault();event.stopPropagation();}});return{getViewText:getViewText,setViewText:setViewText,getView:getView};});