{"version":3,"sources":["key_events.js"],"names":[],"mappings":"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","file":"angular2/src/render/dom/events/key_events.es6","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"]}