define("comboBoxInput",["lodash","react","core","santaProps","textCommon"],function(a,b,c,d,e){"use strict";var f=c.compMixins;function g(a){return b.DOM.option({value:a.value,default:a.default,style:a.style,ref:a.ref||a.value,disabled:a.disabled,key:a.key},a.text)}function h(b,c,d,e){var f=false;var h=a.map(b,function(b,c){f=f||b.value===d;return g(a.assign({default:b.value===d,key:c},b))});var i;if(c.placeholder){i=a.assign({default:!f,style:{display:"none"},className:e,ref:"placeholder",key:"placeholder"},c.placeholder)}else{i=a.assign({default:!f,style:{display:"none"},className:e},{text:"",value:"",ref:"placeholder",key:"noPlaceholder"})}h.unshift(g(i));return h}function i(b){return a.get(b,["compProp","placeholder","value"])}function j(a){return a.compData.value||i(a)}function k(a){return{$validity:a.errorMessage?"invalid":"valid"}}var l=function(a){return{valid:a?a.$validity==="valid":true}};return{displayName:"ComboBoxInput",mixins:[f.skinBasedComp,f.runTimeCompData,e.textScaleMixin,c.compMixins.inputFocusMixin,f.compStateMixin(l)],propTypes:{compData:d.Types.Component.compData.isRequired,compProp:d.Types.Component.compProp.isRequired,componentViewMode:d.Types.RenderFlags.componentViewMode,onSelectionChange:b.PropTypes.func,errorMessage:b.PropTypes.string},statics:{useSantaTypes:true,behaviors:a.assign({change:{methodName:"validate"}},c.compMixins.inputFocusMixin.INPUT_FOCUS_BEHAVIORS)},focus:function(){this.refs.collection.focus()},blur:function(){this.refs.collection.blur()},validate:function(){if(this.props.compProp.required&&this.props.compData.options.length>0){var b=a.some(this.props.compData.options,{value:this.state.value});var c=b&&!this.isPlaceholderSelected();this.setState({valid:c});return c}this.handleAction("validate");if(!this.state.valid){this.setState({valid:true})}return true},getInitialState:function(){return a.assign(k(this.props),{value:j(this.props),defaultValue:this.props.compData.value,placeholderValue:i(this.props),valid:true})},componentWillReceiveProps:function(b){var c=k(b);var d=b.compData.value!==this.state.value;var e=i(b)!==this.state.placeholderValue;if(d||e||this.props.onSelectionChange){a.assign(c,{value:j(b)})}this.setState(c)},onChange:function(b,c){var d=b.target.value;this.updateData({value:d});if(this.props.onSelectionChange){b.type="selectionChanged";b.payload=a.find(this.props.compData.options,{value:d})||{};this.props.onSelectionChange(b,c)}else{this.setState({value:d,valid:!!d})}this.handleAction("change",b)},onFocus:function(a){this.handleAction("focus",a)},onBlur:function(a){this.handleAction("blur",a)},getSkinProperties:function(){var b={};b[this.props.compProp.textAlignment+"-direction"]=true;var c=this.props.compData.options;return{"":{onBlur:this.onBlur,className:this.classSet(b),"data-disabled":!!this.props.compProp.isDisabled,"data-error":!this.state.valid&&this.props.componentViewMode!=="editor","data-preview":a.isFunction(this.getComponentPreviewState)&&this.getComponentPreviewState()},collection:{defaultValue:-1,disabled:!!a.get(this.props,"compProp.isDisabled"),children:h(c,this.props.compProp,this.state.defaultValue,this.classSet({"placeholder-style":true})),value:this.state.value,onChange:this.onChange,onFocus:this.onFocus,style:a.merge({paddingLeft:this.props.compProp.textPadding,paddingRight:this.props.compProp.textPadding},this.getFontSize(this.props)),className:this.isPlaceholderSelected()?this.classSet({"placeholder-style":true}):"","data-preview":a.isFunction(this.getComponentPreviewState)&&this.getComponentPreviewState()},errorMessage:{children:[this.props.errorMessage]}}},isPlaceholderSelected:function(){return this.state.value===a.get(this.props.compProp,"placeholder.value")}}});