1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
| 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);
| }
| }
|
|