UNPKG

botframework-webchat-component

Version:
107 lines (88 loc) 13.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 _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")); 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 _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 _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, ["children", "disabled", "onKeyDownCapture", "sendFocusRef"]); 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9VdGlscy9UeXBlRm9jdXNTaW5rL0ZvY3VzQm94LmpzIl0sIm5hbWVzIjpbIkRFRkFVTFRfU1RZTEUiLCJvdXRsaW5lIiwiQmFzZUZvY3VzQm94IiwicmVmIiwiY2hpbGRyZW4iLCJkaXNhYmxlZCIsIm9uS2V5RG93bkNhcHR1cmUiLCJzZW5kRm9jdXNSZWZQcm9wIiwic2VuZEZvY3VzUmVmIiwib3RoZXJQcm9wcyIsInNlbmRGb2N1c1JlZlBlcnNpc3QiLCJwYXRjaGVkU2VuZEZvY3VzUmVmIiwiY29udGV4dCIsImZvY3VzIiwiY3VycmVudCIsImhhbmRsZUtleURvd25DYXB0dXJlIiwiZXZlbnQiLCJhbHRLZXkiLCJjdHJsS2V5Iiwia2V5IiwibWV0YUtleSIsInRhcmdldCIsInRhYkluZGV4IiwiZ2V0QXR0cmlidXRlIiwic3RvcFByb3BhZ2F0aW9uIiwidW5kZWZpbmVkIiwiRm9jdXNCb3giLCJkZWZhdWx0UHJvcHMiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJhbnkiLCJib29sIiwiZnVuYyIsInNoYXBlIiwiaXNSZXF1aXJlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBR0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsYUFBYSxHQUFHO0FBQUVDLEVBQUFBLE9BQU8sRUFBRTtBQUFYLENBQXRCOztBQUVBLElBQU1DLFlBQVksR0FBRyxTQUFmQSxZQUFlLE9BQTBGQyxHQUExRixFQUFrRztBQUFBLE1BQS9GQyxRQUErRixRQUEvRkEsUUFBK0Y7QUFBQSxNQUFyRkMsUUFBcUYsUUFBckZBLFFBQXFGO0FBQUEsTUFBM0VDLGdCQUEyRSxRQUEzRUEsZ0JBQTJFO0FBQUEsTUFBM0NDLGdCQUEyQyxRQUF6REMsWUFBeUQ7QUFBQSxNQUF0QkMsVUFBc0I7O0FBQ3JILE1BQU1DLG1CQUFtQixHQUFHLG1CQUFPLElBQVAsQ0FBNUI7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxvQkFBUTtBQUFB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QWdCO0FBQzVCbkIsSUFBQUEsT0FBTyxFQUFFZSxtQkFBVUksS0FBVixDQUFnQjtBQUN2QnBCLE1BQUFBLEtBQUssRUFBRWdCLG1CQUFVRztBQURNLEtBQWhCO0FBRG1CLEdBQWhCLEVBSVhFO0FBUnlDLENBQTlDO2VBV2VSLFEiLCJzb3VyY2VSb290IjoiY29tcG9uZW50Oi8vLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgaXMgZm9yIGRlZmF1bHRQcm9wczogeyBjaGlsZHJlbjogdW5kZWZpbmVkIH1cbi8qIGVzbGludCBuby11bmRlZmluZWQ6IFwib2ZmXCIgKi9cblxuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwgeyBmb3J3YXJkUmVmLCB1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgQ29udGV4dCBmcm9tICcuL0NvbnRleHQnO1xuaW1wb3J0IGdldFRhYkluZGV4IGZyb20gJy4vZ2V0VGFiSW5kZXgnO1xuaW1wb3J0IGlucHV0dGFibGVLZXkgZnJvbSAnLi9pbnB1dHRhYmxlS2V5JztcblxuY29uc3QgREVGQVVMVF9TVFlMRSA9IHsgb3V0bGluZTogMCB9O1xuXG5jb25zdCBCYXNlRm9jdXNCb3ggPSAoeyBjaGlsZHJlbiwgZGlzYWJsZWQsIG9uS2V5RG93bkNhcHR1cmUsIHNlbmRGb2N1c1JlZjogc2VuZEZvY3VzUmVmUHJvcCwgLi4ub3RoZXJQcm9wcyB9LCByZWYpID0+IHtcbiAgY29uc3Qgc2VuZEZvY3VzUmVmUGVyc2lzdCA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgcGF0Y2hlZFNlbmRGb2N1c1JlZiA9IHVzZU1lbW8oKCkgPT4gc2VuZEZvY3VzUmVmUHJvcCB8fCBzZW5kRm9jdXNSZWZQZXJzaXN0LCBbXG4gICAgc2VuZEZvY3VzUmVmUGVyc2lzdCxcbiAgICBzZW5kRm9jdXNSZWZQcm9wXG4gIF0pO1xuXG4gIGNvbnN0IGNvbnRleHQgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBzZW5kRm9jdXNSZWY6IHBhdGNoZWRTZW5kRm9jdXNSZWZcbiAgICB9KSxcbiAgICBbcGF0Y2hlZFNlbmRGb2N1c1JlZl1cbiAgKTtcblxuICBjb25zdCBmb2N1cyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB7IGN1cnJlbnQgfSA9IHBhdGNoZWRTZW5kRm9jdXNSZWY7XG5cbiAgICBjdXJyZW50ICYmIGN1cnJlbnQuZm9jdXMoKTtcbiAgfSwgW3BhdGNoZWRTZW5kRm9jdXNSZWZdKTtcblxuICBjb25zdCBoYW5kbGVLZXlEb3duQ2FwdHVyZSA9IHVzZUNhbGxiYWNrKFxuICAgIGV2ZW50ID0+IHtcbiAgICAgIG9uS2V5RG93bkNhcHR1cmUgJiYgb25LZXlEb3duQ2FwdHVyZShldmVudCk7XG5cbiAgICAgIGNvbnN0IHsgYWx0S2V5LCBjdHJsS2V5LCBrZXksIG1ldGFLZXksIHRhcmdldCB9ID0gZXZlbnQ7XG4gICAgICBjb25zdCB0YWJJbmRleCA9IGdldFRhYkluZGV4KHRhcmdldCk7XG5cbiAgICAgIGlmIChhbHRLZXkgfHwgKGN0cmxLZXkgJiYga2V5ICE9PSAndicpIHx8IG1ldGFLZXkgfHwgKCFpbnB1dHRhYmxlS2V5KGtleSkgJiYga2V5ICE9PSAnQmFja3NwYWNlJykpIHtcbiAgICAgICAgLy8gSWdub3JlIGlmIG9uZSBvZiB0aGUgdXRpbGl0eSBrZXkgKGV4Y2VwdCBTSElGVCkgaXMgcHJlc3NlZFxuICAgICAgICAvLyBFLmcuIENUUkwtQyBvbiBhIGxpbmsgaW4gb25lIG9mIHRoZSBtZXNzYWdlIHNob3VsZCBub3QganVtcCB0byBjaGF0IGJveFxuICAgICAgICAvLyBFLmcuIFwiQVwiIG9yIFwiQmFja3NwYWNlXCIgc2hvdWxkIGp1bXAgdG8gY2hhdCBib3hcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHRhYkluZGV4ICE9PSAnbnVtYmVyJyB8fCB0YWJJbmRleCA8IDAgfHwgdGFyZ2V0LmdldEF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcpID09PSAndHJ1ZScpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtmb2N1cywgb25LZXlEb3duQ2FwdHVyZV1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb250ZXh0fT5cbiAgICAgIDxkaXZcbiAgICAgICAgey4uLm90aGVyUHJvcHN9XG4gICAgICAgIG9uS2V5RG93bkNhcHR1cmU9e2Rpc2FibGVkID8gdW5kZWZpbmVkIDogaGFuZGxlS2V5RG93bkNhcHR1cmV9XG4gICAgICAgIHJlZj17cmVmfVxuICAgICAgICBzdHlsZT17REVGQVVMVF9TVFlMRX1cbiAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgPlxuICAgICAgICB7dHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nID8gY2hpbGRyZW4oeyBmb2N1cyB9KSA6IGNoaWxkcmVufVxuICAgICAgPC9kaXY+XG4gICAgPC9Db250ZXh0LlByb3ZpZGVyPlxuICApO1xufTtcblxuY29uc3QgRm9jdXNCb3ggPSBmb3J3YXJkUmVmKEJhc2VGb2N1c0JveCk7XG5cbkZvY3VzQm94LmRlZmF1bHRQcm9wcyA9IEJhc2VGb2N1c0JveC5kZWZhdWx0UHJvcHMgPSB7XG4gIGNoaWxkcmVuOiB1bmRlZmluZWQsXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgb25LZXlEb3duQ2FwdHVyZTogdW5kZWZpbmVkXG59O1xuXG5Gb2N1c0JveC5wcm9wVHlwZXMgPSBCYXNlRm9jdXNCb3gucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLmFueSxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvbktleURvd25DYXB0dXJlOiBQcm9wVHlwZXMuZnVuYyxcbiAgc2VuZEZvY3VzUmVmOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGN1cnJlbnQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBmb2N1czogUHJvcFR5cGVzLmZ1bmNcbiAgICB9KVxuICB9KS5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGb2N1c0JveDtcbiJdfQ==