botframework-webchat-component
Version:
React component of botframework-webchat
46 lines (34 loc) • 4.12 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = firstTabbableDescendant;
exports.orSelf = orSelf;
var _getTabIndex = _interopRequireDefault(require("./TypeFocusSink/getTabIndex"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var ALWAYS_TRUE_FN = function ALWAYS_TRUE_FN() {
return true;
};
var SELECTOR = 'a[href], audio, button, details, details summary, embed, iframe, input, object, rect, select, svg[focusable], textarea, video, [tabindex]';
function firstTabbableDescendant(element) {
var filter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ALWAYS_TRUE_FN;
if (!element) {
return;
} // This is best-effort for finding a tabbable element.
// For a comprehensive list, please refer to https://allyjs.io/data-tables/focusable.html and update this list accordingly.
var focusables = [].filter.call(element.querySelectorAll(SELECTOR), filter);
return [].find.call(focusables, function (focusable) {
var tabIndex = (0, _getTabIndex.default)(focusable);
return typeof tabIndex === 'number' && tabIndex >= 0;
});
}
function orSelf(element) {
if (!element) {
return;
}
if (element.matches(SELECTOR)) {
return element;
}
return firstTabbableDescendant(element);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9VdGlscy9maXJzdFRhYmJhYmxlRGVzY2VuZGFudC5qcyJdLCJuYW1lcyI6WyJBTFdBWVNfVFJVRV9GTiIsIlNFTEVDVE9SIiwiZmlyc3RUYWJiYWJsZURlc2NlbmRhbnQiLCJlbGVtZW50IiwiZmlsdGVyIiwiZm9jdXNhYmxlcyIsImNhbGwiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZmluZCIsImZvY3VzYWJsZSIsInRhYkluZGV4Iiwib3JTZWxmIiwibWF0Y2hlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7OztBQUVBLElBQU1BLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUI7QUFBQSxTQUFNLElBQU47QUFBQSxDQUF2Qjs7QUFFQSxJQUFNQyxRQUFRLEdBQ1osMklBREY7O0FBR2UsU0FBU0MsdUJBQVQsQ0FBaUNDLE9BQWpDLEVBQW1FO0FBQUEsTUFBekJDLE1BQXlCLHVFQUFoQkosY0FBZ0I7O0FBQ2hGLE1BQUksQ0FBQ0csT0FBTCxFQUFjO0FBQ1o7QUFDRCxHQUgrRSxDQUtoRjtBQUNBOzs7QUFDQSxNQUFNRSxVQUFVLEdBQUcsR0FBR0QsTUFBSCxDQUFVRSxJQUFWLENBQWVILE9BQU8sQ0FBQ0ksZ0JBQVIsQ0FBeUJOLFFBQXpCLENBQWYsRUFBbURHLE1BQW5ELENBQW5CO0FBRUEsU0FBTyxHQUFHSSxJQUFILENBQVFGLElBQVIsQ0FBYUQsVUFBYixFQUF5QixVQUFBSSxTQUFTLEVBQUk7QUFDM0MsUUFBTUMsUUFBUSxHQUFHLDBCQUFZRCxTQUFaLENBQWpCO0FBRUEsV0FBTyxPQUFPQyxRQUFQLEtBQW9CLFFBQXBCLElBQWdDQSxRQUFRLElBQUksQ0FBbkQ7QUFDRCxHQUpNLENBQVA7QUFLRDs7QUFFRCxTQUFTQyxNQUFULENBQWdCUixPQUFoQixFQUF5QjtBQUN2QixNQUFJLENBQUNBLE9BQUwsRUFBYztBQUNaO0FBQ0Q7O0FBRUQsTUFBSUEsT0FBTyxDQUFDUyxPQUFSLENBQWdCWCxRQUFoQixDQUFKLEVBQStCO0FBQzdCLFdBQU9FLE9BQVA7QUFDRDs7QUFFRCxTQUFPRCx1QkFBdUIsQ0FBQ0MsT0FBRCxDQUE5QjtBQUNEIiwic291cmNlUm9vdCI6ImNvbXBvbmVudDovLy8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0VGFiSW5kZXggZnJvbSAnLi9UeXBlRm9jdXNTaW5rL2dldFRhYkluZGV4JztcblxuY29uc3QgQUxXQVlTX1RSVUVfRk4gPSAoKSA9PiB0cnVlO1xuXG5jb25zdCBTRUxFQ1RPUiA9XG4gICdhW2hyZWZdLCBhdWRpbywgYnV0dG9uLCBkZXRhaWxzLCBkZXRhaWxzIHN1bW1hcnksIGVtYmVkLCBpZnJhbWUsIGlucHV0LCBvYmplY3QsIHJlY3QsIHNlbGVjdCwgc3ZnW2ZvY3VzYWJsZV0sIHRleHRhcmVhLCB2aWRlbywgW3RhYmluZGV4XSc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZpcnN0VGFiYmFibGVEZXNjZW5kYW50KGVsZW1lbnQsIGZpbHRlciA9IEFMV0FZU19UUlVFX0ZOKSB7XG4gIGlmICghZWxlbWVudCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIFRoaXMgaXMgYmVzdC1lZmZvcnQgZm9yIGZpbmRpbmcgYSB0YWJiYWJsZSBlbGVtZW50LlxuICAvLyBGb3IgYSBjb21wcmVoZW5zaXZlIGxpc3QsIHBsZWFzZSByZWZlciB0byBodHRwczovL2FsbHlqcy5pby9kYXRhLXRhYmxlcy9mb2N1c2FibGUuaHRtbCBhbmQgdXBkYXRlIHRoaXMgbGlzdCBhY2NvcmRpbmdseS5cbiAgY29uc3QgZm9jdXNhYmxlcyA9IFtdLmZpbHRlci5jYWxsKGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChTRUxFQ1RPUiksIGZpbHRlcik7XG5cbiAgcmV0dXJuIFtdLmZpbmQuY2FsbChmb2N1c2FibGVzLCBmb2N1c2FibGUgPT4ge1xuICAgIGNvbnN0IHRhYkluZGV4ID0gZ2V0VGFiSW5kZXgoZm9jdXNhYmxlKTtcblxuICAgIHJldHVybiB0eXBlb2YgdGFiSW5kZXggPT09ICdudW1iZXInICYmIHRhYkluZGV4ID49IDA7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvclNlbGYoZWxlbWVudCkge1xuICBpZiAoIWVsZW1lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoZWxlbWVudC5tYXRjaGVzKFNFTEVDVE9SKSkge1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgcmV0dXJuIGZpcnN0VGFiYmFibGVEZXNjZW5kYW50KGVsZW1lbnQpO1xufVxuXG5leHBvcnQgeyBvclNlbGYgfTtcbiJdfQ==
;