{"version":3,"sources":["form_builder.js"],"names":[],"mappings":"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","file":"angular2/src/forms/form_builder.js","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"]}