UNPKG

botframework-webchat-component

Version:
46 lines (34 loc) 4.12 kB
"use strict"; 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==