UNPKG

botframework-webchat-component

Version:
82 lines (66 loc) 11.2 kB
"use strict"; 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==