{"version":3,"sources":["property_binding_parser.js"],"names":[],"mappings":"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","file":"angular2/src/render/dom/compiler/property_binding_parser.js","sourcesContent":["import {isPresent, RegExpWrapper} from 'angular2/src/facade/lang';\nimport {MapWrapper} from 'angular2/src/facade/collection';\n\nimport {Parser} from 'angular2/change_detection';\n\nimport {CompileStep} from './compile_step';\nimport {CompileElement} from './compile_element';\nimport {CompileControl} from './compile_control';\n\nimport {dashCaseToCamelCase} from '../util';\n\n// Group 1 = \"bind-\"\n// Group 2 = \"var-\" or \"#\"\n// Group 3 = \"on-\"\n// Group 4 = the identifier after \"bind-\", \"var-/#\", or \"on-\"\n// Group 5 = idenitifer inside square braces\n// Group 6 = identifier inside parenthesis\nvar BIND_NAME_REGEXP = RegExpWrapper.create(\n    '^(?:(?:(?:(bind-)|(var-|#)|(on-))(.+))|\\\\[([^\\\\]]+)\\\\]|\\\\(([^\\\\)]+)\\\\))$');\n\n/**\n * Parses the property bindings on a single element.\n */\nexport class PropertyBindingParser extends CompileStep {\n  _parser:Parser;\n\n  constructor(parser:Parser) {\n    super();\n    this._parser = parser;\n  }\n\n  process(parent:CompileElement, current:CompileElement, control:CompileControl) {\n    var attrs = current.attrs();\n    var newAttrs = MapWrapper.create();\n\n    MapWrapper.forEach(attrs, (attrValue, attrName) => {\n      var bindParts = RegExpWrapper.firstMatch(BIND_NAME_REGEXP, attrName);\n      if (isPresent(bindParts)) {\n        if (isPresent(bindParts[1])) {\n          // match: bind-prop\n          this._bindProperty(bindParts[4], attrValue, current, newAttrs);\n        } else if (isPresent(bindParts[2])) {\n          // match: var-name / var-name=\"iden\" / #name / #name=\"iden\"\n          var identifier = bindParts[4];\n          var value = attrValue == '' ? '\\$implicit' : attrValue;\n          this._bindVariable(identifier, value, current, newAttrs);\n        } else if (isPresent(bindParts[3])) {\n          // match: on-event\n          this._bindEvent(bindParts[4], attrValue, current, newAttrs);\n        } else if (isPresent(bindParts[5])) {\n          // match: [prop]\n          this._bindProperty(bindParts[5], attrValue, current, newAttrs);\n        } else if (isPresent(bindParts[6])) {\n          // match: (event)\n          this._bindEvent(bindParts[6], attrValue, current, newAttrs);\n        }\n      } else {\n        var expr = this._parser.parseInterpolation(\n          attrValue, current.elementDescription\n        );\n        if (isPresent(expr)) {\n          this._bindPropertyAst(attrName, expr, current, newAttrs);\n        }\n      }\n    });\n\n    MapWrapper.forEach(newAttrs, (attrValue, attrName) => {\n      MapWrapper.set(attrs, attrName, attrValue);\n    });\n  }\n\n  _bindVariable(identifier, value, current:CompileElement, newAttrs) {\n    current.bindElement().bindVariable(dashCaseToCamelCase(identifier), value);\n    MapWrapper.set(newAttrs, identifier, value);\n  }\n\n  _bindProperty(name, expression, current:CompileElement, newAttrs) {\n    this._bindPropertyAst(\n      name,\n      this._parser.parseBinding(expression, current.elementDescription),\n      current,\n      newAttrs\n    );\n  }\n\n  _bindPropertyAst(name, ast, current:CompileElement, newAttrs) {\n    var binder = current.bindElement();\n    var camelCaseName = dashCaseToCamelCase(name);\n    binder.bindProperty(camelCaseName, ast);\n    MapWrapper.set(newAttrs, name, ast.source);\n  }\n\n  _bindEvent(name, expression, current:CompileElement, newAttrs) {\n    current.bindElement().bindEvent(\n      dashCaseToCamelCase(name), this._parser.parseAction(expression, current.elementDescription)\n    );\n    // Don't detect directives for event names for now,\n    // so don't add the event name to the CompileElement.attrs\n  }\n\n}\n"]}