UNPKG

botframework-webchat-component

Version:
40 lines (37 loc) 4.96 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; } // "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==