You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.8 KiB
58 lines
1.8 KiB
var $iterators = require('./es6.array.iterator'); |
|
var getKeys = require('./_object-keys'); |
|
var redefine = require('./_redefine'); |
|
var global = require('./_global'); |
|
var hide = require('./_hide'); |
|
var Iterators = require('./_iterators'); |
|
var wks = require('./_wks'); |
|
var ITERATOR = wks('iterator'); |
|
var TO_STRING_TAG = wks('toStringTag'); |
|
var ArrayValues = Iterators.Array; |
|
|
|
var DOMIterables = { |
|
CSSRuleList: true, // TODO: Not spec compliant, should be false. |
|
CSSStyleDeclaration: false, |
|
CSSValueList: false, |
|
ClientRectList: false, |
|
DOMRectList: false, |
|
DOMStringList: false, |
|
DOMTokenList: true, |
|
DataTransferItemList: false, |
|
FileList: false, |
|
HTMLAllCollection: false, |
|
HTMLCollection: false, |
|
HTMLFormElement: false, |
|
HTMLSelectElement: false, |
|
MediaList: true, // TODO: Not spec compliant, should be false. |
|
MimeTypeArray: false, |
|
NamedNodeMap: false, |
|
NodeList: true, |
|
PaintRequestList: false, |
|
Plugin: false, |
|
PluginArray: false, |
|
SVGLengthList: false, |
|
SVGNumberList: false, |
|
SVGPathSegList: false, |
|
SVGPointList: false, |
|
SVGStringList: false, |
|
SVGTransformList: false, |
|
SourceBufferList: false, |
|
StyleSheetList: true, // TODO: Not spec compliant, should be false. |
|
TextTrackCueList: false, |
|
TextTrackList: false, |
|
TouchList: false |
|
}; |
|
|
|
for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) { |
|
var NAME = collections[i]; |
|
var explicit = DOMIterables[NAME]; |
|
var Collection = global[NAME]; |
|
var proto = Collection && Collection.prototype; |
|
var key; |
|
if (proto) { |
|
if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues); |
|
if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); |
|
Iterators[NAME] = ArrayValues; |
|
if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true); |
|
} |
|
}
|
|
|