library angular2.src.web_workers.event_serializer; import 'dart:core'; import 'dart:html'; // List of all elements with HTML value attribute. // Taken from: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes final Set NODES_WITH_VALUE = new Set.from([ "input", "select", "option", "button", "li", "meter", "progress", "param" ]); Map serializeGenericEvent(dynamic e) { var serialized = new Map(); serialized['bubbles'] = e.bubbles; serialized['cancelable'] = e.cancelable; serialized['defaultPrevented'] = e.defaultPrevented; serialized['eventPhase'] = e.eventPhase; serialized['timeStamp'] = e.timeStamp; serialized['type'] = e.type; return serialized; } // TODO(jteplitz602): Allow users to specify the properties they need rather than always // adding value #3374 Map serializeEventWithTarget(dynamic e) { var serializedEvent = serializeGenericEvent(e); return addTarget(e, serializedEvent); } Map serializeMouseEvent(dynamic e) { var serialized = new Map(); serialized['altKey'] = e.altKey; serialized['bubbles'] = e.bubbles; serialized['button'] = e.button; serialized['cancelable'] = e.cancelable; serialized['client'] = serializePoint(e.client); serialized['ctrlKey'] = e.ctrlKey; serialized['defaultPrevented'] = e.defaultPrevented; serialized['detail'] = e.detail; serialized['eventPhase'] = e.eventPhase; serialized['layer'] = serializePoint(e.layer); serialized['metaKey'] = e.metaKey; serialized['offset'] = serializePoint(e.offset); serialized['page'] = serializePoint(e.page); serialized['region'] = e.region; serialized['screen'] = serializePoint(e.screen); serialized['shiftKey'] = e.shiftKey; serialized['timeStamp'] = e.timeStamp; serialized['type'] = e.type; return serialized; } Map serializePoint(Point point) { var serialized = new Map(); serialized['magnitude'] = point.magnitude; serialized['x'] = point.x; serialized['y'] = point.y; return serialized; } Map serializeKeyboardEvent(dynamic e) { var serialized = new Map(); serialized['altKey'] = e.altKey; serialized['bubbles'] = e.bubbles; serialized['cancelable'] = e.cancelable; serialized['charCode'] = e.charCode; serialized['ctrlKey'] = e.ctrlKey; serialized['defaultPrevented'] = e.defaultPrevented; serialized['detail'] = e.detail; serialized['eventPhase'] = e.eventPhase; serialized['keyCode'] = e.keyCode; serialized['keyLocation'] = e.keyLocation; serialized['location'] = e.location; serialized['repeat'] = e.repeat; serialized['shiftKey'] = e.shiftKey; serialized['timeStamp'] = e.timeStamp; serialized['type'] = e.type; //return addTarget(e, serialized); return serialized; } // TODO(jteplitz602): #3374. See above. Map addTarget( dynamic e, Map serializedEvent) { if (NODES_WITH_VALUE.contains(e.target.tagName.toLowerCase())) { serializedEvent['target'] = {'value': e.target.value}; if (e.target is InputElement) { serializedEvent['target']['files'] = e.target.files; } } return serializedEvent; }