dom-accessibility-api
Advanced tools
Sorry, the diff of this file is not supported yet
| "use strict"; | ||
| //# sourceMappingURL=core-js-pure.d.js.map |
| {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"core-js-pure.d.js"} |
+10
-0
@@ -0,1 +1,11 @@ | ||
| ## 0.4.0 | ||
| ### Minor Changes | ||
| - [`e80a1fb`](https://github.com/eps1lon/dom-accessibility-api/commit/e80a1fb32c136539a46007a64ef8c998855080a1) [#141](https://github.com/eps1lon/dom-accessibility-api/pull/141) Thanks [@eps1lon](https://github.com/eps1lon)! - Support ES5 environments | ||
| ### Patch Changes | ||
| - [`bd41c2d`](https://github.com/eps1lon/dom-accessibility-api/commit/bd41c2d3dec9c27e178b65bbe226d3c7adef0678) [#143](https://github.com/eps1lon/dom-accessibility-api/pull/143) Thanks [@eps1lon](https://github.com/eps1lon)! - fix: support `<label for>` for `<select>` and `<textarea>` | ||
| ## 0.3.0 | ||
@@ -2,0 +12,0 @@ |
| /** | ||
| * implements https://w3c.github.io/accname/ | ||
| */ | ||
| /** | ||
| * interface for an options-bag where `window.getComputedStyle` can be mocked | ||
@@ -6,0 +3,0 @@ */ |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"accessible-name.d.ts","sourceRoot":"","sources":["../sources/accessible-name.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkBH;;GAEG;AACH,UAAU,uBAAuB;IAChC,gBAAgB,CAAC,EAAE,OAAO,MAAM,CAAC,gBAAgB,CAAC;CAClD;AAiQD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,uBAA4B,GACnC,MAAM,CA0QR"} | ||
| {"version":3,"file":"accessible-name.d.ts","sourceRoot":"","sources":["../sources/accessible-name.ts"],"names":[],"mappings":"AAqBA;;GAEG;AACH,UAAU,uBAAuB;IAChC,gBAAgB,CAAC,EAAE,OAAO,MAAM,CAAC,gBAAgB,CAAC;CAClD;AAkQD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,uBAA4B,GACnC,MAAM,CAuQR"} |
+394
-328
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| }); | ||
| exports.computeAccessibleName = computeAccessibleName; | ||
| var _from = _interopRequireDefault(require("core-js-pure/features/array/from")); | ||
| var _set = _interopRequireDefault(require("core-js-pure/stable/set")); | ||
| var _getRole = _interopRequireDefault(require("./getRole")); | ||
| var _util = require("./util"); | ||
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
| function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } | ||
| function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } | ||
| function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } | ||
| function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } | ||
| /** | ||
| * implements https://w3c.github.io/accname/ | ||
| */ | ||
| var __importDefault = (this && this.__importDefault) || function (mod) { | ||
| return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| const getRole_1 = __importDefault(require("./getRole")); | ||
| const util_1 = require("./util"); | ||
| /** | ||
| * Small utility that handles all the JS quirks with `this` which is important | ||
@@ -18,9 +33,6 @@ * if no mock is provided. | ||
| function createGetComputedStyle(element, options) { | ||
| const window = util_1.safeWindow(element); | ||
| const { | ||
| // This might be overengineered. I don't know what happens if I call | ||
| // window.getComputedStyle(elementFromAnotherWindow) or if I don't bind it | ||
| // the type declarations don't require a `this` | ||
| getComputedStyle = window.getComputedStyle.bind(window) } = options; | ||
| return getComputedStyle; | ||
| var window = (0, _util.safeWindow)(element); | ||
| var _options$getComputedS = options.getComputedStyle, | ||
| getComputedStyle = _options$getComputedS === void 0 ? window.getComputedStyle.bind(window) : _options$getComputedS; | ||
| return getComputedStyle; | ||
| } | ||
@@ -32,4 +44,6 @@ /** | ||
| */ | ||
| function asFlatString(s) { | ||
| return s.trim().replace(/\s\s+/g, " "); | ||
| return s.trim().replace(/\s\s+/g, " "); | ||
| } | ||
@@ -39,16 +53,6 @@ /** | ||
| */ | ||
| function prohibitsNaming(node) { | ||
| return hasAnyConcreteRoles(node, [ | ||
| "caption", | ||
| "code", | ||
| "deletion", | ||
| "emphasis", | ||
| "generic", | ||
| "insertion", | ||
| "paragraph", | ||
| "presentation", | ||
| "strong", | ||
| "subscript", | ||
| "superscript" | ||
| ]); | ||
| return hasAnyConcreteRoles(node, ["caption", "code", "deletion", "emphasis", "generic", "insertion", "paragraph", "presentation", "strong", "subscript", "superscript"]); | ||
| } | ||
@@ -61,13 +65,15 @@ /** | ||
| */ | ||
| function isHidden(node, options) { | ||
| if (!util_1.isElement(node)) { | ||
| return false; | ||
| } | ||
| if (node.hasAttribute("hidden") || | ||
| node.getAttribute("aria-hidden") === "true") { | ||
| return true; | ||
| } | ||
| const style = createGetComputedStyle(node, options)(node); | ||
| return (style.getPropertyValue("display") === "none" || | ||
| style.getPropertyValue("visibility") === "hidden"); | ||
| if (!(0, _util.isElement)(node)) { | ||
| return false; | ||
| } | ||
| if (node.hasAttribute("hidden") || node.getAttribute("aria-hidden") === "true") { | ||
| return true; | ||
| } | ||
| var style = createGetComputedStyle(node, options)(node); | ||
| return style.getPropertyValue("display") === "none" || style.getPropertyValue("visibility") === "hidden"; | ||
| } | ||
@@ -80,16 +86,20 @@ /** | ||
| */ | ||
| function idRefs(node, attributeName) { | ||
| if (util_1.isElement(node) && node.hasAttribute(attributeName)) { | ||
| // safe due to hasAttribute check | ||
| // eslint-disable-next-line @typescript-eslint/no-non-null-assertion | ||
| const ids = node.getAttribute(attributeName).split(" "); | ||
| return ids | ||
| // safe since it can't be null for an Element | ||
| // eslint-disable-next-line @typescript-eslint/no-non-null-assertion | ||
| .map(id => node.ownerDocument.getElementById(id)) | ||
| .filter((element) => element !== null | ||
| // TODO: why does this not narrow? | ||
| ); | ||
| } | ||
| return []; | ||
| if ((0, _util.isElement)(node) && node.hasAttribute(attributeName)) { | ||
| // safe due to hasAttribute check | ||
| // eslint-disable-next-line @typescript-eslint/no-non-null-assertion | ||
| var ids = node.getAttribute(attributeName).split(" "); | ||
| return ids // safe since it can't be null for an Element | ||
| // eslint-disable-next-line @typescript-eslint/no-non-null-assertion | ||
| .map(function (id) { | ||
| return node.ownerDocument.getElementById(id); | ||
| }).filter(function (element) { | ||
| return element !== null; | ||
| } // TODO: why does this not narrow? | ||
| ); | ||
| } | ||
| return []; | ||
| } | ||
@@ -101,4 +111,6 @@ /** | ||
| */ | ||
| function queryChildNodes(node) { | ||
| return Array.from(node.childNodes).concat(idRefs(node, "aria-owns")); | ||
| return (0, _from.default)(node.childNodes).concat(idRefs(node, "aria-owns")); | ||
| } | ||
@@ -109,28 +121,28 @@ /** | ||
| */ | ||
| function isControl(node) { | ||
| return (hasAnyConcreteRoles(node, ["button", "combobox", "listbox", "textbox"]) || | ||
| hasAbstractRole(node, "range")); | ||
| return hasAnyConcreteRoles(node, ["button", "combobox", "listbox", "textbox"]) || hasAbstractRole(node, "range"); | ||
| } | ||
| function hasAbstractRole(node, role) { | ||
| if (!util_1.isElement(node)) { | ||
| return false; | ||
| } | ||
| switch (role) { | ||
| case "range": | ||
| return hasAnyConcreteRoles(node, [ | ||
| "meter", | ||
| "progressbar", | ||
| "scrollbar", | ||
| "slider", | ||
| "spinbutton" | ||
| ]); | ||
| default: | ||
| throw new TypeError(`No knowledge about abstract role '${role}'. This is likely a bug :(`); | ||
| } | ||
| if (!(0, _util.isElement)(node)) { | ||
| return false; | ||
| } | ||
| switch (role) { | ||
| case "range": | ||
| return hasAnyConcreteRoles(node, ["meter", "progressbar", "scrollbar", "slider", "spinbutton"]); | ||
| default: | ||
| throw new TypeError("No knowledge about abstract role '".concat(role, "'. This is likely a bug :(")); | ||
| } | ||
| } | ||
| function hasAnyConcreteRoles(node, roles) { | ||
| if (util_1.isElement(node)) { | ||
| return roles.indexOf(getRole_1.default(node)) !== -1; | ||
| } | ||
| return false; | ||
| if ((0, _util.isElement)(node)) { | ||
| return roles.indexOf((0, _getRole.default)(node)) !== -1; | ||
| } | ||
| return false; | ||
| } | ||
@@ -142,24 +154,34 @@ /** | ||
| */ | ||
| function querySelectorAllSubtree(element, selectors) { | ||
| const elements = []; | ||
| for (const root of [element, ...idRefs(element, "aria-owns")]) { | ||
| elements.push(...Array.from(root.querySelectorAll(selectors))); | ||
| } | ||
| return elements; | ||
| var elements = []; | ||
| for (var _i = 0, _arr = [element].concat(_toConsumableArray(idRefs(element, "aria-owns"))); _i < _arr.length; _i++) { | ||
| var root = _arr[_i]; | ||
| elements.push.apply(elements, _toConsumableArray((0, _from.default)(root.querySelectorAll(selectors)))); | ||
| } | ||
| return elements; | ||
| } | ||
| function querySelectedOptions(listbox) { | ||
| if (util_1.isHTMLSelectElement(listbox)) { | ||
| // IE11 polyfill | ||
| return (listbox.selectedOptions || querySelectorAllSubtree(listbox, "[selected]")); | ||
| } | ||
| return querySelectorAllSubtree(listbox, '[aria-selected="true"]'); | ||
| if ((0, _util.isHTMLSelectElement)(listbox)) { | ||
| // IE11 polyfill | ||
| return listbox.selectedOptions || querySelectorAllSubtree(listbox, "[selected]"); | ||
| } | ||
| return querySelectorAllSubtree(listbox, '[aria-selected="true"]'); | ||
| } | ||
| function isMarkedPresentational(node) { | ||
| return hasAnyConcreteRoles(node, ["none", "presentation"]); | ||
| return hasAnyConcreteRoles(node, ["none", "presentation"]); | ||
| } | ||
| /** | ||
| * TODO | ||
| * TODO https://github.com/eps1lon/dom-accessibility-api/issues/99 | ||
| */ | ||
| function isNativeHostLanguageTextAlternativeElement(node) { | ||
| return false; | ||
| return false; | ||
| } | ||
@@ -169,51 +191,41 @@ /** | ||
| */ | ||
| function allowsNameFromContent(node) { | ||
| return hasAnyConcreteRoles(node, [ | ||
| "button", | ||
| "cell", | ||
| "checkbox", | ||
| "columnheader", | ||
| "gridcell", | ||
| "heading", | ||
| "label", | ||
| "legend", | ||
| "link", | ||
| "menuitem", | ||
| "menuitemcheckbox", | ||
| "menuitemradio", | ||
| "option", | ||
| "radio", | ||
| "row", | ||
| "rowheader", | ||
| "switch", | ||
| "tab", | ||
| "tooltip", | ||
| "treeitem" | ||
| ]); | ||
| return hasAnyConcreteRoles(node, ["button", "cell", "checkbox", "columnheader", "gridcell", "heading", "label", "legend", "link", "menuitem", "menuitemcheckbox", "menuitemradio", "option", "radio", "row", "rowheader", "switch", "tab", "tooltip", "treeitem"]); | ||
| } | ||
| /** | ||
| * TODO | ||
| * TODO https://github.com/eps1lon/dom-accessibility-api/issues/100 | ||
| */ | ||
| function isDescendantOfNativeHostLanguageTextAlternativeElement(node) { | ||
| return false; | ||
| return false; | ||
| } | ||
| /** | ||
| * TODO | ||
| * TODO https://github.com/eps1lon/dom-accessibility-api/issues/101 | ||
| */ | ||
| function computeTooltipAttributeValue(node) { | ||
| return null; | ||
| return null; | ||
| } | ||
| function getValueOfTextbox(element) { | ||
| if (util_1.isHTMLInputElement(element) || util_1.isHTMLTextAreaElement(element)) { | ||
| return element.value; | ||
| } | ||
| // https://github.com/eps1lon/dom-accessibility-api/issues/4 | ||
| return element.textContent || ""; | ||
| if ((0, _util.isHTMLInputElement)(element) || (0, _util.isHTMLTextAreaElement)(element)) { | ||
| return element.value; | ||
| } // https://github.com/eps1lon/dom-accessibility-api/issues/4 | ||
| return element.textContent || ""; | ||
| } | ||
| function getTextualContent(declaration) { | ||
| const content = declaration.getPropertyValue("content"); | ||
| if (/^["'].*["']$/.test(content)) { | ||
| return content.slice(1, -1); | ||
| } | ||
| return ""; | ||
| var content = declaration.getPropertyValue("content"); | ||
| if (/^["'].*["']$/.test(content)) { | ||
| return content.slice(1, -1); | ||
| } | ||
| return ""; | ||
| } | ||
@@ -226,219 +238,273 @@ /** | ||
| */ | ||
| function computeAccessibleName(root, options = {}) { | ||
| const consultedNodes = new Set(); | ||
| if (prohibitsNaming(root)) { | ||
| return ""; | ||
| function computeAccessibleName(root) { | ||
| var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
| var consultedNodes = new _set.default(); | ||
| if (prohibitsNaming(root)) { | ||
| return ""; | ||
| } // 2F.i | ||
| function computeMiscTextAlternative(node, context) { | ||
| var accumulatedText = ""; | ||
| if ((0, _util.isElement)(node)) { | ||
| var pseudoBefore = createGetComputedStyle(node, options)(node, "::before"); | ||
| var beforeContent = getTextualContent(pseudoBefore); | ||
| accumulatedText = "".concat(beforeContent, " ").concat(accumulatedText); | ||
| } | ||
| // 2F.i | ||
| function computeMiscTextAlternative(node, context) { | ||
| let accumulatedText = ""; | ||
| if (util_1.isElement(node)) { | ||
| const pseudoBefore = createGetComputedStyle(node, options)(node, "::before"); | ||
| const beforeContent = getTextualContent(pseudoBefore); | ||
| accumulatedText = `${beforeContent} ${accumulatedText}`; | ||
| var _iteratorNormalCompletion = true; | ||
| var _didIteratorError = false; | ||
| var _iteratorError = undefined; | ||
| try { | ||
| for (var _iterator = queryChildNodes(node)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
| var child = _step.value; | ||
| var result = computeTextAlternative(child, { | ||
| isEmbeddedInLabel: context.isEmbeddedInLabel, | ||
| isReferenced: false, | ||
| recursion: true | ||
| }); // TODO: Unclear why display affects delimiter | ||
| var display = (0, _util.isElement)(node) && createGetComputedStyle(node, options)(node).getPropertyValue("display"); | ||
| var separator = display !== "inline" ? " " : ""; | ||
| accumulatedText += "".concat(separator).concat(result); | ||
| } | ||
| } catch (err) { | ||
| _didIteratorError = true; | ||
| _iteratorError = err; | ||
| } finally { | ||
| try { | ||
| if (!_iteratorNormalCompletion && _iterator.return != null) { | ||
| _iterator.return(); | ||
| } | ||
| for (const child of queryChildNodes(node)) { | ||
| const result = computeTextAlternative(child, { | ||
| isEmbeddedInLabel: context.isEmbeddedInLabel, | ||
| isReferenced: false, | ||
| recursion: true | ||
| }); | ||
| // TODO: Unclear why display affects delimiter | ||
| const display = util_1.isElement(node) && | ||
| createGetComputedStyle(node, options)(node).getPropertyValue("display"); | ||
| const separator = display !== "inline" ? " " : ""; | ||
| accumulatedText += `${separator}${result}`; | ||
| } finally { | ||
| if (_didIteratorError) { | ||
| throw _iteratorError; | ||
| } | ||
| if (util_1.isElement(node)) { | ||
| const pseudoAfter = createGetComputedStyle(node, options)(node, ":after"); | ||
| const afterContent = getTextualContent(pseudoAfter); | ||
| accumulatedText = `${accumulatedText} ${afterContent}`; | ||
| } | ||
| return accumulatedText; | ||
| } | ||
| } | ||
| /** | ||
| * TODO: placeholder | ||
| */ | ||
| function computeAttributeTextAlternative(node) { | ||
| if (!util_1.isElement(node)) { | ||
| return null; | ||
| } | ||
| const titleAttribute = node.getAttributeNode("title"); | ||
| if (titleAttribute !== null && !consultedNodes.has(titleAttribute)) { | ||
| consultedNodes.add(titleAttribute); | ||
| return titleAttribute.value; | ||
| } | ||
| const altAttribute = node.getAttributeNode("alt"); | ||
| if (altAttribute !== null && !consultedNodes.has(altAttribute)) { | ||
| consultedNodes.add(altAttribute); | ||
| return altAttribute.value; | ||
| } | ||
| if (util_1.isHTMLInputElement(node) && node.type === "button") { | ||
| consultedNodes.add(node); | ||
| return node.getAttribute("value") || ""; | ||
| } | ||
| return null; | ||
| if ((0, _util.isElement)(node)) { | ||
| var pseudoAfter = createGetComputedStyle(node, options)(node, ":after"); | ||
| var afterContent = getTextualContent(pseudoAfter); | ||
| accumulatedText = "".concat(accumulatedText, " ").concat(afterContent); | ||
| } | ||
| function computeElementTextAlternative(node) { | ||
| if (!util_1.isHTMLInputElement(node)) { | ||
| return null; | ||
| } | ||
| const input = node; | ||
| // https://w3c.github.io/html-aam/#input-type-text-input-type-password-input-type-search-input-type-tel-input-type-email-input-type-url-and-textarea-element-accessible-description-computation | ||
| if (input.type === "submit") { | ||
| return "Submit"; | ||
| } | ||
| if (input.type === "reset") { | ||
| return "Reset"; | ||
| } | ||
| const { labels } = input; | ||
| // IE11 does not implement labels, TODO: verify with caniuse instead of mdn | ||
| if (labels === null || labels === undefined || labels.length === 0) { | ||
| return null; | ||
| } | ||
| consultedNodes.add(input); | ||
| return Array.from(labels) | ||
| .map(element => { | ||
| return computeTextAlternative(element, { | ||
| isEmbeddedInLabel: true, | ||
| isReferenced: false, | ||
| recursion: true | ||
| }); | ||
| }) | ||
| .filter(label => { | ||
| return label.length > 0; | ||
| }) | ||
| .join(" "); | ||
| return accumulatedText; | ||
| } | ||
| function computeAttributeTextAlternative(node) { | ||
| if (!(0, _util.isElement)(node)) { | ||
| return null; | ||
| } | ||
| function computeTextAlternative(current, context) { | ||
| if (consultedNodes.has(current)) { | ||
| return ""; | ||
| var titleAttribute = node.getAttributeNode("title"); | ||
| if (titleAttribute !== null && !consultedNodes.has(titleAttribute)) { | ||
| consultedNodes.add(titleAttribute); | ||
| return titleAttribute.value; | ||
| } | ||
| var altAttribute = node.getAttributeNode("alt"); | ||
| if (altAttribute !== null && !consultedNodes.has(altAttribute)) { | ||
| consultedNodes.add(altAttribute); | ||
| return altAttribute.value; | ||
| } | ||
| if ((0, _util.isHTMLInputElement)(node) && node.type === "button") { | ||
| consultedNodes.add(node); | ||
| return node.getAttribute("value") || ""; | ||
| } | ||
| return null; | ||
| } | ||
| function computeElementTextAlternative(node) { | ||
| if (!(0, _util.isHTMLInputElement)(node)) { | ||
| return null; | ||
| } | ||
| var input = node; // https://w3c.github.io/html-aam/#input-type-text-input-type-password-input-type-search-input-type-tel-input-type-email-input-type-url-and-textarea-element-accessible-description-computation | ||
| if (input.type === "submit") { | ||
| return "Submit"; | ||
| } | ||
| if (input.type === "reset") { | ||
| return "Reset"; | ||
| } | ||
| var labels = input.labels; // IE11 does not implement labels, TODO: verify with caniuse instead of mdn | ||
| if (labels === null || labels === undefined || labels.length === 0) { | ||
| return null; | ||
| } | ||
| consultedNodes.add(input); | ||
| return (0, _from.default)(labels).map(function (element) { | ||
| return computeTextAlternative(element, { | ||
| isEmbeddedInLabel: true, | ||
| isReferenced: false, | ||
| recursion: true | ||
| }); | ||
| }).filter(function (label) { | ||
| return label.length > 0; | ||
| }).join(" "); | ||
| } | ||
| function computeTextAlternative(current, context) { | ||
| if (consultedNodes.has(current)) { | ||
| return ""; | ||
| } // special casing, cheating to make tests pass | ||
| // https://github.com/w3c/accname/issues/67 | ||
| if (hasAnyConcreteRoles(current, ["menu"])) { | ||
| consultedNodes.add(current); | ||
| return ""; | ||
| } // 2A | ||
| if (isHidden(current, options) && !context.isReferenced) { | ||
| consultedNodes.add(current); | ||
| return ""; | ||
| } // 2B | ||
| var labelElements = idRefs(current, "aria-labelledby"); | ||
| if (!context.isReferenced && labelElements.length > 0) { | ||
| return labelElements.map(function (element) { | ||
| return computeTextAlternative(element, { | ||
| isEmbeddedInLabel: context.isEmbeddedInLabel, | ||
| isReferenced: true, | ||
| // thais isn't recursion as specified, otherwise we would skip | ||
| // `aria-label` in | ||
| // <input id="myself" aria-label="foo" aria-labelledby="myself" | ||
| recursion: false | ||
| }); | ||
| }).join(" "); | ||
| } // 2C | ||
| // Changed from the spec in anticipation of https://github.com/w3c/accname/issues/64 | ||
| // spec says we should only consider skipping if we have a non-empty label | ||
| var skipToStep2E = context.recursion && isControl(current); | ||
| if (!skipToStep2E) { | ||
| var ariaLabel = ((0, _util.isElement)(current) && current.getAttribute("aria-label") || "").trim(); | ||
| if (ariaLabel !== "") { | ||
| consultedNodes.add(current); | ||
| return ariaLabel; | ||
| } // 2D | ||
| if (!isMarkedPresentational(current)) { | ||
| var elementTextAlternative = computeElementTextAlternative(current); | ||
| if (elementTextAlternative !== null) { | ||
| consultedNodes.add(current); | ||
| return elementTextAlternative; | ||
| } | ||
| // special casing, cheating to make tests pass | ||
| // https://github.com/w3c/accname/issues/67 | ||
| if (hasAnyConcreteRoles(current, ["menu"])) { | ||
| consultedNodes.add(current); | ||
| return ""; | ||
| var attributeTextAlternative = computeAttributeTextAlternative(current); | ||
| if (attributeTextAlternative !== null) { | ||
| consultedNodes.add(current); | ||
| return attributeTextAlternative; | ||
| } | ||
| // 2A | ||
| if (isHidden(current, options) && !context.isReferenced) { | ||
| consultedNodes.add(current); | ||
| return ""; | ||
| } | ||
| } // 2E | ||
| if (skipToStep2E || context.isEmbeddedInLabel || context.isReferenced) { | ||
| if (hasAnyConcreteRoles(current, ["combobox", "listbox"])) { | ||
| consultedNodes.add(current); | ||
| var selectedOptions = querySelectedOptions(current); | ||
| if (selectedOptions.length === 0) { | ||
| // defined per test `name_heading_combobox` | ||
| return (0, _util.isHTMLInputElement)(current) ? current.value : ""; | ||
| } | ||
| // 2B | ||
| const labelElements = idRefs(current, "aria-labelledby"); | ||
| if (!context.isReferenced && labelElements.length > 0) { | ||
| return labelElements | ||
| .map(element => computeTextAlternative(element, { | ||
| isEmbeddedInLabel: context.isEmbeddedInLabel, | ||
| isReferenced: true, | ||
| // thais isn't recursion as specified, otherwise we would skip | ||
| // `aria-label` in | ||
| // <input id="myself" aria-label="foo" aria-labelledby="myself" | ||
| recursion: false | ||
| })) | ||
| .join(" "); | ||
| return (0, _from.default)(selectedOptions).map(function (selectedOption) { | ||
| return computeTextAlternative(selectedOption, { | ||
| isEmbeddedInLabel: context.isEmbeddedInLabel, | ||
| isReferenced: false, | ||
| recursion: true | ||
| }); | ||
| }).join(" "); | ||
| } | ||
| if (hasAbstractRole(current, "range")) { | ||
| consultedNodes.add(current); | ||
| if (current.hasAttribute("aria-valuetext")) { | ||
| // safe due to hasAttribute guard | ||
| // eslint-disable-next-line @typescript-eslint/no-non-null-assertion | ||
| return current.getAttribute("aria-valuetext"); | ||
| } | ||
| // 2C | ||
| // Changed from the spec in anticipation of https://github.com/w3c/accname/issues/64 | ||
| // spec says we should only consider skipping if we have a non-empty label | ||
| const skipToStep2E = context.recursion && isControl(current); | ||
| if (!skipToStep2E) { | ||
| const ariaLabel = ((util_1.isElement(current) && current.getAttribute("aria-label")) || | ||
| "").trim(); | ||
| if (ariaLabel !== "") { | ||
| consultedNodes.add(current); | ||
| return ariaLabel; | ||
| } | ||
| // 2D | ||
| if (!isMarkedPresentational(current)) { | ||
| const elementTextAlternative = computeElementTextAlternative(current); | ||
| if (elementTextAlternative !== null) { | ||
| consultedNodes.add(current); | ||
| return elementTextAlternative; | ||
| } | ||
| const attributeTextAlternative = computeAttributeTextAlternative(current); | ||
| if (attributeTextAlternative !== null) { | ||
| consultedNodes.add(current); | ||
| return attributeTextAlternative; | ||
| } | ||
| } | ||
| } | ||
| // 2E | ||
| if (skipToStep2E || context.isEmbeddedInLabel || context.isReferenced) { | ||
| if (hasAnyConcreteRoles(current, ["combobox", "listbox"])) { | ||
| consultedNodes.add(current); | ||
| const selectedOptions = querySelectedOptions(current); | ||
| if (selectedOptions.length === 0) { | ||
| // defined per test `name_heading_combobox` | ||
| return util_1.isHTMLInputElement(current) ? current.value : ""; | ||
| } | ||
| return Array.from(selectedOptions) | ||
| .map(selectedOption => { | ||
| return computeTextAlternative(selectedOption, { | ||
| isEmbeddedInLabel: context.isEmbeddedInLabel, | ||
| isReferenced: false, | ||
| recursion: true | ||
| }); | ||
| }) | ||
| .join(" "); | ||
| } | ||
| if (hasAbstractRole(current, "range")) { | ||
| consultedNodes.add(current); | ||
| if (current.hasAttribute("aria-valuetext")) { | ||
| // safe due to hasAttribute guard | ||
| // eslint-disable-next-line @typescript-eslint/no-non-null-assertion | ||
| return current.getAttribute("aria-valuetext"); | ||
| } | ||
| if (current.hasAttribute("aria-valuenow")) { | ||
| // safe due to hasAttribute guard | ||
| // eslint-disable-next-line @typescript-eslint/no-non-null-assertion | ||
| return current.getAttribute("aria-valuenow"); | ||
| } | ||
| // Otherwise, use the value as specified by a host language attribute. | ||
| return current.getAttribute("value") || ""; | ||
| } | ||
| if (hasAnyConcreteRoles(current, ["textbox"])) { | ||
| consultedNodes.add(current); | ||
| return getValueOfTextbox(current); | ||
| } | ||
| } | ||
| // 2F: https://w3c.github.io/accname/#step2F | ||
| if (allowsNameFromContent(current) || | ||
| (util_1.isElement(current) && context.isReferenced) || | ||
| isNativeHostLanguageTextAlternativeElement(current) || | ||
| isDescendantOfNativeHostLanguageTextAlternativeElement(current)) { | ||
| consultedNodes.add(current); | ||
| return computeMiscTextAlternative(current, { | ||
| isEmbeddedInLabel: context.isEmbeddedInLabel, | ||
| isReferenced: false | ||
| }); | ||
| } | ||
| if (current.nodeType === current.TEXT_NODE) { | ||
| consultedNodes.add(current); | ||
| return current.textContent || ""; | ||
| } | ||
| if (context.recursion) { | ||
| consultedNodes.add(current); | ||
| return computeMiscTextAlternative(current, { | ||
| isEmbeddedInLabel: context.isEmbeddedInLabel, | ||
| isReferenced: false | ||
| }); | ||
| } | ||
| const tooltipAttributeValue = computeTooltipAttributeValue(current); | ||
| if (tooltipAttributeValue !== null) { | ||
| consultedNodes.add(current); | ||
| return tooltipAttributeValue; | ||
| } | ||
| // TODO should this be reachable? | ||
| if (current.hasAttribute("aria-valuenow")) { | ||
| // safe due to hasAttribute guard | ||
| // eslint-disable-next-line @typescript-eslint/no-non-null-assertion | ||
| return current.getAttribute("aria-valuenow"); | ||
| } // Otherwise, use the value as specified by a host language attribute. | ||
| return current.getAttribute("value") || ""; | ||
| } | ||
| if (hasAnyConcreteRoles(current, ["textbox"])) { | ||
| consultedNodes.add(current); | ||
| return ""; | ||
| return getValueOfTextbox(current); | ||
| } | ||
| } // 2F: https://w3c.github.io/accname/#step2F | ||
| if (allowsNameFromContent(current) || (0, _util.isElement)(current) && context.isReferenced || isNativeHostLanguageTextAlternativeElement(current) || isDescendantOfNativeHostLanguageTextAlternativeElement(current)) { | ||
| consultedNodes.add(current); | ||
| return computeMiscTextAlternative(current, { | ||
| isEmbeddedInLabel: context.isEmbeddedInLabel, | ||
| isReferenced: false | ||
| }); | ||
| } | ||
| return asFlatString(computeTextAlternative(root, { | ||
| isEmbeddedInLabel: false, | ||
| isReferenced: false, | ||
| recursion: false | ||
| })); | ||
| if (current.nodeType === current.TEXT_NODE) { | ||
| consultedNodes.add(current); | ||
| return current.textContent || ""; | ||
| } | ||
| if (context.recursion) { | ||
| consultedNodes.add(current); | ||
| return computeMiscTextAlternative(current, { | ||
| isEmbeddedInLabel: context.isEmbeddedInLabel, | ||
| isReferenced: false | ||
| }); | ||
| } | ||
| var tooltipAttributeValue = computeTooltipAttributeValue(current); | ||
| if (tooltipAttributeValue !== null) { | ||
| consultedNodes.add(current); | ||
| return tooltipAttributeValue; | ||
| } // TODO should this be reachable? | ||
| consultedNodes.add(current); | ||
| return ""; | ||
| } | ||
| return asFlatString(computeTextAlternative(root, { | ||
| isEmbeddedInLabel: false, | ||
| isReferenced: false, | ||
| recursion: false | ||
| })); | ||
| } | ||
| exports.computeAccessibleName = computeAccessibleName; | ||
| //# sourceMappingURL=accessible-name.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"accessible-name.js","sourceRoot":"","sources":["../sources/accessible-name.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AAEH,wDAAgC;AAChC,iCAMgB;AAehB;;;;;GAKG;AACH,SAAS,sBAAsB,CAC9B,OAAgB,EAChB,OAAgC;IAEhC,MAAM,MAAM,GAAG,iBAAU,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM;IACL,oEAAoE;IACpE,0EAA0E;IAC1E,+CAA+C;IAC/C,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EACvD,GAAG,OAAO,CAAC;IAEZ,OAAO,gBAAgB,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAe,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAAU;IAClC,OAAO,mBAAmB,CAAC,IAAI,EAAE;QAChC,SAAS;QACT,MAAM;QACN,UAAU;QACV,UAAU;QACV,SAAS;QACT,WAAW;QACX,WAAW;QACX,cAAc;QACd,QAAQ;QACR,WAAW;QACX,aAAa;KACb,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,QAAQ,CAChB,IAAU,EACV,OAAgC;IAEhC,IAAI,CAAC,gBAAS,CAAC,IAAI,CAAC,EAAE;QACrB,OAAO,KAAK,CAAC;KACb;IAED,IACC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,MAAM,EAC1C;QACD,OAAO,IAAI,CAAC;KACZ;IAED,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1D,OAAO,CACN,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,MAAM;QAC5C,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,QAAQ,CACjD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,MAAM,CAAC,IAAU,EAAE,aAAqB;IAChD,IAAI,gBAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE;QACxD,iCAAiC;QACjC,oEAAoE;QACpE,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEzD,OACC,GAAG;YACF,6CAA6C;YAC7C,oEAAoE;aACnE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,aAAc,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;aACjD,MAAM,CACN,CAAC,OAAuB,EAAsB,EAAE,CAAC,OAAO,KAAK,IAAI;QACjE,kCAAkC;SAEpC,CAAC;KACF;IAED,OAAO,EAAE,CAAC;AACX,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,IAAU;IAClC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,IAAU;IAC5B,OAAO,CACN,mBAAmB,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACvE,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAC9B,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAU,EAAE,IAAY;IAChD,IAAI,CAAC,gBAAS,CAAC,IAAI,CAAC,EAAE;QACrB,OAAO,KAAK,CAAC;KACb;IAED,QAAQ,IAAI,EAAE;QACb,KAAK,OAAO;YACX,OAAO,mBAAmB,CAAC,IAAI,EAAE;gBAChC,OAAO;gBACP,aAAa;gBACb,WAAW;gBACX,QAAQ;gBACR,YAAY;aACZ,CAAC,CAAC;QACJ;YACC,MAAM,IAAI,SAAS,CAClB,qCAAqC,IAAI,4BAA4B,CACrE,CAAC;KACH;AACF,CAAC;AAED,SAAS,mBAAmB,CAC3B,IAAU,EACV,KAA2B;IAE3B,IAAI,gBAAS,CAAC,IAAI,CAAC,EAAE;QACpB,OAAO,KAAK,CAAC,OAAO,CAAC,iBAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;KAC3C;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,uBAAuB,CAC/B,OAAgB,EAChB,SAAiB;IAEjB,MAAM,QAAQ,GAAG,EAAE,CAAC;IAEpB,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE;QAC9D,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KAC/D;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAgB;IAC7C,IAAI,0BAAmB,CAAC,OAAO,CAAC,EAAE;QACjC,gBAAgB;QAChB,OAAO,CACN,OAAO,CAAC,eAAe,IAAI,uBAAuB,CAAC,OAAO,EAAE,YAAY,CAAC,CACzE,CAAC;KACF;IACD,OAAO,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAU;IACzC,OAAO,mBAAmB,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,SAAS,0CAA0C,CAClD,IAAU;IAEV,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,IAAU;IACxC,OAAO,mBAAmB,CAAC,IAAI,EAAE;QAChC,QAAQ;QACR,MAAM;QACN,UAAU;QACV,cAAc;QACd,UAAU;QACV,SAAS;QACT,OAAO;QACP,QAAQ;QACR,MAAM;QACN,UAAU;QACV,kBAAkB;QAClB,eAAe;QACf,QAAQ;QACR,OAAO;QACP,KAAK;QACL,WAAW;QACX,QAAQ;QACR,KAAK;QACL,SAAS;QACT,UAAU;KACV,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,sDAAsD,CAC9D,IAAU;IAEV,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,4BAA4B,CAAC,IAAU;IAC/C,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAgB;IAC1C,IAAI,yBAAkB,CAAC,OAAO,CAAC,IAAI,4BAAqB,CAAC,OAAO,CAAC,EAAE;QAClE,OAAO,OAAO,CAAC,KAAK,CAAC;KACrB;IACD,4DAA4D;IAC5D,OAAO,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,iBAAiB,CAAC,WAAgC;IAC1D,MAAM,OAAO,GAAG,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACxD,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QACjC,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAC5B;IACD,OAAO,EAAE,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CACpC,IAAa,EACb,UAAmC,EAAE;IAErC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAQ,CAAC;IAEvC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;QAC1B,OAAO,EAAgB,CAAC;KACxB;IAED,OAAO;IACP,SAAS,0BAA0B,CAClC,IAAU,EACV,OAA8D;QAE9D,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,IAAI,gBAAS,CAAC,IAAI,CAAC,EAAE;YACpB,MAAM,YAAY,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CACzD,IAAI,EACJ,UAAU,CACV,CAAC;YACF,MAAM,aAAa,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACtD,eAAe,GAAG,GAAG,aAAa,IAAI,eAAe,EAAE,CAAC;SACxD;QAED,KAAK,MAAM,KAAK,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE;YAC1C,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,EAAE;gBAC5C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;aACf,CAAC,CAAC;YACH,8CAA8C;YAC9C,MAAM,OAAO,GACZ,gBAAS,CAAC,IAAI,CAAC;gBACf,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACzE,MAAM,SAAS,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,eAAe,IAAI,GAAG,SAAS,GAAG,MAAM,EAAE,CAAC;SAC3C;QAED,IAAI,gBAAS,CAAC,IAAI,CAAC,EAAE;YACpB,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC1E,MAAM,YAAY,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;YACpD,eAAe,GAAG,GAAG,eAAe,IAAI,YAAY,EAAE,CAAC;SACvD;QAED,OAAO,eAAe,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,SAAS,+BAA+B,CAAC,IAAU;QAClD,IAAI,CAAC,gBAAS,CAAC,IAAI,CAAC,EAAE;YACrB,OAAO,IAAI,CAAC;SACZ;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,cAAc,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;YACnE,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACnC,OAAO,cAAc,CAAC,KAAK,CAAC;SAC5B;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,YAAY,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YAC/D,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACjC,OAAO,YAAY,CAAC,KAAK,CAAC;SAC1B;QAED,IAAI,yBAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YACvD,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SACxC;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAED,SAAS,6BAA6B,CAAC,IAAU;QAChD,IAAI,CAAC,yBAAkB,CAAC,IAAI,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAC;SACZ;QACD,MAAM,KAAK,GAAG,IAAI,CAAC;QAEnB,+LAA+L;QAC/L,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO,QAAQ,CAAC;SAChB;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YAC3B,OAAO,OAAO,CAAC;SACf;QAED,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QACzB,2EAA2E;QAC3E,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACnE,OAAO,IAAI,CAAC;SACZ;QAED,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;aACvB,GAAG,CAAC,OAAO,CAAC,EAAE;YACd,OAAO,sBAAsB,CAAC,OAAO,EAAE;gBACtC,iBAAiB,EAAE,IAAI;gBACvB,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;aACf,CAAC,CAAC;QACJ,CAAC,CAAC;aACD,MAAM,CAAC,KAAK,CAAC,EAAE;YACf,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IAED,SAAS,sBAAsB,CAC9B,OAAa,EACb,OAIC;QAED,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAChC,OAAO,EAAE,CAAC;SACV;QAED,8CAA8C;QAC9C,2CAA2C;QAC3C,IAAI,mBAAmB,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;YAC3C,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC;SACV;QAED,KAAK;QACL,IAAI,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YACxD,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO,EAAgB,CAAC;SACxB;QAED,KAAK;QACL,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YACtD,OAAO,aAAa;iBAClB,GAAG,CAAC,OAAO,CAAC,EAAE,CACd,sBAAsB,CAAC,OAAO,EAAE;gBAC/B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,YAAY,EAAE,IAAI;gBAClB,8DAA8D;gBAC9D,kBAAkB;gBAClB,+DAA+D;gBAC/D,SAAS,EAAE,KAAK;aAChB,CAAC,CACF;iBACA,IAAI,CAAC,GAAG,CAAC,CAAC;SACZ;QAED,KAAK;QACL,oFAAoF;QACpF,0EAA0E;QAC1E,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY,EAAE;YAClB,MAAM,SAAS,GAAG,CACjB,CAAC,gBAAS,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;gBAC1D,EAAE,CACF,CAAC,IAAI,EAAE,CAAC;YACT,IAAI,SAAS,KAAK,EAAE,EAAE;gBACrB,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5B,OAAO,SAAS,CAAC;aACjB;YAED,KAAK;YACL,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE;gBACrC,MAAM,sBAAsB,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;gBACtE,IAAI,sBAAsB,KAAK,IAAI,EAAE;oBACpC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC5B,OAAO,sBAAsB,CAAC;iBAC9B;gBACD,MAAM,wBAAwB,GAAG,+BAA+B,CAC/D,OAAO,CACP,CAAC;gBACF,IAAI,wBAAwB,KAAK,IAAI,EAAE;oBACtC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC5B,OAAO,wBAAwB,CAAC;iBAChC;aACD;SACD;QAED,KAAK;QACL,IAAI,YAAY,IAAI,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,YAAY,EAAE;YACtE,IAAI,mBAAmB,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,EAAE;gBAC1D,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5B,MAAM,eAAe,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;gBACtD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;oBACjC,2CAA2C;oBAC3C,OAAO,yBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxD;gBACD,OAAO,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;qBAChC,GAAG,CAAC,cAAc,CAAC,EAAE;oBACrB,OAAO,sBAAsB,CAAC,cAAc,EAAE;wBAC7C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;wBAC5C,YAAY,EAAE,KAAK;wBACnB,SAAS,EAAE,IAAI;qBACf,CAAC,CAAC;gBACJ,CAAC,CAAC;qBACD,IAAI,CAAC,GAAG,CAAC,CAAC;aACZ;YACD,IAAI,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;gBACtC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5B,IAAI,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE;oBAC3C,iCAAiC;oBACjC,oEAAoE;oBACpE,OAAO,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAE,CAAC;iBAC/C;gBACD,IAAI,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE;oBAC1C,iCAAiC;oBACjC,oEAAoE;oBACpE,OAAO,OAAO,CAAC,YAAY,CAAC,eAAe,CAAE,CAAC;iBAC9C;gBACD,sEAAsE;gBACtE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;aAC3C;YACD,IAAI,mBAAmB,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE;gBAC9C,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5B,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;aAClC;SACD;QAED,4CAA4C;QAC5C,IACC,qBAAqB,CAAC,OAAO,CAAC;YAC9B,CAAC,gBAAS,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC;YAC5C,0CAA0C,CAAC,OAAO,CAAC;YACnD,sDAAsD,CAAC,OAAO,CAAC,EAC9D;YACD,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO,0BAA0B,CAAC,OAAO,EAAE;gBAC1C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,YAAY,EAAE,KAAK;aACnB,CAAC,CAAC;SACH;QAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,SAAS,EAAE;YAC3C,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;SACjC;QAED,IAAI,OAAO,CAAC,SAAS,EAAE;YACtB,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO,0BAA0B,CAAC,OAAO,EAAE;gBAC1C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,YAAY,EAAE,KAAK;aACnB,CAAC,CAAC;SACH;QAED,MAAM,qBAAqB,GAAG,4BAA4B,CAAC,OAAO,CAAC,CAAC;QACpE,IAAI,qBAAqB,KAAK,IAAI,EAAE;YACnC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO,qBAAqB,CAAC;SAC7B;QAED,iCAAiC;QACjC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,EAAE,CAAC;IACX,CAAC;IAED,OAAO,YAAY,CAClB,sBAAsB,CAAC,IAAI,EAAE;QAC5B,iBAAiB,EAAE,KAAK;QACxB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,KAAK;KAChB,CAAC,CACF,CAAC;AACH,CAAC;AA7QD,sDA6QC"} | ||
| {"version":3,"sources":["../sources/accessible-name.ts"],"names":["createGetComputedStyle","element","options","window","getComputedStyle","bind","asFlatString","s","trim","replace","prohibitsNaming","node","hasAnyConcreteRoles","isHidden","hasAttribute","getAttribute","style","getPropertyValue","idRefs","attributeName","ids","split","map","id","ownerDocument","getElementById","filter","queryChildNodes","childNodes","concat","isControl","hasAbstractRole","role","TypeError","roles","indexOf","querySelectorAllSubtree","selectors","elements","root","push","querySelectorAll","querySelectedOptions","listbox","selectedOptions","isMarkedPresentational","isNativeHostLanguageTextAlternativeElement","allowsNameFromContent","isDescendantOfNativeHostLanguageTextAlternativeElement","computeTooltipAttributeValue","getValueOfTextbox","value","textContent","getTextualContent","declaration","content","test","slice","computeAccessibleName","consultedNodes","Set","computeMiscTextAlternative","context","accumulatedText","pseudoBefore","beforeContent","child","result","computeTextAlternative","isEmbeddedInLabel","isReferenced","recursion","display","separator","pseudoAfter","afterContent","computeAttributeTextAlternative","titleAttribute","getAttributeNode","has","add","altAttribute","type","computeElementTextAlternative","input","labels","undefined","length","label","join","current","labelElements","skipToStep2E","ariaLabel","elementTextAlternative","attributeTextAlternative","selectedOption","nodeType","TEXT_NODE","tooltipAttributeValue"],"mappings":"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","sourcesContent":["/**\n * implements https://w3c.github.io/accname/\n */\nimport ArrayFrom from \"core-js-pure/features/array/from\";\nimport Set from \"core-js-pure/stable/set\";\nimport getRole from \"./getRole\";\nimport {\n\tisElement,\n\tisHTMLInputElement,\n\tisHTMLSelectElement,\n\tisHTMLTextAreaElement,\n\tsafeWindow\n} from \"./util\";\n\n/**\n * A string of characters where all carriage returns, newlines, tabs, and form-feeds are replaced with a single space, and multiple spaces are reduced to a single space. The string contains only character data; it does not contain any markup.\n */\ntype FlatString = string & {\n\t__flat: true;\n};\n\n/**\n * interface for an options-bag where `window.getComputedStyle` can be mocked\n */\ninterface GetComputedStyleOptions {\n\tgetComputedStyle?: typeof window.getComputedStyle;\n}\n/**\n * Small utility that handles all the JS quirks with `this` which is important\n * if no mock is provided.\n * @param element\n * @param options - These are not optional to prevent accidentally calling it without options in `computeAccessibleName`\n */\nfunction createGetComputedStyle(\n\telement: Element,\n\toptions: GetComputedStyleOptions\n): typeof window.getComputedStyle {\n\tconst window = safeWindow(element);\n\tconst {\n\t\t// This might be overengineered. I don't know what happens if I call\n\t\t// window.getComputedStyle(elementFromAnotherWindow) or if I don't bind it\n\t\t// the type declarations don't require a `this`\n\t\t// eslint-disable-next-line no-restricted-properties\n\t\tgetComputedStyle = window.getComputedStyle.bind(window)\n\t} = options;\n\n\treturn getComputedStyle;\n}\n\n/**\n *\n * @param {string} string -\n * @returns {FlatString} -\n */\nfunction asFlatString(s: string): FlatString {\n\treturn s.trim().replace(/\\s\\s+/g, \" \") as FlatString;\n}\n\n/**\n * https://w3c.github.io/aria/#namefromprohibited\n */\nfunction prohibitsNaming(node: Node): boolean {\n\treturn hasAnyConcreteRoles(node, [\n\t\t\"caption\",\n\t\t\"code\",\n\t\t\"deletion\",\n\t\t\"emphasis\",\n\t\t\"generic\",\n\t\t\"insertion\",\n\t\t\"paragraph\",\n\t\t\"presentation\",\n\t\t\"strong\",\n\t\t\"subscript\",\n\t\t\"superscript\"\n\t]);\n}\n\n/**\n *\n * @param node -\n * @param options - These are not optional to prevent accidentally calling it without options in `computeAccessibleName`\n * @returns {boolean} -\n */\nfunction isHidden(\n\tnode: Node,\n\toptions: GetComputedStyleOptions\n): node is Element {\n\tif (!isElement(node)) {\n\t\treturn false;\n\t}\n\n\tif (\n\t\tnode.hasAttribute(\"hidden\") ||\n\t\tnode.getAttribute(\"aria-hidden\") === \"true\"\n\t) {\n\t\treturn true;\n\t}\n\n\tconst style = createGetComputedStyle(node, options)(node);\n\treturn (\n\t\tstyle.getPropertyValue(\"display\") === \"none\" ||\n\t\tstyle.getPropertyValue(\"visibility\") === \"hidden\"\n\t);\n}\n\n/**\n *\n * @param {Node} node -\n * @param {string} attributeName -\n * @returns {Element[]} -\n */\nfunction idRefs(node: Node, attributeName: string): Element[] {\n\tif (isElement(node) && node.hasAttribute(attributeName)) {\n\t\t// safe due to hasAttribute check\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tconst ids = node.getAttribute(attributeName)!.split(\" \");\n\n\t\treturn (\n\t\t\tids\n\t\t\t\t// safe since it can't be null for an Element\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t.map(id => node.ownerDocument!.getElementById(id))\n\t\t\t\t.filter(\n\t\t\t\t\t(element: Element | null): element is Element => element !== null\n\t\t\t\t\t// TODO: why does this not narrow?\n\t\t\t\t) as Element[]\n\t\t);\n\t}\n\n\treturn [];\n}\n\n/**\n * All defined children. This include childNodes as well as owned (portaled) trees\n * via aria-owns\n * @param node\n */\nfunction queryChildNodes(node: Node): Node[] {\n\treturn ArrayFrom(node.childNodes).concat(idRefs(node, \"aria-owns\"));\n}\n\n/**\n * @param {Node} node -\n * @returns {boolean} - As defined in step 2E of https://w3c.github.io/accname/#mapping_additional_nd_te\n */\nfunction isControl(node: Node): boolean {\n\treturn (\n\t\thasAnyConcreteRoles(node, [\"button\", \"combobox\", \"listbox\", \"textbox\"]) ||\n\t\thasAbstractRole(node, \"range\")\n\t);\n}\n\nfunction hasAbstractRole(node: Node, role: string): node is Element {\n\tif (!isElement(node)) {\n\t\treturn false;\n\t}\n\n\tswitch (role) {\n\t\tcase \"range\":\n\t\t\treturn hasAnyConcreteRoles(node, [\n\t\t\t\t\"meter\",\n\t\t\t\t\"progressbar\",\n\t\t\t\t\"scrollbar\",\n\t\t\t\t\"slider\",\n\t\t\t\t\"spinbutton\"\n\t\t\t]);\n\t\tdefault:\n\t\t\tthrow new TypeError(\n\t\t\t\t`No knowledge about abstract role '${role}'. This is likely a bug :(`\n\t\t\t);\n\t}\n}\n\nfunction hasAnyConcreteRoles(\n\tnode: Node,\n\troles: Array<string | null>\n): node is Element {\n\tif (isElement(node)) {\n\t\treturn roles.indexOf(getRole(node)) !== -1;\n\t}\n\treturn false;\n}\n\n/**\n * element.querySelectorAll but also considers owned tree\n * @param element\n * @param selectors\n */\nfunction querySelectorAllSubtree(\n\telement: Element,\n\tselectors: string\n): Element[] {\n\tconst elements = [];\n\n\tfor (const root of [element, ...idRefs(element, \"aria-owns\")]) {\n\t\telements.push(...ArrayFrom(root.querySelectorAll(selectors)));\n\t}\n\n\treturn elements;\n}\n\nfunction querySelectedOptions(listbox: Element): ArrayLike<Element> {\n\tif (isHTMLSelectElement(listbox)) {\n\t\t// IE11 polyfill\n\t\treturn (\n\t\t\tlistbox.selectedOptions || querySelectorAllSubtree(listbox, \"[selected]\")\n\t\t);\n\t}\n\treturn querySelectorAllSubtree(listbox, '[aria-selected=\"true\"]');\n}\n\nfunction isMarkedPresentational(node: Node): node is Element {\n\treturn hasAnyConcreteRoles(node, [\"none\", \"presentation\"]);\n}\n\n/**\n * TODO https://github.com/eps1lon/dom-accessibility-api/issues/99\n */\nfunction isNativeHostLanguageTextAlternativeElement(\n\tnode: Node\n): node is Element {\n\treturn false;\n}\n\n/**\n * https://w3c.github.io/aria/#namefromcontent\n */\nfunction allowsNameFromContent(node: Node): boolean {\n\treturn hasAnyConcreteRoles(node, [\n\t\t\"button\",\n\t\t\"cell\",\n\t\t\"checkbox\",\n\t\t\"columnheader\",\n\t\t\"gridcell\",\n\t\t\"heading\",\n\t\t\"label\",\n\t\t\"legend\",\n\t\t\"link\",\n\t\t\"menuitem\",\n\t\t\"menuitemcheckbox\",\n\t\t\"menuitemradio\",\n\t\t\"option\",\n\t\t\"radio\",\n\t\t\"row\",\n\t\t\"rowheader\",\n\t\t\"switch\",\n\t\t\"tab\",\n\t\t\"tooltip\",\n\t\t\"treeitem\"\n\t]);\n}\n\n/**\n * TODO https://github.com/eps1lon/dom-accessibility-api/issues/100\n */\nfunction isDescendantOfNativeHostLanguageTextAlternativeElement(\n\tnode: Node\n): boolean {\n\treturn false;\n}\n\n/**\n * TODO https://github.com/eps1lon/dom-accessibility-api/issues/101\n */\nfunction computeTooltipAttributeValue(node: Node): string | null {\n\treturn null;\n}\n\nfunction getValueOfTextbox(element: Element): string {\n\tif (isHTMLInputElement(element) || isHTMLTextAreaElement(element)) {\n\t\treturn element.value;\n\t}\n\t// https://github.com/eps1lon/dom-accessibility-api/issues/4\n\treturn element.textContent || \"\";\n}\n\nfunction getTextualContent(declaration: CSSStyleDeclaration): string {\n\tconst content = declaration.getPropertyValue(\"content\");\n\tif (/^[\"'].*[\"']$/.test(content)) {\n\t\treturn content.slice(1, -1);\n\t}\n\treturn \"\";\n}\n\n/**\n * implements https://w3c.github.io/accname/#mapping_additional_nd_te\n * @param root\n * @param [options]\n * @parma [options.getComputedStyle] - mock window.getComputedStyle. Needs `content`, `display` and `visibility`\n */\nexport function computeAccessibleName(\n\troot: Element,\n\toptions: GetComputedStyleOptions = {}\n): string {\n\tconst consultedNodes = new Set<Node>();\n\n\tif (prohibitsNaming(root)) {\n\t\treturn \"\" as FlatString;\n\t}\n\n\t// 2F.i\n\tfunction computeMiscTextAlternative(\n\t\tnode: Node,\n\t\tcontext: { isEmbeddedInLabel: boolean; isReferenced: boolean }\n\t): string {\n\t\tlet accumulatedText = \"\";\n\t\tif (isElement(node)) {\n\t\t\tconst pseudoBefore = createGetComputedStyle(node, options)(\n\t\t\t\tnode,\n\t\t\t\t\"::before\"\n\t\t\t);\n\t\t\tconst beforeContent = getTextualContent(pseudoBefore);\n\t\t\taccumulatedText = `${beforeContent} ${accumulatedText}`;\n\t\t}\n\n\t\tfor (const child of queryChildNodes(node)) {\n\t\t\tconst result = computeTextAlternative(child, {\n\t\t\t\tisEmbeddedInLabel: context.isEmbeddedInLabel,\n\t\t\t\tisReferenced: false,\n\t\t\t\trecursion: true\n\t\t\t});\n\t\t\t// TODO: Unclear why display affects delimiter\n\t\t\tconst display =\n\t\t\t\tisElement(node) &&\n\t\t\t\tcreateGetComputedStyle(node, options)(node).getPropertyValue(\"display\");\n\t\t\tconst separator = display !== \"inline\" ? \" \" : \"\";\n\t\t\taccumulatedText += `${separator}${result}`;\n\t\t}\n\n\t\tif (isElement(node)) {\n\t\t\tconst pseudoAfter = createGetComputedStyle(node, options)(node, \":after\");\n\t\t\tconst afterContent = getTextualContent(pseudoAfter);\n\t\t\taccumulatedText = `${accumulatedText} ${afterContent}`;\n\t\t}\n\n\t\treturn accumulatedText;\n\t}\n\n\tfunction computeAttributeTextAlternative(node: Node): string | null {\n\t\tif (!isElement(node)) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst titleAttribute = node.getAttributeNode(\"title\");\n\t\tif (titleAttribute !== null && !consultedNodes.has(titleAttribute)) {\n\t\t\tconsultedNodes.add(titleAttribute);\n\t\t\treturn titleAttribute.value;\n\t\t}\n\n\t\tconst altAttribute = node.getAttributeNode(\"alt\");\n\t\tif (altAttribute !== null && !consultedNodes.has(altAttribute)) {\n\t\t\tconsultedNodes.add(altAttribute);\n\t\t\treturn altAttribute.value;\n\t\t}\n\n\t\tif (isHTMLInputElement(node) && node.type === \"button\") {\n\t\t\tconsultedNodes.add(node);\n\t\t\treturn node.getAttribute(\"value\") || \"\";\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction computeElementTextAlternative(node: Node): string | null {\n\t\tif (!isHTMLInputElement(node)) {\n\t\t\treturn null;\n\t\t}\n\t\tconst input = node;\n\n\t\t// https://w3c.github.io/html-aam/#input-type-text-input-type-password-input-type-search-input-type-tel-input-type-email-input-type-url-and-textarea-element-accessible-description-computation\n\t\tif (input.type === \"submit\") {\n\t\t\treturn \"Submit\";\n\t\t}\n\t\tif (input.type === \"reset\") {\n\t\t\treturn \"Reset\";\n\t\t}\n\n\t\tconst { labels } = input;\n\t\t// IE11 does not implement labels, TODO: verify with caniuse instead of mdn\n\t\tif (labels === null || labels === undefined || labels.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconsultedNodes.add(input);\n\t\treturn ArrayFrom(labels)\n\t\t\t.map(element => {\n\t\t\t\treturn computeTextAlternative(element, {\n\t\t\t\t\tisEmbeddedInLabel: true,\n\t\t\t\t\tisReferenced: false,\n\t\t\t\t\trecursion: true\n\t\t\t\t});\n\t\t\t})\n\t\t\t.filter(label => {\n\t\t\t\treturn label.length > 0;\n\t\t\t})\n\t\t\t.join(\" \");\n\t}\n\n\tfunction computeTextAlternative(\n\t\tcurrent: Node,\n\t\tcontext: {\n\t\t\tisEmbeddedInLabel: boolean;\n\t\t\tisReferenced: boolean;\n\t\t\trecursion: boolean;\n\t\t}\n\t): string {\n\t\tif (consultedNodes.has(current)) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\t// special casing, cheating to make tests pass\n\t\t// https://github.com/w3c/accname/issues/67\n\t\tif (hasAnyConcreteRoles(current, [\"menu\"])) {\n\t\t\tconsultedNodes.add(current);\n\t\t\treturn \"\";\n\t\t}\n\n\t\t// 2A\n\t\tif (isHidden(current, options) && !context.isReferenced) {\n\t\t\tconsultedNodes.add(current);\n\t\t\treturn \"\" as FlatString;\n\t\t}\n\n\t\t// 2B\n\t\tconst labelElements = idRefs(current, \"aria-labelledby\");\n\t\tif (!context.isReferenced && labelElements.length > 0) {\n\t\t\treturn labelElements\n\t\t\t\t.map(element =>\n\t\t\t\t\tcomputeTextAlternative(element, {\n\t\t\t\t\t\tisEmbeddedInLabel: context.isEmbeddedInLabel,\n\t\t\t\t\t\tisReferenced: true,\n\t\t\t\t\t\t// thais isn't recursion as specified, otherwise we would skip\n\t\t\t\t\t\t// `aria-label` in\n\t\t\t\t\t\t// <input id=\"myself\" aria-label=\"foo\" aria-labelledby=\"myself\"\n\t\t\t\t\t\trecursion: false\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.join(\" \");\n\t\t}\n\n\t\t// 2C\n\t\t// Changed from the spec in anticipation of https://github.com/w3c/accname/issues/64\n\t\t// spec says we should only consider skipping if we have a non-empty label\n\t\tconst skipToStep2E = context.recursion && isControl(current);\n\t\tif (!skipToStep2E) {\n\t\t\tconst ariaLabel = (\n\t\t\t\t(isElement(current) && current.getAttribute(\"aria-label\")) ||\n\t\t\t\t\"\"\n\t\t\t).trim();\n\t\t\tif (ariaLabel !== \"\") {\n\t\t\t\tconsultedNodes.add(current);\n\t\t\t\treturn ariaLabel;\n\t\t\t}\n\n\t\t\t// 2D\n\t\t\tif (!isMarkedPresentational(current)) {\n\t\t\t\tconst elementTextAlternative = computeElementTextAlternative(current);\n\t\t\t\tif (elementTextAlternative !== null) {\n\t\t\t\t\tconsultedNodes.add(current);\n\t\t\t\t\treturn elementTextAlternative;\n\t\t\t\t}\n\t\t\t\tconst attributeTextAlternative = computeAttributeTextAlternative(\n\t\t\t\t\tcurrent\n\t\t\t\t);\n\t\t\t\tif (attributeTextAlternative !== null) {\n\t\t\t\t\tconsultedNodes.add(current);\n\t\t\t\t\treturn attributeTextAlternative;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// 2E\n\t\tif (skipToStep2E || context.isEmbeddedInLabel || context.isReferenced) {\n\t\t\tif (hasAnyConcreteRoles(current, [\"combobox\", \"listbox\"])) {\n\t\t\t\tconsultedNodes.add(current);\n\t\t\t\tconst selectedOptions = querySelectedOptions(current);\n\t\t\t\tif (selectedOptions.length === 0) {\n\t\t\t\t\t// defined per test `name_heading_combobox`\n\t\t\t\t\treturn isHTMLInputElement(current) ? current.value : \"\";\n\t\t\t\t}\n\t\t\t\treturn ArrayFrom(selectedOptions)\n\t\t\t\t\t.map(selectedOption => {\n\t\t\t\t\t\treturn computeTextAlternative(selectedOption, {\n\t\t\t\t\t\t\tisEmbeddedInLabel: context.isEmbeddedInLabel,\n\t\t\t\t\t\t\tisReferenced: false,\n\t\t\t\t\t\t\trecursion: true\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t\t.join(\" \");\n\t\t\t}\n\t\t\tif (hasAbstractRole(current, \"range\")) {\n\t\t\t\tconsultedNodes.add(current);\n\t\t\t\tif (current.hasAttribute(\"aria-valuetext\")) {\n\t\t\t\t\t// safe due to hasAttribute guard\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\treturn current.getAttribute(\"aria-valuetext\")!;\n\t\t\t\t}\n\t\t\t\tif (current.hasAttribute(\"aria-valuenow\")) {\n\t\t\t\t\t// safe due to hasAttribute guard\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\treturn current.getAttribute(\"aria-valuenow\")!;\n\t\t\t\t}\n\t\t\t\t// Otherwise, use the value as specified by a host language attribute.\n\t\t\t\treturn current.getAttribute(\"value\") || \"\";\n\t\t\t}\n\t\t\tif (hasAnyConcreteRoles(current, [\"textbox\"])) {\n\t\t\t\tconsultedNodes.add(current);\n\t\t\t\treturn getValueOfTextbox(current);\n\t\t\t}\n\t\t}\n\n\t\t// 2F: https://w3c.github.io/accname/#step2F\n\t\tif (\n\t\t\tallowsNameFromContent(current) ||\n\t\t\t(isElement(current) && context.isReferenced) ||\n\t\t\tisNativeHostLanguageTextAlternativeElement(current) ||\n\t\t\tisDescendantOfNativeHostLanguageTextAlternativeElement(current)\n\t\t) {\n\t\t\tconsultedNodes.add(current);\n\t\t\treturn computeMiscTextAlternative(current, {\n\t\t\t\tisEmbeddedInLabel: context.isEmbeddedInLabel,\n\t\t\t\tisReferenced: false\n\t\t\t});\n\t\t}\n\n\t\tif (current.nodeType === current.TEXT_NODE) {\n\t\t\tconsultedNodes.add(current);\n\t\t\treturn current.textContent || \"\";\n\t\t}\n\n\t\tif (context.recursion) {\n\t\t\tconsultedNodes.add(current);\n\t\t\treturn computeMiscTextAlternative(current, {\n\t\t\t\tisEmbeddedInLabel: context.isEmbeddedInLabel,\n\t\t\t\tisReferenced: false\n\t\t\t});\n\t\t}\n\n\t\tconst tooltipAttributeValue = computeTooltipAttributeValue(current);\n\t\tif (tooltipAttributeValue !== null) {\n\t\t\tconsultedNodes.add(current);\n\t\t\treturn tooltipAttributeValue;\n\t\t}\n\n\t\t// TODO should this be reachable?\n\t\tconsultedNodes.add(current);\n\t\treturn \"\";\n\t}\n\n\treturn asFlatString(\n\t\tcomputeTextAlternative(root, {\n\t\t\tisEmbeddedInLabel: false,\n\t\t\tisReferenced: false,\n\t\t\trecursion: false\n\t\t})\n\t);\n}\n"],"file":"accessible-name.js"} |
+154
-118
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| }); | ||
| exports.default = getRole; | ||
| function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } | ||
| function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } | ||
| function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } | ||
| function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } | ||
| // https://w3c.github.io/html-aria/#document-conformance-requirements-for-use-of-aria-attributes-in-html | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| function getRole(element) { | ||
| const explicitRole = getExplicitRole(element); | ||
| if (explicitRole !== null) { | ||
| return explicitRole; | ||
| } | ||
| return getImplicitRole(element); | ||
| var explicitRole = getExplicitRole(element); | ||
| if (explicitRole !== null) { | ||
| return explicitRole; | ||
| } | ||
| return getImplicitRole(element); | ||
| } | ||
| exports.default = getRole; | ||
| const tagToRoleMappings = { | ||
| ARTICLE: "article", | ||
| ASIDE: "complementary", | ||
| BODY: "document", | ||
| BUTTON: "button", | ||
| DATALIST: "listbox", | ||
| DD: "definition", | ||
| DETAILS: "group", | ||
| DIALOG: "dialog", | ||
| DT: "term", | ||
| FIELDSET: "group", | ||
| FIGURE: "figure", | ||
| // WARNING: Only with an accessible name | ||
| FORM: "form", | ||
| FOOTER: "contentinfo", | ||
| H1: "heading", | ||
| H2: "heading", | ||
| H3: "heading", | ||
| H4: "heading", | ||
| H5: "heading", | ||
| H6: "heading", | ||
| HEADER: "banner", | ||
| HR: "separator", | ||
| LEGEND: "legend", | ||
| LI: "listitem", | ||
| MATH: "math", | ||
| MAIN: "main", | ||
| MENU: "list", | ||
| NAV: "navigation", | ||
| OL: "list", | ||
| OPTGROUP: "group", | ||
| // WARNING: Only in certain context | ||
| OPTION: "option", | ||
| OUTPUT: "status", | ||
| PROGRESS: "progressbar", | ||
| // WARNING: Only with an accessible name | ||
| SECTION: "region", | ||
| SUMMARY: "button", | ||
| TABLE: "table", | ||
| TBODY: "rowgroup", | ||
| TEXTAREA: "textbox", | ||
| TFOOT: "rowgroup", | ||
| // WARNING: Only in certain context | ||
| TD: "cell", | ||
| TH: "columnheader", | ||
| THEAD: "rowgroup", | ||
| TR: "row", | ||
| UL: "list" | ||
| var tagToRoleMappings = { | ||
| ARTICLE: "article", | ||
| ASIDE: "complementary", | ||
| BODY: "document", | ||
| BUTTON: "button", | ||
| DATALIST: "listbox", | ||
| DD: "definition", | ||
| DETAILS: "group", | ||
| DIALOG: "dialog", | ||
| DT: "term", | ||
| FIELDSET: "group", | ||
| FIGURE: "figure", | ||
| // WARNING: Only with an accessible name | ||
| FORM: "form", | ||
| FOOTER: "contentinfo", | ||
| H1: "heading", | ||
| H2: "heading", | ||
| H3: "heading", | ||
| H4: "heading", | ||
| H5: "heading", | ||
| H6: "heading", | ||
| HEADER: "banner", | ||
| HR: "separator", | ||
| LEGEND: "legend", | ||
| LI: "listitem", | ||
| MATH: "math", | ||
| MAIN: "main", | ||
| MENU: "list", | ||
| NAV: "navigation", | ||
| OL: "list", | ||
| OPTGROUP: "group", | ||
| // WARNING: Only in certain context | ||
| OPTION: "option", | ||
| OUTPUT: "status", | ||
| PROGRESS: "progressbar", | ||
| // WARNING: Only with an accessible name | ||
| SECTION: "region", | ||
| SUMMARY: "button", | ||
| TABLE: "table", | ||
| TBODY: "rowgroup", | ||
| TEXTAREA: "textbox", | ||
| TFOOT: "rowgroup", | ||
| // WARNING: Only in certain context | ||
| TD: "cell", | ||
| TH: "columnheader", | ||
| THEAD: "rowgroup", | ||
| TR: "row", | ||
| UL: "list" | ||
| }; | ||
| function getImplicitRole(element) { | ||
| const mappedByTag = tagToRoleMappings[element.tagName]; | ||
| if (mappedByTag !== undefined) { | ||
| return mappedByTag; | ||
| } | ||
| switch (element.tagName) { | ||
| case "A": | ||
| case "AREA": | ||
| case "LINK": | ||
| if (element.hasAttribute("href")) { | ||
| return "link"; | ||
| var mappedByTag = tagToRoleMappings[element.tagName]; | ||
| if (mappedByTag !== undefined) { | ||
| return mappedByTag; | ||
| } | ||
| switch (element.tagName) { | ||
| case "A": | ||
| case "AREA": | ||
| case "LINK": | ||
| if (element.hasAttribute("href")) { | ||
| return "link"; | ||
| } | ||
| break; | ||
| case "IMG": | ||
| if ((element.getAttribute("alt") || "").length > 0) { | ||
| return "img"; | ||
| } | ||
| break; | ||
| case "INPUT": | ||
| { | ||
| var _ref = element, | ||
| type = _ref.type; | ||
| switch (type) { | ||
| case "button": | ||
| case "image": | ||
| case "reset": | ||
| case "submit": | ||
| return "button"; | ||
| case "checkbox": | ||
| case "radio": | ||
| return type; | ||
| case "range": | ||
| return "slider"; | ||
| case "email": | ||
| case "tel": | ||
| case "text": | ||
| case "url": | ||
| if (element.hasAttribute("list")) { | ||
| return "combobox"; | ||
| } | ||
| break; | ||
| case "IMG": | ||
| if ((element.getAttribute("alt") || "").length > 0) { | ||
| return "img"; | ||
| return "textbox"; | ||
| case "search": | ||
| if (element.hasAttribute("list")) { | ||
| return "combobox"; | ||
| } | ||
| break; | ||
| case "INPUT": { | ||
| const { type } = element; | ||
| switch (type) { | ||
| case "button": | ||
| case "image": | ||
| case "reset": | ||
| case "submit": | ||
| return "button"; | ||
| case "checkbox": | ||
| case "radio": | ||
| return type; | ||
| case "range": | ||
| return "slider"; | ||
| case "email": | ||
| case "tel": | ||
| case "text": | ||
| case "url": | ||
| if (element.hasAttribute("list")) { | ||
| return "combobox"; | ||
| } | ||
| return "textbox"; | ||
| case "search": | ||
| if (element.hasAttribute("list")) { | ||
| return "combobox"; | ||
| } | ||
| return "searchbox"; | ||
| default: | ||
| return null; | ||
| } | ||
| return "searchbox"; | ||
| default: | ||
| return null; | ||
| } | ||
| case "SELECT": | ||
| if (element.hasAttribute("multiple") || | ||
| element.size > 1) { | ||
| return "listbox"; | ||
| } | ||
| return "combobox"; | ||
| } | ||
| return null; | ||
| } | ||
| case "SELECT": | ||
| if (element.hasAttribute("multiple") || element.size > 1) { | ||
| return "listbox"; | ||
| } | ||
| return "combobox"; | ||
| } | ||
| return null; | ||
| } | ||
| function getExplicitRole(element) { | ||
| if (element.hasAttribute("role")) { | ||
| // safe due to hasAttribute check | ||
| // eslint-disable-next-line @typescript-eslint/no-non-null-assertion | ||
| const [explicitRole] = element | ||
| .getAttribute("role") | ||
| .trim() | ||
| .split(" "); | ||
| if (explicitRole !== undefined && explicitRole.length > 0) { | ||
| return explicitRole; | ||
| } | ||
| if (element.hasAttribute("role")) { | ||
| // safe due to hasAttribute check | ||
| // eslint-disable-next-line @typescript-eslint/no-non-null-assertion | ||
| var _trim$split = element.getAttribute("role").trim().split(" "), | ||
| _trim$split2 = _slicedToArray(_trim$split, 1), | ||
| explicitRole = _trim$split2[0]; | ||
| if (explicitRole !== undefined && explicitRole.length > 0) { | ||
| return explicitRole; | ||
| } | ||
| return null; | ||
| } | ||
| return null; | ||
| } | ||
| //# sourceMappingURL=getRole.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"getRole.js","sourceRoot":"","sources":["../sources/getRole.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"sources":["../sources/getRole.ts"],"names":["getRole","element","explicitRole","getExplicitRole","getImplicitRole","tagToRoleMappings","ARTICLE","ASIDE","BODY","BUTTON","DATALIST","DD","DETAILS","DIALOG","DT","FIELDSET","FIGURE","FORM","FOOTER","H1","H2","H3","H4","H5","H6","HEADER","HR","LEGEND","LI","MATH","MAIN","MENU","NAV","OL","OPTGROUP","OPTION","OUTPUT","PROGRESS","SECTION","SUMMARY","TABLE","TBODY","TEXTAREA","TFOOT","TD","TH","THEAD","TR","UL","mappedByTag","tagName","undefined","hasAttribute","getAttribute","length","type","size","trim","split"],"mappings":"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","sourcesContent":["// https://w3c.github.io/html-aria/#document-conformance-requirements-for-use-of-aria-attributes-in-html\n\nexport default function getRole(element: Element): string | null {\n\tconst explicitRole = getExplicitRole(element);\n\tif (explicitRole !== null) {\n\t\treturn explicitRole;\n\t}\n\n\treturn getImplicitRole(element);\n}\n\nconst tagToRoleMappings: Record<string, string | undefined> = {\n\tARTICLE: \"article\",\n\tASIDE: \"complementary\",\n\tBODY: \"document\",\n\tBUTTON: \"button\",\n\tDATALIST: \"listbox\",\n\tDD: \"definition\",\n\tDETAILS: \"group\",\n\tDIALOG: \"dialog\",\n\tDT: \"term\",\n\tFIELDSET: \"group\",\n\tFIGURE: \"figure\",\n\t// WARNING: Only with an accessible name\n\tFORM: \"form\",\n\tFOOTER: \"contentinfo\",\n\tH1: \"heading\",\n\tH2: \"heading\",\n\tH3: \"heading\",\n\tH4: \"heading\",\n\tH5: \"heading\",\n\tH6: \"heading\",\n\tHEADER: \"banner\",\n\tHR: \"separator\",\n\tLEGEND: \"legend\",\n\tLI: \"listitem\",\n\tMATH: \"math\",\n\tMAIN: \"main\",\n\tMENU: \"list\",\n\tNAV: \"navigation\",\n\tOL: \"list\",\n\tOPTGROUP: \"group\",\n\t// WARNING: Only in certain context\n\tOPTION: \"option\",\n\tOUTPUT: \"status\",\n\tPROGRESS: \"progressbar\",\n\t// WARNING: Only with an accessible name\n\tSECTION: \"region\",\n\tSUMMARY: \"button\",\n\tTABLE: \"table\",\n\tTBODY: \"rowgroup\",\n\tTEXTAREA: \"textbox\",\n\tTFOOT: \"rowgroup\",\n\t// WARNING: Only in certain context\n\tTD: \"cell\",\n\tTH: \"columnheader\",\n\tTHEAD: \"rowgroup\",\n\tTR: \"row\",\n\tUL: \"list\"\n};\n\nfunction getImplicitRole(element: Element): string | null {\n\tconst mappedByTag = tagToRoleMappings[element.tagName];\n\tif (mappedByTag !== undefined) {\n\t\treturn mappedByTag;\n\t}\n\n\tswitch (element.tagName) {\n\t\tcase \"A\":\n\t\tcase \"AREA\":\n\t\tcase \"LINK\":\n\t\t\tif (element.hasAttribute(\"href\")) {\n\t\t\t\treturn \"link\";\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"IMG\":\n\t\t\tif ((element.getAttribute(\"alt\") || \"\").length > 0) {\n\t\t\t\treturn \"img\";\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"INPUT\": {\n\t\t\tconst { type } = element as HTMLInputElement;\n\t\t\tswitch (type) {\n\t\t\t\tcase \"button\":\n\t\t\t\tcase \"image\":\n\t\t\t\tcase \"reset\":\n\t\t\t\tcase \"submit\":\n\t\t\t\t\treturn \"button\";\n\t\t\t\tcase \"checkbox\":\n\t\t\t\tcase \"radio\":\n\t\t\t\t\treturn type;\n\t\t\t\tcase \"range\":\n\t\t\t\t\treturn \"slider\";\n\t\t\t\tcase \"email\":\n\t\t\t\tcase \"tel\":\n\t\t\t\tcase \"text\":\n\t\t\t\tcase \"url\":\n\t\t\t\t\tif (element.hasAttribute(\"list\")) {\n\t\t\t\t\t\treturn \"combobox\";\n\t\t\t\t\t}\n\t\t\t\t\treturn \"textbox\";\n\n\t\t\t\tcase \"search\":\n\t\t\t\t\tif (element.hasAttribute(\"list\")) {\n\t\t\t\t\t\treturn \"combobox\";\n\t\t\t\t\t}\n\t\t\t\t\treturn \"searchbox\";\n\t\t\t\tdefault:\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\tcase \"SELECT\":\n\t\t\tif (\n\t\t\t\telement.hasAttribute(\"multiple\") ||\n\t\t\t\t(element as HTMLSelectElement).size > 1\n\t\t\t) {\n\t\t\t\treturn \"listbox\";\n\t\t\t}\n\t\t\treturn \"combobox\";\n\t}\n\treturn null;\n}\n\nfunction getExplicitRole(element: Element): string | null {\n\tif (element.hasAttribute(\"role\")) {\n\t\t// safe due to hasAttribute check\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tconst [explicitRole] = element\n\t\t\t.getAttribute(\"role\")!\n\t\t\t.trim()\n\t\t\t.split(\" \");\n\t\tif (explicitRole !== undefined && explicitRole.length > 0) {\n\t\t\treturn explicitRole;\n\t\t}\n\t}\n\n\treturn null;\n}\n"],"file":"getRole.js"} |
+22
-5
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var accessible_name_1 = require("./accessible-name"); | ||
| exports.computeAccessibleName = accessible_name_1.computeAccessibleName; | ||
| var getRole_1 = require("./getRole"); | ||
| exports.getRole = getRole_1.default; | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| }); | ||
| Object.defineProperty(exports, "computeAccessibleName", { | ||
| enumerable: true, | ||
| get: function get() { | ||
| return _accessibleName.computeAccessibleName; | ||
| } | ||
| }); | ||
| Object.defineProperty(exports, "getRole", { | ||
| enumerable: true, | ||
| get: function get() { | ||
| return _getRole.default; | ||
| } | ||
| }); | ||
| var _accessibleName = require("./accessible-name"); | ||
| var _getRole = _interopRequireDefault(require("./getRole")); | ||
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../sources/index.ts"],"names":[],"mappings":";;AAAA,qDAA0D;AAAjD,kDAAA,qBAAqB,CAAA;AAC9B,qCAA+C;AAAtC,4BAAA,OAAO,CAAW"} | ||
| {"version":3,"sources":["../sources/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;AACA","sourcesContent":["export { computeAccessibleName } from \"./accessible-name\";\nexport { default as getRole } from \"./getRole\";\n"],"file":"index.js"} |
+31
-23
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| }); | ||
| exports.isElement = isElement; | ||
| exports.isHTMLInputElement = isHTMLInputElement; | ||
| exports.isHTMLSelectElement = isHTMLSelectElement; | ||
| exports.isHTMLTextAreaElement = isHTMLTextAreaElement; | ||
| exports.safeWindow = safeWindow; | ||
| function isElement(node) { | ||
| return ( | ||
| // @ts-ignore | ||
| node !== null && node instanceof node.ownerDocument.defaultView.Element); | ||
| return (// @ts-ignore | ||
| node !== null && node instanceof node.ownerDocument.defaultView.Element | ||
| ); | ||
| } | ||
| exports.isElement = isElement; | ||
| function isHTMLInputElement(node) { | ||
| return (isElement(node) && | ||
| // @ts-ignore | ||
| node instanceof node.ownerDocument.defaultView.HTMLInputElement); | ||
| return isElement(node) && // @ts-ignore | ||
| node instanceof node.ownerDocument.defaultView.HTMLInputElement; | ||
| } | ||
| exports.isHTMLInputElement = isHTMLInputElement; | ||
| function isHTMLSelectElement(node) { | ||
| return (isElement(node) && | ||
| // @ts-ignore | ||
| node instanceof node.ownerDocument.defaultView.HTMLSelectElement); | ||
| return isElement(node) && // @ts-ignore | ||
| node instanceof node.ownerDocument.defaultView.HTMLSelectElement; | ||
| } | ||
| exports.isHTMLSelectElement = isHTMLSelectElement; | ||
| function isHTMLTextAreaElement(node) { | ||
| return (isElement(node) && | ||
| // @ts-ignore | ||
| node instanceof node.ownerDocument.defaultView.HTMLTextAreaElement); | ||
| return isElement(node) && // @ts-ignore | ||
| node instanceof node.ownerDocument.defaultView.HTMLTextAreaElement; | ||
| } | ||
| exports.isHTMLTextAreaElement = isHTMLTextAreaElement; | ||
| function safeWindow(node) { | ||
| const { defaultView } = node.ownerDocument === null ? node : node.ownerDocument; | ||
| if (defaultView === null) { | ||
| throw new TypeError("no window available"); | ||
| } | ||
| return defaultView; | ||
| var _ref = node.ownerDocument === null ? node : node.ownerDocument, | ||
| defaultView = _ref.defaultView; | ||
| if (defaultView === null) { | ||
| throw new TypeError("no window available"); | ||
| } | ||
| return defaultView; | ||
| } | ||
| exports.safeWindow = safeWindow; | ||
| //# sourceMappingURL=util.js.map |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"util.js","sourceRoot":"","sources":["../sources/util.ts"],"names":[],"mappings":";;AAAA,SAAgB,SAAS,CAAC,IAAiB;IAC1C,OAAO;IACN,aAAa;IACb,IAAI,KAAK,IAAI,IAAI,IAAI,YAAY,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CACvE,CAAC;AACH,CAAC;AALD,8BAKC;AAED,SAAgB,kBAAkB,CACjC,IAAiB;IAEjB,OAAO,CACN,SAAS,CAAC,IAAI,CAAC;QACf,aAAa;QACb,IAAI,YAAY,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,gBAAgB,CAC/D,CAAC;AACH,CAAC;AARD,gDAQC;AAED,SAAgB,mBAAmB,CAClC,IAAiB;IAEjB,OAAO,CACN,SAAS,CAAC,IAAI,CAAC;QACf,aAAa;QACb,IAAI,YAAY,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,iBAAiB,CAChE,CAAC;AACH,CAAC;AARD,kDAQC;AAED,SAAgB,qBAAqB,CACpC,IAAiB;IAEjB,OAAO,CACN,SAAS,CAAC,IAAI,CAAC;QACf,aAAa;QACb,IAAI,YAAY,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,mBAAmB,CAClE,CAAC;AACH,CAAC;AARD,sDAQC;AAED,SAAgB,UAAU,CAAC,IAAU;IACpC,MAAM,EAAE,WAAW,EAAE,GACpB,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAE,IAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;IAEvE,IAAI,WAAW,KAAK,IAAI,EAAE;QACzB,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAC;KAC3C;IACD,OAAO,WAAW,CAAC;AACpB,CAAC;AARD,gCAQC"} | ||
| {"version":3,"sources":["../sources/util.ts"],"names":["isElement","node","ownerDocument","defaultView","Element","isHTMLInputElement","HTMLInputElement","isHTMLSelectElement","HTMLSelectElement","isHTMLTextAreaElement","HTMLTextAreaElement","safeWindow","TypeError"],"mappings":";;;;;;;;;;;AAAO,SAASA,SAAT,CAAmBC,IAAnB,EAAuD;AAC7D,SACC;AACAA,IAAAA,IAAI,KAAK,IAAT,IAAiBA,IAAI,YAAYA,IAAI,CAACC,aAAL,CAAmBC,WAAnB,CAA+BC;AAFjE;AAIA;;AAEM,SAASC,kBAAT,CACNJ,IADM,EAEqB;AAC3B,SACCD,SAAS,CAACC,IAAD,CAAT,IACA;AACAA,EAAAA,IAAI,YAAYA,IAAI,CAACC,aAAL,CAAmBC,WAAnB,CAA+BG,gBAHhD;AAKA;;AAEM,SAASC,mBAAT,CACNN,IADM,EAEsB;AAC5B,SACCD,SAAS,CAACC,IAAD,CAAT,IACA;AACAA,EAAAA,IAAI,YAAYA,IAAI,CAACC,aAAL,CAAmBC,WAAnB,CAA+BK,iBAHhD;AAKA;;AAEM,SAASC,qBAAT,CACNR,IADM,EAEwB;AAC9B,SACCD,SAAS,CAACC,IAAD,CAAT,IACA;AACAA,EAAAA,IAAI,YAAYA,IAAI,CAACC,aAAL,CAAmBC,WAAnB,CAA+BO,mBAHhD;AAKA;;AAEM,SAASC,UAAT,CAAoBV,IAApB,EAAwC;AAAA,aAE7CA,IAAI,CAACC,aAAL,KAAuB,IAAvB,GAA+BD,IAA/B,GAAmDA,IAAI,CAACC,aAFX;AAAA,MACtCC,WADsC,QACtCA,WADsC;;AAI9C,MAAIA,WAAW,KAAK,IAApB,EAA0B;AACzB,UAAM,IAAIS,SAAJ,CAAc,qBAAd,CAAN;AACA;;AACD,SAAOT,WAAP;AACA","sourcesContent":["export function isElement(node: Node | null): node is Element {\n\treturn (\n\t\t// @ts-ignore\n\t\tnode !== null && node instanceof node.ownerDocument.defaultView.Element\n\t);\n}\n\nexport function isHTMLInputElement(\n\tnode: Node | null\n): node is HTMLInputElement {\n\treturn (\n\t\tisElement(node) &&\n\t\t// @ts-ignore\n\t\tnode instanceof node.ownerDocument.defaultView.HTMLInputElement\n\t);\n}\n\nexport function isHTMLSelectElement(\n\tnode: Node | null\n): node is HTMLSelectElement {\n\treturn (\n\t\tisElement(node) &&\n\t\t// @ts-ignore\n\t\tnode instanceof node.ownerDocument.defaultView.HTMLSelectElement\n\t);\n}\n\nexport function isHTMLTextAreaElement(\n\tnode: Node | null\n): node is HTMLTextAreaElement {\n\treturn (\n\t\tisElement(node) &&\n\t\t// @ts-ignore\n\t\tnode instanceof node.ownerDocument.defaultView.HTMLTextAreaElement\n\t);\n}\n\nexport function safeWindow(node: Node): Window {\n\tconst { defaultView } =\n\t\tnode.ownerDocument === null ? (node as Document) : node.ownerDocument;\n\n\tif (defaultView === null) {\n\t\tthrow new TypeError(\"no window available\");\n\t}\n\treturn defaultView;\n}\n"],"file":"util.js"} |
+29
-15
| { | ||
| "name": "dom-accessibility-api", | ||
| "version": "0.3.0", | ||
| "version": "0.4.0", | ||
| "main": "dist/index.js", | ||
@@ -11,7 +11,14 @@ "types": "dist/index.d.ts", | ||
| }, | ||
| "dependencies": { | ||
| "core-js-pure": "^3.6.4" | ||
| }, | ||
| "files": [ | ||
| ".browserslistrc", | ||
| "dist/" | ||
| ], | ||
| "scripts": { | ||
| "build": "tsc -p tsconfig.json", | ||
| "build": "yarn build:clean && yarn build:source && yarn build:types", | ||
| "build:clean": "rimraf dist", | ||
| "build:source": "babel sources --extensions \".ts\" --ignore \"**/__tests__/**/*\" --out-dir dist/ --source-maps", | ||
| "build:types": "tsc -p tsconfig.json --emitDeclarationOnly", | ||
| "format": "prettier \"**/*.{json,js,md,ts,yml}\" --write --ignore-path .prettierignore", | ||
@@ -23,2 +30,3 @@ "lint": "eslint --report-unused-disable-directives \"sources/**/*.ts\"", | ||
| "test:ci": "jest --ci --config jest.ci.config.js --runInBand", | ||
| "test:types": "tsc -p tsconfig.json --noEmit", | ||
| "test:wpt:jsdom": "mocha tests/wpt-jsdom/run-wpts.js", | ||
@@ -34,12 +42,14 @@ "test:wpt:browser": "concurrently --success first --kill-others \"yarn test:wpt:browser:run\" \"yarn test:wpt:browser:server\"", | ||
| "devDependencies": { | ||
| "@babel/core": "^7.8.3", | ||
| "@babel/preset-env": "^7.8.3", | ||
| "@babel/cli": "^7.8.4", | ||
| "@babel/core": "^7.8.7", | ||
| "@babel/preset-env": "^7.8.7", | ||
| "@babel/preset-typescript": "^7.8.3", | ||
| "@changesets/cli": "^2.5.0", | ||
| "@testing-library/dom": "^6.11.0", | ||
| "@types/jest": "^24.9.1", | ||
| "@typescript-eslint/parser": "^2.17.0", | ||
| "@typescript-eslint/eslint-plugin": "^2.17.0", | ||
| "concurrently": "^5.0.2", | ||
| "cypress": "^3.8.3", | ||
| "@changesets/changelog-github": "^0.2.2", | ||
| "@changesets/cli": "^2.5.2", | ||
| "@testing-library/dom": "^6.15.0", | ||
| "@types/jest": "^25.1.4", | ||
| "@typescript-eslint/eslint-plugin": "^2.22.0", | ||
| "@typescript-eslint/parser": "^2.22.0", | ||
| "concurrently": "^5.1.0", | ||
| "cypress": "^4.1.0", | ||
| "eslint": "^6.8.0", | ||
@@ -51,13 +61,17 @@ "jest": "^25.1.0", | ||
| "js-yaml": "^3.13.1", | ||
| "jsdom": "^16.0.1", | ||
| "jsdom": "^16.2.0", | ||
| "minimatch": "^3.0.4", | ||
| "mocha": "^7.0.1", | ||
| "mocha": "^7.1.0", | ||
| "mocha-sugar-free": "^1.4.0", | ||
| "prettier": "^1.19.1", | ||
| "q": "^1.5.1", | ||
| "request": "^2.34", | ||
| "request": "^2.88", | ||
| "request-promise-native": "^1.0.8", | ||
| "rimraf": "^3.0.2", | ||
| "serve": "^11.3.0", | ||
| "typescript": "^3.7.5" | ||
| "typescript": "^3.8.3" | ||
| }, | ||
| "resolutions": { | ||
| "**/minimist": "^1.2.2" | ||
| }, | ||
| "prettier": { | ||
@@ -64,0 +78,0 @@ "useTabs": true |
+13
-0
@@ -21,2 +21,15 @@ # dom-accessibility-api | ||
| ## Supported environments | ||
| ```bash | ||
| ie 11 | ||
| edge >= 14 | ||
| firefox >= 52 | ||
| chrome >= 49 | ||
| safari >= 10 | ||
| node 10.0 | ||
| ``` | ||
| or check the published `.browserslistrc` | ||
| ## progress | ||
@@ -23,0 +36,0 @@ |
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
76413
49.89%22
15.79%217
6.37%1
Infinity%29
11.54%600
-4.61%4
100%+ Added
+ Added