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