From 3e883e9a53e7cdc6dee97ba6b8f66a65f561b41f Mon Sep 17 00:00:00 2001 From: George M Kroid Date: Mon, 28 Sep 2015 13:27:22 +0300 Subject: [PATCH 1/3] add changeAnnotation listener
--- src/ui-ace.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/ui-ace.js b/src/ui-ace.js index a664fb1..374d8c6 100644 --- a/src/ui-ace.js +++ b/src/ui-ace.js @@ -161,6 +161,13 @@ angular.module('ui.ace', []) */ var onChangeListener; + /** + * Reference to a change annotation listener created by the listener factory. + * @function + * @see listenerFactory.onChangeAnnotation + */ + var onChangeAnnotationListener; + /** * Reference to a blur listener created by the listener factory. * @function @@ -237,6 +244,20 @@ angular.module('ui.ace', []) executeUserCallback(callback, e, acee); }; }, + /** + * Creates an annotation listener which propagates the editor session + * to the callback from the user option onChangeAnnotation. It might be + * exchanged during runtime, if this happens the old listener + * will be unbound. + * + * @param callback callback function defined in the user options + * @see onChangeAnnotation + */ + onChangeAnnotation: function(callback) { + return function() { + callback(session.getAnnotations()); + } + }, /** * Creates a blur listener which propagates the editor session * to the callback from the user option onBlur. It might be @@ -294,6 +315,15 @@ angular.module('ui.ace', []) onChangeListener = listenerFactory.onChange(opts.onChange); session.on('change', onChangeListener); + // unbind old annotation listener + //session.removeListener('blur', onChangeAnnotationListener); + session.removeListener('changeAnnotation', onChangeAnnotationListener); + + // bind new blur listener + onChangeAnnotationListener = listenerFactory.onChangeAnnotation(opts.onChangeAnnotation); + session.on('changeAnnotation', onChangeAnnotationListener); + + // unbind old blur listener //session.removeListener('blur', onBlurListener); acee.removeListener('blur', onBlurListener); From 51f25d42f6e6b616c4377c1900791c2d6c31e592 Mon Sep 17 00:00:00 2001 From: George M Kroid Date: Mon, 28 Sep 2015 13:34:24 +0300 Subject: [PATCH 2/3] style code --- src/ui-ace.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ui-ace.js b/src/ui-ace.js index 374d8c6..dde5aee 100644 --- a/src/ui-ace.js +++ b/src/ui-ace.js @@ -253,10 +253,10 @@ angular.module('ui.ace', []) * @param callback callback function defined in the user options * @see onChangeAnnotation */ - onChangeAnnotation: function(callback) { - return function() { + onChangeAnnotation: function (callback) { + return function () { callback(session.getAnnotations()); - } + }; }, /** * Creates a blur listener which propagates the editor session From 8ccefe7d6122151d06b4cd13de21a2224e5bea0c Mon Sep 17 00:00:00 2001 From: George M Kroid Date: Mon, 28 Sep 2015 13:54:29 +0300 Subject: [PATCH 3/3] check onChangeAnnotation cb isFunction --- src/ui-ace.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ui-ace.js b/src/ui-ace.js index dde5aee..7171906 100644 --- a/src/ui-ace.js +++ b/src/ui-ace.js @@ -255,7 +255,9 @@ angular.module('ui.ace', []) */ onChangeAnnotation: function (callback) { return function () { - callback(session.getAnnotations()); + if (angular.isFunction(callback)) { + callback(session.getAnnotations()); + } }; }, /**