/* globals jQuery */ 
 | 
const $ = jQuery; 
 | 
$('a').click(function () { 
 | 
  const {href} = this; 
 | 
  const target = window.parent; 
 | 
  const post = (message) => { 
 | 
    // Todo: Make origin customizable as set by opening window 
 | 
    // Todo: If dropping IE9, avoid stringifying 
 | 
    target.postMessage(JSON.stringify({ 
 | 
      namespace: 'imagelib', 
 | 
      ...message 
 | 
    }), '*'); 
 | 
  }; 
 | 
  // Convert Non-SVG images to data URL first 
 | 
  // (this could also have been done server-side by the library) 
 | 
  // Send metadata (also indicates file is about to be sent) 
 | 
  post({ 
 | 
    name: $(this).text(), 
 | 
    id: href 
 | 
  }); 
 | 
  if (!href.includes('.svg')) { 
 | 
    const img = new Image(); 
 | 
    img.onload = function () { 
 | 
      const canvas = document.createElement('canvas'); 
 | 
      canvas.width = this.width; 
 | 
      canvas.height = this.height; 
 | 
      // load the raster image into the canvas 
 | 
      canvas.getContext('2d').drawImage(this, 0, 0); 
 | 
      // retrieve the data: URL 
 | 
      let data; 
 | 
      try { 
 | 
        data = canvas.toDataURL(); 
 | 
      } catch (err) { 
 | 
        // This fails in Firefox with `file:///` URLs :( 
 | 
        alert('Data URL conversion failed: ' + err); 
 | 
        data = ''; 
 | 
      } 
 | 
      post({href, data}); 
 | 
    }; 
 | 
    img.src = href; 
 | 
  } else { 
 | 
    // Do ajax request for image's href value 
 | 
    $.get(href, function (data) { 
 | 
      post({href, data}); 
 | 
    }, 'html'); // 'html' is necessary to keep returned data as a string 
 | 
  } 
 | 
  return false; 
 | 
}); 
 |