1sceditor.plugins.undo=function(){var e,t,n,o,r=this,i="",a=0,s=!1,c=!1,d=!1,u=50,l=[],g=0;function f(e){if(c=!0,t.sourceMode(e.sourceMode),e.sourceMode)t.val(e.value,!1),t.sourceEditorCaret(e.caret);else if(t.getBody().innerHTML=e.value,e.caret){var o=t.getRangeHelper().selectedRange(),r=o;e=e.caret;try{var i=e.startPositions,a=e.endPositions;r.setStart(S(n,i),i[0]),r.setEnd(S(n,a),a[0])}catch(e){console&&console.warn&&console.warn("[SCEditor] Undo plugin lost caret",e)}t.getRangeHelper().selectRange(o)}t.focus(),c=!1}function p(e,n){var r=e[n];e[n]=function(){var e=s;!e&&!c&&o&&t.getRangeHelper().hasSelection()&&h(),s=!0,r.apply(this,arguments),e||(s=!1,c)||(v(),i="")}}function v(){g&&(l.length-=g,g=0),0<u&&u<l.length&&l.shift(),o={},h(),l.push(o)}function h(){var e=t.sourceMode();o.caret=e?t.sourceEditorCaret():(e=>{if(e)return n.normalize(),{startPositions:y(e.startContainer,e.startOffset),endPositions:y(e.endContainer,e.endOffset)}})(t.getRangeHelper().selectedRange()),o.sourceMode=e,o.value=e?t.getSourceEditorValue(!1):t.getBody().innerHTML}function E(){e===document.activeElement&&r.signalSelectionchangedEvent()}function y(e,t){for(var n=[t],o=e;o&&"BODY"!==o.tagName;)n.push((e=>{for(var t=0;e=e.previousSibling;)t++;return t})(o)),o=o.parentNode;return n}function S(e,t){for(var n=t.length-1;e&&0<n;n--)e=e.childNodes[t[n]];return e}r.init=function(){u=(t=this).undoLimit||u,t.addShortcut("ctrl+z",r.undo),t.addShortcut("ctrl+shift+z",r.redo),t.addShortcut("ctrl+y",r.redo)},r.signalReady=function(){function o(e){"historyUndo"===e.inputType?(r.undo(),e.preventDefault()):"historyRedo"===e.inputType&&(r.redo(),e.preventDefault())}function a(){i="",v()}e=t.getContentAreaContainer().nextSibling,n=t.getBody(),v(),p(t,"setWysiwygEditorValue"),p(t,"setSourceEditorValue"),p(t,"sourceEditorInsertText"),p(t.getRangeHelper(),"insertNode"),p(t,"toggleSourceMode"),n.addEventListener("beforeinput",o),e.addEventListener("beforeinput",o),n.addEventListener("compositionend",a),e.addEventListener("compositionend",a),document.addEventListener("selectionchange",E)},r.destroy=function(){document.removeEventListener("selectionchange",E)},r.undo=function(){return o=null,g<l.length-1&&(g++,f(l[l.length-1-g])),!1},r.redo=function(){return 0<g&&(g--,f(l[l.length-1-g])),!1},r.signalSelectionchangedEvent=function(){c||d?d=!1:(o&&h(),i="")},r.signalInputEvent=function(e){var t=e.inputType;if(d=!0,t&&!e.isComposing)switch(e.inputType){case"deleteContentBackward":o&&i===t&&a<20?h():(v(),a=0),i=t;break;case"insertText":a+=e.data?e.data.length:1,o&&i===t&&a<20&&!/\s$/.test(e.data)?h():(v(),a=0),i=t;break;default:i="sce-misc",a=0,v()}}};