47 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import 'intl';
 | 
						|
import 'intl/locale-data/jsonp/en';
 | 
						|
import 'es6-symbol/implement';
 | 
						|
import includes from 'array-includes';
 | 
						|
import assign from 'object-assign';
 | 
						|
import values from 'object.values';
 | 
						|
import isNaN from 'is-nan';
 | 
						|
import { decode as decodeBase64 } from './utils/base64';
 | 
						|
import promiseFinally from 'promise.prototype.finally';
 | 
						|
 | 
						|
if (!Array.prototype.includes) {
 | 
						|
  includes.shim();
 | 
						|
}
 | 
						|
 | 
						|
if (!Object.assign) {
 | 
						|
  Object.assign = assign;
 | 
						|
}
 | 
						|
 | 
						|
if (!Object.values) {
 | 
						|
  values.shim();
 | 
						|
}
 | 
						|
 | 
						|
if (!Number.isNaN) {
 | 
						|
  Number.isNaN = isNaN;
 | 
						|
}
 | 
						|
 | 
						|
promiseFinally.shim();
 | 
						|
 | 
						|
if (!HTMLCanvasElement.prototype.toBlob) {
 | 
						|
  const BASE64_MARKER = ';base64,';
 | 
						|
 | 
						|
  Object.defineProperty(HTMLCanvasElement.prototype, 'toBlob', {
 | 
						|
    value(callback, type = 'image/png', quality) {
 | 
						|
      const dataURL = this.toDataURL(type, quality);
 | 
						|
      let data;
 | 
						|
 | 
						|
      if (dataURL.indexOf(BASE64_MARKER) >= 0) {
 | 
						|
        const [, base64] = dataURL.split(BASE64_MARKER);
 | 
						|
        data = decodeBase64(base64);
 | 
						|
      } else {
 | 
						|
        [, data] = dataURL.split(',');
 | 
						|
      }
 | 
						|
 | 
						|
      callback(new Blob([data], { type }));
 | 
						|
    },
 | 
						|
  });
 | 
						|
}
 |