/*
 * Image is a Pipe Viewer that displays an image
 * @tutorial cat image.jpg | p2b google/p2b/[name]/image
 * @fileoverview
 */

import { View } from 'view';
import { PipeViewer } from 'pipe-viewer';

class ImagePipeViewer extends PipeViewer {
  get name() {
    return 'image';
  }

  play(stream) {
    var viewPromise = new Promise(function(resolve,reject) {
      var blobParts = [];
      stream.on('data', (chunk) => {
        blobParts.push(new Uint8Array(chunk));
      });

      stream.on('end', () => {
        var image = document.createElement('img');
        image.style.width = '100%';
        var url = URL.createObjectURL(new Blob(blobParts));
        image.src = url;
        resolve(new View(image));
      });
    });

    return viewPromise;
  }
}

export default ImagePipeViewer;
