botframework-webchat-component
Version:
React component of botframework-webchat
105 lines (102 loc) • 20.1 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 _excluded = ["className", "disabled", "inputMode", "onChange", "onFocus", "onKeyDown", "onKeyDownCapture", "onKeyPress", "onSelect", "placeholder", "readOnly", "rows", "tabIndex"];
/* eslint no-magic-numbers: ["error", { "ignore": [-1] }] */
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; }
// Differences between <textarea> and <AccessibleTextArea>:
// - Disable behavior
// - When the widget is disabled
// - Set "aria-disabled" attribute to "true"
// - Set "readonly" attribute
// - Set "tabIndex" to -1
// - Remove "onChange" handler
// - Why this is needed
// - Browser compatibility: when the widget is disabled, different browser send focus to different places
// - When the widget is disabled, it's reasonable to keep the focus on the same widget for an extended period of time
// - When the user presses TAB after the current widget is disabled, it should move the focus to the next non-disabled widget
// Developers using this accessible widget will need to:
// - Style the disabled widget themselves using CSS query `:disabled, [aria-disabled="true"] {}`
// - Modify all the code that checks disabled through the "disabled" attribute to use aria-disabled="true" instead
// - aria-disabled="true" is the source of truth
// - If the widget is contained by a <form>, the developer need to filter out some `onSubmit` event caused by this widget
var AccessibleTextArea = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, forwardedRef) {
var className = _ref.className,
disabled = _ref.disabled,
inputMode = _ref.inputMode,
onChange = _ref.onChange,
onFocus = _ref.onFocus,
onKeyDown = _ref.onKeyDown,
onKeyDownCapture = _ref.onKeyDownCapture,
onKeyPress = _ref.onKeyPress,
onSelect = _ref.onSelect,
placeholder = _ref.placeholder,
readOnly = _ref.readOnly,
rows = _ref.rows,
tabIndex = _ref.tabIndex,
props = _objectWithoutProperties(_ref, _excluded);
var targetRef = (0, _react.useRef)();
var ref = forwardedRef || targetRef;
return /*#__PURE__*/_react.default.createElement("textarea", _extends({
"aria-disabled": disabled || undefined,
className: className,
inputMode: inputMode,
onChange: disabled ? undefined : onChange,
onFocus: disabled ? undefined : onFocus,
onKeyDown: disabled ? undefined : onKeyDown,
onKeyDownCapture: disabled ? undefined : onKeyDownCapture,
onKeyPress: disabled ? undefined : onKeyPress,
onSelect: disabled ? undefined : onSelect,
placeholder: placeholder,
readOnly: readOnly || disabled,
ref: ref,
rows: rows,
tabIndex: disabled ? -1 : tabIndex
}, props));
});
AccessibleTextArea.defaultProps = {
className: undefined,
disabled: undefined,
inputMode: undefined,
onChange: undefined,
onFocus: undefined,
onKeyDown: undefined,
onKeyDownCapture: undefined,
onKeyPress: undefined,
onSelect: undefined,
placeholder: undefined,
readOnly: undefined,
rows: undefined,
tabIndex: undefined,
value: undefined
};
AccessibleTextArea.displayName = 'AccessibleTextArea';
AccessibleTextArea.propTypes = {
className: _propTypes.default.string,
disabled: _propTypes.default.bool,
inputMode: _propTypes.default.oneOf(['text', 'none', 'tel', 'url', 'email', 'numeric', 'decimal', 'search']),
onChange: _propTypes.default.func,
onFocus: _propTypes.default.func,
onKeyDown: _propTypes.default.func,
onKeyDownCapture: _propTypes.default.func,
onKeyPress: _propTypes.default.func,
onSelect: _propTypes.default.func,
placeholder: _propTypes.default.string,
readOnly: _propTypes.default.bool,
rows: _propTypes.default.number,
tabIndex: _propTypes.default.number,
value: _propTypes.default.string
};
var _default = AccessibleTextArea;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9leGNsdWRlZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImFwcGx5IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiZXhjbHVkZWQiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImdldE93blByb3BlcnR5U3ltYm9scyIsInNvdXJjZVN5bWJvbEtleXMiLCJpbmRleE9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJzb3VyY2VLZXlzIiwia2V5cyIsIkFjY2Vzc2libGVUZXh0QXJlYSIsImZvcndhcmRSZWYiLCJfcmVmIiwiZm9yd2FyZGVkUmVmIiwiY2xhc3NOYW1lIiwiZGlzYWJsZWQiLCJpbnB1dE1vZGUiLCJvbkNoYW5nZSIsIm9uRm9jdXMiLCJvbktleURvd24iLCJvbktleURvd25DYXB0dXJlIiwib25LZXlQcmVzcyIsIm9uU2VsZWN0IiwicGxhY2Vob2xkZXIiLCJyZWFkT25seSIsInJvd3MiLCJ0YWJJbmRleCIsInByb3BzIiwidGFyZ2V0UmVmIiwidXNlUmVmIiwicmVmIiwiY3JlYXRlRWxlbWVudCIsInVuZGVmaW5lZCIsImRlZmF1bHRQcm9wcyIsInZhbHVlIiwiZGlzcGxheU5hbWUiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJib29sIiwib25lT2YiLCJmdW5jIiwibnVtYmVyIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZVJvb3QiOiJjb21wb25lbnQ6Ly8vIiwic291cmNlcyI6WyIuLi8uLi9zcmMvVXRpbHMvQWNjZXNzaWJsZVRleHRBcmVhLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbm8tbWFnaWMtbnVtYmVyczogW1wiZXJyb3JcIiwgeyBcImlnbm9yZVwiOiBbLTFdIH1dICovXG5cbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHtcbiAgQ2hhbmdlRXZlbnRIYW5kbGVyLFxuICBGb2N1c0V2ZW50SGFuZGxlcixcbiAgZm9yd2FyZFJlZixcbiAgS2V5Ym9hcmRFdmVudEhhbmRsZXIsXG4gIFJlYWN0RXZlbnRIYW5kbGVyLFxuICB1c2VSZWZcbn0gZnJvbSAncmVhY3QnO1xuXG4vLyBEaWZmZXJlbmNlcyBiZXR3ZWVuIDx0ZXh0YXJlYT4gYW5kIDxBY2Nlc3NpYmxlVGV4dEFyZWE+OlxuLy8gLSBEaXNhYmxlIGJlaGF2aW9yXG4vLyAgIC0gV2hlbiB0aGUgd2lkZ2V0IGlzIGRpc2FibGVkXG4vLyAgICAgLSBTZXQgXCJhcmlhLWRpc2FibGVkXCIgYXR0cmlidXRlIHRvIFwidHJ1ZVwiXG4vLyAgICAgLSBTZXQgXCJyZWFkb25seVwiIGF0dHJpYnV0ZVxuLy8gICAgIC0gU2V0IFwidGFiSW5kZXhcIiB0byAtMVxuLy8gICAgIC0gUmVtb3ZlIFwib25DaGFuZ2VcIiBoYW5kbGVyXG4vLyAgIC0gV2h5IHRoaXMgaXMgbmVlZGVkXG4vLyAgICAgLSBCcm93c2VyIGNvbXBhdGliaWxpdHk6IHdoZW4gdGhlIHdpZGdldCBpcyBkaXNhYmxlZCwgZGlmZmVyZW50IGJyb3dzZXIgc2VuZCBmb2N1cyB0byBkaWZmZXJlbnQgcGxhY2VzXG4vLyAgICAgLSBXaGVuIHRoZSB3aWRnZXQgaXMgZGlzYWJsZWQsIGl0J3MgcmVhc29uYWJsZSB0byBrZWVwIHRoZSBmb2N1cyBvbiB0aGUgc2FtZSB3aWRnZXQgZm9yIGFuIGV4dGVuZGVkIHBlcmlvZCBvZiB0aW1lXG4vLyAgICAgICAtIFdoZW4gdGhlIHVzZXIgcHJlc3NlcyBUQUIgYWZ0ZXIgdGhlIGN1cnJlbnQgd2lkZ2V0IGlzIGRpc2FibGVkLCBpdCBzaG91bGQgbW92ZSB0aGUgZm9jdXMgdG8gdGhlIG5leHQgbm9uLWRpc2FibGVkIHdpZGdldFxuXG4vLyBEZXZlbG9wZXJzIHVzaW5nIHRoaXMgYWNjZXNzaWJsZSB3aWRnZXQgd2lsbCBuZWVkIHRvOlxuLy8gLSBTdHlsZSB0aGUgZGlzYWJsZWQgd2lkZ2V0IHRoZW1zZWx2ZXMgdXNpbmcgQ1NTIHF1ZXJ5IGA6ZGlzYWJsZWQsIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXSB7fWBcbi8vIC0gTW9kaWZ5IGFsbCB0aGUgY29kZSB0aGF0IGNoZWNrcyBkaXNhYmxlZCB0aHJvdWdoIHRoZSBcImRpc2FibGVkXCIgYXR0cmlidXRlIHRvIHVzZSBhcmlhLWRpc2FibGVkPVwidHJ1ZVwiIGluc3RlYWRcbi8vICAgLSBhcmlhLWRpc2FibGVkPVwidHJ1ZVwiIGlzIHRoZSBzb3VyY2Ugb2YgdHJ1dGhcbi8vIC0gSWYgdGhlIHdpZGdldCBpcyBjb250YWluZWQgYnkgYSA8Zm9ybT4sIHRoZSBkZXZlbG9wZXIgbmVlZCB0byBmaWx0ZXIgb3V0IHNvbWUgYG9uU3VibWl0YCBldmVudCBjYXVzZWQgYnkgdGhpcyB3aWRnZXRcblxudHlwZSBBY2Nlc3NpYmxlVGV4dEFyZWFQcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIGlucHV0TW9kZT86ICd0ZXh0JyB8ICdub25lJyB8ICd0ZWwnIHwgJ3VybCcgfCAnZW1haWwnIHwgJ251bWVyaWMnIHwgJ2RlY2ltYWwnIHwgJ3NlYXJjaCc7XG4gIG9uQ2hhbmdlPzogQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+O1xuICBvbkZvY3VzPzogRm9jdXNFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD47XG4gIG9uS2V5RG93bj86IEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxUZXh0QXJlYUVsZW1lbnQ+O1xuICBvbktleURvd25DYXB0dXJlPzogS2V5Ym9hcmRFdmVudEhhbmRsZXI8SFRNTFRleHRBcmVhRWxlbWVudD47XG4gIG9uS2V5UHJlc3M/OiBLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PjtcbiAgb25TZWxlY3Q/OiBSZWFjdEV2ZW50SGFuZGxlcjxIVE1MVGV4dEFyZWFFbGVtZW50PjtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbiAgcm93cz86IG51bWJlcjtcbiAgdGFiSW5kZXg/OiBudW1iZXI7XG4gIHZhbHVlPzogc3RyaW5nO1xufTtcblxuY29uc3QgQWNjZXNzaWJsZVRleHRBcmVhID0gZm9yd2FyZFJlZjxIVE1MVGV4dEFyZWFFbGVtZW50LCBBY2Nlc3NpYmxlVGV4dEFyZWFQcm9wcz4oXG4gIChcbiAgICB7XG4gICAgICBjbGFzc05hbWUsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGlucHV0TW9kZSxcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb25Gb2N1cyxcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIG9uS2V5RG93bkNhcHR1cmUsXG4gICAgICBvbktleVByZXNzLFxuICAgICAgb25TZWxlY3QsXG4gICAgICBwbGFjZWhvbGRlcixcbiAgICAgIHJlYWRPbmx5LFxuICAgICAgcm93cyxcbiAgICAgIHRhYkluZGV4LFxuICAgICAgLi4ucHJvcHNcbiAgICB9LFxuICAgIGZvcndhcmRlZFJlZlxuICApID0+IHtcbiAgICBjb25zdCB0YXJnZXRSZWYgPSB1c2VSZWYoKTtcblxuICAgIGNvbnN0IHJlZiA9IGZvcndhcmRlZFJlZiB8fCB0YXJnZXRSZWY7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIGFyaWEtZGlzYWJsZWQ9e2Rpc2FibGVkIHx8IHVuZGVmaW5lZH1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgIGlucHV0TW9kZT17aW5wdXRNb2RlfVxuICAgICAgICBvbkNoYW5nZT17ZGlzYWJsZWQgPyB1bmRlZmluZWQgOiBvbkNoYW5nZX1cbiAgICAgICAgb25Gb2N1cz17ZGlzYWJsZWQgPyB1bmRlZmluZWQgOiBvbkZvY3VzfVxuICAgICAgICBvbktleURvd249e2Rpc2FibGVkID8gdW5kZWZpbmVkIDogb25LZXlEb3dufVxuICAgICAgICBvbktleURvd25DYXB0dXJlPXtkaXNhYmxlZCA/IHVuZGVmaW5lZCA6IG9uS2V5RG93bkNhcHR1cmV9XG4gICAgICAgIG9uS2V5UHJlc3M9e2Rpc2FibGVkID8gdW5kZWZpbmVkIDogb25LZXlQcmVzc31cbiAgICAgICAgb25TZWxlY3Q9e2Rpc2FibGVkID8gdW5kZWZpbmVkIDogb25TZWxlY3R9XG4gICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgcmVhZE9ubHk9e3JlYWRPbmx5IHx8IGRpc2FibGVkfVxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgcm93cz17cm93c31cbiAgICAgICAgdGFiSW5kZXg9e2Rpc2FibGVkID8gLTEgOiB0YWJJbmRleH1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgLz5cbiAgICApO1xuICB9XG4pO1xuXG5BY2Nlc3NpYmxlVGV4dEFyZWEuZGVmYXVsdFByb3BzID0ge1xuICBjbGFzc05hbWU6IHVuZGVmaW5lZCxcbiAgZGlzYWJsZWQ6IHVuZGVmaW5lZCxcbiAgaW5wdXRNb2RlOiB1bmRlZmluZWQsXG4gIG9uQ2hhbmdlOiB1bmRlZmluZWQsXG4gIG9uRm9jdXM6IHVuZGVmaW5lZCxcbiAgb25LZXlEb3duOiB1bmRlZmluZWQsXG4gIG9uS2V5RG93bkNhcHR1cmU6IHVuZGVmaW5lZCxcbiAgb25LZXlQcmVzczogdW5kZWZpbmVkLFxuICBvblNlbGVjdDogdW5kZWZpbmVkLFxuICBwbGFjZWhvbGRlcjogdW5kZWZpbmVkLFxuICByZWFkT25seTogdW5kZWZpbmVkLFxuICByb3dzOiB1bmRlZmluZWQsXG4gIHRhYkluZGV4OiB1bmRlZmluZWQsXG4gIHZhbHVlOiB1bmRlZmluZWRcbn07XG5cbkFjY2Vzc2libGVUZXh0QXJlYS5kaXNwbGF5TmFtZSA9ICdBY2Nlc3NpYmxlVGV4dEFyZWEnO1xuXG5BY2Nlc3NpYmxlVGV4dEFyZWEucHJvcFR5cGVzID0ge1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaW5wdXRNb2RlOiBQcm9wVHlwZXMub25lT2YoWyd0ZXh0JywgJ25vbmUnLCAndGVsJywgJ3VybCcsICdlbWFpbCcsICdudW1lcmljJywgJ2RlY2ltYWwnLCAnc2VhcmNoJ10pLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRm9jdXM6IFByb3BUeXBlcy5mdW5jLFxuICBvbktleURvd246IFByb3BUeXBlcy5mdW5jLFxuICBvbktleURvd25DYXB0dXJlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25LZXlQcmVzczogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VsZWN0OiBQcm9wVHlwZXMuZnVuYyxcbiAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHJlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbCxcbiAgcm93czogUHJvcFR5cGVzLm51bWJlcixcbiAgdGFiSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG4gIHZhbHVlOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBY2Nlc3NpYmxlVGV4dEFyZWE7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQSxJQUFBQSxVQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJ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
;