{"version":3,"sources":["../sources/accessible-name.ts"],"names":["ArrayFrom","SetLike","getRole","isElement","isHTMLInputElement","isHTMLSelectElement","isHTMLTextAreaElement","safeWindow","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","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 \"./polyfills/array.from\";\nimport SetLike from \"./polyfills/SetLike\";\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 SetLike<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 (\n\t\t\t!(\n\t\t\t\tisHTMLInputElement(node) ||\n\t\t\t\tisHTMLSelectElement(node) ||\n\t\t\t\tisHTMLTextAreaElement(node)\n\t\t\t)\n\t\t) {\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.mjs"}