/*!
* VisualEditor initialization support checker.
*
* @copyright See AUTHORS.txt
*/
( function () {
/**
* Check whether the environment has the needed features to load VisualEditor.
* This considers every ES5 feature, support for contentEditable itself, those
* specific DOM features we use, and SVG support for the user interface. As we
* use this to check for feature compatibility this file must be ES3-parsable.
*
* @method VisualEditorSupportCheck
* @memberof ve
* @return {boolean} True if the environment should support VisualEditor.
*/
window.VisualEditorSupportCheck = function () {
return (
/* ES6 */
( function () {
try {
// eslint-disable-next-line no-new, no-new-func
new Function( '(a = 0) => a' );
return true;
} catch ( e ) {
return false;
}
}() ) &&
/* ES6 RegExp.prototype.flags */
/./g.flags === 'g' &&
// TODO: Most of the below checks can probably be removed as they are supported in all ES6 browsers.
/* contentEditable */
!!( 'contentEditable' in document.createElement( 'div' ) ) &&
/* createElementNS */
!!document.createElementNS &&
/* DOMParser */
( function () {
let doc;
try {
doc = new DOMParser().parseFromString( '<body></body>', 'text/html' );
} catch ( e ) {}
return doc instanceof HTMLDocument;
}() ) &&
/* classList */
!!(
( 'classList' in document.createElement( '_' ) ) ||
( 'classList' in document.createElementNS( 'http://www.w3.org/2000/svg ', 'g' ) )
) &&
/* SVG */
!!( 'createSVGRect' in document.createElementNS( 'http://www.w3.org/2000/svg', 'svg' ) )
);
};
}() );