Inspired by Logan Smyth transformer, but actually very different.
This transformer aim is to fix once forever problems with native extends and Custom Elements.
Usageclass List extends Array {}
console.assert(new List instanceof List);
Â
class MyElement extends HTMLElement {
  connectedCallback() {
    this.textContent = 'hello';
  }
}
Â
customElements.define('my-element', MyElement);
Â
const node = new MyElement;
console.assert(node.constructor === MyElement);
console.assert(node instanceof MyElement);
console.assert(node instanceof HTMLElement);
Â
document.body.appendChild(node);
In your Babel 6 configuration, for example in a .babelrc
you might have the following, which would enable the plugin and configure it to look for any class extending HTMLElement
, Error
or Array
globals.
{
  "plugins": [
   Â
    "babel-plugin-transform-es2015-classes",
    ["babel-plugin-transform-builtin-classes", {
      "globals": ["Array", "Error", "HTMLElement"]
    }]
  ]
}
However, you can find all known Chrome browser classes already listed in the file lib/.babelrc
too.
In this case you might need to invert the plugins order:
Compatibility{
  plugins: [
    ['transform-builtin-classes', {
      globals: ['HTMLElement']
    }],
    'transform-es2015-classes'
   Â
  ]
}
This transformer works on IE11 and every other browser with Object.setPrototypeOf
or __proto__
as fallback.
There is NO IE <= 10 support. If you need IE <= 10 don't use this plugin and/or don't extend natives (recommended).
AboutlogIfPatched
option
If you'd like to have a visual feedback when patched classes are encountered, use the logIfPatched: true
option.
{
  "plugins": [
    ['transform-builtin-classes', {
      globals: ['Array'],
      logIfPatched: true
    }]
  ]
}
This will output (as console.warn
) â builtin extends patched
whenever a class is found.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4