UNPKG

botframework-webchat-component

Version:
95 lines (70 loc) 11.4 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 _firstTabbableDescendant = require("../firstTabbableDescendant"); var _Context = _interopRequireDefault(require("./internal/Context")); var _useNavigatorPlatform3 = _interopRequireDefault(require("../../hooks/internal/useNavigatorPlatform")); 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 _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; } 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 Surface = function Surface(_ref) { var children = _ref.children, otherProps = _objectWithoutProperties(_ref, ["children"]); var _useNavigatorPlatform = (0, _useNavigatorPlatform3.default)(), _useNavigatorPlatform2 = _slicedToArray(_useNavigatorPlatform, 1), apple = _useNavigatorPlatform2[0].apple; var contextRef = (0, _react.useRef)({ focii: [] }); var handleKeyUp = (0, _react.useCallback)(function (event) { var altKey = event.altKey, ctrlKey = event.ctrlKey, key = event.key, shiftKey = event.shiftKey; // On Apple, most modern browsers use CTRL + OPTION as modifiers. // Otherwise, we use ALT + SHIFT as modifierse. if (altKey && (apple ? ctrlKey : shiftKey)) { var focii = contextRef.current.focii.filter(function (entry) { return entry.keys.includes(key); }); var currentFocus = focii.findIndex(function (_ref2) { var current = _ref2.ref.current; return current === document.activeElement || current.contains(document.activeElement); }); var nextFocus = focii[(currentFocus + 1) % focii.length]; if (nextFocus) { event.preventDefault(); event.stopPropagation(); var tabbable = (0, _firstTabbableDescendant.orSelf)(nextFocus.ref.current); tabbable && tabbable.focus(); } } }, [apple]); return /*#__PURE__*/_react.default.createElement(_Context.default.Provider, { value: contextRef.current }, /*#__PURE__*/_react.default.createElement("div", _extends({ onKeyUp: handleKeyUp }, otherProps), children)); }; Surface.defaultProps = { children: undefined }; Surface.propTypes = { children: _propTypes.default.any }; var _default = Surface; exports.default = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9VdGlscy9BY2Nlc3NLZXlTaW5rL1N1cmZhY2UuanMiXSwibmFtZXMiOlsiU3VyZmFjZSIsImNoaWxkcmVuIiwib3RoZXJQcm9wcyIsImFwcGxlIiwiY29udGV4dFJlZiIsImZvY2lpIiwiaGFuZGxlS2V5VXAiLCJldmVudCIsImFsdEtleSIsImN0cmxLZXkiLCJrZXkiLCJzaGlmdEtleSIsImN1cnJlbnQiLCJmaWx0ZXIiLCJlbnRyeSIsImtleXMiLCJpbmNsdWRlcyIsImN1cnJlbnRGb2N1cyIsImZpbmRJbmRleCIsInJlZiIsImRvY3VtZW50IiwiYWN0aXZlRWxlbWVudCIsImNvbnRhaW5zIiwibmV4dEZvY3VzIiwibGVuZ3RoIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJ0YWJiYWJsZSIsImZvY3VzIiwiZGVmYXVsdFByb3BzIiwidW5kZWZpbmVkIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiYW55Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxPQUFPLEdBQUcsU0FBVkEsT0FBVSxPQUFpQztBQUFBLE1BQTlCQyxRQUE4QixRQUE5QkEsUUFBOEI7QUFBQSxNQUFqQkMsVUFBaUI7O0FBQUEsOEJBQzNCLHFDQUQyQjtBQUFBO0FBQUEsTUFDdENDLEtBRHNDLDZCQUN0Q0EsS0FEc0M7O0FBRS9DLE1BQU1DLFVBQVUsR0FBRyxtQkFBTztBQUFFQyxJQUFBQSxLQUFLLEVBQUU7QUFBVCxHQUFQLENBQW5CO0FBRUEsTUFBTUMsV0FBVyxHQUFHLHdCQUNsQixVQUFBQyxLQUFLLEVBQUk7QUFBQSxRQUNDQyxNQURELEdBQ29DRCxLQURwQyxDQUNDQyxNQUREO0FBQUEsUUFDU0MsT0FEVCxHQUNvQ0YsS0FEcEMsQ0FDU0UsT0FEVDtBQUFBLFFBQ2tCQyxHQURsQixHQUNvQ0gsS0FEcEMsQ0FDa0JHLEdBRGxCO0FBQUEsUUFDdUJDLFFBRHZCLEdBQ29DSixLQURwQyxDQUN1QkksUUFEdkIsRUFHUDtBQUNBOztBQUNBLFFBQUlILE1BQU0sS0FBS0wsS0FBSyxHQUFHTSxPQUFILEdBQWFFLFFBQXZCLENBQVYsRUFBNEM7QUFDMUMsVUFBTU4sS0FBSyxHQUFHRCxVQUFVLENBQUNRLE9BQVgsQ0FBbUJQLEtBQW5CLENBQXlCUSxNQUF6QixDQUFnQyxVQUFBQyxLQUFLO0FBQUEsZUFBSUEsS0FBSyxDQUFDQyxJQUFOLENBQVdDLFFBQVgsQ0FBb0JOLEdBQXBCLENBQUo7QUFBQSxPQUFyQyxDQUFkO0FBRUEsVUFBTU8sWUFBWSxHQUFHWixLQUFLLENBQUNhLFNBQU4sQ0FDbkI7QUFBQSxZQUFVTixPQUFWLFNBQUdPLEdBQUgsQ0FBVVAsT0FBVjtBQUFBLGVBQTBCQSxPQUFPLEtBQUtRLFFBQVEsQ0FBQ0MsYUFBckIsSUFBc0NULE9BQU8sQ0FBQ1UsUUFBUixDQUFpQkYsUUFBUSxDQUFDQyxhQUExQixDQUFoRTtBQUFBLE9BRG1CLENBQXJCO0FBR0EsVUFBTUUsU0FBUyxHQUFHbEIsS0FBSyxDQUFDLENBQUNZLFlBQVksR0FBRyxDQUFoQixJQUFxQlosS0FBSyxDQUFDbUIsTUFBNUIsQ0FBdkI7O0FBRUEsVUFBSUQsU0FBSixFQUFlO0FBQ2JoQixRQUFBQSxLQUFLLENBQUNrQixjQUFOO0FBQ0FsQixRQUFBQSxLQUFLLENBQUNtQixlQUFOO0FBRUEsWUFBTUMsUUFBUSxHQUFHLHFDQUE4QkosU0FBUyxDQUFDSixHQUFWLENBQWNQLE9BQTVDLENBQWpCO0FBRUFlLFFBQUFBLFFBQVEsSUFBSUEsUUFBUSxDQUFDQyxLQUFULEVBQVo7QUFDRDtBQUNGO0FBQ0YsR0F2QmlCLEVBd0JsQixDQUFDekIsS0FBRCxDQXhCa0IsQ0FBcEI7QUEyQkEsc0JBQ0UsNkJBQUMsZ0JBQUQsQ0FBc0IsUUFBdEI7QUFBK0IsSUFBQSxLQUFLLEVBQUVDLFVBQVUsQ0FBQ1E7QUFBakQsa0JBQ0U7QUFBSyxJQUFBLE9BQU8sRUFBRU47QUFBZCxLQUErQkosVUFBL0IsR0FDR0QsUUFESCxDQURGLENBREY7QUFPRCxDQXRDRDs7QUF3Q0FELE9BQU8sQ0FBQzZCLFlBQVIsR0FBdUI7QUFDckI1QixFQUFBQSxRQUFRLEVBQUU2QjtBQURXLENBQXZCO0FBSUE5QixPQUFPLENBQUMrQixTQUFSLEdBQW9CO0FBQ2xCOUIsRUFBQUEsUUFBUSxFQUFFK0IsbUJBQVVDO0FBREYsQ0FBcEI7ZUFJZWpDLE8iLCJzb3VyY2VSb290IjoiY29tcG9uZW50Oi8vLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgb3JTZWxmIGFzIGZpcnN0VGFiYmFibGVEZXNjZW5kYW50T3JTZWxmIH0gZnJvbSAnLi4vZmlyc3RUYWJiYWJsZURlc2NlbmRhbnQnO1xuaW1wb3J0IEFjY2Vzc0tleVNpbmtDb250ZXh0IGZyb20gJy4vaW50ZXJuYWwvQ29udGV4dCc7XG5pbXBvcnQgdXNlTmF2aWdhdG9yUGxhdGZvcm0gZnJvbSAnLi4vLi4vaG9va3MvaW50ZXJuYWwvdXNlTmF2aWdhdG9yUGxhdGZvcm0nO1xuXG5jb25zdCBTdXJmYWNlID0gKHsgY2hpbGRyZW4sIC4uLm90aGVyUHJvcHMgfSkgPT4ge1xuICBjb25zdCBbeyBhcHBsZSB9XSA9IHVzZU5hdmlnYXRvclBsYXRmb3JtKCk7XG4gIGNvbnN0IGNvbnRleHRSZWYgPSB1c2VSZWYoeyBmb2NpaTogW10gfSk7XG5cbiAgY29uc3QgaGFuZGxlS2V5VXAgPSB1c2VDYWxsYmFjayhcbiAgICBldmVudCA9PiB7XG4gICAgICBjb25zdCB7IGFsdEtleSwgY3RybEtleSwga2V5LCBzaGlmdEtleSB9ID0gZXZlbnQ7XG5cbiAgICAgIC8vIE9uIEFwcGxlLCBtb3N0IG1vZGVybiBicm93c2VycyB1c2UgQ1RSTCArIE9QVElPTiBhcyBtb2RpZmllcnMuXG4gICAgICAvLyBPdGhlcndpc2UsIHdlIHVzZSBBTFQgKyBTSElGVCBhcyBtb2RpZmllcnNlLlxuICAgICAgaWYgKGFsdEtleSAmJiAoYXBwbGUgPyBjdHJsS2V5IDogc2hpZnRLZXkpKSB7XG4gICAgICAgIGNvbnN0IGZvY2lpID0gY29udGV4dFJlZi5jdXJyZW50LmZvY2lpLmZpbHRlcihlbnRyeSA9PiBlbnRyeS5rZXlzLmluY2x1ZGVzKGtleSkpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRGb2N1cyA9IGZvY2lpLmZpbmRJbmRleChcbiAgICAgICAgICAoeyByZWY6IHsgY3VycmVudCB9IH0pID0+IGN1cnJlbnQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgfHwgY3VycmVudC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBuZXh0Rm9jdXMgPSBmb2NpaVsoY3VycmVudEZvY3VzICsgMSkgJSBmb2NpaS5sZW5ndGhdO1xuXG4gICAgICAgIGlmIChuZXh0Rm9jdXMpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgY29uc3QgdGFiYmFibGUgPSBmaXJzdFRhYmJhYmxlRGVzY2VuZGFudE9yU2VsZihuZXh0Rm9jdXMucmVmLmN1cnJlbnQpO1xuXG4gICAgICAgICAgdGFiYmFibGUgJiYgdGFiYmFibGUuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FwcGxlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEFjY2Vzc0tleVNpbmtDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjb250ZXh0UmVmLmN1cnJlbnR9PlxuICAgICAgPGRpdiBvbktleVVwPXtoYW5kbGVLZXlVcH0gey4uLm90aGVyUHJvcHN9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2Rpdj5cbiAgICA8L0FjY2Vzc0tleVNpbmtDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufTtcblxuU3VyZmFjZS5kZWZhdWx0UHJvcHMgPSB7XG4gIGNoaWxkcmVuOiB1bmRlZmluZWRcbn07XG5cblN1cmZhY2UucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLmFueVxufTtcblxuZXhwb3J0IGRlZmF1bHQgU3VyZmFjZTtcbiJdfQ==