UNPKG

@risecx/carespace-chat-ui

Version:

carespace-chat-ui React component

178 lines (128 loc) 8.04 kB
"use strict"; exports.__esModule = true; exports["default"] = void 0; var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _Text = _interopRequireDefault(require("./Text")); var _Emoji = _interopRequireDefault(require("./Emoji")); var _File = _interopRequireDefault(require("./File")); var _Card = _interopRequireDefault(require("./Card")); var _List = _interopRequireDefault(require("./List")); var _Video = _interopRequireDefault(require("./Video")); var _QuickResponse = _interopRequireDefault(require("./QuickResponse")); var _Carousel = _interopRequireDefault(require("./Carousel")); var _Image = _interopRequireDefault(require("./Image")); var _Button = _interopRequireDefault(require("./Button")); var _Menu = _interopRequireDefault(require("./Menu")); var _chatIcon = _interopRequireDefault(require("./../../assets/chat-icon.svg")); var _Favorites = require("../../components/Favorites"); var _reactTooltip = _interopRequireDefault(require("react-tooltip")); var _moment = _interopRequireDefault(require("moment")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var Message = /*#__PURE__*/function (_Component) { _inheritsLoose(Message, _Component); function Message() { var _this; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _Component.call.apply(_Component, [this].concat(args)) || this; _defineProperty(_assertThisInitialized(_this), "onFavoriteTogglingHandler", function (toggleMessage) { Object.assign(_this.props.message, _extends({}, toggleMessage)); if (_this.props.onFavoriteToggling) _this.props.onFavoriteToggling(toggleMessage); }); return _this; } var _proto = Message.prototype; _proto._renderMessageOfType = function _renderMessageOfType(type) { switch (type) { case 'text': return /*#__PURE__*/_react["default"].createElement(_Text["default"], this.props.message); case 'emoji': return /*#__PURE__*/_react["default"].createElement(_Emoji["default"], this.props.message); case 'file': return /*#__PURE__*/_react["default"].createElement(_File["default"], this.props.message); case 'card': return /*#__PURE__*/_react["default"].createElement(_Card["default"], _extends({}, this.props.message, { onPostBack: this.props.onPayload })); case 'list': return /*#__PURE__*/_react["default"].createElement(_List["default"], _extends({}, this.props.message, { onPostBack: this.props.onPayload })); case 'quickResponse': return /*#__PURE__*/_react["default"].createElement(_QuickResponse["default"], _extends({}, this.props.message, { onRespond: this.props.onPayload })); case 'gallery': return /*#__PURE__*/_react["default"].createElement(_Carousel["default"], _extends({}, this.props.message, { onPostBack: this.props.onPayload })); case 'video': return /*#__PURE__*/_react["default"].createElement(_Video["default"], this.props.message); case 'image': return /*#__PURE__*/_react["default"].createElement(_Image["default"], this.props.message); case 'button': return /*#__PURE__*/_react["default"].createElement(_Button["default"], _extends({}, this.props.message, { onPostBack: this.props.onPayload })); case 'menu': return /*#__PURE__*/_react["default"].createElement(_Menu["default"], _extends({}, this.props.message, { onRespond: this.props.onPayload })); default: console.error("Attempting to load message with unsupported file type '" + type + "'"); } }; _proto.render = function render() { if (!this.props.message) return /*#__PURE__*/_react["default"].createElement("div", null); var contentClassList = ['sc-message--content', this.props.message && this.props.message.author === 'me' ? 'sent' : 'received']; return /*#__PURE__*/_react["default"].createElement("div", { className: "sc-message", "data-tip": (0, _moment["default"])(this.messageDate).format('MM/DD/YYYY hh:mm:ss') }, /*#__PURE__*/_react["default"].createElement("div", { className: contentClassList.join(' ') }, /*#__PURE__*/_react["default"].createElement("div", { className: "sc-message--avatar", style: { backgroundImage: "url(" + this.props.agentProfile.avatarImageUrl + ")" } }), this._renderMessageOfType(this.props.message.type), this.showFavoriteButtons && /*#__PURE__*/_react["default"].createElement(_Favorites.FavoritesBtn, _extends({}, this.props, { onFavoriteToggling: this.onFavoriteTogglingHandler })), /*#__PURE__*/_react["default"].createElement(_reactTooltip["default"], { delayShow: 3000 }))); }; _createClass(Message, [{ key: "showFavoriteButtons", get: function get() { return this.props.message._id && this.props.message.author !== 'me'; } }, { key: "messageDate", get: function get() { return new Date(this.props.message.sent_timestamp); } }]); return Message; }(_react.Component); Message.propTypes = process.env.NODE_ENV !== "production" ? { message: _propTypes["default"].object, agentProfile: _propTypes["default"].object } : {}; Message.defaultProps = { agentProfile: { avatarImageUrl: _chatIcon["default"] } }; var _default = Message; exports["default"] = _default; module.exports = exports.default;