Add polyfills for IE11

This commit is contained in:
Nick O'Leary 2020-04-03 16:56:46 +01:00
parent 4f31632863
commit efad7270b7
No known key found for this signature in database
GPG Key ID: 4F2157149161A6C9
2 changed files with 35 additions and 0 deletions

View File

@ -125,6 +125,7 @@ module.exports = function(grunt) {
src: [
// Ensure editor source files are concatenated in
// the right order
"packages/node_modules/@node-red/editor-client/src/js/polyfills.js",
"packages/node_modules/@node-red/editor-client/src/js/jquery-addons.js",
"packages/node_modules/@node-red/editor-client/src/js/red.js",
"packages/node_modules/@node-red/editor-client/src/js/events.js",

View File

@ -0,0 +1,34 @@
(function() {
var isIE11 = !!window.MSInputMethodContext && !!document.documentMode;
if (isIE11) {
// IE11 does not provide classList on SVGElements
if (! ("classList" in SVGElement.prototype)) {
Object.defineProperty(SVGElement.prototype, 'classList', Object.getOwnPropertyDescriptor(HTMLElement.prototype, 'classList'));
}
// IE11 does not provide children on SVGElements
if (! ("children" in SVGElement.prototype)) {
Object.defineProperty(SVGElement.prototype, 'children', Object.getOwnPropertyDescriptor(HTMLElement.prototype, 'children'));
}
if (!Array.from) {
// JSONata provides an Array.from polyfill that doesn't handle iterables.
// So in IE11 we expect Array.from to exist already, it just needs some
// changes to support iterables.
throw new Error("Missing Array.from base polyfill");
}
Array._from = Array.from;
Array.from = function() {
var arrayLike = arguments[0]
if (arrayLike.forEach) {
var result = [];
arrayLike.forEach(function(i) {
result.push(i);
})
return result;
}
return Array._from.apply(null,arguments);
}
}
})();