polyfills 换成 core-js;IE 11 下文档和 sdk 基本可用 (#1081)

This commit is contained in:
吴多益 2020-11-18 11:41:04 +08:00 committed by GitHub
parent 6d607f7521
commit ce7e2d2291
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 14 additions and 176 deletions

View File

@ -89,7 +89,7 @@ class BackTop extends React.PureComponent {
handleScroll(e) {
this.setState({
show: e.target.scrollingElement.scrollTop > 350
show: e.target.scrollingElement?.scrollTop > 350
});
}

View File

@ -138,7 +138,6 @@ class Preview extends React.Component {
{...this.props}
height={height}
container={() => ReactDOM.findDOMNode(this)}
height={height}
component={CodePreview}
code={script.innerText}
scope={props.scope}

View File

@ -2,6 +2,7 @@
* @file entry of this example.
* @author liaoxuezhi@cloud.com
*/
import './polyfills/index';
import React from 'react';
import {render} from 'react-dom';
import App from './components/App';

View File

@ -1,46 +0,0 @@
// https://tc39.github.io/ecma262/#sec-array.prototype.find
if (!Array.prototype.find) {
Object.defineProperty(Array.prototype, 'find', {
value: function(predicate) {
// 1. Let O be ? ToObject(this value).
if (this == null) {
throw new TypeError('"this" is null or not defined');
}
var o = Object(this);
// 2. Let len be ? ToLength(? Get(O, "length")).
var len = o.length >>> 0;
// 3. If IsCallable(predicate) is false, throw a TypeError exception.
if (typeof predicate !== 'function') {
throw new TypeError('predicate must be a function');
}
// 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
var thisArg = arguments[1];
// 5. Let k be 0.
var k = 0;
// 6. Repeat, while k < len
while (k < len) {
// a. Let Pk be ! ToString(k).
// b. Let kValue be ? Get(O, Pk).
// c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
// d. If testResult is true, return kValue.
var kValue = o[k];
if (predicate.call(thisArg, kValue, k, o)) {
return kValue;
}
// e. Increase k by 1.
k++;
}
// 7. Return undefined.
return undefined;
},
configurable: true,
writable: true
});
}

View File

@ -1,88 +0,0 @@
if (!Array.from) {
Array.from = (function() {
var toStr = Object.prototype.toString;
var isCallable = function(fn) {
return typeof fn === 'function' || toStr.call(fn) === '[object Function]';
};
var toInteger = function(value) {
var number = Number(value);
if (isNaN(number)) {
return 0;
}
if (number === 0 || !isFinite(number)) {
return number;
}
return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));
};
var maxSafeInteger = Math.pow(2, 53) - 1;
var toLength = function(value) {
var len = toInteger(value);
return Math.min(Math.max(len, 0), maxSafeInteger);
};
// The length property of the from method is 1.
return function from(arrayLike /*, mapFn, thisArg */) {
// 1. Let C be the this value.
var C = this;
// 2. Let items be ToObject(arrayLike).
var items = Object(arrayLike);
// 3. ReturnIfAbrupt(items).
if (arrayLike == null) {
throw new TypeError(
'Array.from requires an array-like object - not null or undefined'
);
}
// 4. If mapfn is undefined, then let mapping be false.
var mapFn = arguments.length > 1 ? arguments[1] : void undefined;
var T;
if (typeof mapFn !== 'undefined') {
// 5. else
// 5. a If IsCallable(mapfn) is false, throw a TypeError exception.
if (!isCallable(mapFn)) {
throw new TypeError(
'Array.from: when provided, the second argument must be a function'
);
}
// 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined.
if (arguments.length > 2) {
T = arguments[2];
}
}
// 10. Let lenValue be Get(items, "length").
// 11. Let len be ToLength(lenValue).
var len = toLength(items.length);
// 13. If IsConstructor(C) is true, then
// 13. a. Let A be the result of calling the [[Construct]] internal method
// of C with an argument list containing the single item len.
// 14. a. Else, Let A be ArrayCreate(len).
var A = isCallable(C) ? Object(new C(len)) : new Array(len);
// 16. Let k be 0.
var k = 0;
// 17. Repeat, while k < len… (also steps a - h)
var kValue;
while (k < len) {
kValue = items[k];
if (mapFn) {
A[k] =
typeof T === 'undefined'
? mapFn(kValue, k)
: mapFn.call(T, kValue, k);
} else {
A[k] = kValue;
}
k += 1;
}
// 18. Let putStatus be Put(A, "length", len, true).
A.length = len;
// 20. Return A.
return A;
};
})();
}

View File

@ -1,32 +0,0 @@
if (typeof Object.assign != 'function') {
// Must be writable: true, enumerable: false, configurable: true
Object.defineProperty(Object, 'assign', {
value: function assign(target, varArgs) {
// .length of function is 2
'use strict';
if (target == null) {
// TypeError if undefined or null
throw new TypeError('Cannot convert undefined or null to object');
}
var to = Object(target);
for (var index = 1; index < arguments.length; index++) {
var nextSource = arguments[index];
if (nextSource != null) {
// Skip over if undefined or null
for (var nextKey in nextSource) {
// Avoid bugs when hasOwnProperty is shadowed
if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
to[nextKey] = nextSource[nextKey];
}
}
}
}
return to;
},
writable: true,
configurable: true
});
}

View File

@ -1,7 +1,11 @@
import './Object.assign';
import './Array.from';
import './Array.find';
import './cloest';
import 'core-js/es/array/find';
import 'core-js/es/array/from';
import 'core-js/es/array/find-index';
import 'core-js/es/string/starts-with';
import 'core-js/es/promise';
import 'core-js/es/object/assign';
import 'core-js/es/object/keys';
import 'core-js/es/map';
import 'core-js/es/set';
import 'promise/polyfill';
import 'es6-symbol/implement';
import './cloest';

View File

@ -124,8 +124,8 @@
"bce-sdk-js": "^0.2.9",
"bootstrap": "3.4.1",
"copy-to-clipboard": "3.0.8",
"core-js": "^3.7.0",
"css": "2.2.1",
"es6-symbol": "3.1.1",
"faker": "^4.1.0",
"fis-parser-sass": "^1.0.1",
"fis-parser-svgr": "^1.0.0",

View File

@ -3,7 +3,7 @@
"outDir": "output/",
"module": "commonjs",
"target": "es5",
"lib": ["es6", "dom"],
"lib": ["es6", "dom", "ES2015"],
"sourceMap": true,
"jsx": "react",
"moduleResolution": "node",