define(function(require,exports,module){let _cutInterceptor=null,_copyInterceptor=null,_pasteInterceptor=null,_keyEventInterceptor=null;const CodeMirror=require("thirdparty/CodeMirror/lib/codemirror"),Menus=require("command/Menus");function _applyChanges(changeList){let self=this;if(!self._visibleRange||null!==self._visibleRange.startLine&&null!==self._visibleRange.endLine){var cm=self._codeMirror;cm.operation(function(){var change,newText,i;for(i=0;i{self._shouldNotDismissPopupsOnScroll=!1},timeoutMs)}function addHelpers(Editor){Editor.prototype._applyChanges=_applyChanges,Editor.prototype._handleEditorChange=_handleEditorChange,Editor.prototype._handleDocumentChange=_handleDocumentChange,Editor.prototype._handleDocumentDeleted=_handleDocumentDeleted,Editor.prototype._handleDocumentLanguageChanged=_handleDocumentLanguageChanged,Editor.prototype._installEditorListeners=_installEditorListeners,Editor.prototype._dontDismissPopupOnScroll=_dontDismissPopupOnScroll}let _undoInterceptor=null,_redoInterceptor=null,_saveInterceptor=null;function _onBeforeSave(docBeingSaved){if(!_saveInterceptor)return!1;try{return _saveInterceptor(docBeingSaved)}catch(e){return logger.reportError(e,"Error in save interceptor"),!1}}function _onBeforeUndo(editor,codeMirror,event){if(!_undoInterceptor)return!1;try{return _undoInterceptor(editor,codeMirror,event)}catch(e){return logger.reportError(e,"Error in undo interceptor"),!1}}function _onBeforeRedo(editor,codeMirror,event){if(!_redoInterceptor)return!1;try{return _redoInterceptor(editor,codeMirror,event)}catch(e){return logger.reportError(e,"Error in redo interceptor"),!1}}function setUndoInterceptor(interceptor){_undoInterceptor=interceptor}function setRedoInterceptor(interceptor){_redoInterceptor=interceptor}function setCutInterceptor(interceptor){_cutInterceptor=interceptor}function setCopyInterceptor(interceptor){_copyInterceptor=interceptor}function setPasteInterceptor(interceptor){_pasteInterceptor=interceptor}function setKeyEventInterceptor(interceptor){_keyEventInterceptor=interceptor}function setSaveInterceptor(interceptor){_saveInterceptor=interceptor}exports._onBeforeUndo=_onBeforeUndo,exports._onBeforeRedo=_onBeforeRedo,exports._onBeforeSave=_onBeforeSave,exports.addHelpers=addHelpers,exports.setUndoInterceptor=setUndoInterceptor,exports.setRedoInterceptor=setRedoInterceptor,exports.setCutInterceptor=setCutInterceptor,exports.setCopyInterceptor=setCopyInterceptor,exports.setPasteInterceptor=setPasteInterceptor,exports.setKeyEventInterceptor=setKeyEventInterceptor,exports.setSaveInterceptor=setSaveInterceptor});