{"version":3,"sources":["form_builder.js"],"names":[],"mappings":"AAAA,KAAO,EAAC,gBAAe;AAAG,YAAU;AAAG,KAAG,CAAC,KAAO,iCAA+B,CAAC;AAClF,KAAO,EAAC,SAAQ,CAAC,KAAO,2BAAyB,CAAC;AAClD,UAAY,YAAU,CAAA,IAAO,UAAQ,CAAC;AAwBtC,KAAO,MAAM,YAAU;AACrB,MAAI,CAAE,cAAa,CAAG,CAAA,KAAI,EAAI,KAAG,CAA4B;AAC3D,AAAI,MAAA,CAAA,QAAO,EAAI,CAAA,IAAG,gBAAgB,AAAC,CAAC,cAAa,CAAC,CAAC;AACnD,AAAI,MAAA,CAAA,SAAQ,EAAI,CAAA,SAAQ,AAAC,CAAC,KAAI,CAAC,CAAA,CAAI,CAAA,gBAAe,IAAI,AAAC,CAAC,KAAI,CAAG,YAAU,CAAC,CAAA,CAAI,KAAG,CAAC;AAClF,AAAI,MAAA,CAAA,SAAQ,EAAI,CAAA,SAAQ,AAAC,CAAC,KAAI,CAAC,CAAA,CAAI,CAAA,gBAAe,IAAI,AAAC,CAAC,KAAI,CAAG,YAAU,CAAC,CAAA,CAAI,KAAG,CAAC;AAElF,OAAI,SAAQ,AAAC,CAAC,SAAQ,CAAC,CAAG;AACxB,WAAO,IAAI,CAAA,WAAU,aAAa,AAAC,CAAC,QAAO,CAAG,UAAQ,CAAG,UAAQ,CAAC,CAAC;IACrE,KAAO;AACL,WAAO,IAAI,CAAA,WAAU,aAAa,AAAC,CAAC,QAAO,CAAG,UAAQ,CAAC,CAAC;IAC1D;AAAA,EACF;AAAA,AAEA,QAAM,CAAE,KAAI,CAAG,CAAA,SAAQ,EAAa,KAAG,CAAuB;AAC5D,OAAI,SAAQ,AAAC,CAAC,SAAQ,CAAC,CAAG;AACxB,WAAO,IAAI,CAAA,WAAU,QAAQ,AAAC,CAAC,KAAI,CAAG,UAAQ,CAAC,CAAC;IAClD,KAAO;AACL,WAAO,IAAI,CAAA,WAAU,QAAQ,AAAC,CAAC,KAAI,CAAC,CAAC;IACvC;AAAA,EACF;AAAA,AAEA,MAAI,CAAE,cAAa,AAAK,CAAG,CAAA,SAAQ,EAAa,KAAG,CAA6B;AAC9E,AAAI,MAAA,CAAA,QAAO,EAAI,CAAA,WAAU,IAAI,AAAC,CAAC,cAAa,CAAG,EAAC,CAAA,IAAM,CAAA,IAAG,eAAe,AAAC,CAAC,CAAA,CAAC,CAAC,CAAC;AAC7E,OAAI,SAAQ,AAAC,CAAC,SAAQ,CAAC,CAAG;AACxB,WAAO,IAAI,CAAA,WAAU,aAAa,AAAC,CAAC,QAAO,CAAG,UAAQ,CAAC,CAAC;IAC1D,KAAO;AACL,WAAO,IAAI,CAAA,WAAU,aAAa,AAAC,CAAC,QAAO,CAAC,CAAC;IAC/C;AAAA,EACF;AAAA,AAEA,gBAAc,CAAE,cAAa,CAAG;AAC9B,AAAI,MAAA,CAAA,QAAO,EAAI,GAAC,CAAC;AACjB,mBAAe,QAAQ,AAAC,CAAC,cAAa,CAAG,EAAC,aAAY,CAAG,CAAA,WAAU,IAAM;AACvE,aAAO,CAAE,WAAU,CAAC,EAAI,CAAA,IAAG,eAAe,AAAC,CAAC,aAAY,CAAC,CAAC;IAC5D,CAAC,CAAC;AACF,SAAO,SAAO,CAAC;EACjB;AAAA,AAEA,eAAa,CAAE,aAAY,CAAG;AAC5B,OAAI,aAAY,WAAa,CAAA,WAAU,QAAQ,CAAA,EAC7C,CAAA,aAAY,WAAa,CAAA,WAAU,aAAa,CAAA,EAChD,CAAA,aAAY,WAAa,CAAA,WAAU,aAAa,CAAG;AACnD,WAAO,cAAY,CAAC;IAEtB,KAAO,KAAI,WAAU,OAAO,AAAC,CAAC,aAAY,CAAC,CAAG;AAC5C,AAAI,QAAA,CAAA,KAAI,EAAI,CAAA,WAAU,IAAI,AAAC,CAAC,aAAY,CAAG,EAAA,CAAC,CAAC;AAC7C,AAAI,QAAA,CAAA,SAAQ,EAAI,CAAA,aAAY,OAAO,EAAI,EAAA,CAAA,CAAI,CAAA,aAAY,CAAE,CAAA,CAAC,EAAI,KAAG,CAAC;AAClE,WAAO,CAAA,IAAG,QAAQ,AAAC,CAAC,KAAI,CAAG,UAAQ,CAAC,CAAC;IAEvC,KAAO;AACL,WAAO,CAAA,IAAG,QAAQ,AAAC,CAAC,aAAY,CAAC,CAAC;IACpC;AAAA,EACF;AAAA,AACF;AAAA,AA/EA,KAAK,eAAe,AAAC,6CACb,EAAC,GAAE,CAAG,UAAS,AAAD,CAAG;AAAC,gBAsCC,QAAO,GAtCe;EAAC,CAAC,CAAC,CAAC;AADrD,KAAK,eAAe,AAAC,2CACb,EAAC,GAAE,CAAG,UAAS,AAAD,CAAG;AAAC,YA8CH,IAAG,IAAa,QAAO,GA9CG;EAAC,CAAC,CAAC,CAAC;AA+ErD","file":"angular2/src/forms/form_builder.es6","sourcesContent":["import {StringMapWrapper, ListWrapper, List} from 'angular2/src/facade/collection';\nimport {isPresent} from 'angular2/src/facade/lang';\nimport * as modelModule from './model';\n\n\n/**\n * Creates a form object from a user-specified configuration.\n *\n * # Example\n *\n * This example creates a {@link ControlGroup} that consists of a `login` {@link Control}, and a nested \n * {@link ControlGroup} that defines a `password` and a `passwordConfirmation` {@link Control}.\n *\n * ```\n *  var loginForm = builder.group({\n *    login: [\"\", Validators.required],\n *\n *    passwordRetry: builder.group({\n *      password: [\"\", Validators.required],\n *      passwordConfirmation: [\"\", Validators.required]\n *    })\n *  });\n *\n *  ```\n * @exportedAs angular2/forms\n */\nexport class FormBuilder {\n  group(controlsConfig, extra = null):modelModule.ControlGroup {\n    var controls = this._reduceControls(controlsConfig);\n    var optionals = isPresent(extra) ? StringMapWrapper.get(extra, \"optionals\") : null;\n    var validator = isPresent(extra) ? StringMapWrapper.get(extra, \"validator\") : null;\n\n    if (isPresent(validator)) {\n      return new modelModule.ControlGroup(controls, optionals, validator);\n    } else {\n      return new modelModule.ControlGroup(controls, optionals);\n    }\n  }\n\n  control(value, validator:Function = null):modelModule.Control {\n    if (isPresent(validator)) {\n      return new modelModule.Control(value, validator);\n    } else {\n      return new modelModule.Control(value);\n    }\n  }\n\n  array(controlsConfig:List, validator:Function = null):modelModule.ControlArray  {\n    var controls = ListWrapper.map(controlsConfig, (c) => this._createControl(c));\n    if (isPresent(validator)) {\n      return new modelModule.ControlArray(controls, validator);\n    } else {\n      return new modelModule.ControlArray(controls);\n    }\n  }\n\n  _reduceControls(controlsConfig) {\n    var controls = {};\n    StringMapWrapper.forEach(controlsConfig, (controlConfig, controlName) => {\n      controls[controlName] = this._createControl(controlConfig);\n    });\n    return controls;\n  }\n\n  _createControl(controlConfig) {\n    if (controlConfig instanceof modelModule.Control ||\n      controlConfig instanceof modelModule.ControlGroup ||\n      controlConfig instanceof modelModule.ControlArray) {\n      return controlConfig;\n\n    } else if (ListWrapper.isList(controlConfig)) {\n      var value = ListWrapper.get(controlConfig, 0);\n      var validator = controlConfig.length > 1 ? controlConfig[1] : null;\n      return this.control(value, validator);\n\n    } else {\n      return this.control(controlConfig);\n    }\n  }\n}\n"]}