@risecx/carespace-chat-ui
Version:
carespace-chat-ui React component
178 lines (128 loc) • 8.04 kB
JavaScript
"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;