11library angular2.src.web_workers.event_serializer;
22
3- import 'package:angular2/src/core/facade/collection.dart' ;
4- // TODO(jteplitz602): Remove Mirrors from serialization #3348
5- @MirrorsUsed (
6- symbols: "altKey, bubbles, button, cancelable, client, ctrlKey, " +
7- "defaultPrevented, detail, eventPhase, layer, metaKey, offset, page, region, screen, " +
8- "shiftKey, timeStamp, type, magnitude, x, y, charCode, keyCode, keyLocation, location, repeat" )
9- import 'dart:mirrors' ;
103import 'dart:core' ;
114import 'dart:html' ;
125
13- // These Maps can't be const due to a dartj2 bug (see http://github.com/dart-lang/sdk/issues/21825)
14- // Once that bug is fixed these should be const
15- final Map MOUSE_EVENT_PROPERTIES = {
16- #altKey: bool ,
17- #bubbles: bool ,
18- #button: int ,
19- #cancelable: bool ,
20- #client: Point ,
21- #ctrlKey: bool ,
22- #defaultPrevented: bool ,
23- #detail: int ,
24- #eventPhase: int ,
25- #layer: Point ,
26- #metaKey: bool ,
27- #offset: Point ,
28- #page: Point ,
29- #region: String ,
30- #screen: Point ,
31- #shiftKey: bool ,
32- #timeStamp: int ,
33- #type: String
34- };
35-
36- final Map KEYBOARD_EVENT_PROPERTIES = {
37- #altKey: bool ,
38- #bubbles: bool ,
39- #cancelable: bool ,
40- #charCode: int ,
41- #ctrlKey: bool ,
42- #defaultPrevented: bool ,
43- #detail: int ,
44- #eventPhase: int ,
45- #keyCode: int ,
46- #keyLocation: int ,
47- #layer: Point ,
48- #location: int ,
49- #repeat: bool ,
50- #shiftKey: bool ,
51- #timeStamp: int ,
52- #type: String
53- };
54-
55- final Map EVENT_PROPERTIES = {
56- #bubbles: bool ,
57- #cancelable: bool ,
58- #defaultPrevented: bool ,
59- #eventPhase: int ,
60- #timeStamp: int ,
61- #type: String
62- };
63-
646// List of all elements with HTML value attribute.
657// Taken from: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes
668final Set <String > NODES_WITH_VALUE = new Set <String >.from ([
@@ -75,23 +17,74 @@ final Set<String> NODES_WITH_VALUE = new Set<String>.from([
7517]);
7618
7719Map <String , dynamic > serializeGenericEvent (dynamic e) {
78- return serializeEvent (e, EVENT_PROPERTIES );
20+ var serialized = new Map <String , dynamic >();
21+ serialized['bubbles' ] = e.bubbles;
22+ serialized['cancelable' ] = e.cancelable;
23+ serialized['defaultPrevented' ] = e.defaultPrevented;
24+ serialized['eventPhase' ] = e.eventPhase;
25+ serialized['timeStamp' ] = e.timeStamp;
26+ serialized['type' ] = e.type;
27+ return serialized;
7928}
8029
8130// TODO(jteplitz602): Allow users to specify the properties they need rather than always
8231// adding value #3374
8332Map <String , dynamic > serializeEventWithTarget (dynamic e) {
84- var serializedEvent = serializeEvent (e, EVENT_PROPERTIES );
33+ var serializedEvent = serializeGenericEvent (e );
8534 return addTarget (e, serializedEvent);
8635}
8736
8837Map <String , dynamic > serializeMouseEvent (dynamic e) {
89- return serializeEvent (e, MOUSE_EVENT_PROPERTIES );
38+ var serialized = new Map <String , dynamic >();
39+ serialized['altKey' ] = e.altKey;
40+ serialized['bubbles' ] = e.bubbles;
41+ serialized['button' ] = e.button;
42+ serialized['cancelable' ] = e.cancelable;
43+ serialized['client' ] = serializePoint (e.client);
44+ serialized['ctrlKey' ] = e.ctrlKey;
45+ serialized['defaultPrevented' ] = e.defaultPrevented;
46+ serialized['detail' ] = e.detail;
47+ serialized['eventPhase' ] = e.eventPhase;
48+ serialized['layer' ] = serializePoint (e.layer);
49+ serialized['metaKey' ] = e.metaKey;
50+ serialized['offset' ] = serializePoint (e.offset);
51+ serialized['page' ] = serializePoint (e.page);
52+ serialized['region' ] = e.region;
53+ serialized['screen' ] = serializePoint (e.screen);
54+ serialized['shiftKey' ] = e.shiftKey;
55+ serialized['timeStamp' ] = e.timeStamp;
56+ serialized['type' ] = e.type;
57+ return serialized;
58+ }
59+
60+ Map <String , dynamic > serializePoint (Point point) {
61+ var serialized = new Map <String , dynamic >();
62+ serialized['magnitude' ] = point.magnitude;
63+ serialized['x' ] = point.x;
64+ serialized['y' ] = point.y;
65+ return serialized;
9066}
9167
9268Map <String , dynamic > serializeKeyboardEvent (dynamic e) {
93- var serializedEvent = serializeEvent (e, KEYBOARD_EVENT_PROPERTIES );
94- return addTarget (e, serializedEvent);
69+ var serialized = new Map <String , dynamic >();
70+ serialized['altKey' ] = e.altKey;
71+ serialized['bubbles' ] = e.bubbles;
72+ serialized['cancelable' ] = e.cancelable;
73+ serialized['charCode' ] = e.charCode;
74+ serialized['ctrlKey' ] = e.ctrlKey;
75+ serialized['defaultPrevented' ] = e.defaultPrevented;
76+ serialized['detail' ] = e.detail;
77+ serialized['eventPhase' ] = e.eventPhase;
78+ serialized['keyCode' ] = e.keyCode;
79+ serialized['keyLocation' ] = e.keyLocation;
80+ serialized['layer' ] = serializePoint (e.layer);
81+ serialized['location' ] = e.location;
82+ serialized['repeat' ] = e.repeat;
83+ serialized['shiftKey' ] = e.shiftKey;
84+ serialized['timeStamp' ] = e.timeStamp;
85+ serialized['type' ] = e.type;
86+ //return addTarget(e, serialized);
87+ return serialized;
9588}
9689
9790// TODO(jteplitz602): #3374. See above.
@@ -105,24 +98,3 @@ Map<String, dynamic> addTarget(
10598 }
10699 return serializedEvent;
107100}
108-
109- Map <String , dynamic > serializeEvent (dynamic e, Map <Symbol , Type > PROPERTIES ) {
110- var serialized = StringMapWrapper .create ();
111- var mirror = reflect (e);
112- PROPERTIES .forEach ((property, type) {
113- var value = mirror.getField (property).reflectee;
114- var propertyName = MirrorSystem .getName (property);
115- if (type == int || type == bool || type == String ) {
116- serialized[propertyName] = value;
117- } else if (type == Point ) {
118- var point = reflect (value);
119- serialized[propertyName] = {
120- 'magnitude' : point.getField (#magnitude).reflectee,
121- 'x' : point.getField (#x).reflectee,
122- 'y' : point.getField (#y).reflectee
123- };
124- }
125- });
126-
127- return serialized;
128- }
0 commit comments