Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
componentDidUpdate(prevProps) {
checkSomePropChange(this.props, prevProps, getValidPropsKeys(this.props), () => {
this.props.updateComponentProps(this.props.componentId, this.props);
});
checkPropChange(this.props.react, prevProps.react, () => this.setReact(this.props));
checkPropChange(this.props.options, prevProps.options, () => {
const { showLoadMore, dataField } = this.props;
const { options } = this.state;
if (showLoadMore) {
// append options with showLoadMore
const { buckets } = this.props.options[dataField];
const nextOptions = [
...options,
...buckets.map(bucket => ({
key: bucket.key[dataField],
doc_count: bucket.doc_count,
})),
];
const after = this.props.options[dataField].after_key;
// detect the last bucket by checking if the next set of buckets were empty
const isLastBucket = !buckets.length;
this.setState(
componentDidUpdate(prevProps) {
checkSomePropChange(this.props, prevProps, getValidPropsKeys(this.props), () => {
this.props.updateComponentProps(this.props.componentId, this.props);
});
checkPropChange(prevProps.react, this.props.react, () => this.setReact(this.props));
checkPropChange(prevProps.options, this.props.options, () => {
const { showLoadMore, dataField, options } = this.props;
if (showLoadMore) {
const { buckets } = options[dataField];
const after = options[dataField].after_key;
const prevAfter = prevProps.options && prevProps.options[dataField].after_key;
// detect the last bucket by checking if the
// after key is absent
const isLastBucket = !after;
this.setState(state => ({
...state,
after: after ? { after } : state.after,
prevAfter: prevAfter ? { after: prevAfter } : state.prevAfter,
isLastBucket,
options: this.getOptions(buckets, this.props),
}));
componentWillReceiveProps(nextProps) {
checkSomePropChange(
this.props,
nextProps,
['highlight', 'dataField', 'highlightField'],
() => {
const queryOptions = this.highlightQuery(nextProps) || {};
queryOptions.size = 20;
this.props.setQueryOptions(nextProps.componentId, queryOptions);
},
);
checkPropChange(this.props.react, nextProps.react, () => this.setReact(nextProps));
if (Array.isArray(nextProps.suggestions) && this.state.currentValue.trim().length) {
// shallow check allows us to set suggestions even if the next set
// of suggestions are same as the current one
if (this.props.suggestions !== nextProps.suggestions) {
this.setState({
suggestions: this.onSuggestions(nextProps.suggestions),
});
}
}
checkSomePropChange(
this.props,
nextProps,
['fieldWeights', 'fuzziness', 'queryFormat', 'dataField'],
() => {
checkSomePropChange(this.props, prevProps, ['size', 'sortBy'], () =>
this.updateQueryOptions(this.props),
);
// Treat defaultQuery and customQuery as reactive props
if (!isIdentical(this.props.defaultQuery, prevProps.defaultQuery)) {
this.updateDefaultQuery();
// Clear the component value
this.updateQuery('', this.props);
}
if (!isIdentical(this.props.customQuery, prevProps.customQuery)) {
this.updateQuery(this.state.currentValue, this.props);
}
checkPropChange(this.props.dataField, prevProps.dataField, () => {
this.updateQueryOptions(this.props);
this.updateQuery(this.state.currentValue, this.props);
});
if (this.props.value !== prevProps.value) {
this.setValue(this.props.value);
} else if (
this.state.currentValue !== this.props.selectedValue
&& this.props.selectedValue !== prevProps.selectedValue
) {
const { value, onChange } = this.props;
if (value === undefined) {
this.setValue(this.props.selectedValue || '');
} else if (onChange) {
onChange(this.props.selectedValue || '');
prevProps.value && prevProps.value(this.props.range.start, this.props.range.end),
)
) {
// when value prop is changed
const { start, end } = this.props.value(this.props.range.start, this.props.range.end);
this.handleChange([start, end]);
} else if (
this.props.range
&& this.props.selectedValue === null
&& prevProps.selectedValue
) {
// when the filter is reset
this.handleChange([this.props.range.start, this.props.range.end]);
}
checkPropChange(this.props.react, prevProps.react, () => {
this.updateRangeQueryOptions(this.props);
this.setReact(this.props);
});
checkSomePropChange(this.props, prevProps, ['dataField', 'nestedField'], () => {
this.updateRangeQueryOptions(this.props);
});
checkSomePropChange(this.props, prevProps, ['showHistogram', 'interval'], () =>
this.updateQueryOptions(this.props, this.props.range || this.state.range),
);
checkPropChange(this.props.options, prevProps.options, () => {
const { options } = this.props;
options.sort((a, b) => {
if (a.key < b.key) return -1;
componentDidUpdate(prevProps) {
checkSomePropChange(this.props, prevProps, getValidPropsKeys(this.props), () => {
this.props.updateComponentProps(this.props.componentId, this.props);
});
checkPropChange(this.props.react, prevProps.react, () => this.setReact(this.props));
checkSomePropChange(this.props, prevProps, ['dataField', 'nestedField'], () => {
this.updateQuery(this.state.currentValue, this.props);
});
if (!isEqual(this.props.value, prevProps.value)) {
this.setValue(this.props.value);
} else if (
!isEqual(this.state.currentValue, this.props.selectedValue)
&& !isEqual(this.props.selectedValue, prevProps.selectedValue)
) {
const { value, onChange } = this.props;
if (value === undefined) {
this.setValue(this.props.selectedValue || null);
} else if (onChange) {
onChange(this.props.selectedValue || null);
componentDidUpdate(prevProps) {
checkSomePropChange(this.props, prevProps, getValidPropsKeys(this.props), () => {
this.props.updateComponentProps(this.props.componentId, this.props);
});
checkPropChange(this.props.react, prevProps.react, () => {
this.setReact(this.props);
});
checkPropChange(this.props.value, prevProps.value, () => {
this.setValue(this.props.value, this.props);
});
checkPropChange(this.props.queryFormat, this.props.queryFormat, () => {
this.updateQuery(this.state.currentValue, this.props);
});
checkSomePropChange(this.props, prevProps, ['dataField', 'nestedField'], () => {
this.updateQuery(this.state.currentValue, this.props);
});
}
);
checkPropChange(this.props.options, nextProps.options, () => {
const { options } = nextProps;
if (Array.isArray(options)) {
options.sort((a, b) => {
if (a.key < b.key) return -1;
if (a.key > b.key) return 1;
return 0;
});
}
this.setState({
stats: options || [],
});
});
checkPropChange(this.props.dataField, nextProps.dataField, () => {
this.updateQueryOptions(nextProps);
this.handleChange(this.state.currentValue, nextProps);
});
if (!isEqual(this.props.defaultSelected, nextProps.defaultSelected)) {
this.handleChange(
[nextProps.defaultSelected.start, nextProps.defaultSelected.end],
nextProps,
);
} else if (!isEqual(this.state.currentValue, nextProps.selectedValue)) {
this.handleChange(
nextProps.selectedValue || [nextProps.range.start, nextProps.range.end],
);
}
}
componentWillReceiveProps(nextProps) {
checkPropChange(this.props.react, nextProps.react, () => this.setReact(nextProps));
checkSomePropChange(this.props, nextProps, ['showHistogram', 'interval'], () =>
this.updateQueryOptions(nextProps),
);
checkPropChange(this.props.options, nextProps.options, () => {
const { options } = nextProps;
if (Array.isArray(options)) {
options.sort((a, b) => {
if (a.key < b.key) return -1;
if (a.key > b.key) return 1;
return 0;
});
}
this.setState({
stats: options || [],
});
});
componentDidUpdate(prevProps) {
checkSomePropChange(this.props, prevProps, getValidPropsKeys(this.props), () => {
this.props.updateComponentProps(this.props.componentId, this.props);
});
checkPropChange(this.props.react, prevProps.react, () => this.setReact(this.props));
checkSomePropChange(this.props, prevProps, ['dataField', 'nestedField'], () => {
this.updateQuery(this.state.currentValue, this.props);
});
if (!isEqual(this.props.value, prevProps.value)) {
this.selectItem({
item: this.props.value,
isDefaultValue: true,
});
} else if (
!isEqual(this.state.currentValue, this.props.selectedValue)
&& !isEqual(this.props.selectedValue, prevProps.selectedValue)
) {
const { value, onChange } = this.props;