botframework-webchat-component
Version:
React component of botframework-webchat
82 lines (66 loc) • 11.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = createCoreMiddleware;
var _react = _interopRequireDefault(require("react"));
var _CarouselLayout = _interopRequireDefault(require("../../Activity/CarouselLayout"));
var _StackedLayout = _interopRequireDefault(require("../../Activity/StackedLayout"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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 createCoreMiddleware() {
return [function () {
return function (next) {
return function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
var activity = args[0].activity; // TODO: [P4] Can we simplify these if-statement to something more readable?
var type = activity.type; // Filter out activities that should not be visible
if (type === 'conversationUpdate' || type === 'event' || type === 'invoke' || type === 'typing') {
return false;
} else if (type === 'message') {
var _activity$attachments = activity.attachments,
attachments = _activity$attachments === void 0 ? [] : _activity$attachments,
channelData = activity.channelData,
text = activity.text;
if ( // Do not show postback
channelData && channelData.postBack || // Do not show messageBack if displayText is undefined
channelData && channelData.messageBack && !channelData.messageBack.displayText || // Do not show empty bubbles (no text and attachments, and not "typing")
!(text || attachments.length)) {
return false;
} // eslint-disable-next-line no-dupe-else-if
} else if (type === 'typing' && activity.from.role === 'user') {
// Do not show typing by oneself
return false;
}
if (type === 'message' || type === 'typing') {
if (type === 'message' && (activity.attachments || []).length > 1 && activity.attachmentLayout === 'carousel') {
// The following line is not a React functional component, it's a render function called by useCreateActivityRenderer() hook.
// The function signature need to be compatible with older version of activity middleware, which was:
//
// renderActivity(
// renderAttachment: ({ activity, attachment }) => React.Element
// ) => React.Element
return function renderCarouselLayout(renderAttachment, props) {
typeof props === 'undefined' && console.warn('botframework-webchat: One or more arguments were missing after passing through the activity middleware. Please check your custom activity middleware to make sure it passes all arguments.');
return /*#__PURE__*/_react.default.createElement(_CarouselLayout.default, _extends({
activity: activity,
renderAttachment: renderAttachment
}, props));
};
} // The following line is not a React functional component, it's a render function called by useCreateActivityRenderer() hook.
return function renderStackedLayout(renderAttachment, props) {
typeof props === 'undefined' && console.warn('botframework-webchat: One or more arguments were missing after passing through the activity middleware. Please check your custom activity middleware to make sure it passes all arguments.');
return /*#__PURE__*/_react.default.createElement(_StackedLayout.default, _extends({
activity: activity,
renderAttachment: renderAttachment
}, props));
};
}
return next.apply(void 0, args);
};
};
}];
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9NaWRkbGV3YXJlL0FjdGl2aXR5L2NyZWF0ZUNvcmVNaWRkbGV3YXJlLmpzIl0sIm5hbWVzIjpbImNyZWF0ZUNvcmVNaWRkbGV3YXJlIiwibmV4dCIsImFyZ3MiLCJhY3Rpdml0eSIsInR5cGUiLCJhdHRhY2htZW50cyIsImNoYW5uZWxEYXRhIiwidGV4dCIsInBvc3RCYWNrIiwibWVzc2FnZUJhY2siLCJkaXNwbGF5VGV4dCIsImxlbmd0aCIsImZyb20iLCJyb2xlIiwiYXR0YWNobWVudExheW91dCIsInJlbmRlckNhcm91c2VsTGF5b3V0IiwicmVuZGVyQXR0YWNobWVudCIsInByb3BzIiwiY29uc29sZSIsIndhcm4iLCJyZW5kZXJTdGFja2VkTGF5b3V0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7OztBQUVlLFNBQVNBLG9CQUFULEdBQWdDO0FBQzdDLFNBQU8sQ0FDTDtBQUFBLFdBQU0sVUFBQUMsSUFBSTtBQUFBLGFBQUksWUFBYTtBQUFBLDBDQUFUQyxJQUFTO0FBQVRBLFVBQUFBLElBQVM7QUFBQTs7QUFBQSxZQUNoQkMsUUFEZ0IsR0FDRkQsSUFERSxJQUNoQkMsUUFEZ0IsRUFHekI7O0FBSHlCLFlBS2pCQyxJQUxpQixHQUtSRCxRQUxRLENBS2pCQyxJQUxpQixFQU96Qjs7QUFDQSxZQUFJQSxJQUFJLEtBQUssb0JBQVQsSUFBaUNBLElBQUksS0FBSyxPQUExQyxJQUFxREEsSUFBSSxLQUFLLFFBQTlELElBQTBFQSxJQUFJLEtBQUssUUFBdkYsRUFBaUc7QUFDL0YsaUJBQU8sS0FBUDtBQUNELFNBRkQsTUFFTyxJQUFJQSxJQUFJLEtBQUssU0FBYixFQUF3QjtBQUFBLHNDQUNtQkQsUUFEbkIsQ0FDckJFLFdBRHFCO0FBQUEsY0FDckJBLFdBRHFCLHNDQUNQLEVBRE87QUFBQSxjQUNIQyxXQURHLEdBQ21CSCxRQURuQixDQUNIRyxXQURHO0FBQUEsY0FDVUMsSUFEVixHQUNtQkosUUFEbkIsQ0FDVUksSUFEVjs7QUFHN0IsZUFDRTtBQUNDRCxVQUFBQSxXQUFXLElBQUlBLFdBQVcsQ0FBQ0UsUUFBNUIsSUFDQTtBQUNDRixVQUFBQSxXQUFXLElBQUlBLFdBQVcsQ0FBQ0csV0FBM0IsSUFBMEMsQ0FBQ0gsV0FBVyxDQUFDRyxXQUFaLENBQXdCQyxXQUZwRSxJQUdBO0FBQ0EsWUFBRUgsSUFBSSxJQUFJRixXQUFXLENBQUNNLE1BQXRCLENBTkYsRUFPRTtBQUNBLG1CQUFPLEtBQVA7QUFDRCxXQVo0QixDQWE3Qjs7QUFDRCxTQWRNLE1BY0EsSUFBSVAsSUFBSSxLQUFLLFFBQVQsSUFBcUJELFFBQVEsQ0FBQ1MsSUFBVCxDQUFjQyxJQUFkLEtBQXVCLE1BQWhELEVBQXdEO0FBQzdEO0FBQ0EsaUJBQU8sS0FBUDtBQUNEOztBQUVELFlBQUlULElBQUksS0FBSyxTQUFULElBQXNCQSxJQUFJLEtBQUssUUFBbkMsRUFBNkM7QUFDM0MsY0FBSUEsSUFBSSxLQUFLLFNBQVQsSUFBc0IsQ0FBQ0QsUUFBUSxDQUFDRSxXQUFULElBQXdCLEVBQXpCLEVBQTZCTSxNQUE3QixHQUFzQyxDQUE1RCxJQUFpRVIsUUFBUSxDQUFDVyxnQkFBVCxLQUE4QixVQUFuRyxFQUErRztBQUM3RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxtQkFBTyxTQUFTQyxvQkFBVCxDQUE4QkMsZ0JBQTlCLEVBQWdEQyxLQUFoRCxFQUF1RDtBQUM1RCxxQkFBT0EsS0FBUCxLQUFpQixXQUFqQixJQUNFQyxPQUFPLENBQUNDLElBQVIsQ0FDRSw0TEFERixDQURGO0FBS0Esa0NBQU8sNkJBQUMsdUJBQUQ7QUFBZ0IsZ0JBQUEsUUFBUSxFQUFFaEIsUUFBMUI7QUFBb0MsZ0JBQUEsZ0JBQWdCLEVBQUVhO0FBQXRELGlCQUE0RUMsS0FBNUUsRUFBUDtBQUNELGFBUEQ7QUFRRCxXQWpCMEMsQ0FtQjNDOzs7QUFDQSxpQkFBTyxTQUFTRyxtQkFBVCxDQUE2QkosZ0JBQTdCLEVBQStDQyxLQUEvQyxFQUFzRDtBQUMzRCxtQkFBT0EsS0FBUCxLQUFpQixXQUFqQixJQUNFQyxPQUFPLENBQUNDLElBQVIsQ0FDRSw0TEFERixDQURGO0FBS0EsZ0NBQU8sNkJBQUMsc0JBQUQ7QUFBZSxjQUFBLFFBQVEsRUFBRWhCLFFBQXpCO0FBQW1DLGNBQUEsZ0JBQWdCLEVBQUVhO0FBQXJELGVBQTJFQyxLQUEzRSxFQUFQO0FBQ0QsV0FQRDtBQVFEOztBQUVELGVBQU9oQixJQUFJLE1BQUosU0FBUUMsSUFBUixDQUFQO0FBQ0QsT0E1RFM7QUFBQSxLQUFWO0FBQUEsR0FESyxDQUFQO0FBK0REIiwic291cmNlUm9vdCI6ImNvbXBvbmVudDovLy8iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgQ2Fyb3VzZWxMYXlvdXQgZnJvbSAnLi4vLi4vQWN0aXZpdHkvQ2Fyb3VzZWxMYXlvdXQnO1xuaW1wb3J0IFN0YWNrZWRMYXlvdXQgZnJvbSAnLi4vLi4vQWN0aXZpdHkvU3RhY2tlZExheW91dCc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUNvcmVNaWRkbGV3YXJlKCkge1xuICByZXR1cm4gW1xuICAgICgpID0+IG5leHQgPT4gKC4uLmFyZ3MpID0+IHtcbiAgICAgIGNvbnN0IFt7IGFjdGl2aXR5IH1dID0gYXJncztcblxuICAgICAgLy8gVE9ETzogW1A0XSBDYW4gd2Ugc2ltcGxpZnkgdGhlc2UgaWYtc3RhdGVtZW50IHRvIHNvbWV0aGluZyBtb3JlIHJlYWRhYmxlP1xuXG4gICAgICBjb25zdCB7IHR5cGUgfSA9IGFjdGl2aXR5O1xuXG4gICAgICAvLyBGaWx0ZXIgb3V0IGFjdGl2aXRpZXMgdGhhdCBzaG91bGQgbm90IGJlIHZpc2libGVcbiAgICAgIGlmICh0eXBlID09PSAnY29udmVyc2F0aW9uVXBkYXRlJyB8fCB0eXBlID09PSAnZXZlbnQnIHx8IHR5cGUgPT09ICdpbnZva2UnIHx8IHR5cGUgPT09ICd0eXBpbmcnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ21lc3NhZ2UnKSB7XG4gICAgICAgIGNvbnN0IHsgYXR0YWNobWVudHMgPSBbXSwgY2hhbm5lbERhdGEsIHRleHQgfSA9IGFjdGl2aXR5O1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAvLyBEbyBub3Qgc2hvdyBwb3N0YmFja1xuICAgICAgICAgIChjaGFubmVsRGF0YSAmJiBjaGFubmVsRGF0YS5wb3N0QmFjaykgfHxcbiAgICAgICAgICAvLyBEbyBub3Qgc2hvdyBtZXNzYWdlQmFjayBpZiBkaXNwbGF5VGV4dCBpcyB1bmRlZmluZWRcbiAgICAgICAgICAoY2hhbm5lbERhdGEgJiYgY2hhbm5lbERhdGEubWVzc2FnZUJhY2sgJiYgIWNoYW5uZWxEYXRhLm1lc3NhZ2VCYWNrLmRpc3BsYXlUZXh0KSB8fFxuICAgICAgICAgIC8vIERvIG5vdCBzaG93IGVtcHR5IGJ1YmJsZXMgKG5vIHRleHQgYW5kIGF0dGFjaG1lbnRzLCBhbmQgbm90IFwidHlwaW5nXCIpXG4gICAgICAgICAgISh0ZXh0IHx8IGF0dGFjaG1lbnRzLmxlbmd0aClcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1kdXBlLWVsc2UtaWZcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3R5cGluZycgJiYgYWN0aXZpdHkuZnJvbS5yb2xlID09PSAndXNlcicpIHtcbiAgICAgICAgLy8gRG8gbm90IHNob3cgdHlwaW5nIGJ5IG9uZXNlbGZcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZSA9PT0gJ21lc3NhZ2UnIHx8IHR5cGUgPT09ICd0eXBpbmcnKSB7XG4gICAgICAgIGlmICh0eXBlID09PSAnbWVzc2FnZScgJiYgKGFjdGl2aXR5LmF0dGFjaG1lbnRzIHx8IFtdKS5sZW5ndGggPiAxICYmIGFjdGl2aXR5LmF0dGFjaG1lbnRMYXlvdXQgPT09ICdjYXJvdXNlbCcpIHtcbiAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGxpbmUgaXMgbm90IGEgUmVhY3QgZnVuY3Rpb25hbCBjb21wb25lbnQsIGl0J3MgYSByZW5kZXIgZnVuY3Rpb24gY2FsbGVkIGJ5IHVzZUNyZWF0ZUFjdGl2aXR5UmVuZGVyZXIoKSBob29rLlxuICAgICAgICAgIC8vIFRoZSBmdW5jdGlvbiBzaWduYXR1cmUgbmVlZCB0byBiZSBjb21wYXRpYmxlIHdpdGggb2xkZXIgdmVyc2lvbiBvZiBhY3Rpdml0eSBtaWRkbGV3YXJlLCB3aGljaCB3YXM6XG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyByZW5kZXJBY3Rpdml0eShcbiAgICAgICAgICAvLyAgIHJlbmRlckF0dGFjaG1lbnQ6ICh7IGFjdGl2aXR5LCBhdHRhY2htZW50IH0pID0+IFJlYWN0LkVsZW1lbnRcbiAgICAgICAgICAvLyApID0+IFJlYWN0LkVsZW1lbnRcblxuICAgICAgICAgIHJldHVybiBmdW5jdGlvbiByZW5kZXJDYXJvdXNlbExheW91dChyZW5kZXJBdHRhY2htZW50LCBwcm9wcykge1xuICAgICAgICAgICAgdHlwZW9mIHByb3BzID09PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgJ2JvdGZyYW1ld29yay13ZWJjaGF0OiBPbmUgb3IgbW9yZSBhcmd1bWVudHMgd2VyZSBtaXNzaW5nIGFmdGVyIHBhc3NpbmcgdGhyb3VnaCB0aGUgYWN0aXZpdHkgbWlkZGxld2FyZS4gUGxlYXNlIGNoZWNrIHlvdXIgY3VzdG9tIGFjdGl2aXR5IG1pZGRsZXdhcmUgdG8gbWFrZSBzdXJlIGl0IHBhc3NlcyBhbGwgYXJndW1lbnRzLidcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcmV0dXJuIDxDYXJvdXNlbExheW91dCBhY3Rpdml0eT17YWN0aXZpdHl9IHJlbmRlckF0dGFjaG1lbnQ9e3JlbmRlckF0dGFjaG1lbnR9IHsuLi5wcm9wc30gLz47XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgbGluZSBpcyBub3QgYSBSZWFjdCBmdW5jdGlvbmFsIGNvbXBvbmVudCwgaXQncyBhIHJlbmRlciBmdW5jdGlvbiBjYWxsZWQgYnkgdXNlQ3JlYXRlQWN0aXZpdHlSZW5kZXJlcigpIGhvb2suXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiByZW5kZXJTdGFja2VkTGF5b3V0KHJlbmRlckF0dGFjaG1lbnQsIHByb3BzKSB7XG4gICAgICAgICAgdHlwZW9mIHByb3BzID09PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAnYm90ZnJhbWV3b3JrLXdlYmNoYXQ6IE9uZSBvciBtb3JlIGFyZ3VtZW50cyB3ZXJlIG1pc3NpbmcgYWZ0ZXIgcGFzc2luZyB0aHJvdWdoIHRoZSBhY3Rpdml0eSBtaWRkbGV3YXJlLiBQbGVhc2UgY2hlY2sgeW91ciBjdXN0b20gYWN0aXZpdHkgbWlkZGxld2FyZSB0byBtYWtlIHN1cmUgaXQgcGFzc2VzIGFsbCBhcmd1bWVudHMuJ1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiA8U3RhY2tlZExheW91dCBhY3Rpdml0eT17YWN0aXZpdHl9IHJlbmRlckF0dGFjaG1lbnQ9e3JlbmRlckF0dGFjaG1lbnR9IHsuLi5wcm9wc30gLz47XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXh0KC4uLmFyZ3MpO1xuICAgIH1cbiAgXTtcbn1cbiJdfQ==