On 12/23/19, 11:48 PM, "Harbs" <[email protected]> wrote:

    The code you mention below is a bug (interesting the compiler didn’t catch 
it). I fixed it locally and tried removing e.bubbles completely. Neither made a 
difference.

IMO, it is legal AS/JS.  I think Closure Compiler should have warned on 
e.bubbles;  Are you sure it didn't?

I'm done working for today.  You might learn something by stepping through the 
goog.events dispatching before and after your changes.
    
    I keep feeling like we should replace goog.events with our own code, but 
it’s a scary change… ;-)
    
I think it is safe to get rid of goog.events, but yes, it is a big change.

HTH,
-Alex

    > On Dec 24, 2019, at 9:01 AM, Alex Harui <[email protected]> wrote:
    > 
    > Harbs,
    > 
    > In HTMLElementWrapper, it looked like there were 3 main code paths:
    > 
    > 1) if(eventObject is IBrowserEvent){
    > 2a) if (converter)
    > 2b) else 
    > 
    > I'm only looking at this diff, but it feels like some of those may have 
gotten lost, so please double-check.
    > 
    > Also, it may be the Crux issue is related to this:
    > 
    > -                    e = EventUtils.createEvent(eventType);
    > +                    e = EventUtils.createEvent(eventType), e.bubbles;
    > 
    > HTH,
    > -Alex
    > 
    > On 12/22/19, 8:39 AM, "[email protected] <mailto:[email protected]>" 
<[email protected] <mailto:[email protected]>> wrote:
    > 
    >    This is an automated email from the ASF dual-hosted git repository.
    > 
    >    harbs pushed a commit to branch develop
    >    in repository 
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitbox.apache.org%2Frepos%2Fasf%2Froyale-asjs.git&amp;data=02%7C01%7Caharui%40adobe.com%7C2239b5c53a5e40ad97cb08d78845b373%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127705258305361&amp;sdata=9byOZCM%2Baxx5FSJPrfIqO50MH7SSocQP9iOqK7%2BIiBs%3D&amp;reserved=0
 
<https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitbox.apache.org%2Frepos%2Fasf%2Froyale-asjs.git&amp;data=02%7C01%7Caharui%40adobe.com%7C2239b5c53a5e40ad97cb08d78845b373%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127705258315356&amp;sdata=7aCHCOQpPN0G42L2L4udJj8WEno2nFDhNPWR6q5W%2FcA%3D&amp;reserved=0>
    > 
    > 
    >    The following commit(s) were added to refs/heads/develop by this push:
    >         new f50c999  Cleaned up ElementWrapper and HTMLElementWrapper
    >    f50c999 is described below
    > 
    >    commit f50c9990a3190cf681364905525656984ab2e9c5
    >    Author: Harbs <[email protected] <mailto:[email protected]>>
    >    AuthorDate: Sun Dec 22 18:39:04 2019 +0200
    > 
    >        Cleaned up ElementWrapper and HTMLElementWrapper
    >    ---
    >     .../beads/CrossBrowserFireListenerOverrideBead.as  |   4 +-
    >     .../org/apache/royale/core/ElementWrapper.as       |  41 ++---
    >     .../org/apache/royale/core/HTMLElementWrapper.as   | 204 
+--------------------
    >     .../org/apache/royale/events/KeyboardEvent.as      |   4 +-
    >     .../royale/org/apache/royale/events/MouseEvent.as  |   4 +-
    >     .../src/main/royale/mx/core/Application.as         |   8 +-
    >     .../main/royale/spark/components/Application.as    |   4 +-
    >     7 files changed, 37 insertions(+), 232 deletions(-)
    > 
    >    diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CrossBrowserFireListenerOverrideBead.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CrossBrowserFireListenerOverrideBead.as
    >    index 36db48b..98532bd 100644
    >    --- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CrossBrowserFireListenerOverrideBead.as
    >    +++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/CrossBrowserFireListenerOverrideBead.as
    >    @@ -20,7 +20,7 @@ package org.apache.royale.html.beads
    >     {
    >         import org.apache.royale.core.IBead;
    >         import org.apache.royale.core.IStrand;
    >    -      import org.apache.royale.core.HTMLElementWrapper;
    >    +      import org.apache.royale.core.ElementWrapper;
    >         COMPILE::JS  
    >           {
    >             import goog.events;
    >    @@ -87,7 +87,7 @@ package org.apache.royale.html.beads
    >                           }
    > 
    >                           e.wrapEvent(eventObject);
    >    -                      return 
HTMLElementWrapper.googFireListener(listener, e);
    >    +                      return 
ElementWrapper.googFireListener(listener, e);
    >                   }
    >         }
    >     }
    >    diff --git 
