diff options
author | Maxime Quandalle <maxime@quandalle.com> | 2015-11-15 14:22:59 -0800 |
---|---|---|
committer | Maxime Quandalle <maxime@quandalle.com> | 2015-11-15 14:22:59 -0800 |
commit | da599a19ba32493d4ab5f9e21d5abfb06e3087cb (patch) | |
tree | cc39945b88440f2ca9e6ec0cf43c1586f4568d9c /client/lib | |
parent | cb3bd86396e4d19e1f05fcb94e3527f81e70412e (diff) | |
parent | eaf2afb44cb9de64b1ed13cb795efd0f44c541ec (diff) | |
download | wekan-da599a19ba32493d4ab5f9e21d5abfb06e3087cb.tar.gz wekan-da599a19ba32493d4ab5f9e21d5abfb06e3087cb.tar.bz2 wekan-da599a19ba32493d4ab5f9e21d5abfb06e3087cb.zip |
Merge GitHub PR #387
Diffstat (limited to 'client/lib')
-rw-r--r-- | client/lib/dropImage.js | 62 | ||||
-rw-r--r-- | client/lib/pasteImage.js | 57 |
2 files changed, 119 insertions, 0 deletions
diff --git a/client/lib/dropImage.js b/client/lib/dropImage.js new file mode 100644 index 00000000..592d5c8f --- /dev/null +++ b/client/lib/dropImage.js @@ -0,0 +1,62 @@ +/* eslint-disable */ + +// ------------------------------------------------------------------------ +// Created by STRd6 +// MIT License +// https://github.com/distri/jquery-image_reader/blob/master/drop.coffee.md +// +// Raymond re-write it to javascript + +(function($) { + $.event.fix = (function(originalFix) { + return function(event) { + event = originalFix.apply(this, arguments); + if (event.type.indexOf('drag') === 0 || event.type.indexOf('drop') === 0) { + event.dataTransfer = event.originalEvent.dataTransfer; + } + return event; + }; + })($.event.fix); + + const defaults = { + callback: $.noop, + matchType: /image.*/, + }; + + return $.fn.dropImageReader = function(options) { + if (typeof options === 'function') { + options = { + callback: options, + }; + } + options = $.extend({}, defaults, options); + const stopFn = function(event) { + event.stopPropagation(); + return event.preventDefault(); + }; + return this.each(function() { + const element = this; + $(element).bind('dragenter dragover dragleave', stopFn); + return $(element).bind('drop', function(event) { + stopFn(event); + const files = event.dataTransfer.files; + for(let i=0; i<files.length; i++) { + const f = files[i]; + if(f.type.match(options.matchType)) { + const reader = new FileReader(); + reader.onload = function(evt) { + return options.callback.call(element, { + dataURL: evt.target.result, + event: evt, + file: f, + name: f.name, + }); + }; + reader.readAsDataURL(f); + return; + } + } + }); + }); + }; +})(jQuery); diff --git a/client/lib/pasteImage.js b/client/lib/pasteImage.js new file mode 100644 index 00000000..264d77ac --- /dev/null +++ b/client/lib/pasteImage.js @@ -0,0 +1,57 @@ +/* eslint-disable */ + +// ------------------------------------------------------------------------ +// Created by STRd6 +// MIT License +// https://github.com/distri/jquery-image_reader/blob/master/paste.coffee.md +// +// Raymond re-write it to javascript + +(function($) { + $.event.fix = (function(originalFix) { + return function(event) { + event = originalFix.apply(this, arguments); + if (event.type.indexOf('copy') === 0 || event.type.indexOf('paste') === 0) { + event.clipboardData = event.originalEvent.clipboardData; + } + return event; + }; + })($.event.fix); + + const defaults = { + callback: $.noop, + matchType: /image.*/, + }; + + return $.fn.pasteImageReader = function(options) { + if (typeof options === 'function') { + options = { + callback: options, + }; + } + options = $.extend({}, defaults, options); + return this.each(function() { + const element = this; + return $(element).bind('paste', function(event) { + const types = event.clipboardData.types; + const items = event.clipboardData.items; + for(let i=0; i<types.length; i++) { + if(types[i].match(options.matchType) || items[i].type.match(options.matchType)) { + const f = items[i].getAsFile(); + const reader = new FileReader(); + reader.onload = function(evt) { + return options.callback.call(element, { + dataURL: evt.target.result, + event: evt, + file: f, + name: f.name, + }); + }; + reader.readAsDataURL(f); + return; + } + } + }); + }); + }; +})(jQuery); |