VimŸUnDoå=Õë%ü¶ô�!êqÊ¡[ÊÃ(è¿@ šIsãXÈ¿ápVS\p_Ð ÿÿÿÿVS\õx 'use strict';.Object.defineProperty(exports, '__esModule', { value: true});afunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }+var _reactAddons = require('react/addons');9var _reactAddons2 = _interopRequireDefault(_reactAddons);'var _lodashMap = require('lodash.map');5var _lodashMap2 = _interopRequireDefault(_lodashMap);-var _lodashFilter = require('lodash.filter');;var _lodashFilter2 = _interopRequireDefault(_lodashFilter);)var _lodashFind = require('lodash.find');7var _lodashFind2 = _interopRequireDefault(_lodashFind);3var _lodashFindindex = require('lodash.findindex');Avar _lodashFindindex2 = _interopRequireDefault(_lodashFindindex);(var _classnames = require('classnames');7var _classnames2 = _interopRequireDefault(_classnames);var _Icon = require('./Icon');+var _Icon2 = _interopRequireDefault(_Icon);$var _Options = require('./Options');1var _Options2 = _interopRequireDefault(_Options);0var _OptionWrapper = require('./OptionWrapper');=var _OptionWrapper2 = _interopRequireDefault(_OptionWrapper); var _utils = require('./utils');Dvar cloneWithProps = _reactAddons2['default'].addons.cloneWithProps;function noop() {}9var ValueWrapper = _reactAddons2['default'].createClass({ displayName: 'ValueWrapper', propTypes: {E onDeleteClick: _reactAddons2['default'].PropTypes.func.isRequired },0 onDeleteClick: function onDeleteClick(event) { event.stopPropagation();$ this.props.onDeleteClick(event); }, render: function render() {' var children = this.props.children;0 var classes = (0, _classnames2['default'])({ 'react-choice-value': true });2 return _reactAddons2['default'].createElement( 'div', { className: classes },- _reactAddons2['default'].createElement( 'div',6 { className: 'react-choice-value__children' }, children ),- _reactAddons2['default'].createElement( 'a',Q { className: 'react-choice-value__delete', onClick: this.onDeleteClick }, 'x' ) ); }});;var MultipleChoice = _reactAddons2['default'].createClass({ displayName: 'MultipleChoice', propTypes: {Ï values: _reactAddons2['default'].PropTypes.arrayOf(_reactAddons2['default'].PropTypes.oneOfType([_reactAddons2['default'].PropTypes.string, _reactAddons2['default'].PropTypes.number])), // initial valuesÖ defaultValues: _reactAddons2['default'].PropTypes.arrayOf(_reactAddons2['default'].PropTypes.oneOfType([_reactAddons2['default'].PropTypes.string, _reactAddons2['default'].PropTypes.number])), // initial valuesM children: _reactAddons2['default'].PropTypes.array.isRequired, // optionsE name: _reactAddons2['default'].PropTypes.string, // name of inputP placeholder: _reactAddons2['default'].PropTypes.string, // input placeholder6 disabled: _reactAddons2['default'].PropTypes.bool,N valueField: _reactAddons2['default'].PropTypes.string, // value field nameN labelField: _reactAddons2['default'].PropTypes.string, // label field nameu allowDuplicates: _reactAddons2['default'].PropTypes.bool, // if true, the same values can be added multiple timesA icon: _reactAddons2['default'].PropTypes.func, // icon renderV getSuggestions: _reactAddons2['default'].PropTypes.func, // custom search functionE /*searchField: React.PropTypes.array, // array of search fields*/a onSelect: _reactAddons2['default'].PropTypes.func, // function called when option is selected8 onDelete: _reactAddons2['default'].PropTypes.func },+ // function called when option is deleted/ getDefaultProps: function getDefaultProps() { return { values: [], defaultValues: [], valueField: 'value', labelField: 'children', allowDuplicates: false, onSelect: noop, onDelete: noop }; },/ getInitialState: function getInitialState() { /*' var props = this.props.searchField;& props.push(this.props.valueField);' props.push(this.props.searchField); props = _.uniq(props);> var options = _map(this.props.children, function(child) { // TODO Validation ?( return _.pick(child.props, props); }, this); */ return { focus: false, chosenValues: [], hoverValue: null, searchQuery: null, searchResults: null }; }, /*% searchResults: this._sort(options), values: this.props.values, initialOptions: options, highlighted: null, selected: null, selectedIndex: -1, searchTokens: [] */5 _getSelectedValues: function _getSelectedValues() { var _props = this.props; var values = _props.values;- var defaultValues = _props.defaultValues;/ var chosenValues = this.state.chosenValues;= if (typeof values !== 'undefined' && values.length > 0) { return values; }I if (typeof chosenValues !== 'undefined' && chosenValues.length > 0) { return chosenValues; } return defaultValues; },* _getOption: function _getOption(value) {$ // TODO make this more efficient var _props2 = this.props;$ var children = _props2.children;( var valueField = _props2.valueField;D return (0, _lodashFind2['default'])(children, function (child) {/ return child.props[valueField] === value; }); },# _isActive: function _isActive() {4 return !this.props.disabled && this.state.focus; },4 _getSuggestions: function _getSuggestions(query) { var _props3 = this.props;( var labelField = _props3.labelField;$ var children = _props3.children;0 var getSuggestions = _props3.getSuggestions;/ if (typeof getSuggestions === 'function') {# return getSuggestions(query); }G var escapedQuery = (0, _utils.escapeRegexCharacters)(query.trim());6 var regex = new RegExp('\\b' + escapedQuery, 'i');F return (0, _lodashFilter2['default'])(children, function (child) {1 return regex.test(child.props[labelField]); }); }, // // Events //. _handleClick: function _handleClick(event) { event.preventDefault();- this.refs.textInput.getDOMNode().focus(); },3 _handleArrowClick: function _handleArrowClick() {$ if (this.state.focus === true) {. this.refs.textInput.getDOMNode().blur(); } else {/ this.refs.textInput.getDOMNode().focus(); } },. _handleFocus: function _handleFocus(event) { var _this = this; event.preventDefault(); this.setState({ focus: true }); setTimeout(function () { if (_this.isMounted()) {3 _this.refs.textInput.getDOMNode().select(); } }, 10); },1 _selectOption: function _selectOption(option) { var _props4 = this.props;( var valueField = _props4.valueField;$ var onSelect = _props4.onSelect;< var selectedValues = this._getSelectedValues().slice(0);2 selectedValues.push(option.props[valueField]); this.setState({# chosenValues: selectedValues,! /*focus: {'$set': false},*/ hoverValue: null, searchQuery: null, searchResults: null }, function () { var fakeEvent = { target: {) value: option.props[valueField] }, option: option }; onSelect(fakeEvent); }); },, _handleBlur: function _handleBlur(event) { event.preventDefault(); this.setState({ focus: false }); },: _handleOptionHover: function _handleOptionHover(child) {+ var valueField = this.props.valueField; this.setState({) hoverValue: child.props[valueField] }); },A _handleOptionClick: function _handleOptionClick(child, event) { event.preventDefault(); event.stopPropagation(); this._selectOption(child); },. _handleInput: function _handleInput(event) { var keys = { 13: this._enter, 37: this._moveLeft, 38: this._moveUp, 39: this._moveRight, 40: this._moveDown, 8: this._remove };4 if (typeof keys[event.keyCode] === 'function') {! keys[event.keyCode](event); } },, _move: function _move(options, operator) { var _this2 = this;, if (operator !== 1 && operator !== -1) {M throw new Error('Movement operator is not 1 or -1. It\'s ' + operator); }+ var valueField = this.props.valueField; var _state = this.state;' var hoverValue = _state.hoverValue;- var selectedValue = _state.selectedValue;q var highlightedValue = (0, _utils.isDefined)(hoverValue) && hoverValue !== null ? hoverValue : selectedValue;Y var highlightedIndex = (0, _lodashFindindex2['default'])(options, function (result) {; return result.props[valueField] === highlightedValue; });F if (typeof options[highlightedIndex + operator] !== 'undefined') { this.setState({J hoverValue: options[highlightedIndex + operator].props[valueField] }, function () {! // update scroll position' _this2._updateScrollPosition(); }); } },$ _moveUp: function _moveUp(event) {' var children = this.props.children;1 var searchResults = this.state.searchResults;, var options = searchResults || children;( if (options && options.length > 0) { event.preventDefault(); this._move(options, -1); } },( _moveDown: function _moveDown(event) {' var children = this.props.children;1 var searchResults = this.state.searchResults;, var options = searchResults || children;( if (options && options.length > 0) { event.preventDefault(); this._move(options, 1); } }," _enter: function _enter(event) { event.preventDefault();+ var hoverValue = this.state.hoverValue; if (hoverValue) {/ var option = this._getOption(hoverValue);! this._selectOption(option); } },0 _handleChange: function _handleChange(event) { event.preventDefault();# var query = event.target.value;4 var searchResults = this._getSuggestions(query); this.setState({ searchQuery: query," searchResults: searchResults }); },; _updateScrollPosition: function _updateScrollPosition() {? var highlighted = this.refs ? this.refs.highlighted : null; if (highlighted) {2 // find if highlighted option is not visible( var el = highlighted.getDOMNode();3 var _parent = this.refs.options.getDOMNode();I var offsetTop = el.offsetTop + el.clientHeight - _parent.scrollTop; // scroll down- if (offsetTop > _parent.clientHeight) {I var diff = el.offsetTop + el.clientHeight - _parent.clientHeight;! _parent.scrollTop = diff;3 } else if (offsetTop - el.clientHeight < 0) { // scroll up) _parent.scrollTop = el.offsetTop; } } },. _removeValue: function _removeValue(value) {' var onDelete = this.props.onDelete;< var selectedValues = this._getSelectedValues().slice(0);P var index = (0, _lodashFindindex2['default'])(selectedValues, function (v) { return v === value; }); if (index > -1) { // remove value& selectedValues.splice(index, 1); } this.setState({" chosenValues: selectedValues });( /*onDelete(removedOption, values);*/ }, // TODO /** _handleContainerInput: function(event) { var keys = { 37: this._moveLeft, 39: this._moveRight,& 8: this._removeSelectedContainer };5 if (typeof keys[event.keyCode] === 'function') {! keys[event.keyCode](event); } },% _handleContainerBlur: function() {# if (this.state.selectedIndex) { this.setState({ selectedIndex: -1 }); } }, _moveLeft: function(event) {- var input = this.refs.input.getDOMNode();% if (!this.state.values.length) { return false; } if ( event.target === input &&' event.target.selectionStart === 0 ) { event.preventDefault(); // select stage this.setState({3 selectedIndex: this.state.values.length - 1 }); // focus on container/ this.refs.container.getDOMNode().focus();1 } else if (this.state.selectedIndex !== -1) {3 var nextIndex = this.state.selectedIndex - 1; if (nextIndex > -1) { this.setState({" selectedIndex: nextIndex }); } } }, _moveRight: function() {- var input = this.refs.input.getDOMNode();% if (!this.state.values.length) { return false; }+ if (this.state.selectedIndex !== -1) {3 var nextIndex = this.state.selectedIndex + 1;1 if (nextIndex < this.state.values.length) { this.setState({" selectedIndex: nextIndex }); } else { // focus input box input.focus(); this.setState({ selectedIndex: -1 }); } } }, // removes last element _remove: function(event) { if (!this.state.value) { event.preventDefault(); // remove last stage% if (this.state.values.length) {8 this._removeValue(this.state.values.length - 1); } } },2 // called from within, removes selected element- _removeSelectedContainer: function(event) {* if (this.state.selectedIndex !== -1) { event.preventDefault();O // move selection to the element before the removed one (gmail behavior) this.setState({3 selectedIndex: this.state.selectedIndex - 1 });3 this._removeValue(this.state.selectedIndex); } },- _removeDeletedContainer: function(index) { this._removeValue(index); },) _selectValue: function(index, event) { if (event) { event.preventDefault(); event.stopPropagation(); } this.setState({ selectedIndex: index });. this.refs.container.getDOMNode().focus(); }, */C componentWillReceiveProps: function componentWillReceiveProps() { this.setState({ chosenValue: null, hoverValue: null, searchQuery: null, searchResults: null }); },I componentDidUpdate: function componentDidUpdate(prevProps, prevState) {A if (prevState.focus === false && this.state.focus === true) {# this._updateScrollPosition(); } }, render: function render() { var _this3 = this; var _props5 = this.props; var name = _props5.name;( var valueField = _props5.valueField;( var labelField = _props5.labelField;* var placeholder = _props5.placeholder;$ var children = _props5.children; var icon = _props5.icon; var _state2 = this.state;( var hoverValue = _state2.hoverValue;* var searchQuery = _state2.searchQuery;. var searchResults = _state2.searchResults;3 var selectedValues = this._getSelectedValues();V var values = (0, _lodashMap2['default'])(selectedValues, function (value, index) {, var option = _this3._getOption(value);7 var key = index + '-' + option.props[valueField];4 return _reactAddons2['default'].createElement( ValueWrapper, { key: key,? onDeleteClick: _this3._removeValue.bind(null, value), selected: false }, option.props[labelField] ); });b var options = (0, _lodashMap2['default'])(searchResults || children, function (child, index) {{ var highlightedValue = (0, _utils.isDefined)(hoverValue) && hoverValue !== null ? hoverValue : null; //selectedValue;E var highlighted = child.props[valueField] === highlightedValue;6 var key = index + '-' + child.props[valueField];4 return _reactAddons2['default'].createElement(# _OptionWrapper2['default'], { key: key, selected: highlighted,2 ref: highlighted ? 'highlighted' : null,- onHover: _this3._handleOptionHover,/ onClick: _this3._handleOptionClick },; cloneWithProps(child, { query: searchQuery || '' }) ); });$ var isActive = this._isActive();7 var wrapperClasses = (0, _classnames2['default'])({# 'react-choice-wrapper': true,$ 'react-choice-multiple': true,2 'react-choice-multiple--in-focus': isActive,6 'react-choice-multiple--not-in-focus': !isActive });1 var IconRenderer = icon || _Icon2['default'];2 return _reactAddons2['default'].createElement( 'div',$ { className: 'react-choice' },S _reactAddons2['default'].createElement('input', { type: 'hidden', name: name,? value: JSON.stringify(selectedValues), ref: 'input' }),- _reactAddons2['default'].createElement( 'div',@ { className: wrapperClasses, onClick: this._handleClick,R tabIndex: '-1', ref: 'container', onKeyDown: this._handleContainerInput,. onBlur: this._handleContainerBlur }, values,G _reactAddons2['default'].createElement('input', { type: 'text',# placeholder: placeholder, value: searchQuery,G className: 'react-choice-input react-choice-multiple__input',' onKeyDown: this._handleInput,' onChange: this._handleChange,% onFocus: this._handleFocus,# onBlur: this._handleBlur, autoComplete: 'off', role: 'combobox',& 'aria-autocomplete': 'list',$ 'aria-expanded': isActive, ref: 'textInput' }) ),- _reactAddons2['default'].createElement( 'div',P { className: 'react-choice-icon', onMouseDown: this._handleArrowClick },S _reactAddons2['default'].createElement(IconRenderer, { focused: isActive }) ),N isActive && options.length > 0 ? _reactAddons2['default'].createElement( _Options2['default'], { ref: 'options' }, options ) : null ); }});$exports['default'] = MultipleChoice;$module.exports = exports['default'];5�_ÐÿÿÿÿVS\oõt 'use strict';.Object.defineProperty(exports, '__esModule', { value: true});afunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }+var _reactAddons = require('react/addons');9var _reactAddons2 = _interopRequireDefault(_reactAddons);-var _lodashFilter = require('lodash.filter');;var _lodashFilter2 = _interopRequireDefault(_lodashFilter);)var _lodashFind = require('lodash.find');7var _lodashFind2 = _interopRequireDefault(_lodashFind);3var _lodashFindindex = require('lodash.findindex');Avar _lodashFindindex2 = _interopRequireDefault(_lodashFindindex);(var _classnames = require('classnames');7var _classnames2 = _interopRequireDefault(_classnames);var _Icon = require('./Icon');+var _Icon2 = _interopRequireDefault(_Icon);$var _Options = require('./Options');1var _Options2 = _interopRequireDefault(_Options);0var _OptionWrapper = require('./OptionWrapper');=var _OptionWrapper2 = _interopRequireDefault(_OptionWrapper); var _utils = require('./utils');Dvar cloneWithProps = _reactAddons2['default'].addons.cloneWithProps;function noop() {}9var ValueWrapper = _reactAddons2['default'].createClass({ displayName: 'ValueWrapper', propTypes: {E onDeleteClick: _reactAddons2['default'].PropTypes.func.isRequired },0 onDeleteClick: function onDeleteClick(event) { event.stopPropagation();$ this.props.onDeleteClick(event); }, render: function render() {' var children = this.props.children;0 var classes = (0, _classnames2['default'])({ 'react-choice-value': true });2 return _reactAddons2['default'].createElement( 'div', { className: classes },- _reactAddons2['default'].createElement( 'div',6 { className: 'react-choice-value__children' }, children ),- _reactAddons2['default'].createElement( 'a',Q { className: 'react-choice-value__delete', onClick: this.onDeleteClick }, 'x' ) ); }});;var MultipleChoice = _reactAddons2['default'].createClass({ displayName: 'MultipleChoice', propTypes: {Ï values: _reactAddons2['default'].PropTypes.arrayOf(_reactAddons2['default'].PropTypes.oneOfType([_reactAddons2['default'].PropTypes.string, _reactAddons2['default'].PropTypes.number])), // initial valuesÖ defaultValues: _reactAddons2['default'].PropTypes.arrayOf(_reactAddons2['default'].PropTypes.oneOfType([_reactAddons2['default'].PropTypes.string, _reactAddons2['default'].PropTypes.number])), // initial valuesM children: _reactAddons2['default'].PropTypes.array.isRequired, // optionsE name: _reactAddons2['default'].PropTypes.string, // name of inputP placeholder: _reactAddons2['default'].PropTypes.string, // input placeholder6 disabled: _reactAddons2['default'].PropTypes.bool,N valueField: _reactAddons2['default'].PropTypes.string, // value field nameN labelField: _reactAddons2['default'].PropTypes.string, // label field nameu allowDuplicates: _reactAddons2['default'].PropTypes.bool, // if true, the same values can be added multiple timesA icon: _reactAddons2['default'].PropTypes.func, // icon renderV getSuggestions: _reactAddons2['default'].PropTypes.func, // custom search functionE /*searchField: React.PropTypes.array, // array of search fields*/a onSelect: _reactAddons2['default'].PropTypes.func, // function called when option is selected8 onDelete: _reactAddons2['default'].PropTypes.func },+ // function called when option is deleted/ getDefaultProps: function getDefaultProps() { return { values: [], defaultValues: [], valueField: 'value', labelField: 'children', allowDuplicates: false, onSelect: noop, onDelete: noop }; },/ getInitialState: function getInitialState() { /*' var props = this.props.searchField;& props.push(this.props.valueField);' props.push(this.props.searchField); props = _.uniq(props);> var options = _map(this.props.children, function(child) { // TODO Validation ?( return _.pick(child.props, props); }, this); */ return { focus: false, chosenValues: [], hoverValue: null, searchQuery: null, searchResults: null }; }, /*% searchResults: this._sort(options), values: this.props.values, initialOptions: options, highlighted: null, selected: null, selectedIndex: -1, searchTokens: [] */5 _getSelectedValues: function _getSelectedValues() { var _props = this.props; var values = _props.values;- var defaultValues = _props.defaultValues;/ var chosenValues = this.state.chosenValues;= if (typeof values !== 'undefined' && values.length > 0) { return values; }I if (typeof chosenValues !== 'undefined' && chosenValues.length > 0) { return chosenValues; } return defaultValues; },* _getOption: function _getOption(value) {$ // TODO make this more efficient var _props2 = this.props;$ var children = _props2.children;( var valueField = _props2.valueField;D return (0, _lodashFind2['default'])(children, function (child) {/ return child.props[valueField] === value; }); },# _isActive: function _isActive() {4 return !this.props.disabled && this.state.focus; },4 _getSuggestions: function _getSuggestions(query) { var _props3 = this.props;( var labelField = _props3.labelField;$ var children = _props3.children;0 var getSuggestions = _props3.getSuggestions;/ if (typeof getSuggestions === 'function') {# return getSuggestions(query); }G var escapedQuery = (0, _utils.escapeRegexCharacters)(query.trim());6 var regex = new RegExp('\\b' + escapedQuery, 'i');F return (0, _lodashFilter2['default'])(children, function (child) {1 return regex.test(child.props[labelField]); }); }, // // Events //. _handleClick: function _handleClick(event) { event.preventDefault();- this.refs.textInput.getDOMNode().focus(); },3 _handleArrowClick: function _handleArrowClick() {$ if (this.state.focus === true) {. this.refs.textInput.getDOMNode().blur(); } else {/ this.refs.textInput.getDOMNode().focus(); } },. _handleFocus: function _handleFocus(event) { var _this = this; event.preventDefault(); this.setState({ focus: true }); setTimeout(function () { if (_this.isMounted()) {3 _this.refs.textInput.getDOMNode().select(); } }, 10); },1 _selectOption: function _selectOption(option) { var _props4 = this.props;( var valueField = _props4.valueField;$ var onSelect = _props4.onSelect;< var selectedValues = this._getSelectedValues().slice(0);2 selectedValues.push(option.props[valueField]); this.setState({# chosenValues: selectedValues,! /*focus: {'$set': false},*/ hoverValue: null, searchQuery: null, searchResults: null }, function () { var fakeEvent = { target: {) value: option.props[valueField] }, option: option }; onSelect(fakeEvent); }); },, _handleBlur: function _handleBlur(event) { event.preventDefault(); this.setState({ focus: false }); },: _handleOptionHover: function _handleOptionHover(child) {+ var valueField = this.props.valueField; this.setState({) hoverValue: child.props[valueField] }); },A _handleOptionClick: function _handleOptionClick(child, event) { event.preventDefault(); event.stopPropagation(); this._selectOption(child); },. _handleInput: function _handleInput(event) { var keys = { 13: this._enter, 37: this._moveLeft, 38: this._moveUp, 39: this._moveRight, 40: this._moveDown, 8: this._remove };4 if (typeof keys[event.keyCode] === 'function') {! keys[event.keyCode](event); } },, _move: function _move(options, operator) { var _this2 = this;, if (operator !== 1 && operator !== -1) {M throw new Error('Movement operator is not 1 or -1. It\'s ' + operator); }+ var valueField = this.props.valueField; var _state = this.state;' var hoverValue = _state.hoverValue;- var selectedValue = _state.selectedValue;q var highlightedValue = (0, _utils.isDefined)(hoverValue) && hoverValue !== null ? hoverValue : selectedValue;Y var highlightedIndex = (0, _lodashFindindex2['default'])(options, function (result) {; return result.props[valueField] === highlightedValue; });F if (typeof options[highlightedIndex + operator] !== 'undefined') { this.setState({J hoverValue: options[highlightedIndex + operator].props[valueField] }, function () {! // update scroll position' _this2._updateScrollPosition(); }); } },$ _moveUp: function _moveUp(event) {' var children = this.props.children;1 var searchResults = this.state.searchResults;, var options = searchResults || children;( if (options && options.length > 0) { event.preventDefault(); this._move(options, -1); } },( _moveDown: function _moveDown(event) {' var children = this.props.children;1 var searchResults = this.state.searchResults;, var options = searchResults || children;( if (options && options.length > 0) { event.preventDefault(); this._move(options, 1); } }," _enter: function _enter(event) { event.preventDefault();+ var hoverValue = this.state.hoverValue; if (hoverValue) {/ var option = this._getOption(hoverValue);! this._selectOption(option); } },0 _handleChange: function _handleChange(event) { event.preventDefault();# var query = event.target.value;4 var searchResults = this._getSuggestions(query); this.setState({ searchQuery: query," searchResults: searchResults }); },; _updateScrollPosition: function _updateScrollPosition() {? var highlighted = this.refs ? this.refs.highlighted : null; if (highlighted) {2 // find if highlighted option is not visible( var el = highlighted.getDOMNode();3 var _parent = this.refs.options.getDOMNode();I var offsetTop = el.offsetTop + el.clientHeight - _parent.scrollTop; // scroll down- if (offsetTop > _parent.clientHeight) {I var diff = el.offsetTop + el.clientHeight - _parent.clientHeight;! _parent.scrollTop = diff;3 } else if (offsetTop - el.clientHeight < 0) { // scroll up) _parent.scrollTop = el.offsetTop; } } },. _removeValue: function _removeValue(value) {' var onDelete = this.props.onDelete;< var selectedValues = this._getSelectedValues().slice(0);P var index = (0, _lodashFindindex2['default'])(selectedValues, function (v) { return v === value; }); if (index > -1) { // remove value& selectedValues.splice(index, 1); } this.setState({" chosenValues: selectedValues });( /*onDelete(removedOption, values);*/ }, // TODO /** _handleContainerInput: function(event) { var keys = { 37: this._moveLeft, 39: this._moveRight,& 8: this._removeSelectedContainer };5 if (typeof keys[event.keyCode] === 'function') {! keys[event.keyCode](event); } },% _handleContainerBlur: function() {# if (this.state.selectedIndex) { this.setState({ selectedIndex: -1 }); } }, _moveLeft: function(event) {- var input = this.refs.input.getDOMNode();% if (!this.state.values.length) { return false; } if ( event.target === input &&' event.target.selectionStart === 0 ) { event.preventDefault(); // select stage this.setState({3 selectedIndex: this.state.values.length - 1 }); // focus on container/ this.refs.container.getDOMNode().focus();1 } else if (this.state.selectedIndex !== -1) {3 var nextIndex = this.state.selectedIndex - 1; if (nextIndex > -1) { this.setState({" selectedIndex: nextIndex }); } } }, _moveRight: function() {- var input = this.refs.input.getDOMNode();% if (!this.state.values.length) { return false; }+ if (this.state.selectedIndex !== -1) {3 var nextIndex = this.state.selectedIndex + 1;1 if (nextIndex < this.state.values.length) { this.setState({" selectedIndex: nextIndex }); } else { // focus input box input.focus(); this.setState({ selectedIndex: -1 }); } } }, // removes last element _remove: function(event) { if (!this.state.value) { event.preventDefault(); // remove last stage% if (this.state.values.length) {8 this._removeValue(this.state.values.length - 1); } } },2 // called from within, removes selected element- _removeSelectedContainer: function(event) {* if (this.state.selectedIndex !== -1) { event.preventDefault();O // move selection to the element before the removed one (gmail behavior) this.setState({3 selectedIndex: this.state.selectedIndex - 1 });3 this._removeValue(this.state.selectedIndex); } },- _removeDeletedContainer: function(index) { this._removeValue(index); },) _selectValue: function(index, event) { if (event) { event.preventDefault(); event.stopPropagation(); } this.setState({ selectedIndex: index });. this.refs.container.getDOMNode().focus(); }, */C componentWillReceiveProps: function componentWillReceiveProps() { this.setState({ chosenValue: null, hoverValue: null, searchQuery: null, searchResults: null }); },I componentDidUpdate: function componentDidUpdate(prevProps, prevState) {A if (prevState.focus === false && this.state.focus === true) {# this._updateScrollPosition(); } }, render: function render() { var _this3 = this; var _props5 = this.props; var name = _props5.name;( var valueField = _props5.valueField;( var labelField = _props5.labelField;* var placeholder = _props5.placeholder;$ var children = _props5.children; var icon = _props5.icon; var _state2 = this.state;( var hoverValue = _state2.hoverValue;* var searchQuery = _state2.searchQuery;. var searchResults = _state2.searchResults;3 var selectedValues = this._getSelectedValues();= var values = selectedValues.map(function (value, index) {, var option = _this3._getOption(value);7 var key = index + '-' + option.props[valueField];4 return _reactAddons2['default'].createElement( ValueWrapper, { key: key,? onDeleteClick: _this3._removeValue.bind(null, value), selected: false }, option.props[labelField] ); });K var options = (searchResults || children).map(function (child, index) {{ var highlightedValue = (0, _utils.isDefined)(hoverValue) && hoverValue !== null ? hoverValue : null; //selectedValue;E var highlighted = child.props[valueField] === highlightedValue;6 var key = index + '-' + child.props[valueField];4 return _reactAddons2['default'].createElement(# _OptionWrapper2['default'], { key: key, selected: highlighted,2 ref: highlighted ? 'highlighted' : null,- onHover: _this3._handleOptionHover,/ onClick: _this3._handleOptionClick },; cloneWithProps(child, { query: searchQuery || '' }) ); });$ var isActive = this._isActive();7 var wrapperClasses = (0, _classnames2['default'])({# 'react-choice-wrapper': true,$ 'react-choice-multiple': true,2 'react-choice-multiple--in-focus': isActive,6 'react-choice-multiple--not-in-focus': !isActive });1 var IconRenderer = icon || _Icon2['default'];2 return _reactAddons2['default'].createElement( 'div',$ { className: 'react-choice' },S _reactAddons2['default'].createElement('input', { type: 'hidden', name: name,? value: JSON.stringify(selectedValues), ref: 'input' }),- _reactAddons2['default'].createElement( 'div',@ { className: wrapperClasses, onClick: this._handleClick,R tabIndex: '-1', ref: 'container', onKeyDown: this._handleContainerInput,. onBlur: this._handleContainerBlur }, values,G _reactAddons2['default'].createElement('input', { type: 'text',# placeholder: placeholder, value: searchQuery,G className: 'react-choice-input react-choice-multiple__input',' onKeyDown: this._handleInput,' onChange: this._handleChange,% onFocus: this._handleFocus,# onBlur: this._handleBlur, autoComplete: 'off', role: 'combobox',& 'aria-autocomplete': 'list',$ 'aria-expanded': isActive, ref: 'textInput' }) ),- _reactAddons2['default'].createElement( 'div',P { className: 'react-choice-icon', onMouseDown: this._handleArrowClick },S _reactAddons2['default'].createElement(IconRenderer, { focused: isActive }) ),N isActive && options.length > 0 ? _reactAddons2['default'].createElement( _Options2['default'], { ref: 'options' }, options ) : null ); }});$exports['default'] = MultipleChoice;$module.exports = exports['default'];5�çª