UNPKG

botframework-webchat-component

Version:
165 lines (128 loc) 19.1 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _botframeworkWebchatApi = require("botframework-webchat-api"); var _reactFilm = require("react-film"); var _classnames = _interopRequireDefault(require("classnames")); var _propTypes = _interopRequireDefault(require("prop-types")); var _react = _interopRequireWildcard(require("react")); var _CarouselFilmStrip = _interopRequireDefault(require("./CarouselFilmStrip")); var _useNonce3 = _interopRequireDefault(require("../hooks/internal/useNonce")); var _useStyleSet3 = _interopRequireDefault(require("../hooks/useStyleSet")); var _useStyleToEmotionObject = _interopRequireDefault(require("../hooks/internal/useStyleToEmotionObject")); 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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } 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; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } var useDirection = _botframeworkWebchatApi.hooks.useDirection, useLocalizer = _botframeworkWebchatApi.hooks.useLocalizer; var ROOT_STYLE = { '&.webchat__carousel-layout': { overflow: 'hidden', position: 'relative' } }; var CarouselLayoutCore = function CarouselLayoutCore(_ref) { var activity = _ref.activity, hideTimestamp = _ref.hideTimestamp, renderActivityStatus = _ref.renderActivityStatus, renderAttachment = _ref.renderAttachment, renderAvatar = _ref.renderAvatar, showCallout = _ref.showCallout; var _useStyleSet = (0, _useStyleSet3.default)(), _useStyleSet2 = _slicedToArray(_useStyleSet, 1), carouselFlipperStyleSet = _useStyleSet2[0].carouselFlipper; var _useReactFilmStyleSet = (0, _reactFilm.useStyleSetClassNames)(), _useReactFilmStyleSet2 = _slicedToArray(_useReactFilmStyleSet, 1), filmRootClassName = _useReactFilmStyleSet2[0].root; var _useDirection = useDirection(), _useDirection2 = _slicedToArray(_useDirection, 1), direction = _useDirection2[0]; var _useScrollBarWidth = (0, _reactFilm.useScrollBarWidth)(), _useScrollBarWidth2 = _slicedToArray(_useScrollBarWidth, 1), scrollBarWidth = _useScrollBarWidth2[0]; var _useScrolling = (0, _reactFilm.useScrolling)(), _useScrolling2 = _slicedToArray(_useScrolling, 1), scrolling = _useScrolling2[0]; var leftSideFlipper = direction === 'rtl' ? '>' : '<'; var localize = useLocalizer(); var rightSideFlipper = direction === 'rtl' ? '<' : '>'; var rootClassName = (0, _useStyleToEmotionObject.default)()(ROOT_STYLE) + ''; return /*#__PURE__*/_react.default.createElement("div", { className: (0, _classnames.default)('webchat__carousel-layout', rootClassName, carouselFlipperStyleSet + '', filmRootClassName) }, /*#__PURE__*/_react.default.createElement("div", { className: (0, _classnames.default)('react-film__main', { 'react-film__main--scrolling': scrolling }) }, /*#__PURE__*/_react.default.createElement(_CarouselFilmStrip.default, { activity: activity, hideTimestamp: hideTimestamp, renderActivityStatus: renderActivityStatus, renderAttachment: renderAttachment, renderAvatar: renderAvatar, showCallout: showCallout }), scrollBarWidth !== '100%' && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactFilm.Flipper, { "aria-label": localize('CAROUSEL_FLIPPER_LEFT_ALT'), blurFocusOnClick: true, mode: "left" }, leftSideFlipper), /*#__PURE__*/_react.default.createElement(_reactFilm.Flipper, { "aria-label": localize('CAROUSEL_FLIPPER_RIGHT_ALT'), blurFocusOnClick: true, mode: "right" }, rightSideFlipper)))); }; CarouselLayoutCore.defaultProps = { hideTimestamp: false, renderActivityStatus: false, renderAvatar: false, showCallout: true }; CarouselLayoutCore.propTypes = { activity: _propTypes.default.shape({ attachments: _propTypes.default.array }).isRequired, hideTimestamp: _propTypes.default.bool, renderActivityStatus: _propTypes.default.oneOfType([_propTypes.default.oneOf([false]), _propTypes.default.func]), renderAttachment: _propTypes.default.func.isRequired, renderAvatar: _propTypes.default.oneOfType([_propTypes.default.oneOf([false]), _propTypes.default.func]), showCallout: _propTypes.default.bool }; var CarouselLayout = function CarouselLayout(props) { var _props$activity = props.activity; _props$activity = _props$activity === void 0 ? {} : _props$activity; var _props$activity$attac = _props$activity.attachments, attachments = _props$activity$attac === void 0 ? [] : _props$activity$attac; var _useDirection3 = useDirection(), _useDirection4 = _slicedToArray(_useDirection3, 1), direction = _useDirection4[0]; var _useNonce = (0, _useNonce3.default)(), _useNonce2 = _slicedToArray(_useNonce, 1), nonce = _useNonce2[0]; var filmStyleSet = (0, _react.useMemo)(function () { return (0, _reactFilm.createBasicStyleSet)({ cursor: null }); }, []); return /*#__PURE__*/_react.default.createElement(_reactFilm.Composer, { dir: direction, nonce: nonce, numItems: attachments.length, styleSet: filmStyleSet }, /*#__PURE__*/_react.default.createElement(CarouselLayoutCore, props)); }; CarouselLayout.defaultProps = _objectSpread({}, CarouselLayoutCore.defaultProps); CarouselLayout.propTypes = _objectSpread({}, CarouselLayoutCore.propTypes); var _default = CarouselLayout; exports.default = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9BY3Rpdml0eS9DYXJvdXNlbExheW91dC5qcyJdLCJuYW1lcyI6WyJ1c2VEaXJlY3Rpb24iLCJob29rcyIsInVzZUxvY2FsaXplciIsIlJPT1RfU1RZTEUiLCJvdmVyZmxvdyIsInBvc2l0aW9uIiwiQ2Fyb3VzZWxMYXlvdXRDb3JlIiwiYWN0aXZpdHkiLCJoaWRlVGltZXN0YW1wIiwicmVuZGVyQWN0aXZpdHlTdGF0dXMiLCJyZW5kZXJBdHRhY2htZW50IiwicmVuZGVyQXZhdGFyIiwic2hvd0NhbGxvdXQiLCJjYXJvdXNlbEZsaXBwZXJTdHlsZVNldCIsImNhcm91c2VsRmxpcHBlciIsImZpbG1Sb290Q2xhc3NOYW1lIiwicm9vdCIsImRpcmVjdGlvbiIsInNjcm9sbEJhcldpZHRoIiwic2Nyb2xsaW5nIiwibGVmdFNpZGVGbGlwcGVyIiwibG9jYWxpemUiLCJyaWdodFNpZGVGbGlwcGVyIiwicm9vdENsYXNzTmFtZSIsImRlZmF1bHRQcm9wcyIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInNoYXBlIiwiYXR0YWNobWVudHMiLCJhcnJheSIsImlzUmVxdWlyZWQiLCJib29sIiwib25lT2ZUeXBlIiwib25lT2YiLCJmdW5jIiwiQ2Fyb3VzZWxMYXlvdXQiLCJwcm9wcyIsIm5vbmNlIiwiZmlsbVN0eWxlU2V0IiwiY3Vyc29yIiwibGVuZ3RoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFTQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFUUEsWSxHQUErQkMsNkIsQ0FBL0JELFk7SUFBY0UsWSxHQUFpQkQsNkIsQ0FBakJDLFk7QUFFdEIsSUFBTUMsVUFBVSxHQUFHO0FBQ2pCLGdDQUE4QjtBQUM1QkMsSUFBQUEsUUFBUSxFQUFFLFFBRGtCO0FBRTVCQyxJQUFBQSxRQUFRLEVBQUU7QUFGa0I7QUFEYixDQUFuQjs7QUFPQSxJQUFNQyxrQkFBa0Is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eyBob29rcyB9IGZyb20gJ2JvdGZyYW1ld29yay13ZWJjaGF0LWFwaSc7XG5pbXBvcnQge1xuICBDb21wb3NlciBhcyBGaWxtQ29tcG9zZXIsXG4gIGNyZWF0ZUJhc2ljU3R5bGVTZXQgYXMgY3JlYXRlQmFzaWNTdHlsZVNldEZvclJlYWN0RmlsbSxcbiAgRmxpcHBlcixcbiAgdXNlU2Nyb2xsQmFyV2lkdGgsXG4gIHVzZVNjcm9sbGluZyxcbiAgdXNlU3R5bGVTZXRDbGFzc05hbWVzIGFzIHVzZVJlYWN0RmlsbVN0eWxlU2V0Q2xhc3NOYW1lc1xufSBmcm9tICdyZWFjdC1maWxtJztcblxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBDYXJvdXNlbEZpbG1TdHJpcCBmcm9tICcuL0Nhcm91c2VsRmlsbVN0cmlwJztcbmltcG9ydCB1c2VOb25jZSBmcm9tICcuLi9ob29rcy9pbnRlcm5hbC91c2VOb25jZSc7XG5pbXBvcnQgdXNlU3R5bGVTZXQgZnJvbSAnLi4vaG9va3MvdXNlU3R5bGVTZXQnO1xuaW1wb3J0IHVzZVN0eWxlVG9FbW90aW9uT2JqZWN0IGZyb20gJy4uL2hvb2tzL2ludGVybmFsL3VzZVN0eWxlVG9FbW90aW9uT2JqZWN0JztcblxuY29uc3QgeyB1c2VEaXJlY3Rpb24sIHVzZUxvY2FsaXplciB9ID0gaG9va3M7XG5cbmNvbnN0IFJPT1RfU1RZTEUgPSB7XG4gICcmLndlYmNoYXRfX2Nhcm91c2VsLWxheW91dCc6IHtcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZSdcbiAgfVxufTtcblxuY29uc3QgQ2Fyb3VzZWxMYXlvdXRDb3JlID0gKHtcbiAgYWN0aXZpdHksXG4gIGhpZGVUaW1lc3RhbXAsXG4gIHJlbmRlckFjdGl2aXR5U3RhdHVzLFxuICByZW5kZXJBdHRhY2htZW50LFxuICByZW5kZXJBdmF0YXIsXG4gIHNob3dDYWxsb3V0XG59KSA9PiB7XG4gIGNvbnN0IFt7IGNhcm91c2VsRmxpcHBlcjogY2Fyb3VzZWxGbGlwcGVyU3R5bGVTZXQgfV0gPSB1c2VTdHlsZVNldCgpO1xuICBjb25zdCBbeyByb290OiBmaWxtUm9vdENsYXNzTmFtZSB9XSA9IHVzZVJlYWN0RmlsbVN0eWxlU2V0Q2xhc3NOYW1lcygpO1xuICBjb25zdCBbZGlyZWN0aW9uXSA9IHVzZURpcmVjdGlvbigpO1xuICBjb25zdCBbc2Nyb2xsQmFyV2lkdGhdID0gdXNlU2Nyb2xsQmFyV2lkdGgoKTtcbiAgY29uc3QgW3Njcm9sbGluZ10gPSB1c2VTY3JvbGxpbmcoKTtcbiAgY29uc3QgbGVmdFNpZGVGbGlwcGVyID0gZGlyZWN0aW9uID09PSAncnRsJyA/ICc+JyA6ICc8JztcbiAgY29uc3QgbG9jYWxpemUgPSB1c2VMb2NhbGl6ZXIoKTtcbiAgY29uc3QgcmlnaHRTaWRlRmxpcHBlciA9IGRpcmVjdGlvbiA9PT0gJ3J0bCcgPyAnPCcgOiAnPic7XG4gIGNvbnN0IHJvb3RDbGFzc05hbWUgPSB1c2VTdHlsZVRvRW1vdGlvbk9iamVjdCgpKFJPT1RfU1RZTEUpICsgJyc7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoJ3dlYmNoYXRfX2Nhcm91c2VsLWxheW91dCcsIHJvb3RDbGFzc05hbWUsIGNhcm91c2VsRmxpcHBlclN0eWxlU2V0ICsgJycsIGZpbG1Sb290Q2xhc3NOYW1lKX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lcygncmVhY3QtZmlsbV9fbWFpbicsIHsgJ3JlYWN0LWZpbG1fX21haW4tLXNjcm9sbGluZyc6IHNjcm9sbGluZyB9KX0+XG4gICAgICAgIDxDYXJvdXNlbEZpbG1TdHJpcFxuICAgICAgICAgIGFjdGl2aXR5PXthY3Rpdml0eX1cbiAgICAgICAgICBoaWRlVGltZXN0YW1wPXtoaWRlVGltZXN0YW1wfVxuICAgICAgICAgIHJlbmRlckFjdGl2aXR5U3RhdHVzPXtyZW5kZXJBY3Rpdml0eVN0YXR1c31cbiAgICAgICAgICByZW5kZXJBdHRhY2htZW50PXtyZW5kZXJBdHRhY2htZW50fVxuICAgICAgICAgIHJlbmRlckF2YXRhcj17cmVuZGVyQXZhdGFyfVxuICAgICAgICAgIHNob3dDYWxsb3V0PXtzaG93Q2FsbG91dH1cbiAgICAgICAgLz5cbiAgICAgICAge3Njcm9sbEJhcldpZHRoICE9PSAnMTAwJScgJiYgKFxuICAgICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgIDxGbGlwcGVyIGFyaWEtbGFiZWw9e2xvY2FsaXplKCdDQVJPVVNFTF9GTElQUEVSX0xFRlRfQUxUJyl9IGJsdXJGb2N1c09uQ2xpY2s9e3RydWV9IG1vZGU9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgIHtsZWZ0U2lkZUZsaXBwZXJ9XG4gICAgICAgICAgICA8L0ZsaXBwZXI+XG4gICAgICAgICAgICA8RmxpcHBlciBhcmlhLWxhYmVsPXtsb2NhbGl6ZSgnQ0FST1VTRUxfRkxJUFBFUl9SSUdIVF9BTFQnKX0gYmx1ckZvY3VzT25DbGljaz17dHJ1ZX0gbW9kZT1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgIHtyaWdodFNpZGVGbGlwcGVyfVxuICAgICAgICAgICAgPC9GbGlwcGVyPlxuICAgICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNhcm91c2VsTGF5b3V0Q29yZS5kZWZhdWx0UHJvcHMgPSB7XG4gIGhpZGVUaW1lc3RhbXA6IGZhbHNlLFxuICByZW5kZXJBY3Rpdml0eVN0YXR1czogZmFsc2UsXG4gIHJlbmRlckF2YXRhcjogZmFsc2UsXG4gIHNob3dDYWxsb3V0OiB0cnVlXG59O1xuXG5DYXJvdXNlbExheW91dENvcmUucHJvcFR5cGVzID0ge1xuICBhY3Rpdml0eTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBhdHRhY2htZW50czogUHJvcFR5cGVzLmFycmF5XG4gIH0pLmlzUmVxdWlyZWQsXG4gIGhpZGVUaW1lc3RhbXA6IFByb3BUeXBlcy5ib29sLFxuICByZW5kZXJBY3Rpdml0eVN0YXR1czogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFtmYWxzZV0pLCBQcm9wVHlwZXMuZnVuY10pLFxuICByZW5kZXJBdHRhY2htZW50OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICByZW5kZXJBdmF0YXI6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbZmFsc2VdKSwgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgc2hvd0NhbGxvdXQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5jb25zdCBDYXJvdXNlbExheW91dCA9IHByb3BzID0+IHtcbiAgY29uc3QgeyBhY3Rpdml0eTogeyBhdHRhY2htZW50cyA9IFtdIH0gPSB7fSB9ID0gcHJvcHM7XG4gIGNvbnN0IFtkaXJlY3Rpb25dID0gdXNlRGlyZWN0aW9uKCk7XG4gIGNvbnN0IFtub25jZV0gPSB1c2VOb25jZSgpO1xuICBjb25zdCBmaWxtU3R5bGVTZXQgPSB1c2VNZW1vKCgpID0+IGNyZWF0ZUJhc2ljU3R5bGVTZXRGb3JSZWFjdEZpbG0oeyBjdXJzb3I6IG51bGwgfSksIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDxGaWxtQ29tcG9zZXIgZGlyPXtkaXJlY3Rpb259IG5vbmNlPXtub25jZX0gbnVtSXRlbXM9e2F0dGFjaG1lbnRzLmxlbmd0aH0gc3R5bGVTZXQ9e2ZpbG1TdHlsZVNldH0+XG4gICAgICA8Q2Fyb3VzZWxMYXlvdXRDb3JlIHsuLi5wcm9wc30gLz5cbiAgICA8L0ZpbG1Db21wb3Nlcj5cbiAgKTtcbn07XG5cbkNhcm91c2VsTGF5b3V0LmRlZmF1bHRQcm9wcyA9IHtcbiAgLi4uQ2Fyb3VzZWxMYXlvdXRDb3JlLmRlZmF1bHRQcm9wc1xufTtcblxuQ2Fyb3VzZWxMYXlvdXQucHJvcFR5cGVzID0ge1xuICAuLi5DYXJvdXNlbExheW91dENvcmUucHJvcFR5cGVzXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDYXJvdXNlbExheW91dDtcbiJdfQ==