Source: Clipboard.js

(function (_super) {

  /**
   * Vertical rows
   * @class
   * @augments hui.ui.Component
   * @param {Object} options
   */
  hui.ui.Clipboard = function(options) {
    options = options || {};
    _super.call(this, options);
    this.value = null;
    this._attach();
  };

  hui.ui.Clipboard.prototype = {
    _attach : function() {
      hui.on(document, 'paste', this._onPaste.bind(this));
    },
    _onPaste : function(e) {
      this.fire('paste',e);
      console.log('Paste event', e);
      console.log('Clipboard data', e.clipboardData)
      var items = e.clipboardData.items;
      console.log('Clipboard data items', items)
      if (items) {
        console.log('items:', items)
        for (var i = 0; i < items.length; i++) {
          console.log(items[i]);
          if (items[i].type == 'file') {
            this._readFile(items[i].getAsFile());
          }
          if (items[i].type == 'text/plain') {
            items[i].getAsString(function(x) {
              this.fire('text', {text:x});
            }.bind(this));
          }
        }
      }
      var files = e.clipboardData.files;
      console.log('files:', files)
      if (files) {
        for (var i = 0; i < files.length; i++) {
          var file = files[i];
          this._readFile(file);
        }
      }

      var types = e.clipboardData.types;
      console.log('Clipboard data types:', types)
      if (types) {
        for (var i = 0; i < types.length; i++) {
          var data = e.clipboardData.getData(types[i], console.log);
          console.log(data)
        }
      }
      console.log(arguments)
    },
    _readFile : function(file) {
      console.log(file.type)
      var self = this;
      if (/image\//.test(file.type)) {
        var reader = new FileReader();
        reader.onload = function (event) {
          self.fire('image', {base64:reader.result});
        }
        reader.readAsDataURL(file);
      } else if (/text\//.test(file.type)) {
        var reader = new FileReader();
        reader.onload = function (event) {
          self.fire('text', {text:reader.result});
        }
        reader.readAsText(file);
      } else {
        self.fire('file', {file:file});
      }
    }

  };

  hui.extend(hui.ui.Clipboard, _super);
  hui.define('hui.ui.Clipboard', hui.ui.Clipboard);

})(hui.ui.Component);