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.
		
		
		
		
		
			
		
			
				
					
					
						
							59 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
	
	
							59 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);
 | |
|   }
 | |
| }
 |