jsketch/jquery.sketchable.memento.m...

4 lines
1.8 KiB
JavaScript

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