@@ -2,8 +2,6 @@ import {isBlank, BaseException, isPresent, StringWrapper} from 'angular2/src/cor
22import { DOM } from 'angular2/src/core/dom/dom_adapter' ;
33import { NgZone } from 'angular2/src/core/zone/ng_zone' ;
44
5- const BUBBLE_SYMBOL = '^' ;
6-
75export class EventManager {
86 constructor ( public _plugins : EventManagerPlugin [ ] , public _zone : NgZone ) {
97 for ( var i = 0 ; i < _plugins . length ; i ++ ) {
@@ -12,17 +10,13 @@ export class EventManager {
1210 }
1311
1412 addEventListener ( element : HTMLElement , eventName : string , handler : Function ) {
15- var withoutBubbleSymbol = this . _removeBubbleSymbol ( eventName ) ;
16- var plugin = this . _findPluginFor ( withoutBubbleSymbol ) ;
17- plugin . addEventListener ( element , withoutBubbleSymbol , handler ,
18- withoutBubbleSymbol != eventName ) ;
13+ var plugin = this . _findPluginFor ( eventName ) ;
14+ plugin . addEventListener ( element , eventName , handler ) ;
1915 }
2016
2117 addGlobalEventListener ( target : string , eventName : string , handler : Function ) : Function {
22- var withoutBubbleSymbol = this . _removeBubbleSymbol ( eventName ) ;
23- var plugin = this . _findPluginFor ( withoutBubbleSymbol ) ;
24- return plugin . addGlobalEventListener ( target , withoutBubbleSymbol , handler ,
25- withoutBubbleSymbol != eventName ) ;
18+ var plugin = this . _findPluginFor ( eventName ) ;
19+ return plugin . addGlobalEventListener ( target , eventName , handler ) ;
2620 }
2721
2822 getZone ( ) : NgZone { return this . _zone ; }
@@ -37,28 +31,19 @@ export class EventManager {
3731 }
3832 throw new BaseException ( `No event manager plugin found for event ${ eventName } ` ) ;
3933 }
40-
41- _removeBubbleSymbol ( eventName : string ) : string {
42- return eventName [ 0 ] == BUBBLE_SYMBOL ? StringWrapper . substring ( eventName , 1 ) : eventName ;
43- }
4434}
4535
4636export class EventManagerPlugin {
4737 manager : EventManager ;
4838
49- // We are assuming here that all plugins support bubbled and non-bubbled events.
5039 // That is equivalent to having supporting $event.target
51- // The bubbling flag (currently ^) is stripped before calling the supports and
52- // addEventListener methods.
5340 supports ( eventName : string ) : boolean { return false ; }
5441
55- addEventListener ( element : HTMLElement , eventName : string , handler : Function ,
56- shouldSupportBubble : boolean ) {
42+ addEventListener ( element : HTMLElement , eventName : string , handler : Function ) {
5743 throw "not implemented" ;
5844 }
5945
60- addGlobalEventListener ( element : string , eventName : string , handler : Function ,
61- shouldSupportBubble : boolean ) : Function {
46+ addGlobalEventListener ( element : string , eventName : string , handler : Function ) : Function {
6247 throw "not implemented" ;
6348 }
6449}
@@ -70,39 +55,17 @@ export class DomEventsPlugin extends EventManagerPlugin {
7055 // events.
7156 supports ( eventName : string ) : boolean { return true ; }
7257
73- addEventListener ( element : HTMLElement , eventName : string , handler : Function ,
74- shouldSupportBubble : boolean ) {
75- var outsideHandler =
76- this . _getOutsideHandler ( shouldSupportBubble , element , handler , this . manager . _zone ) ;
58+ addEventListener ( element : HTMLElement , eventName : string , handler : Function ) {
59+ var zone = this . manager . _zone ;
60+ var outsideHandler = ( event ) => zone . run ( ( ) => handler ( event ) ) ;
7761 this . manager . _zone . runOutsideAngular ( ( ) => { DOM . on ( element , eventName , outsideHandler ) ; } ) ;
7862 }
7963
80- addGlobalEventListener ( target : string , eventName : string , handler : Function ,
81- shouldSupportBubble : boolean ) : Function {
64+ addGlobalEventListener ( target : string , eventName : string , handler : Function ) : Function {
8265 var element = DOM . getGlobalEventTarget ( target ) ;
83- var outsideHandler =
84- this . _getOutsideHandler ( shouldSupportBubble , element , handler , this . manager . _zone ) ;
66+ var zone = this . manager . _zone ;
67+ var outsideHandler = ( event ) => zone . run ( ( ) => handler ( event ) ) ;
8568 return this . manager . _zone . runOutsideAngular (
8669 ( ) => { return DOM . onAndCancel ( element , eventName , outsideHandler ) ; } ) ;
8770 }
88-
89- _getOutsideHandler ( shouldSupportBubble : boolean , element : HTMLElement , handler : Function ,
90- zone : NgZone ) {
91- return shouldSupportBubble ? DomEventsPlugin . bubbleCallback ( element , handler , zone ) :
92- DomEventsPlugin . sameElementCallback ( element , handler , zone ) ;
93- }
94-
95- static sameElementCallback ( element : HTMLElement , handler : Function , zone : NgZone ) :
96- ( event : Event ) => void {
97- return ( event ) => {
98- if ( event . target === element ) {
99- zone . run ( ( ) => handler ( event ) ) ;
100- }
101- } ;
102- }
103-
104- static bubbleCallback ( element : HTMLElement , handler : Function , zone : NgZone ) :
105- ( event : Event ) => void {
106- return ( event ) => zone . run ( ( ) => handler ( event ) ) ;
107- }
10871}
0 commit comments