1919 *
2020 */
2121
22+ /*global logger*/
23+
2224/**
2325 * Editor instance helpers change handling. Only to be used from Editor.js.
2426 */
@@ -316,19 +318,42 @@ define(function (require, exports, module) {
316318
317319 let _undoInterceptor = null ;
318320 let _redoInterceptor = null ;
321+ let _saveInterceptor = null ;
322+
323+ function _onBeforeSave ( docBeingSaved ) {
324+ if ( ! _saveInterceptor ) {
325+ return false ;
326+ }
327+ try {
328+ return _saveInterceptor ( docBeingSaved ) ;
329+ } catch ( e ) {
330+ logger . reportError ( e , "Error in save interceptor" ) ;
331+ return false ;
332+ }
333+ }
319334
320335 function _onBeforeUndo ( editor , codeMirror , event ) {
321336 if ( ! _undoInterceptor ) {
322337 return false ;
323338 }
324- return _undoInterceptor ( editor , codeMirror , event ) ;
339+ try {
340+ return _undoInterceptor ( editor , codeMirror , event ) ;
341+ } catch ( e ) {
342+ logger . reportError ( e , "Error in undo interceptor" ) ;
343+ return false ;
344+ }
325345 }
326346
327347 function _onBeforeRedo ( editor , codeMirror , event ) {
328348 if ( ! _redoInterceptor ) {
329349 return false ;
330350 }
331- return _redoInterceptor ( editor , codeMirror , event ) ;
351+ try {
352+ return _redoInterceptor ( editor , codeMirror , event ) ;
353+ } catch ( e ) {
354+ logger . reportError ( e , "Error in redo interceptor" ) ;
355+ return false ;
356+ }
332357 }
333358
334359 /**
@@ -379,9 +404,18 @@ define(function (require, exports, module) {
379404 _keyEventInterceptor = interceptor ;
380405 }
381406
407+ /**
408+ * Sets the key down/up/press interceptor function in codemirror
409+ * @param {Function } interceptor - Function(editor, cm, event) that returns true to preventDefault
410+ */
411+ function setSaveInterceptor ( interceptor ) {
412+ _saveInterceptor = interceptor ;
413+ }
414+
382415 // private exports
383416 exports . _onBeforeUndo = _onBeforeUndo ;
384417 exports . _onBeforeRedo = _onBeforeRedo ;
418+ exports . _onBeforeSave = _onBeforeSave ;
385419
386420 // public exports
387421 exports . addHelpers = addHelpers ;
@@ -391,4 +425,5 @@ define(function (require, exports, module) {
391425 exports . setCopyInterceptor = setCopyInterceptor ;
392426 exports . setPasteInterceptor = setPasteInterceptor ;
393427 exports . setKeyEventInterceptor = setKeyEventInterceptor ;
428+ exports . setSaveInterceptor = setSaveInterceptor ;
394429} ) ;
0 commit comments