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);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |