import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { difference } from 'lodash'; import Select from 'react-select'; import 'react-select/dist/react-select.css'; import debounce from 'utilities/debounce'; import targetInterface from 'interfaces/target'; class SelectTargetsInput extends Component { static propTypes = { className: PropTypes.string, disabled: PropTypes.bool, isLoading: PropTypes.bool, menuRenderer: PropTypes.func, onClose: PropTypes.func, onOpen: PropTypes.func, onFocus: PropTypes.func, onTargetSelect: PropTypes.func, onTargetSelectInputChange: PropTypes.func, selectedTargets: PropTypes.arrayOf(targetInterface), targets: PropTypes.arrayOf(targetInterface), }; filterOptions = (options) => { const { selectedTargets } = this.props; return difference(options, selectedTargets); } handleInputChange = debounce((query) => { const { onTargetSelectInputChange } = this.props; onTargetSelectInputChange(query); }, { leading: false, trailing: true }) render () { const { className, disabled, isLoading, menuRenderer, onClose, onOpen, onFocus, onTargetSelect, selectedTargets, targets, } = this.props; const { handleInputChange } = this; return (