40 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @license
							 | 
						||
| 
								 | 
							
								 * Copyright Google Inc. All Rights Reserved.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Use of this source code is governed by an MIT-style license that can be
							 | 
						||
| 
								 | 
							
								 * found in the LICENSE file at https://angular.io/license
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export function eventTargetPatch(_global: any, api: _ZonePrivate) {
							 | 
						||
| 
								 | 
							
								  if ((Zone as any)[api.symbol('patchEventTarget')]) {
							 | 
						||
| 
								 | 
							
								    // EventTarget is already patched.
							 | 
						||
| 
								 | 
							
								    return;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  const {eventNames, zoneSymbolEventNames, TRUE_STR, FALSE_STR, ZONE_SYMBOL_PREFIX} =
							 | 
						||
| 
								 | 
							
								      api.getGlobalObjects() !;
							 | 
						||
| 
								 | 
							
								  //  predefine all __zone_symbol__ + eventName + true/false string
							 | 
						||
| 
								 | 
							
								  for (let i = 0; i < eventNames.length; i++) {
							 | 
						||
| 
								 | 
							
								    const eventName = eventNames[i];
							 | 
						||
| 
								 | 
							
								    const falseEventName = eventName + FALSE_STR;
							 | 
						||
| 
								 | 
							
								    const trueEventName = eventName + TRUE_STR;
							 | 
						||
| 
								 | 
							
								    const symbol = ZONE_SYMBOL_PREFIX + falseEventName;
							 | 
						||
| 
								 | 
							
								    const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName;
							 | 
						||
| 
								 | 
							
								    zoneSymbolEventNames[eventName] = {};
							 | 
						||
| 
								 | 
							
								    zoneSymbolEventNames[eventName][FALSE_STR] = symbol;
							 | 
						||
| 
								 | 
							
								    zoneSymbolEventNames[eventName][TRUE_STR] = symbolCapture;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const EVENT_TARGET = _global['EventTarget'];
							 | 
						||
| 
								 | 
							
								  if (!EVENT_TARGET || !EVENT_TARGET.prototype) {
							 | 
						||
| 
								 | 
							
								    return;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  api.patchEventTarget(_global, [EVENT_TARGET && EVENT_TARGET.prototype]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return true;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export function patchEvent(global: any, api: _ZonePrivate) {
							 | 
						||
| 
								 | 
							
								  api.patchEventPrototype(global, api);
							 | 
						||
| 
								 | 
							
								}
							 |