react-mentions 4.4.2 → 4.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,10 +2,10 @@ import _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';
2
2
  import _extends from '@babel/runtime/helpers/esm/extends';
3
3
  import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';
4
4
  import _createClass from '@babel/runtime/helpers/esm/createClass';
5
- import _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';
6
- import _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';
7
5
  import _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';
8
6
  import _inherits from '@babel/runtime/helpers/esm/inherits';
7
+ import _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';
8
+ import _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';
9
9
  import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
10
10
  import React, { Children, Component } from 'react';
11
11
  import invariant from 'invariant';
@@ -651,13 +651,15 @@ var omit = function omit(obj) {
651
651
  }, {});
652
652
  };
653
653
 
654
+ var _excluded = ["style", "className", "classNames"];
655
+
654
656
  function createDefaultStyle(defaultStyle, getModifiers) {
655
657
  var enhance = function enhance(ComponentToWrap) {
656
658
  var DefaultStyleEnhancer = function DefaultStyleEnhancer(_ref) {
657
659
  var style = _ref.style,
658
660
  className = _ref.className,
659
661
  classNames = _ref.classNames,
660
- rest = _objectWithoutProperties(_ref, ["style", "className", "classNames"]);
662
+ rest = _objectWithoutProperties(_ref, _excluded);
661
663
 
662
664
  var modifiers = getModifiers ? getModifiers(rest) : undefined;
663
665
  var styles = useStyles(defaultStyle, {
@@ -665,7 +667,7 @@ function createDefaultStyle(defaultStyle, getModifiers) {
665
667
  className: className,
666
668
  classNames: classNames
667
669
  }, modifiers);
668
- return React.createElement(ComponentToWrap, _extends({}, rest, {
670
+ return /*#__PURE__*/React.createElement(ComponentToWrap, _extends({}, rest, {
669
671
  style: styles
670
672
  }));
671
673
  };
@@ -678,6 +680,10 @@ function createDefaultStyle(defaultStyle, getModifiers) {
678
680
  return enhance;
679
681
  }
680
682
 
683
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
684
+
685
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
686
+
681
687
  var _generateComponentKey = function _generateComponentKey(usedKeys, id) {
682
688
  if (!usedKeys.hasOwnProperty(id)) {
683
689
  usedKeys[id] = 0;
@@ -688,17 +694,17 @@ var _generateComponentKey = function _generateComponentKey(usedKeys, id) {
688
694
  return id + '_' + usedKeys[id];
689
695
  };
690
696
 
691
- var Highlighter =
692
- /*#__PURE__*/
693
- function (_Component) {
697
+ var Highlighter = /*#__PURE__*/function (_Component) {
694
698
  _inherits(Highlighter, _Component);
695
699
 
700
+ var _super = _createSuper(Highlighter);
701
+
696
702
  function Highlighter() {
697
703
  var _this;
698
704
 
699
705
  _classCallCheck(this, Highlighter);
700
706
 
701
- _this = _possibleConstructorReturn(this, _getPrototypeOf(Highlighter).apply(this, arguments));
707
+ _this = _super.apply(this, arguments);
702
708
 
703
709
  _defineProperty(_assertThisInitialized(_this), "setCaretElement", function (el) {
704
710
  _this.caretElement = el;
@@ -801,7 +807,7 @@ function (_Component) {
801
807
  resultComponents.push(this.renderHighlighterCaret(components));
802
808
  }
803
809
 
804
- return React.createElement("div", _extends({}, style, {
810
+ return /*#__PURE__*/React.createElement("div", _extends({}, style, {
805
811
  ref: containerRef
806
812
  }), resultComponents);
807
813
  }
@@ -809,7 +815,7 @@ function (_Component) {
809
815
  key: "renderSubstring",
810
816
  value: function renderSubstring(string, key) {
811
817
  // set substring span to hidden, so that Emojis are not shown double in Mobile Safari
812
- return React.createElement("span", _extends({}, this.props.style('substring'), {
818
+ return /*#__PURE__*/React.createElement("span", _extends({}, this.props.style('substring'), {
813
819
  key: key
814
820
  }), string);
815
821
  } // Returns a clone of the Mention child applicable for the specified type to be rendered inside the highlighter
@@ -823,13 +829,13 @@ function (_Component) {
823
829
  key: key
824
830
  };
825
831
  var child = Children.toArray(this.props.children)[mentionChildIndex];
826
- return React.cloneElement(child, props);
832
+ return /*#__PURE__*/React.cloneElement(child, props);
827
833
  } // Renders an component to be inserted in the highlighter at the current caret position
828
834
 
829
835
  }, {
830
836
  key: "renderHighlighterCaret",
831
837
  value: function renderHighlighterCaret(children) {
832
- return React.createElement("span", _extends({}, this.props.style('caret'), {
838
+ return /*#__PURE__*/React.createElement("span", _extends({}, this.props.style('caret'), {
833
839
  ref: this.setCaretElement,
834
840
  key: "caret"
835
841
  }), children);
@@ -878,85 +884,68 @@ var styled = createDefaultStyle({
878
884
  });
879
885
  var Highlighter$1 = styled(Highlighter);
880
886
 
881
- var Suggestion =
882
- /*#__PURE__*/
883
- function (_Component) {
884
- _inherits(Suggestion, _Component);
885
-
886
- function Suggestion() {
887
- _classCallCheck(this, Suggestion);
887
+ function Suggestion(_ref) {
888
+ var id = _ref.id,
889
+ focused = _ref.focused,
890
+ ignoreAccents = _ref.ignoreAccents,
891
+ index = _ref.index,
892
+ onClick = _ref.onClick,
893
+ onMouseEnter = _ref.onMouseEnter,
894
+ query = _ref.query,
895
+ renderSuggestion = _ref.renderSuggestion,
896
+ suggestion = _ref.suggestion,
897
+ style = _ref.style,
898
+ className = _ref.className,
899
+ classNames = _ref.classNames;
900
+ var rest = {
901
+ onClick: onClick,
902
+ onMouseEnter: onMouseEnter
903
+ };
888
904
 
889
- return _possibleConstructorReturn(this, _getPrototypeOf(Suggestion).apply(this, arguments));
890
- }
905
+ var renderContent = function renderContent() {
906
+ var display = getDisplay();
907
+ var highlightedDisplay = renderHighlightedDisplay(display);
891
908
 
892
- _createClass(Suggestion, [{
893
- key: "render",
894
- value: function render() {
895
- var rest = omit(this.props, ['style', 'classNames', 'className'], // substyle props
896
- keys(Suggestion.propTypes));
897
- return React.createElement("li", _extends({
898
- id: this.props.id,
899
- role: "option",
900
- "aria-selected": this.props.focused
901
- }, rest, this.props.style), this.renderContent());
909
+ if (renderSuggestion) {
910
+ return renderSuggestion(suggestion, query, highlightedDisplay, index, focused);
902
911
  }
903
- }, {
904
- key: "renderContent",
905
- value: function renderContent() {
906
- var _this$props = this.props,
907
- query = _this$props.query,
908
- renderSuggestion = _this$props.renderSuggestion,
909
- suggestion = _this$props.suggestion,
910
- index = _this$props.index,
911
- focused = _this$props.focused;
912
- var display = this.getDisplay();
913
- var highlightedDisplay = this.renderHighlightedDisplay(display, query);
914
-
915
- if (renderSuggestion) {
916
- return renderSuggestion(suggestion, query, highlightedDisplay, index, focused);
917
- }
918
-
919
- return highlightedDisplay;
920
- }
921
- }, {
922
- key: "getDisplay",
923
- value: function getDisplay() {
924
- var suggestion = this.props.suggestion;
925
912
 
926
- if (typeof suggestion === 'string') {
927
- return suggestion;
928
- }
913
+ return highlightedDisplay;
914
+ };
929
915
 
930
- var id = suggestion.id,
931
- display = suggestion.display;
916
+ var getDisplay = function getDisplay() {
917
+ if (typeof suggestion === 'string') {
918
+ return suggestion;
919
+ }
932
920
 
933
- if (id === undefined || !display) {
934
- return id;
935
- }
921
+ var id = suggestion.id,
922
+ display = suggestion.display;
936
923
 
937
- return display;
924
+ if (id === undefined || !display) {
925
+ return id;
938
926
  }
939
- }, {
940
- key: "renderHighlightedDisplay",
941
- value: function renderHighlightedDisplay(display) {
942
- var _this$props2 = this.props,
943
- ignoreAccents = _this$props2.ignoreAccents,
944
- query = _this$props2.query,
945
- style = _this$props2.style;
946
- var i = getSubstringIndex(display, query, ignoreAccents);
947
927
 
948
- if (i === -1) {
949
- return React.createElement("span", style('display'), display);
950
- }
928
+ return display;
929
+ };
930
+
931
+ var renderHighlightedDisplay = function renderHighlightedDisplay(display) {
932
+ var i = getSubstringIndex(display, query, ignoreAccents);
951
933
 
952
- return React.createElement("span", style('display'), display.substring(0, i), React.createElement("b", style('highlight'), display.substring(i, i + query.length)), display.substring(i + query.length));
934
+ if (i === -1) {
935
+ return /*#__PURE__*/React.createElement("span", style('display'), display);
953
936
  }
954
- }]);
955
937
 
956
- return Suggestion;
957
- }(Component);
938
+ return /*#__PURE__*/React.createElement("span", style('display'), display.substring(0, i), /*#__PURE__*/React.createElement("b", style('highlight'), display.substring(i, i + query.length)), display.substring(i + query.length));
939
+ };
940
+
941
+ return /*#__PURE__*/React.createElement("li", _extends({
942
+ id: id,
943
+ role: "option",
944
+ "aria-selected": focused
945
+ }, rest, style), renderContent());
946
+ }
958
947
 
959
- _defineProperty(Suggestion, "propTypes", {
948
+ Suggestion.propTypes = {
960
949
  id: PropTypes.string.isRequired,
961
950
  query: PropTypes.string.isRequired,
962
951
  index: PropTypes.number.isRequired,
@@ -967,8 +956,7 @@ _defineProperty(Suggestion, "propTypes", {
967
956
  })]).isRequired,
968
957
  renderSuggestion: PropTypes.func,
969
958
  focused: PropTypes.bool
970
- });
971
-
959
+ };
972
960
  var styled$1 = createDefaultStyle({
973
961
  cursor: 'pointer'
974
962
  }, function (props) {
@@ -978,20 +966,31 @@ var styled$1 = createDefaultStyle({
978
966
  });
979
967
  var Suggestion$1 = styled$1(Suggestion);
980
968
 
981
- function LoadingIndicator() {
982
- var styles = useStyles();
969
+ function LoadingIndicator(_ref) {
970
+ var style = _ref.style,
971
+ className = _ref.className,
972
+ classNames = _ref.classNames;
973
+ var styles = useStyles(defaultstyle, {
974
+ style: style,
975
+ className: className,
976
+ classNames: classNames
977
+ });
983
978
  var spinnerStyles = styles('spinner');
984
- return React.createElement("div", styles, React.createElement("div", spinnerStyles, React.createElement("div", spinnerStyles(['element', 'element1'])), React.createElement("div", spinnerStyles(['element', 'element2'])), React.createElement("div", spinnerStyles(['element', 'element3'])), React.createElement("div", spinnerStyles(['element', 'element4'])), React.createElement("div", spinnerStyles(['element', 'element5']))));
979
+ return /*#__PURE__*/React.createElement("div", styles, /*#__PURE__*/React.createElement("div", spinnerStyles, /*#__PURE__*/React.createElement("div", spinnerStyles(['element', 'element1'])), /*#__PURE__*/React.createElement("div", spinnerStyles(['element', 'element2'])), /*#__PURE__*/React.createElement("div", spinnerStyles(['element', 'element3'])), /*#__PURE__*/React.createElement("div", spinnerStyles(['element', 'element4'])), /*#__PURE__*/React.createElement("div", spinnerStyles(['element', 'element5']))));
985
980
  }
986
981
 
987
- var SuggestionsOverlay =
988
- /*#__PURE__*/
989
- function (_Component) {
982
+ var defaultstyle = {};
983
+
984
+ function _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
985
+
986
+ function _isNativeReflectConstruct$1() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
987
+
988
+ var SuggestionsOverlay = /*#__PURE__*/function (_Component) {
990
989
  _inherits(SuggestionsOverlay, _Component);
991
990
 
992
- function SuggestionsOverlay() {
993
- var _getPrototypeOf2;
991
+ var _super = _createSuper$1(SuggestionsOverlay);
994
992
 
993
+ function SuggestionsOverlay() {
995
994
  var _this;
996
995
 
997
996
  _classCallCheck(this, SuggestionsOverlay);
@@ -1000,7 +999,7 @@ function (_Component) {
1000
999
  args[_key] = arguments[_key];
1001
1000
  }
1002
1001
 
1003
- _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(SuggestionsOverlay)).call.apply(_getPrototypeOf2, [this].concat(args)));
1002
+ _this = _super.call.apply(_super, [this].concat(args));
1004
1003
 
1005
1004
  _defineProperty(_assertThisInitialized(_this), "handleMouseEnter", function (index, ev) {
1006
1005
  if (_this.props.onMouseEnter) {
@@ -1063,7 +1062,7 @@ function (_Component) {
1063
1062
  return null;
1064
1063
  }
1065
1064
 
1066
- return React.createElement("div", _extends({}, inline({
1065
+ return /*#__PURE__*/React.createElement("div", _extends({}, inline({
1067
1066
  position: position || 'absolute',
1068
1067
  left: left,
1069
1068
  right: right,
@@ -1071,7 +1070,7 @@ function (_Component) {
1071
1070
  }, style), {
1072
1071
  onMouseDown: onMouseDown,
1073
1072
  ref: containerRef
1074
- }), React.createElement("ul", _extends({
1073
+ }), /*#__PURE__*/React.createElement("ul", _extends({
1075
1074
  ref: this.setUlElement,
1076
1075
  id: id,
1077
1076
  role: "listbox",
@@ -1083,13 +1082,15 @@ function (_Component) {
1083
1082
  value: function renderSuggestions() {
1084
1083
  var _this2 = this;
1085
1084
 
1086
- return Object.values(this.props.suggestions).reduce(function (accResults, _ref) {
1085
+ var customSuggestionsContainer = this.props.customSuggestionsContainer;
1086
+ var suggestions = Object.values(this.props.suggestions).reduce(function (accResults, _ref) {
1087
1087
  var results = _ref.results,
1088
1088
  queryInfo = _ref.queryInfo;
1089
1089
  return [].concat(_toConsumableArray(accResults), _toConsumableArray(results.map(function (result, index) {
1090
1090
  return _this2.renderSuggestion(result, queryInfo, accResults.length + index);
1091
1091
  })));
1092
1092
  }, []);
1093
+ if (customSuggestionsContainer) return customSuggestionsContainer(suggestions);else return suggestions;
1093
1094
  }
1094
1095
  }, {
1095
1096
  key: "renderSuggestion",
@@ -1101,7 +1102,7 @@ function (_Component) {
1101
1102
  query = queryInfo.query;
1102
1103
  var renderSuggestion = Children.toArray(this.props.children)[childIndex].props.renderSuggestion;
1103
1104
  var ignoreAccents = this.props.ignoreAccents;
1104
- return React.createElement(Suggestion$1, {
1105
+ return /*#__PURE__*/React.createElement(Suggestion$1, {
1105
1106
  style: this.props.style('item'),
1106
1107
  key: "".concat(childIndex, "-").concat(getID(result)),
1107
1108
  id: getSuggestionHtmlId(this.props.id, index),
@@ -1126,7 +1127,7 @@ function (_Component) {
1126
1127
  return;
1127
1128
  }
1128
1129
 
1129
- return React.createElement(LoadingIndicator, {
1130
+ return /*#__PURE__*/React.createElement(LoadingIndicator, {
1130
1131
  style: this.props.style('loadingIndicator')
1131
1132
  });
1132
1133
  }
@@ -1183,9 +1184,13 @@ var styled$2 = createDefaultStyle({
1183
1184
  });
1184
1185
  var SuggestionsOverlay$1 = styled$2(SuggestionsOverlay);
1185
1186
 
1186
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
1187
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1187
1188
 
1188
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
1189
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1190
+
1191
+ function _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
1192
+
1193
+ function _isNativeReflectConstruct$2() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
1189
1194
  var makeTriggerRegex = function makeTriggerRegex(trigger) {
1190
1195
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1191
1196
 
@@ -1243,6 +1248,7 @@ var propTypes = {
1243
1248
  a11ySuggestionsListLabel: PropTypes.string,
1244
1249
  value: PropTypes.string,
1245
1250
  onKeyDown: PropTypes.func,
1251
+ customSuggestionsContainer: PropTypes.func,
1246
1252
  onSelect: PropTypes.func,
1247
1253
  onBlur: PropTypes.func,
1248
1254
  onChange: PropTypes.func,
@@ -1253,17 +1259,17 @@ var propTypes = {
1253
1259
  children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired
1254
1260
  };
1255
1261
 
1256
- var MentionsInput =
1257
- /*#__PURE__*/
1258
- function (_React$Component) {
1262
+ var MentionsInput = /*#__PURE__*/function (_React$Component) {
1259
1263
  _inherits(MentionsInput, _React$Component);
1260
1264
 
1265
+ var _super = _createSuper$2(MentionsInput);
1266
+
1261
1267
  function MentionsInput(_props) {
1262
1268
  var _this;
1263
1269
 
1264
1270
  _classCallCheck(this, MentionsInput);
1265
1271
 
1266
- _this = _possibleConstructorReturn(this, _getPrototypeOf(MentionsInput).call(this, _props));
1272
+ _this = _super.call(this, _props);
1267
1273
 
1268
1274
  _defineProperty(_assertThisInitialized(_this), "setContainerElement", function (el) {
1269
1275
  _this.containerElement = el;
@@ -1277,17 +1283,17 @@ function (_React$Component) {
1277
1283
 
1278
1284
  var props = omit(_this.props, ['style', 'classNames', 'className'], // substyle props
1279
1285
  keys(propTypes));
1280
- return _objectSpread({}, props, {}, style('input'), {
1281
- value: _this.getPlainText()
1286
+ return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, props), style('input')), {}, {
1287
+ value: _this.getPlainText(),
1288
+ onScroll: _this.updateHighlighterScroll
1282
1289
  }, !readOnly && !disabled && {
1283
1290
  onChange: _this.handleChange,
1284
1291
  onSelect: _this.handleSelect,
1285
1292
  onKeyDown: _this.handleKeyDown,
1286
1293
  onBlur: _this.handleBlur,
1287
1294
  onCompositionStart: _this.handleCompositionStart,
1288
- onCompositionEnd: _this.handleCompositionEnd,
1289
- onScroll: _this.updateHighlighterScroll
1290
- }, {}, _this.isOpened() && {
1295
+ onCompositionEnd: _this.handleCompositionEnd
1296
+ }), _this.isOpened() && {
1291
1297
  role: 'combobox',
1292
1298
  'aria-controls': _this.uuidSuggestionsOverlay,
1293
1299
  'aria-expanded': true,
@@ -1304,18 +1310,18 @@ function (_React$Component) {
1304
1310
 
1305
1311
  var inputProps = _this.getInputProps();
1306
1312
 
1307
- return React.createElement("div", style('control'), _this.renderHighlighter(), singleLine ? _this.renderInput(inputProps) : _this.renderTextarea(inputProps));
1313
+ return /*#__PURE__*/React.createElement("div", style('control'), _this.renderHighlighter(), singleLine ? _this.renderInput(inputProps) : _this.renderTextarea(inputProps));
1308
1314
  });
1309
1315
 
1310
1316
  _defineProperty(_assertThisInitialized(_this), "renderInput", function (props) {
1311
- return React.createElement("input", _extends({
1317
+ return /*#__PURE__*/React.createElement("input", _extends({
1312
1318
  type: "text",
1313
1319
  ref: _this.setInputRef
1314
1320
  }, props));
1315
1321
  });
1316
1322
 
1317
1323
  _defineProperty(_assertThisInitialized(_this), "renderTextarea", function (props) {
1318
- return React.createElement("textarea", _extends({
1324
+ return /*#__PURE__*/React.createElement("textarea", _extends({
1319
1325
  ref: _this.setInputRef
1320
1326
  }, props));
1321
1327
  });
@@ -1346,7 +1352,7 @@ function (_React$Component) {
1346
1352
  left = _this$state$suggestio.left,
1347
1353
  top = _this$state$suggestio.top,
1348
1354
  right = _this$state$suggestio.right;
1349
- var suggestionsNode = React.createElement(SuggestionsOverlay$1, {
1355
+ var suggestionsNode = /*#__PURE__*/React.createElement(SuggestionsOverlay$1, {
1350
1356
  id: _this.uuidSuggestionsOverlay,
1351
1357
  style: _this.props.style('suggestions'),
1352
1358
  position: position,
@@ -1357,6 +1363,7 @@ function (_React$Component) {
1357
1363
  scrollFocusedIntoView: _this.state.scrollFocusedIntoView,
1358
1364
  containerRef: _this.setSuggestionsElement,
1359
1365
  suggestions: _this.state.suggestions,
1366
+ customSuggestionsContainer: _this.props.customSuggestionsContainer,
1360
1367
  onSelect: _this.addMention,
1361
1368
  onMouseDown: _this.handleSuggestionsMouseDown,
1362
1369
  onMouseEnter: _this.handleSuggestionsMouseEnter,
@@ -1367,7 +1374,7 @@ function (_React$Component) {
1367
1374
  }, _this.props.children);
1368
1375
 
1369
1376
  if (_this.props.suggestionsPortalHost) {
1370
- return ReactDOM.createPortal(suggestionsNode, _this.props.suggestionsPortalHost);
1377
+ return /*#__PURE__*/ReactDOM.createPortal(suggestionsNode, _this.props.suggestionsPortalHost);
1371
1378
  } else {
1372
1379
  return suggestionsNode;
1373
1380
  }
@@ -1382,7 +1389,7 @@ function (_React$Component) {
1382
1389
  children = _this$props3.children,
1383
1390
  value = _this$props3.value,
1384
1391
  style = _this$props3.style;
1385
- return React.createElement(Highlighter$1, {
1392
+ return /*#__PURE__*/React.createElement(Highlighter$1, {
1386
1393
  containerRef: _this.setHighlighterElement,
1387
1394
  style: style('highlighter'),
1388
1395
  value: value,
@@ -1459,7 +1466,7 @@ function (_React$Component) {
1459
1466
 
1460
1467
  if (startOfMention !== undefined && _this.state.selectionEnd > startOfMention) {
1461
1468
  // only if a deletion has taken place
1462
- selectionStart = startOfMention;
1469
+ selectionStart = startOfMention + (ev.nativeEvent.data ? ev.nativeEvent.data.length : 0);
1463
1470
  selectionEnd = selectionStart;
1464
1471
  setSelectionAfterMentionChange = true;
1465
1472
  }
@@ -1697,7 +1704,7 @@ function (_React$Component) {
1697
1704
  // is small enough to NOT cover up the caret
1698
1705
 
1699
1706
 
1700
- if (allowSuggestionsAboveCursor && viewportRelative.top - highlighter.scrollTop + suggestions.offsetHeight > viewportHeight && suggestions.offsetHeight < caretOffsetParentRect.top - caretHeight - highlighter.scrollTop) {
1707
+ if (allowSuggestionsAboveCursor && viewportRelative.top - highlighter.scrollTop + suggestions.offsetHeight > viewportHeight && suggestions.offsetHeight < caretOffsetParentRect.top - caretHeight - highlighter.scrollTop || forceSuggestionsAboveCursor) {
1701
1708
  position.top = _top - suggestions.offsetHeight - caretHeight;
1702
1709
  } else {
1703
1710
  position.top = _top;
@@ -1819,7 +1826,7 @@ function (_React$Component) {
1819
1826
  if (queryId !== _this._queryId) return; // save in property so that multiple sync state updates from different mentions sources
1820
1827
  // won't overwrite each other
1821
1828
 
1822
- _this.suggestions = _objectSpread({}, _this.suggestions, _defineProperty({}, childIndex, {
1829
+ _this.suggestions = _objectSpread(_objectSpread({}, _this.suggestions), {}, _defineProperty({}, childIndex, {
1823
1830
  queryInfo: {
1824
1831
  childIndex: childIndex,
1825
1832
  query: query,
@@ -1965,7 +1972,7 @@ function (_React$Component) {
1965
1972
  }, {
1966
1973
  key: "render",
1967
1974
  value: function render() {
1968
- return React.createElement("div", _extends({
1975
+ return /*#__PURE__*/React.createElement("div", _extends({
1969
1976
  ref: this.setContainerElement
1970
1977
  }, this.props.style), this.renderControl(), this.renderSuggestionsOverlay());
1971
1978
  }
@@ -1995,7 +2002,7 @@ function (_React$Component) {
1995
2002
  var newValue = spliceString(value, markupStartIndex, markupEndIndex, pastedMentions || pastedData).replace(/\r/g, '');
1996
2003
  var newPlainTextValue = getPlainText(newValue, config);
1997
2004
  var eventMock = {
1998
- target: _objectSpread({}, event.target, {
2005
+ target: _objectSpread(_objectSpread({}, event.target), {}, {
1999
2006
  value: newValue
2000
2007
  })
2001
2008
  };
@@ -2008,9 +2015,10 @@ function (_React$Component) {
2008
2015
  }, {
2009
2016
  key: "saveSelectionToClipboard",
2010
2017
  value: function saveSelectionToClipboard(event) {
2011
- var _this$state4 = this.state,
2012
- selectionStart = _this$state4.selectionStart,
2013
- selectionEnd = _this$state4.selectionEnd;
2018
+ // use the actual selectionStart & selectionEnd instead of the one stored
2019
+ // in state to ensure copy & paste also works on disabled inputs & textareas
2020
+ var selectionStart = this.inputElement.selectionStart;
2021
+ var selectionEnd = this.inputElement.selectionEnd;
2014
2022
  var _this$props8 = this.props,
2015
2023
  children = _this$props8.children,
2016
2024
  value = _this$props8.value;
@@ -2052,9 +2060,9 @@ function (_React$Component) {
2052
2060
 
2053
2061
  event.preventDefault();
2054
2062
  this.saveSelectionToClipboard(event);
2055
- var _this$state5 = this.state,
2056
- selectionStart = _this$state5.selectionStart,
2057
- selectionEnd = _this$state5.selectionEnd;
2063
+ var _this$state4 = this.state,
2064
+ selectionStart = _this$state4.selectionStart,
2065
+ selectionEnd = _this$state4.selectionEnd;
2058
2066
  var _this$props9 = this.props,
2059
2067
  children = _this$props9.children,
2060
2068
  value = _this$props9.value;
@@ -2064,7 +2072,7 @@ function (_React$Component) {
2064
2072
  var newValue = [value.slice(0, markupStartIndex), value.slice(markupEndIndex)].join('');
2065
2073
  var newPlainTextValue = getPlainText(newValue, config);
2066
2074
  var eventMock = {
2067
- target: _objectSpread({}, event.target, {
2075
+ target: _objectSpread(_objectSpread({}, event.target), {}, {
2068
2076
  value: newPlainTextValue
2069
2077
  })
2070
2078
  };
@@ -2154,7 +2162,7 @@ var Mention = function Mention(_ref) {
2154
2162
  className: className,
2155
2163
  classNames: classNames
2156
2164
  });
2157
- return React.createElement("strong", styles, display);
2165
+ return /*#__PURE__*/React.createElement("strong", styles, display);
2158
2166
  };
2159
2167
 
2160
2168
  Mention.propTypes = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-mentions",
3
- "version": "4.4.2",
3
+ "version": "4.4.6",
4
4
  "description": "React mentions input",
5
5
  "main": "dist/react-mentions.cjs.js",
6
6
  "module": "dist/react-mentions.esm.js",
@@ -12,9 +12,11 @@
12
12
  "format": "prettier --write --no-semi --single-quote --trailing-comma es5 \"{src,test,demo/src}/**/*.js\"",
13
13
  "lint": "eslint --max-warnings=0 --ext .js src test demo",
14
14
  "start": "cross-env NODE_OPTIONS=--openssl-legacy-provider NODE_ENV=development webpack-dev-server --config demo/webpack.config.js",
15
- "semantic-release": "semantic-release",
16
15
  "test": "jest",
17
- "now-build": "webpack --config demo/webpack.config.js"
16
+ "now-build": "webpack --config demo/webpack.config.js",
17
+ "prerelease": "yarn build",
18
+ "release": "changeset publish",
19
+ "change": "changeset"
18
20
  },
19
21
  "repository": {
20
22
  "type": "git",
@@ -31,7 +33,7 @@
31
33
  "safari >= 10",
32
34
  "ie >= 11"
33
35
  ],
34
- "author": "Jan-Felix Schwarz",
36
+ "author": "SAP-Signavio",
35
37
  "license": "BSD-3-Clause",
36
38
  "bugs": {
37
39
  "url": "https://github.com/signavio/react-mentions/issues"
@@ -47,13 +49,13 @@
47
49
  "@babel/preset-env": "^7.4.5",
48
50
  "@babel/preset-flow": "^7.0.0",
49
51
  "@babel/preset-react": "^7.0.0",
52
+ "@changesets/cli": "^2.23.0",
50
53
  "@testing-library/dom": "^8.13.0",
51
54
  "@testing-library/jest-dom": "^5.16.4",
52
55
  "@testing-library/react": "^13.2.0",
53
56
  "babel-eslint": "^7.2.3",
54
57
  "babel-loader": "^8.0.6",
55
58
  "case-sensitive-paths-webpack-plugin": "^2.2.0",
56
- "condition-circle": "^2.0.2",
57
59
  "core-js": "^3.1.4",
58
60
  "cross-env": "^5.2.1",
59
61
  "css-loader": "^3.0.0",
@@ -77,7 +79,6 @@
77
79
  "react-dom": "16.8.6",
78
80
  "recompose": "^0.30.0",
79
81
  "regenerator-runtime": "^0.13.2",
80
- "semantic-release": "^19.0.2",
81
82
  "style-loader": "^0.23.1",
82
83
  "substyle-jss": "^4.0.1",
83
84
  "webpack": "^4.35.2",