react-mentions 4.4.6 → 4.4.8
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.
- package/CHANGELOG.md +18 -0
- package/README.md +1 -3
- package/dist/react-mentions.cjs.dev.js +259 -311
- package/dist/react-mentions.cjs.prod.js +169 -246
- package/dist/react-mentions.esm.js +260 -312
- package/package.json +1 -1
@@ -661,6 +661,10 @@ var omit = function omit(obj) {
|
|
661
661
|
|
662
662
|
var _excluded = ["style", "className", "classNames"];
|
663
663
|
|
664
|
+
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; }
|
665
|
+
|
666
|
+
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; }
|
667
|
+
|
664
668
|
function createDefaultStyle(defaultStyle, getModifiers) {
|
665
669
|
var enhance = function enhance(ComponentToWrap) {
|
666
670
|
var DefaultStyleEnhancer = function DefaultStyleEnhancer(_ref) {
|
@@ -681,17 +685,18 @@ function createDefaultStyle(defaultStyle, getModifiers) {
|
|
681
685
|
};
|
682
686
|
|
683
687
|
var displayName = ComponentToWrap.displayName || ComponentToWrap.name || 'Component';
|
684
|
-
DefaultStyleEnhancer.displayName = "defaultStyle(".concat(displayName, ")");
|
685
|
-
|
688
|
+
DefaultStyleEnhancer.displayName = "defaultStyle(".concat(displayName, ")"); // return DefaultStyleEnhancer
|
689
|
+
|
690
|
+
return /*#__PURE__*/React__default.forwardRef(function (props, ref) {
|
691
|
+
return DefaultStyleEnhancer(_objectSpread(_objectSpread({}, props), {}, {
|
692
|
+
ref: ref
|
693
|
+
}));
|
694
|
+
});
|
686
695
|
};
|
687
696
|
|
688
697
|
return enhance;
|
689
698
|
}
|
690
699
|
|
691
|
-
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); }; }
|
692
|
-
|
693
|
-
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; } }
|
694
|
-
|
695
700
|
var _generateComponentKey = function _generateComponentKey(usedKeys, id) {
|
696
701
|
if (!usedKeys.hasOwnProperty(id)) {
|
697
702
|
usedKeys[id] = 0;
|
@@ -702,158 +707,126 @@ var _generateComponentKey = function _generateComponentKey(usedKeys, id) {
|
|
702
707
|
return id + '_' + usedKeys[id];
|
703
708
|
};
|
704
709
|
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
710
|
+
function Highlighter(_ref) {
|
711
|
+
var selectionStart = _ref.selectionStart,
|
712
|
+
selectionEnd = _ref.selectionEnd,
|
713
|
+
_ref$value = _ref.value,
|
714
|
+
value = _ref$value === void 0 ? '' : _ref$value,
|
715
|
+
onCaretPositionChange = _ref.onCaretPositionChange,
|
716
|
+
containerRef = _ref.containerRef,
|
717
|
+
children = _ref.children,
|
718
|
+
singleLine = _ref.singleLine,
|
719
|
+
style = _ref.style;
|
720
|
+
|
721
|
+
var _useState = React.useState({
|
722
|
+
left: undefined,
|
723
|
+
top: undefined
|
724
|
+
}),
|
725
|
+
_useState2 = _slicedToArray(_useState, 2),
|
726
|
+
position = _useState2[0],
|
727
|
+
setPosition = _useState2[1];
|
728
|
+
|
729
|
+
var _useState3 = React.useState(),
|
730
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
731
|
+
caretElement = _useState4[0],
|
732
|
+
setCaretElement = _useState4[1];
|
733
|
+
|
734
|
+
React.useEffect(function () {
|
735
|
+
notifyCaretPosition();
|
736
|
+
});
|
727
737
|
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
this.notifyCaretPosition();
|
738
|
+
var notifyCaretPosition = function notifyCaretPosition() {
|
739
|
+
if (!caretElement) {
|
740
|
+
return;
|
732
741
|
}
|
733
|
-
}, {
|
734
|
-
key: "componentDidUpdate",
|
735
|
-
value: function componentDidUpdate() {
|
736
|
-
this.notifyCaretPosition();
|
737
|
-
}
|
738
|
-
}, {
|
739
|
-
key: "notifyCaretPosition",
|
740
|
-
value: function notifyCaretPosition() {
|
741
|
-
if (!this.caretElement) {
|
742
|
-
return;
|
743
|
-
}
|
744
|
-
|
745
|
-
var _this$caretElement = this.caretElement,
|
746
|
-
offsetLeft = _this$caretElement.offsetLeft,
|
747
|
-
offsetTop = _this$caretElement.offsetTop;
|
748
742
|
|
749
|
-
|
750
|
-
|
751
|
-
}
|
743
|
+
var offsetLeft = caretElement.offsetLeft,
|
744
|
+
offsetTop = caretElement.offsetTop;
|
752
745
|
|
753
|
-
|
754
|
-
|
755
|
-
top: offsetTop
|
756
|
-
};
|
757
|
-
this.setState(newPosition);
|
758
|
-
this.props.onCaretPositionChange(newPosition);
|
746
|
+
if (position.left === offsetLeft && position.top === offsetTop) {
|
747
|
+
return;
|
759
748
|
}
|
760
|
-
}, {
|
761
|
-
key: "render",
|
762
|
-
value: function render() {
|
763
|
-
var _this2 = this;
|
764
|
-
|
765
|
-
var _this$props = this.props,
|
766
|
-
selectionStart = _this$props.selectionStart,
|
767
|
-
selectionEnd = _this$props.selectionEnd,
|
768
|
-
value = _this$props.value,
|
769
|
-
style = _this$props.style,
|
770
|
-
children = _this$props.children,
|
771
|
-
containerRef = _this$props.containerRef;
|
772
|
-
var config = readConfigFromChildren(children); // If there's a caret (i.e. no range selection), map the caret position into the marked up value
|
773
749
|
|
774
|
-
|
750
|
+
var newPosition = {
|
751
|
+
left: offsetLeft,
|
752
|
+
top: offsetTop
|
753
|
+
};
|
754
|
+
setPosition(newPosition);
|
755
|
+
onCaretPositionChange(newPosition);
|
756
|
+
};
|
775
757
|
|
776
|
-
|
777
|
-
|
778
|
-
}
|
758
|
+
var config = readConfigFromChildren(children);
|
759
|
+
var caretPositionInMarkup;
|
779
760
|
|
780
|
-
|
781
|
-
|
761
|
+
if (selectionEnd === selectionStart) {
|
762
|
+
caretPositionInMarkup = mapPlainTextIndex(value, config, selectionStart, 'START');
|
763
|
+
}
|
782
764
|
|
783
|
-
|
784
|
-
|
765
|
+
var resultComponents = [];
|
766
|
+
var componentKeys = {};
|
767
|
+
var components = resultComponents;
|
768
|
+
var substringComponentKey = 0;
|
769
|
+
|
770
|
+
var textIteratee = function textIteratee(substr, index, indexInPlainText) {
|
771
|
+
// check whether the caret element has to be inserted inside the current plain substring
|
772
|
+
if (isNumber(caretPositionInMarkup) && caretPositionInMarkup >= index && caretPositionInMarkup <= index + substr.length) {
|
773
|
+
// if yes, split substr at the caret position and insert the caret component
|
774
|
+
var splitIndex = caretPositionInMarkup - index;
|
775
|
+
components.push(renderSubstring(substr.substring(0, splitIndex), substringComponentKey)); // add all following substrings and mention components as children of the caret component
|
776
|
+
|
777
|
+
components = [renderSubstring(substr.substring(splitIndex), substringComponentKey)];
|
778
|
+
} else {
|
779
|
+
components.push(renderSubstring(substr, substringComponentKey));
|
780
|
+
}
|
785
781
|
|
786
|
-
|
787
|
-
|
788
|
-
if (isNumber(caretPositionInMarkup) && caretPositionInMarkup >= index && caretPositionInMarkup <= index + substr.length) {
|
789
|
-
// if yes, split substr at the caret position and insert the caret component
|
790
|
-
var splitIndex = caretPositionInMarkup - index;
|
791
|
-
components.push(_this2.renderSubstring(substr.substring(0, splitIndex), substringComponentKey)); // add all following substrings and mention components as children of the caret component
|
782
|
+
substringComponentKey++;
|
783
|
+
};
|
792
784
|
|
793
|
-
|
794
|
-
|
795
|
-
// otherwise just push the plain text substring
|
796
|
-
components.push(_this2.renderSubstring(substr, substringComponentKey));
|
797
|
-
}
|
785
|
+
var mentionIteratee = function mentionIteratee(markup, index, indexInPlainText, id, display, mentionChildIndex, lastMentionEndIndex) {
|
786
|
+
var key = _generateComponentKey(componentKeys, id);
|
798
787
|
|
799
|
-
|
800
|
-
|
788
|
+
components.push(getMentionComponentForMatch(id, display, mentionChildIndex, key));
|
789
|
+
};
|
801
790
|
|
802
|
-
|
803
|
-
|
804
|
-
|
791
|
+
var renderSubstring = function renderSubstring(string, key) {
|
792
|
+
// set substring span to hidden, so that Emojis are not shown double in Mobile Safari
|
793
|
+
return /*#__PURE__*/React__default.createElement("span", _extends({}, style('substring'), {
|
794
|
+
key: key
|
795
|
+
}), string);
|
796
|
+
};
|
805
797
|
|
806
|
-
|
807
|
-
|
798
|
+
var getMentionComponentForMatch = function getMentionComponentForMatch(id, display, mentionChildIndex, key) {
|
799
|
+
var props = {
|
800
|
+
id: id,
|
801
|
+
display: display,
|
802
|
+
key: key
|
803
|
+
};
|
804
|
+
var child = React.Children.toArray(children)[mentionChildIndex];
|
805
|
+
return /*#__PURE__*/React__default.cloneElement(child, props);
|
806
|
+
};
|
808
807
|
|
809
|
-
|
808
|
+
var renderHighlighterCaret = function renderHighlighterCaret(children) {
|
809
|
+
return /*#__PURE__*/React__default.createElement("span", _extends({}, style('caret'), {
|
810
|
+
ref: setCaretElement,
|
811
|
+
key: "caret"
|
812
|
+
}), children);
|
813
|
+
};
|
810
814
|
|
811
|
-
|
815
|
+
iterateMentionsMarkup(value, config, mentionIteratee, textIteratee); // append a span containing a space, to ensure the last text line has the correct height
|
812
816
|
|
813
|
-
|
814
|
-
// if a caret component is to be rendered, add all components that followed as its children
|
815
|
-
resultComponents.push(this.renderHighlighterCaret(components));
|
816
|
-
}
|
817
|
+
components.push(' ');
|
817
818
|
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
}, {
|
823
|
-
key: "renderSubstring",
|
824
|
-
value: function renderSubstring(string, key) {
|
825
|
-
// set substring span to hidden, so that Emojis are not shown double in Mobile Safari
|
826
|
-
return /*#__PURE__*/React__default.createElement("span", _extends({}, this.props.style('substring'), {
|
827
|
-
key: key
|
828
|
-
}), string);
|
829
|
-
} // Returns a clone of the Mention child applicable for the specified type to be rendered inside the highlighter
|
830
|
-
|
831
|
-
}, {
|
832
|
-
key: "getMentionComponentForMatch",
|
833
|
-
value: function getMentionComponentForMatch(id, display, mentionChildIndex, key) {
|
834
|
-
var props = {
|
835
|
-
id: id,
|
836
|
-
display: display,
|
837
|
-
key: key
|
838
|
-
};
|
839
|
-
var child = React.Children.toArray(this.props.children)[mentionChildIndex];
|
840
|
-
return /*#__PURE__*/React__default.cloneElement(child, props);
|
841
|
-
} // Renders an component to be inserted in the highlighter at the current caret position
|
842
|
-
|
843
|
-
}, {
|
844
|
-
key: "renderHighlighterCaret",
|
845
|
-
value: function renderHighlighterCaret(children) {
|
846
|
-
return /*#__PURE__*/React__default.createElement("span", _extends({}, this.props.style('caret'), {
|
847
|
-
ref: this.setCaretElement,
|
848
|
-
key: "caret"
|
849
|
-
}), children);
|
850
|
-
}
|
851
|
-
}]);
|
819
|
+
if (components !== resultComponents) {
|
820
|
+
// if a caret component is to be rendered, add all components that followed as its children
|
821
|
+
resultComponents.push(renderHighlighterCaret(components));
|
822
|
+
}
|
852
823
|
|
853
|
-
return
|
854
|
-
|
824
|
+
return /*#__PURE__*/React__default.createElement("div", _extends({}, style, {
|
825
|
+
ref: containerRef
|
826
|
+
}), resultComponents);
|
827
|
+
}
|
855
828
|
|
856
|
-
|
829
|
+
Highlighter.propTypes = {
|
857
830
|
selectionStart: PropTypes.number,
|
858
831
|
selectionEnd: PropTypes.number,
|
859
832
|
value: PropTypes.string.isRequired,
|
@@ -862,12 +835,7 @@ _defineProperty(Highlighter, "propTypes", {
|
|
862
835
|
current: typeof Element === 'undefined' ? PropTypes.any : PropTypes.instanceOf(Element)
|
863
836
|
})]),
|
864
837
|
children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired
|
865
|
-
}
|
866
|
-
|
867
|
-
_defineProperty(Highlighter, "defaultProps", {
|
868
|
-
value: ''
|
869
|
-
});
|
870
|
-
|
838
|
+
};
|
871
839
|
var styled = createDefaultStyle({
|
872
840
|
position: 'relative',
|
873
841
|
boxSizing: 'border-box',
|
@@ -989,162 +957,145 @@ function LoadingIndicator(_ref) {
|
|
989
957
|
|
990
958
|
var defaultstyle = {};
|
991
959
|
|
992
|
-
function
|
993
|
-
|
994
|
-
|
960
|
+
function SuggestionsOverlay(_ref) {
|
961
|
+
var id = _ref.id,
|
962
|
+
_ref$suggestions = _ref.suggestions,
|
963
|
+
suggestions = _ref$suggestions === void 0 ? {} : _ref$suggestions,
|
964
|
+
a11ySuggestionsListLabel = _ref.a11ySuggestionsListLabel,
|
965
|
+
focusIndex = _ref.focusIndex,
|
966
|
+
position = _ref.position,
|
967
|
+
left = _ref.left,
|
968
|
+
right = _ref.right,
|
969
|
+
top = _ref.top,
|
970
|
+
scrollFocusedIntoView = _ref.scrollFocusedIntoView,
|
971
|
+
isLoading = _ref.isLoading,
|
972
|
+
isOpened = _ref.isOpened,
|
973
|
+
_ref$onSelect = _ref.onSelect,
|
974
|
+
onSelect = _ref$onSelect === void 0 ? function () {
|
975
|
+
return null;
|
976
|
+
} : _ref$onSelect,
|
977
|
+
ignoreAccents = _ref.ignoreAccents,
|
978
|
+
containerRef = _ref.containerRef,
|
979
|
+
children = _ref.children,
|
980
|
+
style = _ref.style,
|
981
|
+
customSuggestionsContainer = _ref.customSuggestionsContainer,
|
982
|
+
onMouseDown = _ref.onMouseDown,
|
983
|
+
onMouseEnter = _ref.onMouseEnter;
|
984
|
+
|
985
|
+
var _useState = React.useState(undefined),
|
986
|
+
_useState2 = _slicedToArray(_useState, 2),
|
987
|
+
ulElement = _useState2[0],
|
988
|
+
setUlElement = _useState2[1];
|
989
|
+
|
990
|
+
React.useEffect(function () {
|
991
|
+
if (!ulElement || ulElement.offsetHeight >= ulElement.scrollHeight || !scrollFocusedIntoView) {
|
992
|
+
return;
|
993
|
+
}
|
995
994
|
|
996
|
-
var
|
997
|
-
_inherits(SuggestionsOverlay, _Component);
|
995
|
+
var scrollTop = ulElement.scrollTop;
|
998
996
|
|
999
|
-
|
997
|
+
var _ulElement$children$f = ulElement.children[focusIndex].getBoundingClientRect(),
|
998
|
+
top = _ulElement$children$f.top,
|
999
|
+
bottom = _ulElement$children$f.bottom;
|
1000
1000
|
|
1001
|
-
|
1002
|
-
|
1001
|
+
var _ulElement$getBoundin = ulElement.getBoundingClientRect(),
|
1002
|
+
topContainer = _ulElement$getBoundin.top;
|
1003
1003
|
|
1004
|
-
|
1004
|
+
top = top - topContainer + scrollTop;
|
1005
|
+
bottom = bottom - topContainer + scrollTop;
|
1005
1006
|
|
1006
|
-
|
1007
|
-
|
1007
|
+
if (top < scrollTop) {
|
1008
|
+
ulElement.scrollTop = top;
|
1009
|
+
} else if (bottom > ulElement.offsetHeight) {
|
1010
|
+
ulElement.scrollTop = bottom - ulElement.offsetHeight;
|
1008
1011
|
}
|
1012
|
+
}, [focusIndex, scrollFocusedIntoView, ulElement]);
|
1009
1013
|
|
1010
|
-
|
1014
|
+
var renderSuggestions = function renderSuggestions() {
|
1015
|
+
var suggestionsToRender = /*#__PURE__*/React__default.createElement("ul", _extends({
|
1016
|
+
ref: setUlElement,
|
1017
|
+
id: id,
|
1018
|
+
role: "listbox",
|
1019
|
+
"aria-label": a11ySuggestionsListLabel
|
1020
|
+
}, style('list')), Object.values(suggestions).reduce(function (accResults, _ref2) {
|
1021
|
+
var results = _ref2.results,
|
1022
|
+
queryInfo = _ref2.queryInfo;
|
1023
|
+
return [].concat(_toConsumableArray(accResults), _toConsumableArray(results.map(function (result, index) {
|
1024
|
+
return renderSuggestion(result, queryInfo, accResults.length + index);
|
1025
|
+
})));
|
1026
|
+
}, []));
|
1027
|
+
if (customSuggestionsContainer) return customSuggestionsContainer(suggestionsToRender);
|
1028
|
+
return suggestionsToRender;
|
1029
|
+
};
|
1011
1030
|
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1031
|
+
var renderSuggestion = function renderSuggestion(result, queryInfo, index) {
|
1032
|
+
var isFocused = index === focusIndex;
|
1033
|
+
var childIndex = queryInfo.childIndex,
|
1034
|
+
query = queryInfo.query;
|
1035
|
+
var renderSuggestion = React.Children.toArray(children)[childIndex].props.renderSuggestion;
|
1036
|
+
return /*#__PURE__*/React__default.createElement(Suggestion$1, {
|
1037
|
+
style: style('item'),
|
1038
|
+
key: "".concat(childIndex, "-").concat(getID(result)),
|
1039
|
+
id: getSuggestionHtmlId(id, index),
|
1040
|
+
query: query,
|
1041
|
+
index: index,
|
1042
|
+
ignoreAccents: ignoreAccents,
|
1043
|
+
renderSuggestion: renderSuggestion,
|
1044
|
+
suggestion: result,
|
1045
|
+
focused: isFocused,
|
1046
|
+
onClick: function onClick() {
|
1047
|
+
return select(result, queryInfo);
|
1048
|
+
},
|
1049
|
+
onMouseEnter: function onMouseEnter() {
|
1050
|
+
return handleMouseEnter(index);
|
1015
1051
|
}
|
1016
1052
|
});
|
1053
|
+
};
|
1017
1054
|
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1055
|
+
var renderLoadingIndicator = function renderLoadingIndicator() {
|
1056
|
+
if (!isLoading) {
|
1057
|
+
return;
|
1058
|
+
}
|
1021
1059
|
|
1022
|
-
|
1023
|
-
|
1060
|
+
return /*#__PURE__*/React__default.createElement(LoadingIndicator, {
|
1061
|
+
style: style('loadingIndicator')
|
1024
1062
|
});
|
1063
|
+
};
|
1025
1064
|
|
1026
|
-
|
1027
|
-
|
1028
|
-
|
1029
|
-
_createClass(SuggestionsOverlay, [{
|
1030
|
-
key: "componentDidUpdate",
|
1031
|
-
value: function componentDidUpdate() {
|
1032
|
-
if (!this.ulElement || this.ulElement.offsetHeight >= this.ulElement.scrollHeight || !this.props.scrollFocusedIntoView) {
|
1033
|
-
return;
|
1034
|
-
}
|
1035
|
-
|
1036
|
-
var scrollTop = this.ulElement.scrollTop;
|
1037
|
-
|
1038
|
-
var _this$ulElement$child = this.ulElement.children[this.props.focusIndex].getBoundingClientRect(),
|
1039
|
-
top = _this$ulElement$child.top,
|
1040
|
-
bottom = _this$ulElement$child.bottom;
|
1041
|
-
|
1042
|
-
var _this$ulElement$getBo = this.ulElement.getBoundingClientRect(),
|
1043
|
-
topContainer = _this$ulElement$getBo.top;
|
1044
|
-
|
1045
|
-
top = top - topContainer + scrollTop;
|
1046
|
-
bottom = bottom - topContainer + scrollTop;
|
1047
|
-
|
1048
|
-
if (top < scrollTop) {
|
1049
|
-
this.ulElement.scrollTop = top;
|
1050
|
-
} else if (bottom > this.ulElement.offsetHeight) {
|
1051
|
-
this.ulElement.scrollTop = bottom - this.ulElement.offsetHeight;
|
1052
|
-
}
|
1065
|
+
var handleMouseEnter = function handleMouseEnter(index, ev) {
|
1066
|
+
if (onMouseEnter) {
|
1067
|
+
onMouseEnter(index);
|
1053
1068
|
}
|
1054
|
-
}
|
1055
|
-
key: "render",
|
1056
|
-
value: function render() {
|
1057
|
-
var _this$props = this.props,
|
1058
|
-
id = _this$props.id,
|
1059
|
-
a11ySuggestionsListLabel = _this$props.a11ySuggestionsListLabel,
|
1060
|
-
isOpened = _this$props.isOpened,
|
1061
|
-
style = _this$props.style,
|
1062
|
-
onMouseDown = _this$props.onMouseDown,
|
1063
|
-
containerRef = _this$props.containerRef,
|
1064
|
-
position = _this$props.position,
|
1065
|
-
left = _this$props.left,
|
1066
|
-
right = _this$props.right,
|
1067
|
-
top = _this$props.top; // do not show suggestions until there is some data
|
1068
|
-
|
1069
|
-
if (!isOpened) {
|
1070
|
-
return null;
|
1071
|
-
}
|
1069
|
+
};
|
1072
1070
|
|
1073
|
-
|
1074
|
-
|
1075
|
-
|
1076
|
-
right: right,
|
1077
|
-
top: top
|
1078
|
-
}, style), {
|
1079
|
-
onMouseDown: onMouseDown,
|
1080
|
-
ref: containerRef
|
1081
|
-
}), /*#__PURE__*/React__default.createElement("ul", _extends({
|
1082
|
-
ref: this.setUlElement,
|
1083
|
-
id: id,
|
1084
|
-
role: "listbox",
|
1085
|
-
"aria-label": a11ySuggestionsListLabel
|
1086
|
-
}, style('list')), this.renderSuggestions()), this.renderLoadingIndicator());
|
1087
|
-
}
|
1088
|
-
}, {
|
1089
|
-
key: "renderSuggestions",
|
1090
|
-
value: function renderSuggestions() {
|
1091
|
-
var _this2 = this;
|
1071
|
+
var select = function select(suggestion, queryInfo) {
|
1072
|
+
onSelect(suggestion, queryInfo);
|
1073
|
+
};
|
1092
1074
|
|
1093
|
-
|
1094
|
-
|
1095
|
-
|
1096
|
-
queryInfo = _ref.queryInfo;
|
1097
|
-
return [].concat(_toConsumableArray(accResults), _toConsumableArray(results.map(function (result, index) {
|
1098
|
-
return _this2.renderSuggestion(result, queryInfo, accResults.length + index);
|
1099
|
-
})));
|
1100
|
-
}, []);
|
1101
|
-
if (customSuggestionsContainer) return customSuggestionsContainer(suggestions);else return suggestions;
|
1102
|
-
}
|
1103
|
-
}, {
|
1104
|
-
key: "renderSuggestion",
|
1105
|
-
value: function renderSuggestion(result, queryInfo, index) {
|
1106
|
-
var _this3 = this;
|
1107
|
-
|
1108
|
-
var isFocused = index === this.props.focusIndex;
|
1109
|
-
var childIndex = queryInfo.childIndex,
|
1110
|
-
query = queryInfo.query;
|
1111
|
-
var renderSuggestion = React.Children.toArray(this.props.children)[childIndex].props.renderSuggestion;
|
1112
|
-
var ignoreAccents = this.props.ignoreAccents;
|
1113
|
-
return /*#__PURE__*/React__default.createElement(Suggestion$1, {
|
1114
|
-
style: this.props.style('item'),
|
1115
|
-
key: "".concat(childIndex, "-").concat(getID(result)),
|
1116
|
-
id: getSuggestionHtmlId(this.props.id, index),
|
1117
|
-
query: query,
|
1118
|
-
index: index,
|
1119
|
-
ignoreAccents: ignoreAccents,
|
1120
|
-
renderSuggestion: renderSuggestion,
|
1121
|
-
suggestion: result,
|
1122
|
-
focused: isFocused,
|
1123
|
-
onClick: function onClick() {
|
1124
|
-
return _this3.select(result, queryInfo);
|
1125
|
-
},
|
1126
|
-
onMouseEnter: function onMouseEnter() {
|
1127
|
-
return _this3.handleMouseEnter(index);
|
1128
|
-
}
|
1129
|
-
});
|
1075
|
+
var getID = function getID(suggestion) {
|
1076
|
+
if (typeof suggestion === 'string') {
|
1077
|
+
return suggestion;
|
1130
1078
|
}
|
1131
|
-
}, {
|
1132
|
-
key: "renderLoadingIndicator",
|
1133
|
-
value: function renderLoadingIndicator() {
|
1134
|
-
if (!this.props.isLoading) {
|
1135
|
-
return;
|
1136
|
-
}
|
1137
1079
|
|
1138
|
-
|
1139
|
-
|
1140
|
-
|
1141
|
-
|
1142
|
-
|
1080
|
+
return suggestion.id;
|
1081
|
+
};
|
1082
|
+
|
1083
|
+
if (!isOpened) {
|
1084
|
+
return null;
|
1085
|
+
}
|
1143
1086
|
|
1144
|
-
return
|
1145
|
-
|
1087
|
+
return /*#__PURE__*/React__default.createElement("div", _extends({}, useStyles.inline({
|
1088
|
+
position: position || 'absolute',
|
1089
|
+
left: left,
|
1090
|
+
right: right,
|
1091
|
+
top: top
|
1092
|
+
}, style), {
|
1093
|
+
onMouseDown: onMouseDown,
|
1094
|
+
ref: containerRef
|
1095
|
+
}), renderSuggestions(), renderLoadingIndicator());
|
1096
|
+
}
|
1146
1097
|
|
1147
|
-
|
1098
|
+
SuggestionsOverlay.propTypes = {
|
1148
1099
|
id: PropTypes.string.isRequired,
|
1149
1100
|
suggestions: PropTypes.object.isRequired,
|
1150
1101
|
a11ySuggestionsListLabel: PropTypes.string,
|
@@ -1158,27 +1109,11 @@ _defineProperty(SuggestionsOverlay, "propTypes", {
|
|
1158
1109
|
isOpened: PropTypes.bool.isRequired,
|
1159
1110
|
onSelect: PropTypes.func,
|
1160
1111
|
ignoreAccents: PropTypes.bool,
|
1112
|
+
customSuggestionsContainer: PropTypes.func,
|
1161
1113
|
containerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
|
1162
1114
|
current: typeof Element === 'undefined' ? PropTypes.any : PropTypes.instanceOf(Element)
|
1163
|
-
})])
|
1164
|
-
children: PropTypes.oneOfType([PropTypes.element, PropTypes.arrayOf(PropTypes.element)]).isRequired
|
1165
|
-
});
|
1166
|
-
|
1167
|
-
_defineProperty(SuggestionsOverlay, "defaultProps", {
|
1168
|
-
suggestions: {},
|
1169
|
-
onSelect: function onSelect() {
|
1170
|
-
return null;
|
1171
|
-
}
|
1172
|
-
});
|
1173
|
-
|
1174
|
-
var getID = function getID(suggestion) {
|
1175
|
-
if (typeof suggestion === 'string') {
|
1176
|
-
return suggestion;
|
1177
|
-
}
|
1178
|
-
|
1179
|
-
return suggestion.id;
|
1115
|
+
})])
|
1180
1116
|
};
|
1181
|
-
|
1182
1117
|
var styled$2 = createDefaultStyle({
|
1183
1118
|
zIndex: 1,
|
1184
1119
|
backgroundColor: 'white',
|
@@ -1192,13 +1127,13 @@ var styled$2 = createDefaultStyle({
|
|
1192
1127
|
});
|
1193
1128
|
var SuggestionsOverlay$1 = styled$2(SuggestionsOverlay);
|
1194
1129
|
|
1195
|
-
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; }
|
1130
|
+
function ownKeys$1(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; }
|
1196
1131
|
|
1197
|
-
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; }
|
1132
|
+
function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
1198
1133
|
|
1199
|
-
function _createSuper
|
1134
|
+
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); }; }
|
1200
1135
|
|
1201
|
-
function _isNativeReflectConstruct
|
1136
|
+
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; } }
|
1202
1137
|
var makeTriggerRegex = function makeTriggerRegex(trigger) {
|
1203
1138
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
1204
1139
|
|
@@ -1270,7 +1205,7 @@ var propTypes = {
|
|
1270
1205
|
var MentionsInput = /*#__PURE__*/function (_React$Component) {
|
1271
1206
|
_inherits(MentionsInput, _React$Component);
|
1272
1207
|
|
1273
|
-
var _super = _createSuper
|
1208
|
+
var _super = _createSuper(MentionsInput);
|
1274
1209
|
|
1275
1210
|
function MentionsInput(_props) {
|
1276
1211
|
var _this;
|
@@ -1291,7 +1226,7 @@ var MentionsInput = /*#__PURE__*/function (_React$Component) {
|
|
1291
1226
|
|
1292
1227
|
var props = omit(_this.props, ['style', 'classNames', 'className'], // substyle props
|
1293
1228
|
keys(propTypes));
|
1294
|
-
return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, props), style('input')), {}, {
|
1229
|
+
return _objectSpread$1(_objectSpread$1(_objectSpread$1(_objectSpread$1({}, props), style('input')), {}, {
|
1295
1230
|
value: _this.getPlainText(),
|
1296
1231
|
onScroll: _this.updateHighlighterScroll
|
1297
1232
|
}, !readOnly && !disabled && {
|
@@ -1330,6 +1265,7 @@ var MentionsInput = /*#__PURE__*/function (_React$Component) {
|
|
1330
1265
|
|
1331
1266
|
_defineProperty(_assertThisInitialized(_this), "renderTextarea", function (props) {
|
1332
1267
|
return /*#__PURE__*/React__default.createElement("textarea", _extends({
|
1268
|
+
autoFocus: true,
|
1333
1269
|
ref: _this.setInputRef
|
1334
1270
|
}, props));
|
1335
1271
|
});
|
@@ -1834,7 +1770,7 @@ var MentionsInput = /*#__PURE__*/function (_React$Component) {
|
|
1834
1770
|
if (queryId !== _this._queryId) return; // save in property so that multiple sync state updates from different mentions sources
|
1835
1771
|
// won't overwrite each other
|
1836
1772
|
|
1837
|
-
_this.suggestions = _objectSpread(_objectSpread({}, _this.suggestions), {}, _defineProperty({}, childIndex, {
|
1773
|
+
_this.suggestions = _objectSpread$1(_objectSpread$1({}, _this.suggestions), {}, _defineProperty({}, childIndex, {
|
1838
1774
|
queryInfo: {
|
1839
1775
|
childIndex: childIndex,
|
1840
1776
|
query: query,
|
@@ -1939,7 +1875,8 @@ var MentionsInput = /*#__PURE__*/function (_React$Component) {
|
|
1939
1875
|
selectionEnd: null,
|
1940
1876
|
suggestions: {},
|
1941
1877
|
caretPosition: null,
|
1942
|
-
suggestionsPosition: {}
|
1878
|
+
suggestionsPosition: {},
|
1879
|
+
setSelectionAfterHandlePaste: false
|
1943
1880
|
};
|
1944
1881
|
return _this;
|
1945
1882
|
}
|
@@ -1969,6 +1906,13 @@ var MentionsInput = /*#__PURE__*/function (_React$Component) {
|
|
1969
1906
|
});
|
1970
1907
|
this.setSelection(this.state.selectionStart, this.state.selectionEnd);
|
1971
1908
|
}
|
1909
|
+
|
1910
|
+
if (this.state.setSelectionAfterHandlePaste) {
|
1911
|
+
this.setState({
|
1912
|
+
setSelectionAfterHandlePaste: false
|
1913
|
+
});
|
1914
|
+
this.setSelection(this.state.selectionStart, this.state.selectionEnd);
|
1915
|
+
}
|
1972
1916
|
}
|
1973
1917
|
}, {
|
1974
1918
|
key: "componentWillUnmount",
|
@@ -1993,9 +1937,9 @@ var MentionsInput = /*#__PURE__*/function (_React$Component) {
|
|
1993
1937
|
|
1994
1938
|
if (!this.supportsClipboardActions(event)) {
|
1995
1939
|
return;
|
1996
|
-
}
|
1940
|
+
} // event.preventDefault()
|
1941
|
+
|
1997
1942
|
|
1998
|
-
event.preventDefault();
|
1999
1943
|
var _this$state3 = this.state,
|
2000
1944
|
selectionStart = _this$state3.selectionStart,
|
2001
1945
|
selectionEnd = _this$state3.selectionEnd;
|
@@ -2010,7 +1954,7 @@ var MentionsInput = /*#__PURE__*/function (_React$Component) {
|
|
2010
1954
|
var newValue = spliceString(value, markupStartIndex, markupEndIndex, pastedMentions || pastedData).replace(/\r/g, '');
|
2011
1955
|
var newPlainTextValue = getPlainText(newValue, config);
|
2012
1956
|
var eventMock = {
|
2013
|
-
target: _objectSpread(_objectSpread({}, event.target), {}, {
|
1957
|
+
target: _objectSpread$1(_objectSpread$1({}, event.target), {}, {
|
2014
1958
|
value: newValue
|
2015
1959
|
})
|
2016
1960
|
};
|
@@ -2018,7 +1962,11 @@ var MentionsInput = /*#__PURE__*/function (_React$Component) {
|
|
2018
1962
|
|
2019
1963
|
var startOfMention = findStartOfMentionInPlainText(value, config, selectionStart);
|
2020
1964
|
var nextPos = (startOfMention || selectionStart) + getPlainText(pastedMentions || pastedData, config).length;
|
2021
|
-
this.
|
1965
|
+
this.setState({
|
1966
|
+
selectionStart: nextPos,
|
1967
|
+
selectionEnd: nextPos,
|
1968
|
+
setSelectionAfterHandlePaste: true
|
1969
|
+
});
|
2022
1970
|
}
|
2023
1971
|
}, {
|
2024
1972
|
key: "saveSelectionToClipboard",
|
@@ -2080,7 +2028,7 @@ var MentionsInput = /*#__PURE__*/function (_React$Component) {
|
|
2080
2028
|
var newValue = [value.slice(0, markupStartIndex), value.slice(markupEndIndex)].join('');
|
2081
2029
|
var newPlainTextValue = getPlainText(newValue, config);
|
2082
2030
|
var eventMock = {
|
2083
|
-
target: _objectSpread(_objectSpread({}, event.target), {}, {
|
2031
|
+
target: _objectSpread$1(_objectSpread$1({}, event.target), {}, {
|
2084
2032
|
value: newPlainTextValue
|
2085
2033
|
})
|
2086
2034
|
};
|
@@ -2137,7 +2085,7 @@ var styled$3 = createDefaultStyle({
|
|
2137
2085
|
letterSpacing: 'inherit'
|
2138
2086
|
},
|
2139
2087
|
'&multiLine': {
|
2140
|
-
input: _objectSpread({
|
2088
|
+
input: _objectSpread$1({
|
2141
2089
|
height: '100%',
|
2142
2090
|
bottom: 0,
|
2143
2091
|
overflow: 'hidden',
|