botframework-webchat-component
Version:
React component of botframework-webchat
91 lines (90 loc) • 17.7 kB
JavaScript
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = _interopRequireWildcard(require("react"));
var _Context = _interopRequireDefault(require("./Context"));
var _getTabIndex = _interopRequireDefault(require("./getTabIndex"));
var _inputtableKey = _interopRequireDefault(require("./inputtableKey"));
var _excluded = ["children", "disabled", "onKeyDownCapture", "sendFocusRef"]; // This is for defaultProps: { children: undefined }
/* eslint no-undefined: "off" */
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && 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 _extends() { _extends = Object.assign ? Object.assign.bind() : 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 _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
var DEFAULT_STYLE = {
outline: 0
};
var BaseFocusBox = function BaseFocusBox(_ref, ref) {
var children = _ref.children,
disabled = _ref.disabled,
onKeyDownCapture = _ref.onKeyDownCapture,
sendFocusRefProp = _ref.sendFocusRef,
otherProps = _objectWithoutProperties(_ref, _excluded);
var sendFocusRefPersist = (0, _react.useRef)(null);
var patchedSendFocusRef = (0, _react.useMemo)(function () {
return sendFocusRefProp || sendFocusRefPersist;
}, [sendFocusRefPersist, sendFocusRefProp]);
var context = (0, _react.useMemo)(function () {
return {
sendFocusRef: patchedSendFocusRef
};
}, [patchedSendFocusRef]);
var focus = (0, _react.useCallback)(function () {
var current = patchedSendFocusRef.current;
current && current.focus();
}, [patchedSendFocusRef]);
var handleKeyDownCapture = (0, _react.useCallback)(function (event) {
onKeyDownCapture && onKeyDownCapture(event);
var altKey = event.altKey,
ctrlKey = event.ctrlKey,
key = event.key,
metaKey = event.metaKey,
target = event.target;
var tabIndex = (0, _getTabIndex.default)(target);
if (altKey || ctrlKey && key !== 'v' || metaKey || !(0, _inputtableKey.default)(key) && key !== 'Backspace') {
// Ignore if one of the utility key (except SHIFT) is pressed
// E.g. CTRL-C on a link in one of the message should not jump to chat box
// E.g. "A" or "Backspace" should jump to chat box
return;
}
if (typeof tabIndex !== 'number' || tabIndex < 0 || target.getAttribute('aria-disabled') === 'true') {
event.stopPropagation();
focus();
}
}, [focus, onKeyDownCapture]);
return /*#__PURE__*/_react.default.createElement(_Context.default.Provider, {
value: context
}, /*#__PURE__*/_react.default.createElement("div", _extends({}, otherProps, {
onKeyDownCapture: disabled ? undefined : handleKeyDownCapture,
ref: ref,
style: DEFAULT_STYLE,
tabIndex: -1
}), typeof children === 'function' ? children({
focus: focus
}) : children));
};
var FocusBox = /*#__PURE__*/(0, _react.forwardRef)(BaseFocusBox);
FocusBox.defaultProps = BaseFocusBox.defaultProps = {
children: undefined,
disabled: false,
onKeyDownCapture: undefined
};
FocusBox.propTypes = BaseFocusBox.propTypes = {
children: _propTypes.default.any,
disabled: _propTypes.default.bool,
onKeyDownCapture: _propTypes.default.func,
sendFocusRef: _propTypes.default.shape({
current: _propTypes.default.shape({
focus: _propTypes.default.func
})
}).isRequired
};
var _default = FocusBox;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9Db250ZXh0IiwiX2dldFRhYkluZGV4IiwiX2lucHV0dGFibGVLZXkiLCJfZXhjbHVkZWQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJhcHBseSIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImV4Y2x1ZGVkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzb3VyY2VTeW1ib2xLZXlzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwic291cmNlS2V5cyIsImtleXMiLCJERUZBVUxUX1NUWUxFIiwib3V0bGluZSIsIkJhc2VGb2N1c0JveCIsIl9yZWYiLCJyZWYiLCJjaGlsZHJlbiIsImRpc2FibGVkIiwib25LZXlEb3duQ2FwdHVyZSIsInNlbmRGb2N1c1JlZlByb3AiLCJzZW5kRm9jdXNSZWYiLCJvdGhlclByb3BzIiwic2VuZEZvY3VzUmVmUGVyc2lzdCIsInVzZVJlZiIsInBhdGNoZWRTZW5kRm9jdXNSZWYiLCJ1c2VNZW1vIiwiY29udGV4dCIsImZvY3VzIiwidXNlQ2FsbGJhY2siLCJjdXJyZW50IiwiaGFuZGxlS2V5RG93bkNhcHR1cmUiLCJldmVudCIsImFsdEtleSIsImN0cmxLZXkiLCJtZXRhS2V5IiwidGFiSW5kZXgiLCJnZXRUYWJJbmRleCIsImlucHV0dGFibGVLZXkiLCJnZXRBdHRyaWJ1dGUiLCJzdG9wUHJvcGFnYXRpb24iLCJjcmVhdGVFbGVtZW50IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsInN0eWxlIiwiRm9jdXNCb3giLCJmb3J3YXJkUmVmIiwiZGVmYXVsdFByb3BzIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiYW55IiwiYm9vbCIsImZ1bmMiLCJzaGFwZSIsImlzUmVxdWlyZWQiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlUm9vdCI6ImNvbXBvbmVudDovLy8iLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9VdGlscy9UeXBlRm9jdXNTaW5rL0ZvY3VzQm94LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgaXMgZm9yIGRlZmF1bHRQcm9wczogeyBjaGlsZHJlbjogdW5kZWZpbmVkIH1cbi8qIGVzbGludCBuby11bmRlZmluZWQ6IFwib2ZmXCIgKi9cblxuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwgeyBmb3J3YXJkUmVmLCB1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tICcuL0NvbnRleHQnO1xuaW1wb3J0IGdldFRhYkluZGV4IGZyb20gJy4vZ2V0VGFiSW5kZXgnO1xuaW1wb3J0IGlucHV0dGFibGVLZXkgZnJvbSAnLi9pbnB1dHRhYmxlS2V5JztcblxuY29uc3QgREVGQVVMVF9TVFlMRSA9IHsgb3V0bGluZTogMCB9O1xuXG5jb25zdCBCYXNlRm9jdXNCb3ggPSAoeyBjaGlsZHJlbiwgZGlzYWJsZWQsIG9uS2V5RG93bkNhcHR1cmUsIHNlbmRGb2N1c1JlZjogc2VuZEZvY3VzUmVmUHJvcCwgLi4ub3RoZXJQcm9wcyB9LCByZWYpID0+IHtcbiAgY29uc3Qgc2VuZEZvY3VzUmVmUGVyc2lzdCA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgcGF0Y2hlZFNlbmRGb2N1c1JlZiA9IHVzZU1lbW8oXG4gICAgKCkgPT4gc2VuZEZvY3VzUmVmUHJvcCB8fCBzZW5kRm9jdXNSZWZQZXJzaXN0LFxuICAgIFtzZW5kRm9jdXNSZWZQZXJzaXN0LCBzZW5kRm9jdXNSZWZQcm9wXVxuICApO1xuXG4gIGNvbnN0IGNvbnRleHQgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBzZW5kRm9jdXNSZWY6IHBhdGNoZWRTZW5kRm9jdXNSZWZcbiAgICB9KSxcbiAgICBbcGF0Y2hlZFNlbmRGb2N1c1JlZl1cbiAgKTtcblxuICBjb25zdCBmb2N1cyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB7IGN1cnJlbnQgfSA9IHBhdGNoZWRTZW5kRm9jdXNSZWY7XG5cbiAgICBjdXJyZW50ICYmIGN1cnJlbnQuZm9jdXMoKTtcbiAgfSwgW3BhdGNoZWRTZW5kRm9jdXNSZWZdKTtcblxuICBjb25zdCBoYW5kbGVLZXlEb3duQ2FwdHVyZSA9IHVzZUNhbGxiYWNrKFxuICAgIGV2ZW50ID0+IHtcbiAgICAgIG9uS2V5RG93bkNhcHR1cmUgJiYgb25LZXlEb3duQ2FwdHVyZShldmVudCk7XG5cbiAgICAgIGNvbnN0IHsgYWx0S2V5LCBjdHJsS2V5LCBrZXksIG1ldGFLZXksIHRhcmdldCB9ID0gZXZlbnQ7XG4gICAgICBjb25zdCB0YWJJbmRleCA9IGdldFRhYkluZGV4KHRhcmdldCk7XG5cbiAgICAgIGlmIChhbHRLZXkgfHwgKGN0cmxLZXkgJiYga2V5ICE9PSAndicpIHx8IG1ldGFLZXkgfHwgKCFpbnB1dHRhYmxlS2V5KGtleSkgJiYga2V5ICE9PSAnQmFja3NwYWNlJykpIHtcbiAgICAgICAgLy8gSWdub3JlIGlmIG9uZSBvZiB0aGUgdXRpbGl0eSBrZXkgKGV4Y2VwdCBTSElGVCkgaXMgcHJlc3NlZFxuICAgICAgICAvLyBFLmcuIENUUkwtQyBvbiBhIGxpbmsgaW4gb25lIG9mIHRoZSBtZXNzYWdlIHNob3VsZCBub3QganVtcCB0byBjaGF0IGJveFxuICAgICAgICAvLyBFLmcuIFwiQVwiIG9yIFwiQmFja3NwYWNlXCIgc2hvdWxkIGp1bXAgdG8gY2hhdCBib3hcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHRhYkluZGV4ICE9PSAnbnVtYmVyJyB8fCB0YWJJbmRleCA8IDAgfHwgdGFyZ2V0LmdldEF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcpID09PSAndHJ1ZScpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtmb2N1cywgb25LZXlEb3duQ2FwdHVyZV1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb250ZXh0fT5cbiAgICAgIDxkaXZcbiAgICAgICAgey4uLm90aGVyUHJvcHN9XG4gICAgICAgIG9uS2V5RG93bkNhcHR1cmU9e2Rpc2FibGVkID8gdW5kZWZpbmVkIDogaGFuZGxlS2V5RG93bkNhcHR1cmV9XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBzdHlsZT17REVGQVVMVF9TVFlMRX1cbiAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgPlxuICAgICAgICB7dHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nID8gY2hpbGRyZW4oeyBmb2N1cyB9KSA6IGNoaWxkcmVufVxuICAgICAgPC9kaXY+XG4gICAgPC9Db250ZXh0LlByb3ZpZGVyPlxuICApO1xufTtcblxuY29uc3QgRm9jdXNCb3ggPSBmb3J3YXJkUmVmKEJhc2VGb2N1c0JveCk7XG5cbkZvY3VzQm94LmRlZmF1bHRQcm9wcyA9IEJhc2VGb2N1c0JveC5kZWZhdWx0UHJvcHMgPSB7XG4gIGNoaWxkcmVuOiB1bmRlZmluZWQsXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgb25LZXlEb3duQ2FwdHVyZTogdW5kZWZpbmVkXG59O1xuXG5Gb2N1c0JveC5wcm9wVHlwZXMgPSBCYXNlRm9jdXNCb3gucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLmFueSxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvbktleURvd25DYXB0dXJlOiBQcm9wVHlwZXMuZnVuYyxcbiAgc2VuZEZvY3VzUmVmOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGN1cnJlbnQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBmb2N1czogUHJvcFR5cGVzLmZ1bmNcbiAgICB9KVxuICB9KS5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGb2N1c0JveDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLElBQUFBLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFHLFFBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLFlBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLGNBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUE0QyxJQUFBTSxTQUFBLGlFQVI1QztBQUNBO0FBQUEsU0FBQUMseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFOLHdCQUFBVSxHQUFBLEVBQUFKLFdBQUEsU0FBQUEsV0FBQSxJQUFBSSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxXQUFBRCxHQUFBLFFBQUFBLEdBQUEsYUFBQUUsT0FBQSxDQUFBRixHQUFBLHlCQUFB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
;