gather-content-ui
Version:
GatherContent UI Library
85 lines (83 loc) • 4.67 kB
JavaScript
;
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.CommentText = CommentText;
var _react = _interopRequireWildcard(require("react"));
var _react2 = _interopRequireDefault(require("linkifyjs/react"));
var _classnames = _interopRequireDefault(require("classnames"));
var _ = require("./..");
var _TooltipWrapper = _interopRequireDefault(require("../TooltipWrapper"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
// @ts-expect-error TS(7016): Could not find a declaration file for module 'link... Remove this comment to see the full error message
// eslint-disable-next-line react/prop-types
function BlurBottom(_ref) {
var className = _ref.className;
return /*#__PURE__*/_react["default"].createElement("span", {
className: "gui-comment-blur-bottom absolute h-8 w-full top-0 left-0 mt-24 bg-blur-neutral-98-bottom group-hover:bg-blur-grey-bottom gui-conversation__text__cutoff ".concat(className)
});
}
function EditedText() {
return /*#__PURE__*/_react["default"].createElement("span", {
className: "weight-semi-bold text-neutral-primary"
}, " (Edited)");
}
function CommentText(_ref2) {
var children = _ref2.children,
users = _ref2.users,
showFullText = _ref2.showFullText,
currentUser = _ref2.currentUser,
hasBeenEdited = _ref2.hasBeenEdited;
var _useContext = (0, _react.useContext)(_.Comment.Context),
isEditing = _useContext.isEditing;
var highlightMentions = function highlightMentions() {
var pattern = /(\B@\w+)+/gi;
var strArr = children.split(pattern);
return strArr.map(function (subStr) {
if (subStr.match(pattern)) {
var username = subStr.substr(1);
var matches = users.filter(function (user) {
return user.display === username;
});
if (matches.length) {
var _matches$ = matches[0],
display = _matches$.display,
name = _matches$.name,
pending = _matches$.pending;
var mentionsClass = (0, _classnames["default"])("font-semi-bold", {
"text-purple-primary": display === (currentUser ? currentUser.display : ""),
"border-0 border-b-[1px] border-dashed": pending
});
return /*#__PURE__*/_react["default"].createElement("span", {
key: subStr,
title: name,
className: mentionsClass
}, pending ? /*#__PURE__*/_react["default"].createElement(_TooltipWrapper["default"], {
tooltipText: "Invite pending",
wrapperClassName: "inline-flex"
}, subStr) : subStr);
}
}
return subStr;
});
};
var classNames = (0, _classnames["default"])("text-neutral-20 break-words whitespace-pre-line relative", {
"overflow-visible": showFullText,
"overflow-hidden max-h-32": !showFullText
});
return isEditing ? null : /*#__PURE__*/_react["default"].createElement("div", {
className: classNames
}, /*#__PURE__*/_react["default"].createElement("p", {
className: "gui-comment-text m-0 text-sm break-words"
}, /*#__PURE__*/_react["default"].createElement(_react2["default"], null, highlightMentions()), hasBeenEdited && /*#__PURE__*/_react["default"].createElement(EditedText, null), /*#__PURE__*/_react["default"].createElement(BlurBottom, {
className: showFullText ? "hidden" : ""
})));
}
CommentText.defaultProps = {
showFullText: true,
hasBeenEdited: false
};
//# sourceMappingURL=CommentText.js.map