airbnb-browser-shims
Version:
Browser and JS shims used by Airbnb.
57 lines (37 loc) • 1.43 kB
JavaScript
;
/* eslint global-require: 0 */
// Fixes super-constructor calls in IE9/10
require('ima-babel6-polyfill');
// document.contains polyfill
require('./document-contains');
// console.* polyfill for old browsers
require('console-polyfill');
require('whatwg-fetch');
if (typeof window !== 'undefined') {
// Element.classList polyfill
require('classlist-polyfill');
// Element.closest polyfill
require('element-closest');
// Polyfill for smooth scrolling behavior
require('smoothscroll-polyfill').polyfill();
// Polyfill window.matchMedia (primarily for IE9)
require('matchmedia-polyfill');
require('matchmedia-polyfill/matchMedia.addListener');
// Polyfill window.location.origin (for IE < 11)
require('window-location-origin');
// for <= IE 9, Opera mini
require('input-placeholder-polyfill');
require('intersection-observer');
// KeyboardEvent.key shim
require('shim-keyboard-event-key');
}
// :focus-visible shim
require('focus-visible');
require('raf/polyfill');
global.requestIdleCallback = require('ric-shim');
global.cancelIdleCallback = global.requestIdleCallback.cancelIdleCallback;
var hasSymbols = typeof Symbol === 'function' && Symbol.iterator;
/* globals TouchList */
if (hasSymbols && typeof TouchList === 'function' && typeof TouchList.prototype[Symbol.iterator] !== 'function') {
TouchList.prototype[Symbol.iterator] = Array.prototype[Symbol.iterator];
}