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