Update poylfills (fixes #662)
This commit is contained in:
		
							parent
							
								
									fce248810b
								
							
						
					
					
						commit
						478f70a0e6
					
				| 
						 | 
				
			
			@ -0,0 +1,10 @@
 | 
			
		|||
export const decode = base64 => {
 | 
			
		||||
  const rawData = window.atob(base64);
 | 
			
		||||
  const outputArray = new Uint8Array(rawData.length);
 | 
			
		||||
 | 
			
		||||
  for (let i = 0; i < rawData.length; ++i) {
 | 
			
		||||
    outputArray[i] = rawData.charCodeAt(i);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return outputArray;
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -3,7 +3,9 @@ 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 './base64';
 | 
			
		||||
 | 
			
		||||
if (!Array.prototype.includes) {
 | 
			
		||||
  includes.shim();
 | 
			
		||||
| 
						 | 
				
			
			@ -13,6 +15,30 @@ if (!Object.assign) {
 | 
			
		|||
  Object.assign = assign;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if (!Object.values) {
 | 
			
		||||
  values.shim();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if (!Number.isNaN) {
 | 
			
		||||
  Number.isNaN = isNaN;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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 }));
 | 
			
		||||
    },
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,11 +12,13 @@ function importExtraPolyfills() {
 | 
			
		|||
 | 
			
		||||
function loadPolyfills() {
 | 
			
		||||
  const needsBasePolyfills = !(
 | 
			
		||||
    Array.prototype.includes &&
 | 
			
		||||
    HTMLCanvasElement.prototype.toBlob &&
 | 
			
		||||
    window.Intl &&
 | 
			
		||||
    Object.assign &&
 | 
			
		||||
    Number.isNaN &&
 | 
			
		||||
    window.Symbol &&
 | 
			
		||||
    Array.prototype.includes
 | 
			
		||||
    Object.assign &&
 | 
			
		||||
    Object.values &&
 | 
			
		||||
    window.Symbol
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  // Latest version of Firefox and Safari do not have IntersectionObserver.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue