UNPKG

polyfill-service

Version:
69 lines (63 loc) 1.98 kB
(function (global) { var nativeImpl = "DOMTokenList" in global && global.DOMTokenList; if ( !nativeImpl || ( !!document.createElementNS && !!document.createElementNS('http://www.w3.org/2000/svg', 'svg') && !(document.createElementNS("http://www.w3.org/2000/svg", "svg").classList instanceof DOMTokenList) ) ) { global.DOMTokenList = _DOMTokenList; } // Add second argument to native DOMTokenList.toggle() if necessary (function () { var e = document.createElement('span'); if (!('classList' in e)) return; e.classList.toggle('x', false); if (!e.classList.contains('x')) return; e.classList.constructor.prototype.toggle = function toggle(token /*, force*/) { var force = arguments[1]; if (force === undefined) { var add = !this.contains(token); this[add ? 'add' : 'remove'](token); return add; } force = !!force; this[force ? 'add' : 'remove'](token); return force; }; }()); // Add multiple arguments to native DOMTokenList.add() if necessary (function () { var e = document.createElement('span'); if (!('classList' in e)) return; e.classList.add('a', 'b'); if (e.classList.contains('b')) return; var native = e.classList.constructor.prototype.add; e.classList.constructor.prototype.add = function () { var args = arguments; var l = arguments.length; for (var i = 0; i < l; i++) { native.call(this, args[i]); } }; }()); // Add multiple arguments to native DOMTokenList.remove() if necessary (function () { var e = document.createElement('span'); if (!('classList' in e)) return; e.classList.add('a'); e.classList.add('b'); e.classList.remove('a', 'b'); if (!e.classList.contains('b')) return; var native = e.classList.constructor.prototype.remove; e.classList.constructor.prototype.remove = function () { var args = arguments; var l = arguments.length; for (var i = 0; i < l; i++) { native.call(this, args[i]); } }; }()); }(this));