onSuggestionSelected: PropTypes.func.isRequired,
onSuggestionsClearRequested: PropTypes.func.isRequired,
onSuggestionsFetchRequested: PropTypes.func.isRequired,
+ onLocalSuggestionsFetchRequested: PropTypes.func.isRequired,
onChange: PropTypes.func.isRequired,
onKeyUp: PropTypes.func,
onKeyDown: PropTypes.func,
if (token !== null && this.state.lastToken !== token) {
this.setState({ lastToken: token, selectedSuggestion: 0, tokenStart });
- this.props.onSuggestionsFetchRequested(token);
+ if (token[0] === ':') {
+ // faster debounce for shortcodes.
+ // hashtags have long debounce because they're fetched from server.
+ this.props.onLocalSuggestionsFetchRequested(token);
+ } else {
+ this.props.onSuggestionsFetchRequested(token);
+ }
} else if (token === null) {
this.setState({ lastToken: null });
this.props.onSuggestionsClearRequested();
this.props.onFetchSuggestions(token);
}, 500, { trailing: true })
+ onLocalSuggestionsFetchRequested = debounce((token) => {
+ this.props.onFetchSuggestions(token);
+ }, 100, { trailing: true })
+
onSuggestionSelected = (tokenStart, token, value) => {
this._restoreCaret = null;
this.props.onSuggestionSelected(tokenStart, token, value);
suggestions={this.props.suggestions}
onKeyDown={this.handleKeyDown}
onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}
+ onLocalSuggestionsFetchRequested={this.onLocalSuggestionsFetchRequested}
onSuggestionsClearRequested={this.onSuggestionsClearRequested}
onSuggestionSelected={this.onSuggestionSelected}
onPaste={onPaste}