Browser polyfill for making React Native compatible with web libs like pixi.js, three.js, phaser.js
npm install @expo/browser-polyfillBrowser polyfill for React Native
``bash`
yarn add @expo/browser-polyfill
Import the library into your JavaScript file:
`js`
import '@expo/browser-polyfill';
DOM is provided with very low support, these are used for libs like pixi.js that validate type.
`js`
class Node
class Element
class Document
class HTMLImageElement
class Image
class ImageBitmap
class HTMLVideoElement
class Video
class HTMLCanvasElement
class Canvas
Image has support for loading callbacks, however the loaded uri must be passed to the src already.
`js`
const image = new Image();
image.src = '';
image.onload = () => {
const { src, width, height } = image;
};
image.addEventListener('loading', () => {});
image.addEventListener('error', () => {});
`js`
const element = document.createElement('div');
const fakeContext = element.getContext('');
#### All sizes return the window size:
`js`
element.clientWidth;
element.clientHeight;
element.innerWidth;
element.innerHeight;
element.offsetWidth;
element.offsetHeight;
#### Empty attributes that prevent libraries from crashing
`js`
element.tagName;
element.addEventListener;
element.removeEventListener;
element.setAttributeNS;
element.createElementNS;
`js`
node.ownerDocument;
node.className;
node.appendChild;
node.insertBefore;
node.removeChild;
node.setAttributeNS;
node.getBoundingClientRect;
Some external node.js polyfills are added as well.
``
global.TextEncoder
global.TextDecoder
``
window.DOMParser
``
console.time(label);
console.timeEnd(label);
console.count(label);
For debugging base64 image transformations toggle:
`js`
global.__debug_browser_polyfill_image = true;
By default global.__debug_browser_polyfill_image` is false.