diff --git a/jquery.sketchable.animate.js b/jquery.sketchable.animate.js index 8ac81c6..8f28f04 100644 --- a/jquery.sketchable.animate.js +++ b/jquery.sketchable.animate.js @@ -137,7 +137,7 @@ var events = 'clear destroy'.split(' '); for (var i = 0; i < events.length; i++) { var evName = events[i]; - $instance.sketchable('decorateEvent', evName, callbacks[evName], 'animate'); + $instance.sketchable('decorate', evName, callbacks[evName], 'animate'); } // Expose public API: all jQuery sketchable instances will have these methods. diff --git a/jquery.sketchable.js b/jquery.sketchable.js index 81b470e..aba2267 100644 --- a/jquery.sketchable.js +++ b/jquery.sketchable.js @@ -212,8 +212,14 @@ * @param {string} evName - Event name. * @param {function} listener - Custom event listener. * @param {string} initiator - Some identifier. + * @return jQuery + * @memberof $.fn.sketchable + * @example + * // Decorate 'clear' method with `myClearFn()`, + * // using 'someId' to avoid collisions with other decorators. + * $('canvas').sketchable('decorate', 'clear', myClearFn, 'someId'); */ - decorateEvent: function(evName, listener, initiator) { + decorate: function(evName, listener, initiator) { return this.each(function() { var elem = $(this), data = elem.data(namespace), options = data.options; // Flag event override so that it doesn't get fired more than once. diff --git a/jquery.sketchable.memento.js b/jquery.sketchable.memento.js index 14574d0..2f4d160 100644 --- a/jquery.sketchable.memento.js +++ b/jquery.sketchable.memento.js @@ -188,7 +188,7 @@ var events = 'mouseup clear destroy'.split(' '); for (var i = 0; i < events.length; i++) { var evName = events[i]; - $instance.sketchable('decorateEvent', evName, callbacks[evName], 'memento'); + $instance.sketchable('decorate', evName, callbacks[evName], 'memento'); } // Expose public API: all jQuery sketchable instances will have these methods. diff --git a/jquery.sketchable.svg.js b/jquery.sketchable.svg.js index 5457a04..5893edc 100644 --- a/jquery.sketchable.svg.js +++ b/jquery.sketchable.svg.js @@ -9,9 +9,9 @@ // Custom namespace ID, for private data bindind. var namespace = 'sketchable'; /** - * Memento plugin constructor for jQuery Sketchable instances. + * SVG plugin constructor for jQuery Sketchable instances. * @param {jQuery} $instance - jQuery sketchable instance. - * @namespace $.fn.sketchable.plugins.memento + * @namespace $.fn.sketchable.plugins.svg */ $.fn.sketchable.plugins.svg = function($instance) { // Access the instance configuration. @@ -31,7 +31,7 @@ var events = 'clear destroy'.split(' '); for (var i = 0; i < events.length; i++) { var evName = events[i]; - $instance.sketchable('decorateEvent', evName, callbacks[evName], 'svg'); + $instance.sketchable('decorate', evName, callbacks[evName], 'svg'); } // Expose public API: all jQuery sketchable instances will have these methods. @@ -40,10 +40,13 @@ svg: { /** * Generate SVG. - * @param {function} callback - Callback function, executed with the SVG as argument. - * @return {Sketchable} Sketchable instance. - * @memberof Sketchable.plugins.memento - * @example sketchableInstance.memento.undo(); + * @param {function} callback - Callback function, executed with the SVG (string) as argument. + * @return {jQuery} jQuery sketchable element. + * @memberof $.fn.sketchable.plugins.svg + * @example + * jqueryElem.sketchable('svg.create', function(contents) { + * // Do something with the SVG string. + * }); */ create: function(callback) { var data = $(this).data(namespace); diff --git a/jsdoc.json b/jsdoc.json index 47a7e32..ae19ee5 100644 --- a/jsdoc.json +++ b/jsdoc.json @@ -2,13 +2,16 @@ "source": { "include": [ "jsketch.js", + "jsketch.svg.js", "sketchable.js", "sketchable.utils.js", "sketchable.memento.js", "sketchable.animate.js", + "sketchable.svg.js", "jquery.sketchable.js", "jquery.sketchable.memento.js", "jquery.sketchable.animate.js", + "jquery.sketchable.svg.js", "README.md" ] }, diff --git a/jsketch.svg.js b/jsketch.svg.js index abbb378..624810f 100644 --- a/jsketch.svg.js +++ b/jsketch.svg.js @@ -13,9 +13,12 @@ ;(function(window) { /** * Convert jSketch canvas to SVG. - * @param {function} callback - Callback function, executed when SVG is ready. - * @return {string} + * This method is asynchronous, and will be invoked when the SVG is ready. + * @param {function} callback - Callback function, to be invoked with the SVG (string) as argument. + * @return {jSketch} * @memberof jSketch + * @method + * @name toSVG */ window.jSketch.prototype.toSVG = function(callback) { // Save pointer for use in closures. @@ -239,6 +242,8 @@ console.info('Waiting for queue to be empty:', asyncQueue); } } + + return this; }; })(this); diff --git a/sketchable.animate.js b/sketchable.animate.js index 4c2dbbf..9b79b49 100644 --- a/sketchable.animate.js +++ b/sketchable.animate.js @@ -139,7 +139,7 @@ var events = 'clear destroy'.split(' '); for (var i = 0; i < events.length; i++) { var evName = events[i]; - instance.decorateEvent(evName, callbacks[evName], 'animate'); + instance.decorate(evName, callbacks[evName], 'animate'); } // Expose public API: all Sketchable instances will have these methods. @@ -148,7 +148,7 @@ animate: { /** * Animate canvas strokes. - * @return {Sketchable} instance Sketchable element. + * @return {Sketchable} Sketchable element. * @memberof Sketchable.plugins.animate * @example sketchableInstance.strokes(strokeArray).animate.strokes(); * @example diff --git a/sketchable.js b/sketchable.js index d8e71ea..379d403 100644 --- a/sketchable.js +++ b/sketchable.js @@ -241,8 +241,15 @@ * @param {string} evName - Event name. * @param {function} listener - Custom event listener. * @param {string} initiator - Some identifier. + * @return {Sketchable} + * @memberof Sketchable + * @example + * var sketcher = new Sketchable('#my-canvas'); + * // Decorate 'clear' method with `myClearFn()`, + * // using 'someId' to avoid collisions with other decorators. + * sketcher.decorate('clear', myClearFn, 'someId'); */ - decorateEvent: function(evName, listener, initiator) { + decorate: function(evName, listener, initiator) { var elem = this.elem, data = dataBind(elem)[namespace], options = data.options; // Flag event override so that it doesn't get fired more than once. var overrideId = '_bound$'+ evName + '.' + initiator; diff --git a/sketchable.memento.js b/sketchable.memento.js index 6710284..2567b40 100644 --- a/sketchable.memento.js +++ b/sketchable.memento.js @@ -190,7 +190,7 @@ var events = 'mouseup clear destroy'.split(' '); for (var i = 0; i < events.length; i++) { var evName = events[i]; - instance.decorateEvent(evName, callbacks[evName], 'memento'); + instance.decorate(evName, callbacks[evName], 'memento'); } // Expose public API: all Sketchable instances will have these methods. diff --git a/sketchable.svg.js b/sketchable.svg.js index 86c2458..369e031 100644 --- a/sketchable.svg.js +++ b/sketchable.svg.js @@ -11,9 +11,9 @@ // Custom namespace ID, for private data bindind. var namespace = 'sketchable'; /** - * Memento plugin constructor for Sketchable instances. + * SVG plugin constructor for Sketchable instances. * @param {Sketchable} instance - Sketchable element. - * @namespace Sketchable.plugins.memento + * @namespace Sketchable.plugins.svg */ Sketchable.prototype.plugins.svg = function(instance) { // Access the instance configuration. @@ -33,19 +33,22 @@ var events = 'clear destroy'.split(' '); for (var i = 0; i < events.length; i++) { var evName = events[i]; - instance.decorateEvent(evName, callbacks[evName], 'svg'); + instance.decorate(evName, callbacks[evName], 'svg'); } // Expose public API: all Sketchable instances will have these methods. deepExtend(instance, { // Namespace methods to avoid collisions with other plugins. svg: { - /** + /** * Generate SVG. - * @param {function} callback - Callback function, executed with the SVG as argument. - * @return {Sketchable} Sketchable instance. - * @memberof Sketchable.plugins.memento - * @example sketchableInstance.memento.undo(); + * @param {function} callback - Callback function, executed with the SVG (string) as argument. + * @return {Sketchable} Sketchable element. + * @memberof Sketchable.plugins.svg + * @example + * sketchableInstance.svg.create(function(contents) { + * // Do something with the SVG string. + * }); */ create: function(callback) { var data = dataBind(instance.elem)[namespace];