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
			| 
											3 years ago
										 | 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); | ||
|  |   } | ||
|  | } |