jsketch/dist/jquery.jsketchable.memento....

1 line
1.8 KiB
JavaScript

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