| 
									
										
										
										
											2019-06-01 00:56:07 +09:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @license | 
					
						
							| 
									
										
										
										
											2020-05-19 12:08:49 -07:00
										 |  |  |  * Copyright Google LLC All Rights Reserved. | 
					
						
							| 
									
										
										
										
											2019-06-01 00:56:07 +09:00
										 |  |  |  * | 
					
						
							|  |  |  |  * 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} = | 
					
						
							| 
									
										
										
										
											2020-04-13 16:40:21 -07:00
										 |  |  |       api.getGlobalObjects()!; | 
					
						
							| 
									
										
										
										
											2019-06-01 00:56:07 +09:00
										 |  |  |   //  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); | 
					
						
							|  |  |  | } |