a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ElementWrapper.as
 
b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ElementWrapper.as
    >    index 58b7a64..ec7ab71 100644
    >    --- 
a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ElementWrapper.as
    >    +++ 
b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ElementWrapper.as
    >    @@ -27,6 +27,7 @@ package org.apache.royale.core
    >             import org.apache.royale.events.ElementEvents;
    >             import goog.events;
    >             import goog.events.EventTarget;
    >    +        import goog.DEBUG;
    >         }
    >         COMPILE::SWF
    >         {
    >    @@ -77,8 +78,7 @@ package org.apache.royale.core
    >                 if (!_beads)
    >                 {
    >                     _beads = new Vector.<IBead>();
    >    -            }
    >    -            
    >    +            }            
    >                 _beads.push(bead);
    >                 bead.strand = this;
    >             }
    >    @@ -115,9 +115,7 @@ package org.apache.royale.core
    >             public function removeBead(bead:IBead):IBead
    >             {
    >                 var i:uint, n:uint, value:Object;
    >    -            
    >                 n = _beads.length;
    >    -            
    >                 for (i = 0; i < n; i++)
    >                 {
    >                     value = _beads[i];
    >    @@ -125,7 +123,7 @@ package org.apache.royale.core
    >                     if (bead === value)
    >                     {
    >                         _beads.splice(i, 1);
    >    -                    
    >    +                    bead.strand = null;
    >                         return bead;
    >                     }
    >                 }
    >    @@ -173,6 +171,11 @@ package org.apache.royale.core
    >           public class ElementWrapper extends EventDispatcher implements 
IStrand
    >           {
    > 
    >    +        /**
    >    +         * @royalesuppresspublicvarwarning
    >    +         */
    >    +        static public var converterMap:Object = {};
    >    +
    >                   //--------------------------------------
    >                   //   Static Function
    >                   //--------------------------------------
    >    @@ -185,13 +188,13 @@ package org.apache.royale.core
    >              */
    >                   static public function 
fireListenerOverride(listener:Object, 
eventObject:goog.events.BrowserEvent):Boolean
    >                   {
    >    -            /**
    >    -             * For now we're adding in some just-in-case code to 
prevent conflicts with ElementWrapper. This needs to be fixed.
    >    -             */
    >                 var e:IBrowserEvent;
    >    -            if(eventObject is IBrowserEvent){
    >    -                e = eventObject as IBrowserEvent
    >    -            } else {
    >    +            var nativeEvent:Object = eventObject.getBrowserEvent();
    >    +            var converter:Object = 
converterMap[nativeEvent.constructor.name];
    >    +            if (converter)
    >    +                e = converter["convert"](nativeEvent,eventObject);
    >    +            else
    >    +            {
    >                     e = new org.apache.royale.events.BrowserEvent();
    >                     e.wrapEvent(eventObject);
    >                 }
    >    @@ -262,7 +265,7 @@ package org.apache.royale.core
    >                           {
    >                                   _beads = new Vector.<IBead>();
    >                           }
    >    -
    >    +            if (goog.DEBUG && !(bead is IBead)) throw new 
TypeError('Cannot convert '+bead+' to IBead');
    >                           _beads.push(bead);
    >                           bead.strand = this;
    >                   }
    >    @@ -274,11 +277,8 @@ package org.apache.royale.core
    >                   public function 
getBeadByType(classOrInterface:Class):IBead
    >                   {
    >                           var bead:IBead, i:uint, n:uint;
    >    -
    >                 if (!_beads) return null;
    >    -            
    >                           n = _beads.length;
    >    -
    >                           for (i = 0; i < n; i++)
    >                           {
    >                                   bead = _beads[i];
    >    @@ -299,9 +299,7 @@ package org.apache.royale.core
    >                   public function removeBead(bead:IBead):IBead
    >                   {
    >                           var i:uint, n:uint, value:Object;
    >    -
    >                           n = _beads.length;
    >    -
    >                           for (i = 0; i < n; i++)
    >                           {
    >                                   value = _beads[i];
    >    @@ -309,7 +307,6 @@ package org.apache.royale.core
    >                                   if (bead === value)
    >                                   {
    >                                           _beads.splice(i, 1);
    >    -
    >                                           return bead;
    >                                   }
    >                           }
    >    @@ -351,12 +348,12 @@ package org.apache.royale.core
    >             override public function dispatchEvent(e:Object):Boolean
    >             {
    >                 var eventType:String = "";
    >    -            if (typeof(e) === 'string')
    >    +            if (typeof(e) == 'string')
    >                 {
    >                     eventType = e as String;
    >    -                if (e === Event.CHANGE)
    >    +                if (e == "change")
    >                     {
    >    -                    e = EventUtils.createEvent(eventType);
    >    +                    e = EventUtils.createEvent(eventType, e.bubbles);
    >                     }
    >                 }
    >                 else
    >    @@ -364,7 +361,7 @@ package org.apache.royale.core
    >                     eventType = e.type;
    >                     if (ElementEvents.elementEvents[eventType])
    >                     {
    >    -                    e = EventUtils.createEvent(eventType);
    >    +                    e = EventUtils.createEvent(eventType), e.bubbles;
    >                     }
    >                 }
    >                 var source:Object = this.getActualDispatcher_(eventType);
    >    diff --git 
a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/HTMLElementWrapper.as
 
b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/HTMLElementWrapper.as
    >    index d44fb29..59e571c 100644
    >    --- 
a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/HTMLElementWrapper.as
    >    +++ 
b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/HTMLElementWrapper.as
    >    @@ -144,92 +144,13 @@ package org.apache.royale.core
    >         }
    > 
    >           COMPILE::JS
    >    -      public class HTMLElementWrapper extends EventDispatcher 
implements IStrand
    >    +      public class HTMLElementWrapper extends ElementWrapper
    >           {
    > 
    >    -              //--------------------------------------
    >    -              //   Static Function
    >    -              //--------------------------------------
    >    -
    >    -        /**
    >    -         * @param listener The listener object to call 
{goog.events.Listener}.
    >    -         * @param eventObject The event object to pass to the 
listener.
    >    -         * @return Result of listener.
    >    -         * @royaleignorecoercion 
org.apache.royale.events.IBrowserEvent
    >    -         */
    >    -              static public function 
fireListenerOverride(listener:Object, 
eventObject:goog.events.BrowserEvent):Boolean
    >    -              {
    >    -            /**
    >    -             * For now we're adding in some just-in-case code to 
prevent conflicts with ElementWrapper. This needs to be fixed.
    >    -             */
    >    -            var e:IBrowserEvent;
    >    -            if(eventObject is IBrowserEvent){
    >    -                e = eventObject as IBrowserEvent
    >    -            } else {
    >    -                var nativeEvent:Object = 
eventObject.getBrowserEvent();
    >    -                var converter:Object = 
converterMap[nativeEvent.constructor.name];
    >    -                if (converter)
    >    -                    e = converter["convert"](nativeEvent,eventObject);
    >    -                else
    >    -                {
    >    -                    e = new org.apache.royale.events.BrowserEvent();
    >    -                    e.wrapEvent(eventObject);
    >    -                }
    >    -            }
    >    -                      return 
HTMLElementWrapper.googFireListener(listener, e);
    >    -              }
    >    -        
    >    -        /**
    >    -         * @royalesuppresspublicvarwarning
    >    -         */
    >    -        static public var converterMap:Object = {};
    >    -
    >    -        /**
    >    -         * Static initializer
    >    -         */
    >    -              static public function installOverride():Boolean
    >    -              {
    >    -                      HTMLElementWrapper.googFireListener = 
goog.events.fireListener;
    >    -                      goog.events.fireListener = 
HTMLElementWrapper.fireListenerOverride;
    >    -                      return true;
    >    -              }
    >    -
    >    -        //--------------------------------------
    >    -        //   Static Property
    >    -        //--------------------------------------
    >    -        
    >    -        /**
    >    -         * The original fireListener.
    >    -         * 
    >    -         *  @royalesuppresspublicvarwarning
    >    -         */
    >    -        static public var googFireListener:Function;
    >    -        
    >    -        /**
    >    -         * The properties that triggers the static initializer.
    >    -         * Note, in JS, this property has to be declared
    >    -         * after the installOverride.
    >    -         * 
    >    -         *  @royalesuppresspublicvarwarning
    >    -         */
    >    -        static public var installedOverride:Boolean = 
installOverride();
    > 
    >                   //--------------------------------------
    >                   //   Property
    >                   //--------------------------------------
    >    -
    >    -              private var _element:WrappedHTMLElement;
    >    -        
    >    -        public function get element():WrappedHTMLElement
    >    -        {
    >    -            return _element;
    >    -        }
    >    -        
    >    -        public function set element(value:WrappedHTMLElement):void
    >    -        {
    >    -            _element = value;
    >    -            _element.royale_wrapper = this;
    >    -        }
    > 
    >             /**
    >              * allow access from overrides
    >    @@ -270,8 +191,6 @@ package org.apache.royale.core
    >                 }
    >             }
    > 
    >    -              private var _beads:Array;
    >    -        
    >                   //--------------------------------------
    >                   //   Function
    >                   //--------------------------------------
    >    @@ -280,85 +199,15 @@ package org.apache.royale.core
    >              * @param bead The new bead.
    >              * @royaleignorecoercion org.apache.royale.core.IBeadModel 
    >              */
    >    -              public function addBead(bead:IBead):void
    >    +              override public function addBead(bead:IBead):void
    >                   {
    >    -                      if (!_beads)
    >    -                      {
    >    -                              _beads = [];
    >    -                      }
    >    -            if (goog.DEBUG && !(bead is IBead)) throw new 
TypeError('Cannot convert '+bead+' to IBead')
    >    -                      _beads.push(bead);
    >    -
    >    -                      if (bead is IBeadModel)
    >    +              if (bead is IBeadModel)
    >                           {
    >                                   _model = bead as IBeadModel;
    >                           }
    >    -
    >    -                      bead.strand = this;
    >    -              }
    >    -
    >    -        /**
    >    -         * @param classOrInterface The requested bead type.
    >    -         * @return The bead.
    >    -         */
    >    -              public function 
getBeadByType(classOrInterface:Class):IBead
    >    -              {
    >    -                      var bead:IBead, i:uint, n:uint;
    >    -
    >    -            if (!_beads) return null;
    >    -            
    >    -                      n = _beads.length;
    >    -
    >    -                      for (i = 0; i < n; i++)
    >    -                      {
    >    -                              bead = _beads[i];
    >    -
    >    -                              if (bead is classOrInterface)
    >    -                              {
    >    -                                      return bead;
    >    -                              }
    >    -                      }
    >    -
    >    -                      return null;
    >    +              super.addBead(bead);
    >                   }
    >    -
    >    -              /**
    >    -               * @param bead The bead to remove.
    >    -               * @return The bead.
    >    -               */
    >    -              public function removeBead(bead:IBead):IBead
    >    -              {
    >    -                      var i:uint, n:uint, value:Object;
    >    -
    >    -                      n = _beads.length;
    >    -
    >    -                      for (i = 0; i < n; i++)
    >    -                      {
    >    -                              value = _beads[i];
    >    -
    >    -                              if (bead === value)
    >    -                              {
    >    -                                      _beads.splice(i, 1);
    >    -                    bead.strand = null;
    >    -                                      return bead;
    >    -                              }
    >    -                      }
    >    -
    >    -                      return null;
    >    -              }
    >    -        
    >    -        override public function addEventListener(type:String, 
handler:Function, opt_capture:Boolean = false, opt_handlerScope:Object = 
null):void
    >    -        {
    >    -            var source:Object = getActualDispatcher_(type);
    >    -            goog.events.listen(source, type, handler);
    >    -        }
    >    -        
    >    -        override public function removeEventListener(type:String, 
handler:Function, opt_capture:Boolean = false, opt_handlerScope:Object = 
null):void
    >    -        {
    >    -            var source:Object = getActualDispatcher_(type);
    >    -            goog.events.unlisten(source, type, handler);
    >    -        }
    >    -        
    >    +                        
    >             private function getActualDispatcher_(type:String):Object
    >             {
    >                 var source:Object = this;
    >    @@ -368,48 +217,7 @@ package org.apache.royale.core
    >                 }
    >                 return source;
    >             }
    >    -        
    >    -        override public function hasEventListener(type:String):Boolean
    >    -        {
    >    -            var source:Object = this.getActualDispatcher_(type);
    >    -            
    >    -            return goog.events.hasListener(source, type);
    >    -        }
    >    -
    >    -        /**
    >    -         * @royaleignorecoercion String
    >    -         */
    >    -        override public function dispatchEvent(e:Object):Boolean
    >    -        {
    >    -            var eventType:String = "";
    >    -            if (typeof(e) === 'string')
    >    -            {
    >    -                eventType = e as String;
    >    -                if (e === org.apache.royale.events.Event.CHANGE)
    >    -                {
    >    -                    e = EventUtils.createEvent(eventType, e.bubbles);
    >    -                }
    >    -            }
    >    -            else
    >    -            {
    >    -                eventType = e.type;
    >    -                if (ElementEvents.elementEvents[eventType])
    >    -                {
    >    -                    e = EventUtils.createEvent(eventType, e.bubbles);
    >    -                }
    >    -            }
    >    -            var source:Object = this.getActualDispatcher_(eventType);
    >    -                      if (e.bubbles) {
    >    -                              return dispatchBubblingEvent(source, e);
    >    -                      }
    >    -            if (source == this)
    >    -            {
    >    -                return super.dispatchEvent(e);
    >    -            }
    >    -            
    >    -            return source.dispatchEvent(e);
    >    -        }
    >    -              
    >    +                      
    >             /**
    >              * @royaleignorecoercion 
org.apache.royale.events.IEventDispatcher
    >              */
    >    diff --git 
a/frameworks/projects/Core/src/main/royale/org/apache/royale/events/KeyboardEvent.as
 
b/frameworks/projects/Core/src/main/royale/org/apache/royale/events/KeyboardEvent.as
    >    index bbcaa1d..8719a1e 100644
    >    --- 
a/frameworks/projects/Core/src/main/royale/org/apache/royale/events/KeyboardEvent.as
    >    +++ 
b/frameworks/projects/Core/src/main/royale/org/apache/royale/events/KeyboardEvent.as
    >    @@ -21,7 +21,7 @@ package org.apache.royale.events
    >         COMPILE::JS
    >         {
    >             import goog.events.BrowserEvent;
    >    -        import org.apache.royale.core.HTMLElementWrapper;
    >    +        import org.apache.royale.core.ElementWrapper;
    >                   import org.apache.royale.events.Event;
    >             import org.apache.royale.events.utils.KeyboardEventConverter;
    >         }
    >    @@ -314,7 +314,7 @@ package org.apache.royale.events
    >             COMPILE::JS
    >             public static function setupConverter():Boolean
    >             {
    >    -            HTMLElementWrapper.converterMap["KeyboardEvent"] = 
KeyboardEventConverter;
    >    +            ElementWrapper.converterMap["KeyboardEvent"] = 
KeyboardEventConverter;
    >                 return true;
    >             }
    > 
    >    diff --git 
a/frameworks/projects/Core/src/main/royale/org/apache/royale/events/MouseEvent.as
 
b/frameworks/projects/Core/src/main/royale/org/apache/royale/events/MouseEvent.as
    >    index 0d30f31..33bb052 100644
    >    --- 
a/frameworks/projects/Core/src/main/royale/org/apache/royale/events/MouseEvent.as
    >    +++ 
b/frameworks/projects/Core/src/main/royale/org/apache/royale/events/MouseEvent.as
    >    @@ -32,7 +32,7 @@ package org.apache.royale.events
    > 
    >             import goog.events.BrowserEvent;
    > 
    >    -        import org.apache.royale.core.HTMLElementWrapper;
    >    +        import org.apache.royale.core.ElementWrapper;
    >             import org.apache.royale.events.Event;
    >             import org.apache.royale.events.utils.MouseEventConverter;
    >         }
    >    @@ -838,7 +838,7 @@ package org.apache.royale.events
    > 
    >             public static function setupConverter():Boolean
    >             {
    >    -            HTMLElementWrapper.converterMap["MouseEvent"] = 
MouseEventConverter;
    >    +            ElementWrapper.converterMap["MouseEvent"] = 
MouseEventConverter;
    >                 _useNativeConstructor = typeof window.MouseEvent == 
'function';
    >                 return true;
    >             }
    >    diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/core/Application.as 
b/frameworks/projects/MXRoyale/src/main/royale/mx/core/Application.as
    >    index 2e79aec..525bed2 100644
    >    --- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/core/Application.as
    >    +++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/core/Application.as
    >    @@ -66,7 +66,7 @@ import mx.managers.FocusManager;
    >     import mx.managers.ISystemManager;
    > 
    >     COMPILE::JS {
    >    -    import org.apache.royale.core.HTMLElementWrapper;
    >    +    import org.apache.royale.core.ElementWrapper;
    >         import org.apache.royale.events.ElementEvents;
    >     }
    > 
    >    @@ -632,9 +632,9 @@ public class Application extends Container 
implements IStrand, IParent, IEventDi
    >           COMPILE::JS
    >           public function initializeApplication():void
    >           {
    >    -        HTMLElementWrapper.converterMap["MouseEvent"] = 
MouseEventConverter;
    >    -        HTMLElementWrapper.converterMap["KeyboardEvent"] = 
KeyboardEventConverter;
    >    -        HTMLElementWrapper.converterMap["FocusEvent"] = 
FocusEventConverter;
    >    +        ElementWrapper.converterMap["MouseEvent"] = 
MouseEventConverter;
    >    +        ElementWrapper.converterMap["KeyboardEvent"] = 
KeyboardEventConverter;
    >    +        ElementWrapper.converterMap["FocusEvent"] = 
FocusEventConverter;
    >             addEventListener(KeyboardEvent.KEY_DOWN, 
keyDownForCapsLockHandler);
    > 
    >             initManagers();
    >    diff --git 
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/Application.as
 
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/Application.as
    >    index a840ea3..0a85538 100644
    >    --- 
a/frameworks/projects/SparkRoyale/src/main/royale/spark/components/Application.as
    >    +++ 
b/frameworks/projects/SparkRoyale/src/main/royale/spark/components/Application.as
    >    @@ -67,7 +67,7 @@ import mx.events.utils.MouseEventConverter;
    >     import mx.managers.ISystemManager;
    > 
    >     COMPILE::JS {
    >    -    import org.apache.royale.core.HTMLElementWrapper;
    >    +    import org.apache.royale.core.ElementWrapper;
    >     }
    > 
    >     import org.apache.royale.binding.ContainerDataBinding;
    >    @@ -324,7 +324,7 @@ public class Application extends 
SkinnableContainer implements IStrand, IParent,
    > 
    >             COMPILE::JS
    >             {
    >    -            HTMLElementWrapper.converterMap["MouseEvent"] = 
MouseEventConverter;
    >    +            ElementWrapper.converterMap["MouseEvent"] = 
MouseEventConverter;
    >             }
    >         }
    
    

Reply via email to