botframework-webchat-component
Version:
React component of botframework-webchat
40 lines (37 loc) • 4.96 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;
}
// "msMatchesSelector" is vendor-prefixed version of "matches".
// eslint-disable-next-line dot-notation
if ((element.matches || element['msMatchesSelector']).call(element, SELECTOR)) {
return element;
}
return firstTabbableDescendant(element);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2V0VGFiSW5kZXgiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQUxXQVlTX1RSVUVfRk4iLCJTRUxFQ1RPUiIsImZpcnN0VGFiYmFibGVEZXNjZW5kYW50IiwiZWxlbWVudCIsImZpbHRlciIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImZvY3VzYWJsZXMiLCJjYWxsIiwicXVlcnlTZWxlY3RvckFsbCIsImZpbmQiLCJmb2N1c2FibGUiLCJ0YWJJbmRleCIsImdldFRhYkluZGV4Iiwib3JTZWxmIiwibWF0Y2hlcyJdLCJzb3VyY2VSb290IjoiY29tcG9uZW50Oi8vLyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1V0aWxzL2ZpcnN0VGFiYmFibGVEZXNjZW5kYW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRUYWJJbmRleCBmcm9tICcuL1R5cGVGb2N1c1NpbmsvZ2V0VGFiSW5kZXgnO1xuXG5jb25zdCBBTFdBWVNfVFJVRV9GTiA9ICgpID0+IHRydWU7XG5cbmNvbnN0IFNFTEVDVE9SID1cbiAgJ2FbaHJlZl0sIGF1ZGlvLCBidXR0b24sIGRldGFpbHMsIGRldGFpbHMgc3VtbWFyeSwgZW1iZWQsIGlmcmFtZSwgaW5wdXQsIG9iamVjdCwgcmVjdCwgc2VsZWN0LCBzdmdbZm9jdXNhYmxlXSwgdGV4dGFyZWEsIHZpZGVvLCBbdGFiaW5kZXhdJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZmlyc3RUYWJiYWJsZURlc2NlbmRhbnQoZWxlbWVudCwgZmlsdGVyID0gQUxXQVlTX1RSVUVfRk4pIHtcbiAgaWYgKCFlbGVtZW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gVGhpcyBpcyBiZXN0LWVmZm9ydCBmb3IgZmluZGluZyBhIHRhYmJhYmxlIGVsZW1lbnQuXG4gIC8vIEZvciBhIGNvbXByZWhlbnNpdmUgbGlzdCwgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vYWxseWpzLmlvL2RhdGEtdGFibGVzL2ZvY3VzYWJsZS5odG1sIGFuZCB1cGRhdGUgdGhpcyBsaXN0IGFjY29yZGluZ2x5LlxuICBjb25zdCBmb2N1c2FibGVzID0gW10uZmlsdGVyLmNhbGwoZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFNFTEVDVE9SKSwgZmlsdGVyKTtcblxuICByZXR1cm4gW10uZmluZC5jYWxsKGZvY3VzYWJsZXMsIGZvY3VzYWJsZSA9PiB7XG4gICAgY29uc3QgdGFiSW5kZXggPSBnZXRUYWJJbmRleChmb2N1c2FibGUpO1xuXG4gICAgcmV0dXJuIHR5cGVvZiB0YWJJbmRleCA9PT0gJ251bWJlcicgJiYgdGFiSW5kZXggPj0gMDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG9yU2VsZihlbGVtZW50KSB7XG4gIGlmICghZWxlbWVudCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIFwibXNNYXRjaGVzU2VsZWN0b3JcIiBpcyB2ZW5kb3ItcHJlZml4ZWQgdmVyc2lvbiBvZiBcIm1hdGNoZXNcIi5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRvdC1ub3RhdGlvblxuICBpZiAoKGVsZW1lbnQubWF0Y2hlcyB8fCBlbGVtZW50Wydtc01hdGNoZXNTZWxlY3RvciddKS5jYWxsKGVsZW1lbnQsIFNFTEVDVE9SKSkge1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgcmV0dXJuIGZpcnN0VGFiYmFibGVEZXNjZW5kYW50KGVsZW1lbnQpO1xufVxuXG5leHBvcnQgeyBvclNlbGYgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLFlBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUFzRCxTQUFBRCx1QkFBQUUsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUV0RCxJQUFNRyxjQUFjLEdBQUcsU0FBakJBLGNBQWNBLENBQUE7RUFBQSxPQUFTLElBQUk7QUFBQTtBQUVqQyxJQUFNQyxRQUFRLEdBQ1osMklBQTJJO0FBRTlILFNBQVNDLHVCQUF1QkEsQ0FBQ0MsT0FBTyxFQUEyQjtFQUFBLElBQXpCQyxNQUFNLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHTCxjQUFjO0VBQzlFLElBQUksQ0FBQ0csT0FBTyxFQUFFO0lBQ1o7RUFDRjs7RUFFQTtFQUNBO0VBQ0EsSUFBTUssVUFBVSxHQUFHLEVBQUUsQ0FBQ0osTUFBTSxDQUFDSyxJQUFJLENBQUNOLE9BQU8sQ0FBQ08sZ0JBQWdCLENBQUNULFFBQVEsQ0FBQyxFQUFFRyxNQUFNLENBQUM7RUFFN0UsT0FBTyxFQUFFLENBQUNPLElBQUksQ0FBQ0YsSUFBSSxDQUFDRCxVQUFVLEVBQUUsVUFBQUksU0FBUyxFQUFJO0lBQzNDLElBQU1DLFFBQVEsR0FBRyxJQUFBQyxvQkFBVyxFQUFDRixTQUFTLENBQUM7SUFFdkMsT0FBTyxPQUFPQyxRQUFRLEtBQUssUUFBUSxJQUFJQSxRQUFRLElBQUksQ0FBQztFQUN0RCxDQUFDLENBQUM7QUFDSjtBQUVBLFNBQVNFLE1BQU1BLENBQUNaLE9BQU8sRUFBRTtFQUN2QixJQUFJLENBQUNBLE9BQU8sRUFBRTtJQUNaO0VBQ0Y7O0VBRUE7RUFDQTtFQUNBLElBQUksQ0FBQ0EsT0FBTyxDQUFDYSxPQUFPLElBQUliLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFTSxJQUFJLENBQUNOLE9BQU8sRUFBRUYsUUFBUSxDQUFDLEVBQUU7SUFDN0UsT0FBT0UsT0FBTztFQUNoQjtFQUVBLE9BQU9ELHVCQUF1QixDQUFDQyxPQUFPLENBQUM7QUFDekMifQ==
;