Fixed deep cloning in memento plugin

This commit is contained in:
Luis Leiva 2014-08-22 14:03:15 +02:00
parent e09d55cb67
commit 2f01e2bf58
2 changed files with 3 additions and 3 deletions

View File

@ -150,8 +150,8 @@
var plugin = $.fn.sketchable;
var availMethods = plugin('methods');
function configure(elem, options) {
$.extend(true, plugin.defaults, options);
function configure(elem, opts) {
var options = $.extend(true, plugin.defaults, opts);
var mc = new MementoCanvas(elem);

View File

@ -1,4 +1,4 @@
/*!
* Memento plugin for jQuery sketchable | v1.1 | Luis A. Leiva | MIT license
*/
;(function(d){var a=function(l){var g=[];var f=-1;var h=this;function k(){if(f>0){f--;var n=new Image();n.src=g[f].image;n.onload=function(){i(this)}}}function j(){if(f<g.length-1){f++;var n=new Image();n.src=g[f].image;n.onload=function(){i(this)}}}function i(n){l.sketchable("handler",function(o,p){p.sketch.clear();p.sketch.graphics.drawImage(n,0,0)})}function m(n){if(n.ctrlKey){switch(n.which){case 26:if(n.shiftKey){h.redo()}else{h.undo()}break;case 25:h.redo();break;default:break}}}this.undo=function(){k();l.sketchable("handler",function(n,o){o.strokes=g[f].strokes.slice()})};this.redo=function(){j();l.sketchable("handler",function(n,o){o.strokes=g[f].strokes.slice()})};this.reset=function(){g=[];f=-1};this.save=function(){f++;if(f<g.length){g.length=f}l.sketchable("handler",function(n,o){g.push({image:n[0].toDataURL(),strokes:o.strokes.slice()})})};this.init=function(){d(document).on("keypress",m)};this.destroy=function(){d(document).off("keypress",m);this.reset()}};var c=d.fn.sketchable;var e=c("methods");function b(l,f){d.extend(true,c.defaults,f);var m=new a(l);var k={init:function(i,n){n.memento=m;n.memento.save();n.memento.init()},mouseup:function(i,n,o){n.memento.save()},destroy:function(i,n){n.memento.destroy()}};function j(n){if(f&&f.events&&typeof f.events[n]==="function"){var i=f.events[n];f.events[n]=function(){var o=Array.prototype.slice.call(arguments,0);i.call(this,o);k[n].apply(this,o)}}else{c.defaults.events[n]=k[n]}}var h="init mouseup destroy".split(" ");for(var g=0;g<h.length;g++){j(h[g])}d.extend(e,{undo:function(){m.undo()},redo:function(){m.redo()}});return c.defaults}d.fn.sketchable=function(g){if(typeof g==="object"||!g){var f=b(this,arguments[0]);return e.init.apply(this,[f])}else{if(e[g]){return e[g].apply(this,Array.prototype.slice.call(arguments,1))}}}})(jQuery);
;(function(d){var a=function(l){var g=[];var f=-1;var h=this;function k(){if(f>0){f--;var n=new Image();n.src=g[f].image;n.onload=function(){i(this)}}}function j(){if(f<g.length-1){f++;var n=new Image();n.src=g[f].image;n.onload=function(){i(this)}}}function i(n){l.sketchable("handler",function(o,p){p.sketch.clear();p.sketch.graphics.drawImage(n,0,0)})}function m(n){if(n.ctrlKey){switch(n.which){case 26:if(n.shiftKey){h.redo()}else{h.undo()}break;case 25:h.redo();break;default:break}}}this.undo=function(){k();l.sketchable("handler",function(n,o){o.strokes=g[f].strokes.slice()})};this.redo=function(){j();l.sketchable("handler",function(n,o){o.strokes=g[f].strokes.slice()})};this.reset=function(){g=[];f=-1};this.save=function(){f++;if(f<g.length){g.length=f}l.sketchable("handler",function(n,o){g.push({image:n[0].toDataURL(),strokes:o.strokes.slice()})})};this.init=function(){d(document).on("keypress",m)};this.destroy=function(){d(document).off("keypress",m);this.reset()}};var c=d.fn.sketchable;var e=c("methods");function b(m,l){var f=d.extend(true,c.defaults,l);var n=new a(m);var k={init:function(i,o){o.memento=n;o.memento.save();o.memento.init()},mouseup:function(i,o,p){o.memento.save()},destroy:function(i,o){o.memento.destroy()}};function j(o){if(f&&f.events&&typeof f.events[o]==="function"){var i=f.events[o];f.events[o]=function(){var p=Array.prototype.slice.call(arguments,0);i.call(this,p);k[o].apply(this,p)}}else{c.defaults.events[o]=k[o]}}var h="init mouseup destroy".split(" ");for(var g=0;g<h.length;g++){j(h[g])}d.extend(e,{undo:function(){n.undo()},redo:function(){n.redo()}});return c.defaults}d.fn.sketchable=function(g){if(typeof g==="object"||!g){var f=b(this,arguments[0]);return e.init.apply(this,[f])}else{if(e[g]){return e[g].apply(this,Array.prototype.slice.call(arguments,1))}}}})(jQuery);