{"version":3,"sources":["key_events.js"],"names":[],"mappings":"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","file":"angular2/src/render/dom/events/key_events.js","sourcesContent":["import {DOM} from 'angular2/src/dom/dom_adapter';\nimport {isPresent, isBlank, StringWrapper, RegExpWrapper, BaseException, NumberWrapper} from 'angular2/src/facade/lang';\nimport {StringMapWrapper, ListWrapper} from 'angular2/src/facade/collection';\nimport {EventManagerPlugin} from './event_manager';\n\nvar modifierKeys = ['alt', 'control', 'meta', 'shift'];\nvar modifierKeyGetters = {\n  'alt': (event) => event.altKey,\n  'control': (event) => event.ctrlKey,\n  'meta': (event) => event.metaKey,\n  'shift': (event) => event.shiftKey\n}\n\nexport class KeyEventsPlugin extends EventManagerPlugin {\n  constructor() {\n    super();\n  }\n\n  supports(eventName: string): boolean {\n    return isPresent(KeyEventsPlugin.parseEventName(eventName));\n  }\n\n  addEventListener(element, eventName: string, handler: Function,\n      shouldSupportBubble: boolean) {\n    var parsedEvent = KeyEventsPlugin.parseEventName(eventName);\n\n    var outsideHandler = KeyEventsPlugin.eventCallback(element, shouldSupportBubble,\n      StringMapWrapper.get(parsedEvent, 'fullKey'), handler, this.manager.getZone());\n\n    this.manager.getZone().runOutsideAngular(() => {\n      DOM.on(element, StringMapWrapper.get(parsedEvent, 'domEventName'), outsideHandler);\n    });\n  }\n\n  static parseEventName(eventName: string) /* {'domEventName': string, 'fullKey': string} */ {\n    eventName = eventName.toLowerCase();\n    var parts = eventName.split('.');\n    var domEventName = ListWrapper.removeAt(parts, 0);\n    if ((parts.length === 0) || !(StringWrapper.equals(domEventName, 'keydown') || StringWrapper.equals(domEventName, 'keyup'))) {\n      return null;\n    }\n    var key = ListWrapper.removeLast(parts);\n\n    var fullKey = '';\n    ListWrapper.forEach(modifierKeys, (modifierName) => {\n      if (ListWrapper.contains(parts, modifierName)) {\n        ListWrapper.remove(parts, modifierName);\n        fullKey += modifierName + '.';\n      }\n    });\n    fullKey += key;\n\n    if (parts.length != 0 || key.length === 0) {\n      // returning null instead of throwing to let another plugin process the event\n      return null;\n    }\n\n    return {\n      'domEventName': domEventName,\n      'fullKey': fullKey\n    };\n  }\n\n  static getEventFullKey(event): string {\n    var fullKey = '';\n    var key = DOM.getEventKey(event);\n    key = key.toLowerCase();\n    if (StringWrapper.equals(key, ' ')) {\n      key = 'space'; // for readability\n    } else if (StringWrapper.equals(key, '.')) {\n      key = 'dot'; // because '.' is used as a separator in event names\n    }\n    ListWrapper.forEach(modifierKeys, (modifierName) => {\n      if (modifierName != key) {\n        var modifierGetter = StringMapWrapper.get(modifierKeyGetters, modifierName);\n        if (modifierGetter(event)) {\n          fullKey += modifierName + '.';\n        }\n      }\n    });\n    fullKey += key;\n    return fullKey;\n  }\n\n  static eventCallback(element, shouldSupportBubble, fullKey, handler, zone) {\n    return (event) => {\n        var correctElement = shouldSupportBubble || event.target === element;\n        if (correctElement && KeyEventsPlugin.getEventFullKey(event) === fullKey) {\n          zone.run(() => handler(event));\n        }\n      };\n  }\n}\n"]}