@@ -14,11 +14,11 @@ import {
14
14
} from '@ember/-internals/views' ;
15
15
import { assert , deprecate } from '@ember/debug' ;
16
16
import { DEBUG } from '@glimmer/env' ;
17
+ import { Environment } from '@glimmer/interfaces' ;
17
18
import { isUpdatableRef , updateRef } from '@glimmer/reference' ;
18
19
import { normalizeProperty } from '@glimmer/runtime' ;
19
20
import { createTag , dirtyTag } from '@glimmer/validator' ;
20
21
import { Namespace } from '@simple-dom/interface' ;
21
- import { EmberVMEnvironment } from './environment' ;
22
22
23
23
export const ARGS = enumerableSymbol ( 'ARGS' ) ;
24
24
export const HAS_BLOCK = enumerableSymbol ( 'HAS_BLOCK' ) ;
@@ -726,10 +726,20 @@ const Component = CoreView.extend(
726
726
this [ DIRTY_TAG ] = createTag ( ) ;
727
727
this [ BOUNDS ] = null ;
728
728
729
- if ( DEBUG && this . renderer . _destinedForDOM && this . tagName === '' ) {
729
+ let eventDispatcher = this . _dispatcher ;
730
+ if ( eventDispatcher ) {
731
+ let lazyEvents = eventDispatcher . lazyEvents ;
732
+
733
+ lazyEvents . forEach ( ( mappedEventName : string , event : string ) => {
734
+ if ( mappedEventName !== null && typeof this [ mappedEventName ] === 'function' ) {
735
+ eventDispatcher . setupHandlerForBrowserEvent ( event ) ;
736
+ }
737
+ } ) ;
738
+ }
739
+
740
+ if ( DEBUG && eventDispatcher && this . tagName === '' ) {
730
741
let eventNames = [ ] ;
731
- let eventDispatcher = getOwner ( this ) . lookup < EventDispatcher > ( 'event_dispatcher:main' ) ;
732
- let events = ( eventDispatcher && eventDispatcher . finalEventNameMapping ) || { } ;
742
+ let events = eventDispatcher . finalEventNameMapping ;
733
743
734
744
// tslint:disable-next-line:forin
735
745
for ( let key in events ) {
@@ -788,24 +798,22 @@ const Component = CoreView.extend(
788
798
) ;
789
799
} ,
790
800
791
- get setupEventHandler ( ) : ( eventName : string ) => void | null {
792
- if ( this . _setupEventHandler === undefined ) {
801
+ get _dispatcher ( ) : EventDispatcher | null {
802
+ if ( this . __dispatcher === undefined ) {
793
803
let owner = getOwner ( this ) ;
794
- if ( owner . lookup < EmberVMEnvironment > ( '-environment:main' ) ! . isInteractive ) {
795
- let dispatcher = owner . lookup < EventDispatcher > ( 'event_dispatcher:main' ) ;
796
- this . _setupEventHandler = ( eventName : string ) =>
797
- dispatcher ! . setupHandlerForEmberEvent ( eventName ) ;
804
+ if ( owner . lookup < Environment > ( '-environment:main' ) ! . isInteractive ) {
805
+ this . __dispatcher = owner . lookup < EventDispatcher > ( 'event_dispatcher:main' ) ;
798
806
} else {
799
807
// In FastBoot we have no EventDispatcher. Set to null to not try again to look it up.
800
- this . _setupEventHandler = null ;
808
+ this . __dispatcher = null ;
801
809
}
802
810
}
803
811
804
- return this . _setupEventHandler ;
812
+ return this . __dispatcher ;
805
813
} ,
806
814
807
815
on ( eventName : string ) {
808
- this . setupEventHandler ?. ( eventName ) ;
816
+ this . _dispatcher ?. setupHandlerForEmberEvent ( eventName ) ;
809
817
return this . _super ( ...arguments ) ;
810
818
} ,
811
819
0 commit comments