diff --git a/client/homebrew/editor/tagInput/tagInput-class.jsx b/client/homebrew/editor/tagInput/tagInput-class.jsx
deleted file mode 100644
index 85b8c6a3f..000000000
--- a/client/homebrew/editor/tagInput/tagInput-class.jsx
+++ /dev/null
@@ -1,149 +0,0 @@
-const React = require('react');
-const createClass = require('create-react-class');
-const _ = require('lodash');
-
-const TagInput = createClass({
- displayName : 'TagInput',
- getDefaultProps : function() {
- return {
- label : '',
- values : [],
- valuePatterns : null,
- validators : [],
- placeholder : '',
- notes : [],
- unique : false,
- cannotEdit : [],
- onChange : ()=>{}
- };
- },
-
- getInitialState : function() {
- return {
- valueContext : !!this.props.values ? this.props.values.map((value)=>({
- value,
- editing : false
- })) : [],
- temporaryValue : '',
- updateValue : ''
- };
- },
-
- componentDidUpdate : function(prevProps) {
- if(!_.eq(this.props.values, prevProps.values)) {
- this.setState({
- valueContext : this.props.values ? this.props.values.map((newValue)=>({
- value : newValue,
- editing : this.state.valueContext.find(({ value })=>value === newValue)?.editing || false
- })) : []
- });
- }
- },
-
- handleChange : function(value) {
- this.props.onChange({
- target : {
- value
- }
- });
- },
-
- addValue : function(value){
- this.handleChange(_.uniq([...this.props.values, value]));
- this.setState({
- temporaryValue : ''
- });
- },
-
- removeValue : function(index){
- this.handleChange(this.props.values.filter((_, i)=>i !== index));
- },
-
- updateValue : function(value, index){
- const valueContext = this.state.valueContext;
- valueContext[index].value = value;
- valueContext[index].editing = false;
- this.handleChange(valueContext.map((context)=>context.value));
- this.setState({ valueContext, updateValue: '' });
- },
-
- editValue : function(index){
- if(!!this.props.cannotEdit && this.props.cannotEdit.includes(this.props.values[index])) {
- return;
- }
- const valueContext = this.state.valueContext.map((context, i)=>{
- context.editing = index === i;
- return context;
- });
- this.setState({ valueContext, updateValue: this.props.values[index] });
- },
-
- valueIsValid : function(value, index) {
- const values = _.clone(this.props.values);
- if(index !== undefined) {
- values.splice(index, 1);
- }
- const matchesPatterns = !this.props.valuePatterns || this.props.valuePatterns.some((pattern)=>!!(value || '').match(pattern));
- const uniqueIfSet = !this.props.unique || !values.includes(value);
- const passesValidators = !this.props.validators || this.props.validators.every((validator)=>validator(value));
- return matchesPatterns && uniqueIfSet && passesValidators;
- },
-
- handleValueInputKeyDown : function(event, index) {
- if(event.key === 'Enter') {
- if(this.valueIsValid(event.target.value, index)) {
- if(index !== undefined) {
- this.updateValue(event.target.value, index);
- } else {
- this.addValue(event.target.value);
- }
- }
- } else if(event.key === 'Escape') {
- this.closeEditInput(index);
- }
- },
-
- closeEditInput : function(index) {
- const valueContext = this.state.valueContext;
- valueContext[index].editing = false;
- this.setState({ valueContext, updateValue: '' });
- },
-
- render : function() {
- const valueElements = Object.values(this.state.valueContext).map((context, i)=>context.editing
- ?
{n}
) : null} -