botframework-webchat-component
Version:
React component of botframework-webchat
157 lines (128 loc) • 17.6 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _botframeworkWebchatApi = require("botframework-webchat-api");
var _classnames = _interopRequireDefault(require("classnames"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = _interopRequireDefault(require("react"));
var _isZeroOrPositive = _interopRequireDefault(require("../Utils/isZeroOrPositive"));
var _useStyleSet3 = _interopRequireDefault(require("../hooks/useStyleSet"));
var _useStyleToEmotionObject = _interopRequireDefault(require("../hooks/internal/useStyleToEmotionObject"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: 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,
useStyleOptions = _botframeworkWebchatApi.hooks.useStyleOptions;
var ROOT_STYLE = {
'&.webchat__bubble': {
display: 'flex',
position: 'relative',
'& .webchat__bubble__nub-pad': {
flexShrink: 0
},
'& .webchat__bubble__content': {
flexGrow: 1,
// This is for hiding content outside of the bubble, for example, content outside of border radius
overflow: 'hidden'
}
}
};
function acuteNubSVG(nubSize, strokeWidth, side) {
var upSideDown = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
if (typeof nubSize !== 'number') {
return false;
}
var halfNubSize = nubSize / 2;
var halfStrokeWidth = strokeWidth / 2; // Horizontally mirror the nub if it is from user
var horizontalTransform = side === 'bot' ? '' : "translate(".concat(halfNubSize, " 0) scale(-1 1) translate(").concat(-halfNubSize, " 0)"); // Vertically mirror the nub if it is up-side-down
var verticalTransform = upSideDown ? "translate(0 ".concat(halfNubSize, ") scale(1 -1) translate(0 ").concat(-halfNubSize, ")") : '';
var p1 = [nubSize, halfStrokeWidth].join(' ');
var p2 = [strokeWidth, halfStrokeWidth].join(' ');
var p3 = [nubSize + strokeWidth, nubSize + halfStrokeWidth].join(' ');
return /*#__PURE__*/_react.default.createElement("svg", {
className: "webchat__bubble__nub",
version: "1.1",
viewBox: "0 0 ".concat(nubSize, " ").concat(nubSize),
xmlns: "http://www.w3.org/2000/svg"
}, /*#__PURE__*/_react.default.createElement("g", {
transform: "".concat(horizontalTransform, " ").concat(verticalTransform)
}, /*#__PURE__*/_react.default.createElement("path", {
className: "webchat__bubble__nub-outline",
d: "M".concat(p1, " L").concat(p2, " L").concat(p3)
})));
}
var Bubble = function Bubble(_ref) {
var ariaHidden = _ref['aria-hidden'],
children = _ref.children,
className = _ref.className,
fromUser = _ref.fromUser,
nub = _ref.nub;
var _useStyleSet = (0, _useStyleSet3.default)(),
_useStyleSet2 = _slicedToArray(_useStyleSet, 1),
bubbleStyleSet = _useStyleSet2[0].bubble;
var _useDirection = useDirection(),
_useDirection2 = _slicedToArray(_useDirection, 1),
direction = _useDirection2[0];
var _useStyleOptions = useStyleOptions(),
_useStyleOptions2 = _slicedToArray(_useStyleOptions, 1),
_useStyleOptions2$ = _useStyleOptions2[0],
bubbleBorderWidth = _useStyleOptions2$.bubbleBorderWidth,
bubbleFromUserBorderWidth = _useStyleOptions2$.bubbleFromUserBorderWidth,
bubbleFromUserNubSize = _useStyleOptions2$.bubbleFromUserNubSize,
bubbleNubSize = _useStyleOptions2$.bubbleNubSize,
bubbleNubOffset = _useStyleOptions2$.bubbleNubOffset,
bubbleFromUserNubOffset = _useStyleOptions2$.bubbleFromUserNubOffset;
var rootClassName = (0, _useStyleToEmotionObject.default)()(ROOT_STYLE) + '';
var _ref2 = fromUser ? {
borderWidth: bubbleFromUserBorderWidth,
nubOffset: bubbleFromUserNubOffset,
nubSize: bubbleFromUserNubSize,
side: 'user'
} : {
borderWidth: bubbleBorderWidth,
nubOffset: bubbleNubOffset,
nubSize: bubbleNubSize,
side: 'bot'
},
borderWidth = _ref2.borderWidth,
nubOffset = _ref2.nubOffset,
nubSize = _ref2.nubSize,
side = _ref2.side;
return /*#__PURE__*/_react.default.createElement("div", {
"aria-hidden": ariaHidden,
className: (0, _classnames.default)('webchat__bubble', {
'webchat__bubble--from-user': fromUser,
'webchat__bubble--hide-nub': nub !== true && nub !== false,
'webchat__bubble--nub-on-top': (0, _isZeroOrPositive.default)(nubOffset),
'webchat__bubble--rtl': direction === 'rtl',
'webchat__bubble--show-nub': nub === true
}, rootClassName, bubbleStyleSet + '', (className || '') + '')
}, /*#__PURE__*/_react.default.createElement("div", {
className: "webchat__bubble__nub-pad"
}), /*#__PURE__*/_react.default.createElement("div", {
className: "webchat__bubble__content"
}, children), nub === true && acuteNubSVG(nubSize, borderWidth, side, !(0, _isZeroOrPositive.default)(nubOffset)));
};
Bubble.defaultProps = {
'aria-hidden': undefined,
children: undefined,
className: '',
fromUser: false,
nub: false
};
Bubble.propTypes = {
'aria-hidden': _propTypes.default.bool,
children: _propTypes.default.any,
className: _propTypes.default.string,
fromUser: _propTypes.default.bool,
nub: _propTypes.default.oneOf([true, false, 'hidden'])
};
var _default = Bubble;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9BY3Rpdml0eS9CdWJibGUuanMiXSwibmFtZXMiOlsidXNlRGlyZWN0aW9uIiwiaG9va3MiLCJ1c2VTdHlsZU9wdGlvbnMiLCJST09UX1NUWUxFIiwiZGlzcGxheSIsInBvc2l0aW9uIiwiZmxleFNocmluayIsImZsZXhHcm93Iiwib3ZlcmZsb3ciLCJhY3V0ZU51YlNWRyIsIm51YlNpemUiLCJzdHJva2VXaWR0aCIsInNpZGUiLCJ1cFNpZGVEb3duIiwiaGFsZk51YlNpemUiLCJoYWxmU3Ryb2tlV2lkdGgiLCJob3Jpem9udGFsVHJhbnNmb3JtIiwidmVydGljYWxUcmFuc2Zvcm0iLCJwMSIsImpvaW4iLCJwMiIsInAzIiwiQnViYmxlIiwiYXJpYUhpZGRlbiIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiZnJvbVVzZXIiLCJudWIiLCJidWJibGVTdHlsZVNldCIsImJ1YmJsZSIsImRpcmVjdGlvbiIsImJ1YmJsZUJvcmRlcldpZHRoIiwiYnViYmxlRnJvbVVzZXJCb3JkZXJXaWR0aCIsImJ1YmJsZUZyb21Vc2VyTnViU2l6ZSIsImJ1YmJsZU51YlNpemUiLCJidWJibGVOdWJPZmZzZXQiLCJidWJibGVGcm9tVXNlck51Yk9mZnNldCIsInJvb3RDbGFzc05hbWUiLCJib3JkZXJXaWR0aCIsIm51Yk9mZnNldCIsImRlZmF1bHRQcm9wcyIsInVuZGVmaW5lZCIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImJvb2wiLCJhbnkiLCJzdHJpbmciLCJvbmVPZiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0lBRVFBLFksR0FBa0NDLDZCLENBQWxDRCxZO0lBQWNFLGUsR0FBb0JELDZCLENBQXBCQyxlO0FBRXRCLElBQU1DLFVBQVUsR0FBRztBQUNqQix1QkFBcUI7QUFDbkJDLElBQUFBLE9BQU8sRUFBRSxNQURVO0FBRW5CQyxJQUFBQSxRQUFRLEVBQUUs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LEVBQUFBLFNBQVMsRUFBRSxFQUhTO0FBSXBCQyxFQUFBQSxRQUFRLEVBQUUsS0FKVTtBQUtwQkMsRUFBQUEsR0FBRyxFQUFFO0FBTGUsQ0FBdEI7QUFRQUwsTUFBTSxDQUFDb0IsU0FBUCxHQUFtQjtBQUNqQixpQkFBZUMsbUJBQVVDLElBRFI7QUFFakJwQixFQUFBQSxRQUFRLEVBQUVtQixtQkFBVUUsR0FGSDtBQUdqQnBCLEVBQUFBLFNBQVMsRUFBRWtCLG1CQUFVRyxNQUhKO0FBSWpCcEIsRUFBQUEsUUFBUSxFQUFFaUIsbUJBQVVDLElBSkg7QUFLakJqQixFQUFBQSxHQUFHLEVBQUVnQixtQkFBVUksS0FBVixDQUFnQixDQUFDLElBQUQsRUFBTyxLQUFQLEVBQWMsUUFBZCxDQUFoQjtBQUxZLENBQW5CO2VBUWV6QixNIiwic291cmNlUm9vdCI6ImNvbXBvbmVudDovLy8iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbm8tbWFnaWMtbnVtYmVyczogW1wiZXJyb3JcIiwgeyBcImlnbm9yZVwiOiBbLTEsIDAsIDEsIDIsIDEwXSB9XSAqL1xuXG5pbXBvcnQgeyBob29rcyB9IGZyb20gJ2JvdGZyYW1ld29yay13ZWJjaGF0LWFwaSc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgaXNaZXJvT3JQb3NpdGl2ZSBmcm9tICcuLi9VdGlscy9pc1plcm9PclBvc2l0aXZlJztcbmltcG9ydCB1c2VTdHlsZVNldCBmcm9tICcuLi9ob29rcy91c2VTdHlsZVNldCc7XG5pbXBvcnQgdXNlU3R5bGVUb0Vtb3Rpb25PYmplY3QgZnJvbSAnLi4vaG9va3MvaW50ZXJuYWwvdXNlU3R5bGVUb0Vtb3Rpb25PYmplY3QnO1xuXG5jb25zdCB7IHVzZURpcmVjdGlvbiwgdXNlU3R5bGVPcHRpb25zIH0gPSBob29rcztcblxuY29uc3QgUk9PVF9TVFlMRSA9IHtcbiAgJyYud2ViY2hhdF9fYnViYmxlJzoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcblxuICAgICcmIC53ZWJjaGF0X19idWJibGVfX251Yi1wYWQnOiB7XG4gICAgICBmbGV4U2hyaW5rOiAwXG4gICAgfSxcblxuICAgICcmIC53ZWJjaGF0X19idWJibGVfX2NvbnRlbnQnOiB7XG4gICAgICBmbGV4R3JvdzogMSxcblxuICAgICAgLy8gVGhpcyBpcyBmb3IgaGlkaW5nIGNvbnRlbnQgb3V0c2lkZSBvZiB0aGUgYnViYmxlLCBmb3IgZXhhbXBsZSwgY29udGVudCBvdXRzaWRlIG9mIGJvcmRlciByYWRpdXNcbiAgICAgIG92ZXJmbG93OiAnaGlkZGVuJ1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gYWN1dGVOdWJTVkcobnViU2l6ZSwgc3Ryb2tlV2lkdGgsIHNpZGUsIHVwU2lkZURvd24gPSBmYWxzZSkge1xuICBpZiAodHlwZW9mIG51YlNpemUgIT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgaGFsZk51YlNpemUgPSBudWJTaXplIC8gMjtcbiAgY29uc3QgaGFsZlN0cm9rZVdpZHRoID0gc3Ryb2tlV2lkdGggLyAyO1xuXG4gIC8vIEhvcml6b250YWxseSBtaXJyb3IgdGhlIG51YiBpZiBpdCBpcyBmcm9tIHVzZXJcbiAgY29uc3QgaG9yaXpvbnRhbFRyYW5zZm9ybSA9XG4gICAgc2lkZSA9PT0gJ2JvdCcgPyAnJyA6IGB0cmFuc2xhdGUoJHtoYWxmTnViU2l6ZX0gMCkgc2NhbGUoLTEgMSkgdHJhbnNsYXRlKCR7LWhhbGZOdWJTaXplfSAwKWA7XG5cbiAgLy8gVmVydGljYWxseSBtaXJyb3IgdGhlIG51YiBpZiBpdCBpcyB1cC1zaWRlLWRvd25cbiAgY29uc3QgdmVydGljYWxUcmFuc2Zvcm0gPSB1cFNpZGVEb3duID8gYHRyYW5zbGF0ZSgwICR7aGFsZk51YlNpemV9KSBzY2FsZSgxIC0xKSB0cmFuc2xhdGUoMCAkey1oYWxmTnViU2l6ZX0pYCA6ICcnO1xuXG4gIGNvbnN0IHAxID0gW251YlNpemUsIGhhbGZTdHJva2VXaWR0aF0uam9pbignICcpO1xuICBjb25zdCBwMiA9IFtzdHJva2VXaWR0aCwgaGFsZlN0cm9rZVdpZHRoXS5qb2luKCcgJyk7XG4gIGNvbnN0IHAzID0gW251YlNpemUgKyBzdHJva2VXaWR0aCwgbnViU2l6ZSArIGhhbGZTdHJva2VXaWR0aF0uam9pbignICcpO1xuXG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgY2xhc3NOYW1lPVwid2ViY2hhdF9fYnViYmxlX19udWJcIlxuICAgICAgdmVyc2lvbj1cIjEuMVwiXG4gICAgICB2aWV3Qm94PXtgMCAwICR7bnViU2l6ZX0gJHtudWJTaXplfWB9XG4gICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICA+XG4gICAgICA8ZyB0cmFuc2Zvcm09e2Ake2hvcml6b250YWxUcmFuc2Zvcm19ICR7dmVydGljYWxUcmFuc2Zvcm19YH0+XG4gICAgICAgIDxwYXRoIGNsYXNzTmFtZT1cIndlYmNoYXRfX2J1YmJsZV9fbnViLW91dGxpbmVcIiBkPXtgTSR7cDF9IEwke3AyfSBMJHtwM31gfSAvPlxuICAgICAgPC9nPlxuICAgIDwvc3ZnPlxuICApO1xufVxuXG5jb25zdCBCdWJibGUgPSAoeyAnYXJpYS1oaWRkZW4nOiBhcmlhSGlkZGVuLCBjaGlsZHJlbiwgY2xhc3NOYW1lLCBmcm9tVXNlciwgbnViIH0pID0+IHtcbiAgY29uc3QgW3sgYnViYmxlOiBidWJibGVTdHlsZVNldCB9XSA9IHVzZVN0eWxlU2V0KCk7XG4gIGNvbnN0IFtkaXJlY3Rpb25dID0gdXNlRGlyZWN0aW9uKCk7XG4gIGNvbnN0IFtcbiAgICB7XG4gICAgICBidWJibGVCb3JkZXJXaWR0aCxcbiAgICAgIGJ1YmJsZUZyb21Vc2VyQm9yZGVyV2lkdGgsXG4gICAgICBidWJibGVGcm9tVXNlck51YlNpemUsXG4gICAgICBidWJibGVOdWJTaXplLFxuICAgICAgYnViYmxlTnViT2Zmc2V0LFxuICAgICAgYnViYmxlRnJvbVVzZXJOdWJPZmZzZXRcbiAgICB9XG4gIF0gPSB1c2VTdHlsZU9wdGlvbnMoKTtcbiAgY29uc3Qgcm9vdENsYXNzTmFtZSA9IHVzZVN0eWxlVG9FbW90aW9uT2JqZWN0KCkoUk9PVF9TVFlMRSkgKyAnJztcblxuICBjb25zdCB7IGJvcmRlcldpZHRoLCBudWJPZmZzZXQsIG51YlNpemUsIHNpZGUgfSA9IGZyb21Vc2VyXG4gICAgPyB7XG4gICAgICAgIGJvcmRlcldpZHRoOiBidWJibGVGcm9tVXNlckJvcmRlcldpZHRoLFxuICAgICAgICBudWJPZmZzZXQ6IGJ1YmJsZUZyb21Vc2VyTnViT2Zmc2V0LFxuICAgICAgICBudWJTaXplOiBidWJibGVGcm9tVXNlck51YlNpemUsXG4gICAgICAgIHNpZGU6ICd1c2VyJ1xuICAgICAgfVxuICAgIDoge1xuICAgICAgICBib3JkZXJXaWR0aDogYnViYmxlQm9yZGVyV2lkdGgsXG4gICAgICAgIG51Yk9mZnNldDogYnViYmxlTnViT2Zmc2V0LFxuICAgICAgICBudWJTaXplOiBidWJibGVOdWJTaXplLFxuICAgICAgICBzaWRlOiAnYm90J1xuICAgICAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGFyaWEtaGlkZGVuPXthcmlhSGlkZGVufVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFxuICAgICAgICAnd2ViY2hhdF9fYnViYmxlJyxcbiAgICAgICAge1xuICAgICAgICAgICd3ZWJjaGF0X19idWJibGUtLWZyb20tdXNlcic6IGZyb21Vc2VyLFxuICAgICAgICAgICd3ZWJjaGF0X19idWJibGUtLWhpZGUtbnViJzogbnViICE9PSB0cnVlICYmIG51YiAhPT0gZmFsc2UsXG4gICAgICAgICAgJ3dlYmNoYXRfX2J1YmJsZS0tbnViLW9uLXRvcCc6IGlzWmVyb09yUG9zaXRpdmUobnViT2Zmc2V0KSxcbiAgICAgICAgICAnd2ViY2hhdF9fYnViYmxlLS1ydGwnOiBkaXJlY3Rpb24gPT09ICdydGwnLFxuICAgICAgICAgICd3ZWJjaGF0X19idWJibGUtLXNob3ctbnViJzogbnViID09PSB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHJvb3RDbGFzc05hbWUsXG4gICAgICAgIGJ1YmJsZVN0eWxlU2V0ICsgJycsXG4gICAgICAgIChjbGFzc05hbWUgfHwgJycpICsgJydcbiAgICAgICl9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3ZWJjaGF0X19idWJibGVfX251Yi1wYWRcIiAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3ZWJjaGF0X19idWJibGVfX2NvbnRlbnRcIj57Y2hpbGRyZW59PC9kaXY+XG4gICAgICB7bnViID09PSB0cnVlICYmIGFjdXRlTnViU1ZHKG51YlNpemUsIGJvcmRlcldpZHRoLCBzaWRlLCAhaXNaZXJvT3JQb3NpdGl2ZShudWJPZmZzZXQpKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkJ1YmJsZS5kZWZhdWx0UHJvcHMgPSB7XG4gICdhcmlhLWhpZGRlbic6IHVuZGVmaW5lZCxcbiAgY2hpbGRyZW46IHVuZGVmaW5lZCxcbiAgY2xhc3NOYW1lOiAnJyxcbiAgZnJvbVVzZXI6IGZhbHNlLFxuICBudWI6IGZhbHNlXG59O1xuXG5CdWJibGUucHJvcFR5cGVzID0ge1xuICAnYXJpYS1oaWRkZW4nOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5hbnksXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgZnJvbVVzZXI6IFByb3BUeXBlcy5ib29sLFxuICBudWI6IFByb3BUeXBlcy5vbmVPZihbdHJ1ZSwgZmFsc2UsICdoaWRkZW4nXSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJ1YmJsZTtcbiJdfQ==
;