@afixt/test-utils 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/CLAUDE.md +1 -1
- package/README.md +40 -1
- package/docs/arrayUtils.js.html +8 -13
- package/docs/colorConversions.js.html +238 -0
- package/docs/constants.js.html +671 -0
- package/docs/cssUtils.js.html +80 -0
- package/docs/data/search.json +1 -1
- package/docs/domUtils.js.html +252 -32
- package/docs/formUtils.js.html +161 -0
- package/docs/getAccessibleName.js.html +215 -120
- package/docs/getAccessibleText.js.html +103 -48
- package/docs/getAriaAttributesByElement.js.html +4 -4
- package/docs/getCSSGeneratedContent.js.html +50 -41
- package/docs/getComputedRole.js.html +8 -3
- package/docs/getFocusableElements.js.html +25 -21
- package/docs/getGeneratedContent.js.html +24 -13
- package/docs/getImageText.js.html +31 -9
- package/docs/getStyleObject.js.html +7 -3
- package/docs/global.html +1 -1
- package/docs/hasAccessibleName.js.html +2 -10
- package/docs/hasAttribute.js.html +7 -3
- package/docs/hasCSSGeneratedContent.js.html +18 -14
- package/docs/hasHiddenParent.js.html +4 -4
- package/docs/hasParent.js.html +7 -3
- package/docs/hasValidAriaAttributes.js.html +7 -3
- package/docs/index.html +1 -1
- package/docs/index.js.html +98 -32
- package/docs/isA11yVisible.js.html +98 -0
- package/docs/isAriaAttributesValid.js.html +10 -64
- package/docs/isComplexTable.js.html +13 -6
- package/docs/isDataTable.js.html +11 -6
- package/docs/isFocusable.js.html +36 -12
- package/docs/isHidden.js.html +47 -11
- package/docs/isOffScreen.js.html +7 -3
- package/docs/isValidUrl.js.html +7 -3
- package/docs/listEventListeners.js.html +203 -0
- package/docs/module-QueryCache.html +3 -0
- package/docs/module-afixt-test-utils.html +1 -1
- package/docs/module-colorConversions.html +3 -0
- package/docs/module-constants.html +3 -0
- package/docs/module-cssUtils.html +3 -0
- package/docs/module-formUtils.html +3 -0
- package/docs/module-suggestContrast.html +3 -0
- package/docs/module-tableUtils.html +3 -0
- package/docs/queryCache.js.html +360 -0
- package/docs/scripts/core.js +726 -726
- package/docs/scripts/core.min.js +22 -22
- package/docs/scripts/resize.js +90 -90
- package/docs/scripts/search.js +265 -265
- package/docs/scripts/third-party/Apache-License-2.0.txt +202 -202
- package/docs/scripts/third-party/fuse.js +8 -8
- package/docs/scripts/third-party/hljs-line-num-original.js +369 -369
- package/docs/scripts/third-party/hljs-original.js +5171 -5171
- package/docs/scripts/third-party/popper.js +5 -5
- package/docs/scripts/third-party/tippy.js +1 -1
- package/docs/scripts/third-party/tocbot.js +671 -671
- package/docs/styles/clean-jsdoc-theme-base.css +1159 -1159
- package/docs/styles/clean-jsdoc-theme-dark.css +412 -412
- package/docs/styles/clean-jsdoc-theme-light.css +482 -482
- package/docs/styles/clean-jsdoc-theme-scrollbar.css +29 -29
- package/docs/suggestContrast.js.html +389 -0
- package/docs/tableUtils.js.html +151 -0
- package/docs/testContrast.js.html +201 -24
- package/docs/testLang.js.html +533 -451
- package/docs/testOrder.js.html +9 -4
- package/package.json +1 -1
- package/src/colorConversions.js +235 -0
- package/src/index.js +6 -0
- package/src/stringUtils.js +35 -0
- package/src/suggestContrast.js +386 -0
- package/test/colorConversions.test.js +223 -0
- package/test/stringUtils.test.js +60 -0
- package/test/suggestContrast.test.js +394 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en" style="font-size:16px"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Source: cssUtils.js</title><!--[if lt IE 9]>
|
|
2
|
+
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
|
3
|
+
<![endif]--><script src="scripts/third-party/hljs.js" defer="defer"></script><script src="scripts/third-party/hljs-line-num.js" defer="defer"></script><script src="scripts/third-party/popper.js" defer="defer"></script><script src="scripts/third-party/tippy.js" defer="defer"></script><script src="scripts/third-party/tocbot.min.js"></script><script>var baseURL="/",locationPathname="";baseURL=(locationPathname=document.location.pathname).substr(0,locationPathname.lastIndexOf("/")+1)</script><link rel="stylesheet" href="styles/clean-jsdoc-theme.min.css"><svg aria-hidden="true" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="display:none"><defs><symbol id="copy-icon" viewbox="0 0 488.3 488.3"><g><path d="M314.25,85.4h-227c-21.3,0-38.6,17.3-38.6,38.6v325.7c0,21.3,17.3,38.6,38.6,38.6h227c21.3,0,38.6-17.3,38.6-38.6V124 C352.75,102.7,335.45,85.4,314.25,85.4z M325.75,449.6c0,6.4-5.2,11.6-11.6,11.6h-227c-6.4,0-11.6-5.2-11.6-11.6V124 c0-6.4,5.2-11.6,11.6-11.6h227c6.4,0,11.6,5.2,11.6,11.6V449.6z"/><path d="M401.05,0h-227c-21.3,0-38.6,17.3-38.6,38.6c0,7.5,6,13.5,13.5,13.5s13.5-6,13.5-13.5c0-6.4,5.2-11.6,11.6-11.6h227 c6.4,0,11.6,5.2,11.6,11.6v325.7c0,6.4-5.2,11.6-11.6,11.6c-7.5,0-13.5,6-13.5,13.5s6,13.5,13.5,13.5c21.3,0,38.6-17.3,38.6-38.6 V38.6C439.65,17.3,422.35,0,401.05,0z"/></g></symbol><symbol id="search-icon" viewBox="0 0 512 512"><g><g><path d="M225.474,0C101.151,0,0,101.151,0,225.474c0,124.33,101.151,225.474,225.474,225.474 c124.33,0,225.474-101.144,225.474-225.474C450.948,101.151,349.804,0,225.474,0z M225.474,409.323 c-101.373,0-183.848-82.475-183.848-183.848S124.101,41.626,225.474,41.626s183.848,82.475,183.848,183.848 S326.847,409.323,225.474,409.323z"/></g></g><g><g><path d="M505.902,476.472L386.574,357.144c-8.131-8.131-21.299-8.131-29.43,0c-8.131,8.124-8.131,21.306,0,29.43l119.328,119.328 c4.065,4.065,9.387,6.098,14.715,6.098c5.321,0,10.649-2.033,14.715-6.098C514.033,497.778,514.033,484.596,505.902,476.472z"/></g></g></symbol><symbol id="font-size-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11.246 15H4.754l-2 5H.6L7 4h2l6.4 16h-2.154l-2-5zm-.8-2L8 6.885 5.554 13h4.892zM21 12.535V12h2v8h-2v-.535a4 4 0 1 1 0-6.93zM19 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/></symbol><symbol id="add-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"/></symbol><symbol id="minus-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M5 11h14v2H5z"/></symbol><symbol id="dark-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M10 7a7 7 0 0 0 12 4.9v.1c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2h.1A6.979 6.979 0 0 0 10 7zm-6 5a8 8 0 0 0 15.062 3.762A9 9 0 0 1 8.238 4.938 7.999 7.999 0 0 0 4 12z"/></symbol><symbol id="light-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-2a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM11 1h2v3h-2V1zm0 19h2v3h-2v-3zM3.515 4.929l1.414-1.414L7.05 5.636 5.636 7.05 3.515 4.93zM16.95 18.364l1.414-1.414 2.121 2.121-1.414 1.414-2.121-2.121zm2.121-14.85l1.414 1.415-2.121 2.121-1.414-1.414 2.121-2.121zM5.636 16.95l1.414 1.414-2.121 2.121-1.414-1.414 2.121-2.121zM23 11v2h-3v-2h3zM4 11v2H1v-2h3z"/></symbol><symbol id="reset-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M18.537 19.567A9.961 9.961 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10c0 2.136-.67 4.116-1.81 5.74L17 12h3a8 8 0 1 0-2.46 5.772l.997 1.795z"/></symbol><symbol id="down-icon" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.7803 6.21967C13.0732 6.51256 13.0732 6.98744 12.7803 7.28033L8.53033 11.5303C8.23744 11.8232 7.76256 11.8232 7.46967 11.5303L3.21967 7.28033C2.92678 6.98744 2.92678 6.51256 3.21967 6.21967C3.51256 5.92678 3.98744 5.92678 4.28033 6.21967L8 9.93934L11.7197 6.21967C12.0126 5.92678 12.4874 5.92678 12.7803 6.21967Z"></path></symbol><symbol id="codepen-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M16.5 13.202L13 15.535v3.596L19.197 15 16.5 13.202zM14.697 12L12 10.202 9.303 12 12 13.798 14.697 12zM20 10.869L18.303 12 20 13.131V10.87zM19.197 9L13 4.869v3.596l3.5 2.333L19.197 9zM7.5 10.798L11 8.465V4.869L4.803 9 7.5 10.798zM4.803 15L11 19.131v-3.596l-3.5-2.333L4.803 15zM4 13.131L5.697 12 4 10.869v2.262zM2 9a1 1 0 0 1 .445-.832l9-6a1 1 0 0 1 1.11 0l9 6A1 1 0 0 1 22 9v6a1 1 0 0 1-.445.832l-9 6a1 1 0 0 1-1.11 0l-9-6A1 1 0 0 1 2 15V9z"/></symbol><symbol id="close-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z"/></symbol><symbol id="menu-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"/></symbol></defs></svg></head><body data-theme="dark"><div class="sidebar-container"><div class="sidebar" id="sidebar"><div class="sidebar-items-container"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-modules"><div>Modules</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="module-QueryCache.html">QueryCache</a></div><div class="sidebar-section-children"><a href="module-afixt-test-utils.html">afixt-test-utils</a></div><div class="sidebar-section-children"><a href="module-colorConversions.html">colorConversions</a></div><div class="sidebar-section-children"><a href="module-constants.html">constants</a></div><div class="sidebar-section-children"><a href="module-cssUtils.html">cssUtils</a></div><div class="sidebar-section-children"><a href="module-formUtils.html">formUtils</a></div><div class="sidebar-section-children"><a href="module-suggestContrast.html">suggestContrast</a></div><div class="sidebar-section-children"><a href="module-tableUtils.html">tableUtils</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-global"><div>Global</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#RTL_LANGUAGES">RTL_LANGUAGES</a></div><div class="sidebar-section-children"><a href="global.html#_internal">_internal</a></div><div class="sidebar-section-children"><a href="global.html#arrayCount">arrayCount</a></div><div class="sidebar-section-children"><a href="global.html#arrayRemoveByValue">arrayRemoveByValue</a></div><div class="sidebar-section-children"><a href="global.html#arrayUnique">arrayUnique</a></div><div class="sidebar-section-children"><a href="global.html#cellColorDiffs">cellColorDiffs</a></div><div class="sidebar-section-children"><a href="global.html#cellCount">cellCount</a></div><div class="sidebar-section-children"><a href="global.html#checkInconsistent">checkInconsistent</a></div><div class="sidebar-section-children"><a href="global.html#checkMultiRowsInHeader">checkMultiRowsInHeader</a></div><div class="sidebar-section-children"><a href="global.html#checkMultiRowsWithColspan">checkMultiRowsWithColspan</a></div><div class="sidebar-section-children"><a href="global.html#cleanBlank">cleanBlank</a></div><div class="sidebar-section-children"><a href="global.html#colCount">colCount</a></div><div class="sidebar-section-children"><a href="global.html#collectSubtreeText">collectSubtreeText</a></div><div class="sidebar-section-children"><a href="global.html#countBordersPct">countBordersPct</a></div><div class="sidebar-section-children"><a href="global.html#extractMeaningfulContent">extractMeaningfulContent</a></div><div class="sidebar-section-children"><a href="global.html#getAccessibleName">getAccessibleName</a></div><div class="sidebar-section-children"><a href="global.html#getAccessibleText">getAccessibleText</a></div><div class="sidebar-section-children"><a href="global.html#getAriaAttributesByElement">getAriaAttributesByElement</a></div><div class="sidebar-section-children"><a href="global.html#getAttributeHandlers">getAttributeHandlers</a></div><div class="sidebar-section-children"><a href="global.html#getCSSGeneratedContent">getCSSGeneratedContent</a></div><div class="sidebar-section-children"><a href="global.html#getColorContrast">getColorContrast</a></div><div class="sidebar-section-children"><a href="global.html#getComputedBackgroundColor">getComputedBackgroundColor</a></div><div class="sidebar-section-children"><a href="global.html#getComputedRole">getComputedRole</a></div><div class="sidebar-section-children"><a href="global.html#getContrastRatio">getContrastRatio</a></div><div class="sidebar-section-children"><a href="global.html#getEffectiveDir">getEffectiveDir</a></div><div class="sidebar-section-children"><a href="global.html#getEventListeners">getEventListeners</a></div><div class="sidebar-section-children"><a href="global.html#getFocusableElements">getFocusableElements</a></div><div class="sidebar-section-children"><a href="global.html#getGeneratedContent">getGeneratedContent</a></div><div class="sidebar-section-children"><a href="global.html#getImageText">getImageText</a></div><div class="sidebar-section-children"><a href="global.html#getPropertyHandlers">getPropertyHandlers</a></div><div class="sidebar-section-children"><a href="global.html#getRelativeLuminance">getRelativeLuminance</a></div><div class="sidebar-section-children"><a href="global.html#getStyleObject">getStyleObject</a></div><div class="sidebar-section-children"><a href="global.html#getTwoLetterCode">getTwoLetterCode</a></div><div class="sidebar-section-children"><a href="global.html#hasAccessibleName">hasAccessibleName</a></div><div class="sidebar-section-children"><a href="global.html#hasAttribute">hasAttribute</a></div><div class="sidebar-section-children"><a href="global.html#hasBackgroundImage">hasBackgroundImage</a></div><div class="sidebar-section-children"><a href="global.html#hasCSSGeneratedContent">hasCSSGeneratedContent</a></div><div class="sidebar-section-children"><a href="global.html#hasHiddenParent">hasHiddenParent</a></div><div class="sidebar-section-children"><a href="global.html#hasParent">hasParent</a></div><div class="sidebar-section-children"><a href="global.html#hasValidAriaAttributes">hasValidAriaAttributes</a></div><div class="sidebar-section-children"><a href="global.html#isA11yVisible">isA11yVisible</a></div><div class="sidebar-section-children"><a href="global.html#isAriaAttributeValid">isAriaAttributeValid</a></div><div class="sidebar-section-children"><a href="global.html#isComplexTable">isComplexTable</a></div><div class="sidebar-section-children"><a href="global.html#isDataTable">isDataTable</a></div><div class="sidebar-section-children"><a href="global.html#isFocusable">isFocusable</a></div><div class="sidebar-section-children"><a href="global.html#isHidden">isHidden</a></div><div class="sidebar-section-children"><a href="global.html#isNotVisible">isNotVisible</a></div><div class="sidebar-section-children"><a href="global.html#isOffScreen">isOffScreen</a></div><div class="sidebar-section-children"><a href="global.html#isRTLLanguage">isRTLLanguage</a></div><div class="sidebar-section-children"><a href="global.html#isValidLanguageCode">isValidLanguageCode</a></div><div class="sidebar-section-children"><a href="global.html#isValidUrl">isValidUrl</a></div><div class="sidebar-section-children"><a href="global.html#langCodes">langCodes</a></div><div class="sidebar-section-children"><a href="global.html#listEventListeners">listEventListeners</a></div><div class="sidebar-section-children"><a href="global.html#luminance">luminance</a></div><div class="sidebar-section-children"><a href="global.html#matchesSelector">matchesSelector</a></div><div class="sidebar-section-children"><a href="global.html#parseColor">parseColor</a></div><div class="sidebar-section-children"><a href="global.html#parseRGB">parseRGB</a></div><div class="sidebar-section-children"><a href="global.html#rowCount">rowCount</a></div><div class="sidebar-section-children"><a href="global.html#rtls">rtls</a></div><div class="sidebar-section-children"><a href="global.html#sortByVisualOrder">sortByVisualOrder</a></div><div class="sidebar-section-children"><a href="global.html#strlen">strlen</a></div><div class="sidebar-section-children"><a href="global.html#testContrast">testContrast</a></div><div class="sidebar-section-children"><a href="global.html#testLang">testLang</a></div><div class="sidebar-section-children"><a href="global.html#testOrder">testOrder</a></div><div class="sidebar-section-children"><a href="global.html#validLangCodes">validLangCodes</a></div></div></div></div></div><div class="navbar-container" id="VuAckcnZhf"><nav class="navbar"><div class="navbar-left-items"></div><div class="navbar-right-items"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#light-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div><nav></nav></nav></div><div class="toc-container"><div class="toc-content"><span class="bold">On this page</span><div id="eed4d2a0bfd64539bb9df78095dec881"></div></div></div><div class="body-wrapper"><div class="main-content"><div class="main-wrapper"><section id="source-page" class="source-page"><header><h1 id="title" class="has-anchor">cssUtils.js</h1></header><article><pre class="prettyprint source lang-js"><code>/**
|
|
4
|
+
* @file CSS styling inspection utilities
|
|
5
|
+
* @module cssUtils
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const cssUtils = {
|
|
9
|
+
/**
|
|
10
|
+
* Check if an element's background is transparent/none.
|
|
11
|
+
* @param {CSSStyleDeclaration} style - The computed style
|
|
12
|
+
* @returns {boolean} True if background is transparent
|
|
13
|
+
*/
|
|
14
|
+
hasTransparentBackground(style) {
|
|
15
|
+
const bg = style.backgroundColor;
|
|
16
|
+
const bgImage = style.backgroundImage;
|
|
17
|
+
|
|
18
|
+
if (bgImage && bgImage !== 'none') {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return bg === 'rgba(0, 0, 0, 0)' || bg === 'transparent' || bg === '';
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Check if an element has no visible border.
|
|
27
|
+
* @param {CSSStyleDeclaration} style - The computed style
|
|
28
|
+
* @returns {boolean} True if no border
|
|
29
|
+
*/
|
|
30
|
+
hasNoBorder(style) {
|
|
31
|
+
return style.borderStyle === 'none' || parseFloat(style.borderWidth) === 0;
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Check if an element looks like regular text (no underline, background, or border).
|
|
36
|
+
* @param {HTMLElement} element - The element to check
|
|
37
|
+
* @returns {boolean} True if element looks like regular text
|
|
38
|
+
*/
|
|
39
|
+
looksLikeText(element) {
|
|
40
|
+
const style = window.getComputedStyle(element);
|
|
41
|
+
|
|
42
|
+
const noUnderline = !style.textDecoration.toLowerCase().includes('underline');
|
|
43
|
+
const noBackground = cssUtils.hasTransparentBackground(style);
|
|
44
|
+
const noBorder = cssUtils.hasNoBorder(style);
|
|
45
|
+
|
|
46
|
+
return noUnderline && noBackground && noBorder;
|
|
47
|
+
},
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Check if an element has link-like styling (underline).
|
|
51
|
+
* @param {HTMLElement} element - The element to check
|
|
52
|
+
* @returns {boolean} True if element has link-like styling
|
|
53
|
+
*/
|
|
54
|
+
hasLinkStyling(element) {
|
|
55
|
+
const style = window.getComputedStyle(element);
|
|
56
|
+
return style.textDecoration.toLowerCase().includes('underline');
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Check if an element has button-like styling (background/border with padding).
|
|
61
|
+
* @param {HTMLElement} element - The element to check
|
|
62
|
+
* @returns {boolean} True if element has button-like styling
|
|
63
|
+
*/
|
|
64
|
+
hasButtonStyling(element) {
|
|
65
|
+
const style = window.getComputedStyle(element);
|
|
66
|
+
|
|
67
|
+
const hasBackground = !cssUtils.hasTransparentBackground(style);
|
|
68
|
+
const hasBorder = !cssUtils.hasNoBorder(style);
|
|
69
|
+
const hasPadding =
|
|
70
|
+
parseFloat(style.paddingTop) > 2 ||
|
|
71
|
+
parseFloat(style.paddingBottom) > 2 ||
|
|
72
|
+
parseFloat(style.paddingLeft) > 4 ||
|
|
73
|
+
parseFloat(style.paddingRight) > 4;
|
|
74
|
+
|
|
75
|
+
return (hasBackground || hasBorder) && hasPadding;
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
module.exports = cssUtils;
|
|
80
|
+
</code></pre></article></section></div></div></div><div class="search-container" id="PkfLWpAbet" style="display:none"><div class="wrapper" id="iCxFxjkHbP"><button class="icon-button search-close-button" id="VjLlGakifb" aria-label="close search"><svg><use xlink:href="#close-icon"></use></svg></button><div class="search-box-c"><svg><use xlink:href="#search-icon"></use></svg> <input type="text" id="vpcKVYIppa" class="search-input" placeholder="Search..." autofocus></div><div class="search-result-c" id="fWwVHRuDuN"><span class="search-result-c-text">Type anything to view search result</span></div></div></div><div class="mobile-menu-icon-container"><button class="icon-button" id="mobile-menu" data-isopen="false" aria-label="menu"><svg><use xlink:href="#menu-icon"></use></svg></button></div><div id="mobile-sidebar" class="mobile-sidebar-container"><div class="mobile-sidebar-wrapper"><div class="mobile-nav-links"></div><div class="mobile-sidebar-items-c"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-modules"><div>Modules</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="module-QueryCache.html">QueryCache</a></div><div class="sidebar-section-children"><a href="module-afixt-test-utils.html">afixt-test-utils</a></div><div class="sidebar-section-children"><a href="module-colorConversions.html">colorConversions</a></div><div class="sidebar-section-children"><a href="module-constants.html">constants</a></div><div class="sidebar-section-children"><a href="module-cssUtils.html">cssUtils</a></div><div class="sidebar-section-children"><a href="module-formUtils.html">formUtils</a></div><div class="sidebar-section-children"><a href="module-suggestContrast.html">suggestContrast</a></div><div class="sidebar-section-children"><a href="module-tableUtils.html">tableUtils</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-global"><div>Global</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#RTL_LANGUAGES">RTL_LANGUAGES</a></div><div class="sidebar-section-children"><a href="global.html#_internal">_internal</a></div><div class="sidebar-section-children"><a href="global.html#arrayCount">arrayCount</a></div><div class="sidebar-section-children"><a href="global.html#arrayRemoveByValue">arrayRemoveByValue</a></div><div class="sidebar-section-children"><a href="global.html#arrayUnique">arrayUnique</a></div><div class="sidebar-section-children"><a href="global.html#cellColorDiffs">cellColorDiffs</a></div><div class="sidebar-section-children"><a href="global.html#cellCount">cellCount</a></div><div class="sidebar-section-children"><a href="global.html#checkInconsistent">checkInconsistent</a></div><div class="sidebar-section-children"><a href="global.html#checkMultiRowsInHeader">checkMultiRowsInHeader</a></div><div class="sidebar-section-children"><a href="global.html#checkMultiRowsWithColspan">checkMultiRowsWithColspan</a></div><div class="sidebar-section-children"><a href="global.html#cleanBlank">cleanBlank</a></div><div class="sidebar-section-children"><a href="global.html#colCount">colCount</a></div><div class="sidebar-section-children"><a href="global.html#collectSubtreeText">collectSubtreeText</a></div><div class="sidebar-section-children"><a href="global.html#countBordersPct">countBordersPct</a></div><div class="sidebar-section-children"><a href="global.html#extractMeaningfulContent">extractMeaningfulContent</a></div><div class="sidebar-section-children"><a href="global.html#getAccessibleName">getAccessibleName</a></div><div class="sidebar-section-children"><a href="global.html#getAccessibleText">getAccessibleText</a></div><div class="sidebar-section-children"><a href="global.html#getAriaAttributesByElement">getAriaAttributesByElement</a></div><div class="sidebar-section-children"><a href="global.html#getAttributeHandlers">getAttributeHandlers</a></div><div class="sidebar-section-children"><a href="global.html#getCSSGeneratedContent">getCSSGeneratedContent</a></div><div class="sidebar-section-children"><a href="global.html#getColorContrast">getColorContrast</a></div><div class="sidebar-section-children"><a href="global.html#getComputedBackgroundColor">getComputedBackgroundColor</a></div><div class="sidebar-section-children"><a href="global.html#getComputedRole">getComputedRole</a></div><div class="sidebar-section-children"><a href="global.html#getContrastRatio">getContrastRatio</a></div><div class="sidebar-section-children"><a href="global.html#getEffectiveDir">getEffectiveDir</a></div><div class="sidebar-section-children"><a href="global.html#getEventListeners">getEventListeners</a></div><div class="sidebar-section-children"><a href="global.html#getFocusableElements">getFocusableElements</a></div><div class="sidebar-section-children"><a href="global.html#getGeneratedContent">getGeneratedContent</a></div><div class="sidebar-section-children"><a href="global.html#getImageText">getImageText</a></div><div class="sidebar-section-children"><a href="global.html#getPropertyHandlers">getPropertyHandlers</a></div><div class="sidebar-section-children"><a href="global.html#getRelativeLuminance">getRelativeLuminance</a></div><div class="sidebar-section-children"><a href="global.html#getStyleObject">getStyleObject</a></div><div class="sidebar-section-children"><a href="global.html#getTwoLetterCode">getTwoLetterCode</a></div><div class="sidebar-section-children"><a href="global.html#hasAccessibleName">hasAccessibleName</a></div><div class="sidebar-section-children"><a href="global.html#hasAttribute">hasAttribute</a></div><div class="sidebar-section-children"><a href="global.html#hasBackgroundImage">hasBackgroundImage</a></div><div class="sidebar-section-children"><a href="global.html#hasCSSGeneratedContent">hasCSSGeneratedContent</a></div><div class="sidebar-section-children"><a href="global.html#hasHiddenParent">hasHiddenParent</a></div><div class="sidebar-section-children"><a href="global.html#hasParent">hasParent</a></div><div class="sidebar-section-children"><a href="global.html#hasValidAriaAttributes">hasValidAriaAttributes</a></div><div class="sidebar-section-children"><a href="global.html#isA11yVisible">isA11yVisible</a></div><div class="sidebar-section-children"><a href="global.html#isAriaAttributeValid">isAriaAttributeValid</a></div><div class="sidebar-section-children"><a href="global.html#isComplexTable">isComplexTable</a></div><div class="sidebar-section-children"><a href="global.html#isDataTable">isDataTable</a></div><div class="sidebar-section-children"><a href="global.html#isFocusable">isFocusable</a></div><div class="sidebar-section-children"><a href="global.html#isHidden">isHidden</a></div><div class="sidebar-section-children"><a href="global.html#isNotVisible">isNotVisible</a></div><div class="sidebar-section-children"><a href="global.html#isOffScreen">isOffScreen</a></div><div class="sidebar-section-children"><a href="global.html#isRTLLanguage">isRTLLanguage</a></div><div class="sidebar-section-children"><a href="global.html#isValidLanguageCode">isValidLanguageCode</a></div><div class="sidebar-section-children"><a href="global.html#isValidUrl">isValidUrl</a></div><div class="sidebar-section-children"><a href="global.html#langCodes">langCodes</a></div><div class="sidebar-section-children"><a href="global.html#listEventListeners">listEventListeners</a></div><div class="sidebar-section-children"><a href="global.html#luminance">luminance</a></div><div class="sidebar-section-children"><a href="global.html#matchesSelector">matchesSelector</a></div><div class="sidebar-section-children"><a href="global.html#parseColor">parseColor</a></div><div class="sidebar-section-children"><a href="global.html#parseRGB">parseRGB</a></div><div class="sidebar-section-children"><a href="global.html#rowCount">rowCount</a></div><div class="sidebar-section-children"><a href="global.html#rtls">rtls</a></div><div class="sidebar-section-children"><a href="global.html#sortByVisualOrder">sortByVisualOrder</a></div><div class="sidebar-section-children"><a href="global.html#strlen">strlen</a></div><div class="sidebar-section-children"><a href="global.html#testContrast">testContrast</a></div><div class="sidebar-section-children"><a href="global.html#testLang">testLang</a></div><div class="sidebar-section-children"><a href="global.html#testOrder">testOrder</a></div><div class="sidebar-section-children"><a href="global.html#validLangCodes">validLangCodes</a></div></div></div><div class="mobile-navbar-actions"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#light-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div></div></div><script type="text/javascript" src="scripts/core.min.js"></script><script src="scripts/search.min.js" defer="defer"></script><script src="scripts/third-party/fuse.js" defer="defer"></script><script type="text/javascript">var tocbotInstance=tocbot.init({tocSelector:"#eed4d2a0bfd64539bb9df78095dec881",contentSelector:".main-content",headingSelector:"h1, h2, h3",hasInnerContainers:!0,scrollContainer:".main-content",headingsOffset:130,onClick:bringLinkToView})</script></body></html>
|
package/docs/data/search.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"list":[{"title":"arrayCount","link":"<a href=\"global.html#arrayCount\">arrayCount</a>","description":"<p>Get a count of each occurrence for items in an array.</p>"},{"title":"arrayRemoveByValue","link":"<a href=\"global.html#arrayRemoveByValue\">arrayRemoveByValue</a>","description":"<p>Remove specified items by value from an array.</p>"},{"title":"arrayUnique","link":"<a href=\"global.html#arrayUnique\">arrayUnique</a>","description":"<p>Reduce an array to only the unique items.</p>"},{"title":"cellColorDiffs","link":"<a href=\"global.html#cellColorDiffs\">cellColorDiffs</a>","description":"<p>Checks if the color differences in the table cells exceed the specified limits.</p>"},{"title":"cellCount","link":"<a href=\"global.html#cellCount\">cellCount</a>","description":"<p>Counts the number of cells (both <td> and <th>) in a given table element.</p>"},{"title":"checkInconsistent","link":"<a href=\"global.html#checkInconsistent\">checkInconsistent</a>","description":"<p>Checks if a table element has inconsistent row or column spans.</p>\n<p>This function normalizes the table by removing <code>colspan</code> and <code>rowspan</code> attributes,\nand then checks if the number of columns is consistent across all rows.</p>"},{"title":"checkMultiRowsInHeader","link":"<a href=\"global.html#checkMultiRowsInHeader\">checkMultiRowsInHeader</a>","description":"<p>Checks if the given table element has multiple rows in the header.</p>"},{"title":"checkMultiRowsWithColspan","link":"<a href=\"global.html#checkMultiRowsWithColspan\">checkMultiRowsWithColspan</a>","description":"<p>Checks if the given table element has multiple rows with at least\none cell that has a colspan attribute.</p>"},{"title":"cleanBlank","link":"<a href=\"global.html#cleanBlank\">cleanBlank</a>","description":"<p>Remove items from an object that do not have a value.</p>"},{"title":"colCount","link":"<a href=\"global.html#colCount\">colCount</a>","description":"<p>Calculates the average number of columns in a given HTML table.</p>"},{"title":"countBordersPct","link":"<a href=\"global.html#countBordersPct\">countBordersPct</a>","description":"<p>Calculates the percentage of table cells that have a border.</p>"},{"title":"domUtils.attrBegins","link":"<a href=\"domUtils.html#.attrBegins\">attrBegins</a>","description":"<p>Filters a list of elements to include only those whose attributes begin with a specified prefix.</p>"},{"title":"domUtils.containsNoCase","link":"<a href=\"domUtils.html#.containsNoCase\">containsNoCase</a>","description":"<p>Checks if the text content of a given DOM element contains a specified string, case-insensitively.</p>"},{"title":"domUtils.getAttributes","link":"<a href=\"domUtils.html#.getAttributes\">getAttributes</a>","description":"<p>Retrieves all attributes of a given DOM element as an object.</p>"},{"title":"domUtils.getAttributesAsString","link":"<a href=\"domUtils.html#.getAttributesAsString\">getAttributesAsString</a>","description":"<p>Retrieves the attributes of a given DOM element as a JSON string.</p>"},{"title":"domUtils.getConstructor","link":"<a href=\"domUtils.html#.getConstructor\">getConstructor</a>","description":"<p>Gets the constructor name of a given DOM element.</p>"},{"title":"domUtils.getDocumentSize","link":"<a href=\"domUtils.html#.getDocumentSize\">getDocumentSize</a>","description":"<p>Calculates the size of the document's HTML content.</p>\n<p>This function retrieves the outer HTML of the document's root element,\nremoves all whitespace characters, and returns the length of the resulting string.</p>"},{"title":"domUtils.getElementsWithDuplicateIds","link":"<a href=\"domUtils.html#.getElementsWithDuplicateIds\">getElementsWithDuplicateIds</a>","description":"<p>Finds and returns an array of elements that have duplicate IDs in the document.</p>"},{"title":"domUtils.getOuterHTML","link":"<a href=\"domUtils.html#.getOuterHTML\">getOuterHTML</a>","description":"<p>Returns the outer HTML of the given element.</p>"},{"title":"domUtils.getXPath","link":"<a href=\"domUtils.html#.getXPath\">getXPath</a>","description":"<p>Generates an XPath string for a given DOM element.</p>"},{"title":"domUtils.hasAttr","link":"<a href=\"domUtils.html#.hasAttr\">hasAttr</a>","description":"<p>Checks if the specified element has the given attribute.</p>"},{"title":"domUtils.hasFocus","link":"<a href=\"domUtils.html#.hasFocus\">hasFocus</a>","description":"<p>Checks if the given element has focus.</p>"},{"title":"domUtils.isFullyVisible","link":"<a href=\"domUtils.html#.isFullyVisible\">isFullyVisible</a>","description":"<p>Checks if the given element is fully visible within the viewport.</p>"},{"title":"getAccessibleName","link":"<a href=\"global.html#getAccessibleName\">getAccessibleName</a>","description":"<p>Gets the accessible name of an element according to the accessible name calculation algorithm</p>"},{"title":"getAccessibleText","link":"<a href=\"global.html#getAccessibleText\">getAccessibleText</a>","description":"<p>Get all accessible text for an element, including aria-labels and content from children.</p>"},{"title":"getAriaAttributes","link":"<a href=\"global.html#getAriaAttributes\">getAriaAttributes</a>","description":"<p>Retrieves all ARIA attributes from a given DOM element.</p>"},{"title":"getCSSGeneratedContent","link":"<a href=\"global.html#getCSSGeneratedContent\">getCSSGeneratedContent</a>","description":"<p>Gets the CSS generated content for an element's ::before or ::after pseudo-elements.\nUnlike getGeneratedContent, this function focuses only on CSS-generated content\nand does not include the element's own text content.</p>"},{"title":"getColorContrast","link":"<a href=\"global.html#getColorContrast\">getColorContrast</a>","description":"<p>Calculate color contrast ratio between foreground and background</p>"},{"title":"getComputedBackgroundColor","link":"<a href=\"global.html#getComputedBackgroundColor\">getComputedBackgroundColor</a>","description":"<p>Get the computed background color for an element.</p>"},{"title":"getComputedRole","link":"<a href=\"global.html#getComputedRole\">getComputedRole</a>","description":"<p>Gets the computed role of an HTML element.</p>"},{"title":"getFocusableElements","link":"<a href=\"global.html#getFocusableElements\">getFocusableElements</a>"},{"title":"getGeneratedContent","link":"<a href=\"global.html#getGeneratedContent\">getGeneratedContent</a>","description":"<p>Get the generated content for an element (<code>::before</code>, <code>::after</code>, and inner content).</p>"},{"title":"getImageText","link":"<a href=\"global.html#getImageText\">getImageText</a>","description":"<p>Extracts text from an image using OCR.</p>"},{"title":"getStyleObject","link":"<a href=\"global.html#getStyleObject\">getStyleObject</a>","description":"<p>Retrieves the computed style properties of a given DOM element and returns them as an object.</p>"},{"title":"getTwoLetterCode","link":"<a href=\"global.html#getTwoLetterCode\">getTwoLetterCode</a>","description":"<p>Converts a three-letter language code to a two-letter language code.</p>"},{"title":"hasAccessibleName","link":"<a href=\"global.html#hasAccessibleName\">hasAccessibleName</a>","description":"<p>Determines if an element has an accessible name</p>"},{"title":"hasAttribute","link":"<a href=\"global.html#hasAttribute\">hasAttribute</a>","description":"<p>Checks if a given element has a specified attribute.</p>"},{"title":"hasCSSGeneratedContent","link":"<a href=\"global.html#hasCSSGeneratedContent\">hasCSSGeneratedContent</a>","description":"<p>Checks if an element has CSS generated content in its ::before or ::after pseudo-elements\nor text content.</p>"},{"title":"hasHiddenParent","link":"<a href=\"global.html#hasHiddenParent\">hasHiddenParent</a>","description":"<p>Checks if the given element has a hidden parent element.</p>"},{"title":"hasParent","link":"<a href=\"global.html#hasParent\">hasParent</a>","description":"<p>Checks if the given element has a parent that matches any of the selectors in the array.</p>"},{"title":"hasValidAriaAttributes","link":"<a href=\"global.html#hasValidAriaAttributes\">hasValidAriaAttributes</a>","description":"<p>Checks if an element has any valid ARIA attributes.</p>"},{"title":"hasValidAriaRole","link":"<a href=\"global.html#hasValidAriaRole\">hasValidAriaRole</a>","description":"<p>Checks if the given element has a valid ARIA role.</p>"},{"title":"isAriaAttributeValid","link":"<a href=\"global.html#isAriaAttributeValid\">isAriaAttributeValid</a>","description":"<p>Checks if a specific ARIA attribute is valid according to the WAI-ARIA specification.</p>"},{"title":"isComplexTable","link":"<a href=\"global.html#isComplexTable\">isComplexTable</a>","description":"<p>Determines if a given table element is complex.\nA table is considered complex if it has multiple rows in the header,\nrows with colspan attributes, or inconsistent structure.</p>"},{"title":"isDataTable","link":"<a href=\"global.html#isDataTable\">isDataTable</a>","description":"<p>Determines if a given table element is a data table based on various heuristics and options.</p>"},{"title":"isFocusable","link":"<a href=\"global.html#isFocusable\">isFocusable</a>","description":"<p>Determines if an element is focusable.</p>"},{"title":"isHidden","link":"<a href=\"global.html#isHidden\">isHidden</a>","description":"<p>Checks if a given DOM element is hidden.</p>\n<p>An element is considered hidden if its <code>display</code> style is set to "none"\nor if it has the <code>hidden</code> attribute.</p>"},{"title":"isNotVisible","link":"<a href=\"global.html#isNotVisible\">isNotVisible</a>","description":"<p>Helper function to check if element is NOT visible</p>"},{"title":"isOffScreen","link":"<a href=\"global.html#isOffScreen\">isOffScreen</a>","description":"<p>Checks if the selected element is off-screen.</p>"},{"title":"isValidUrl","link":"<a href=\"global.html#isValidUrl\">isValidUrl</a>","description":"<p>Validate if a string is a valid URL.</p>"},{"title":"isVisible","link":"<a href=\"global.html#isVisible\">isVisible</a>","description":"<p>Checks if the selected item is visible to assistive technologies.</p>"},{"title":"langCodes","link":"<a href=\"global.html#langCodes\">langCodes</a>","description":"<p>An array of language codes and their corresponding details.\nEach object in the array represents a language and contains the following properties:</p>"},{"title":"luminance","link":"<a href=\"global.html#luminance\">luminance</a>","description":"<p>Calculate the luminance of an RGB color.</p>"},{"title":"matchesSelector","link":"<a href=\"global.html#matchesSelector\">matchesSelector</a>","description":"<p>Helper function to check if an element matches a selector</p>"},{"title":"module:afixt-test-utils","link":"<a href=\"module-afixt-test-utils.html\">afixt-test-utils</a>","description":"<p>A collection of utility functions for accessibility testing</p>"},{"title":"parseRGB","link":"<a href=\"global.html#parseRGB\">parseRGB</a>","description":"<p>Parse an RGB or RGBA color string into its components</p>"},{"title":"rowCount","link":"<a href=\"global.html#rowCount\">rowCount</a>","description":"<p>Returns the number of rows in the given table element.</p>"},{"title":"rtls","link":"<a href=\"global.html#rtls\">rtls</a>","description":"<p>An array of language codes that are written from right to left.</p>"},{"title":"sortByVisualOrder","link":"<a href=\"global.html#sortByVisualOrder\">sortByVisualOrder</a>"},{"title":"strlen","link":"<a href=\"global.html#strlen\">strlen</a>","description":"<p>Get the length of a trimmed string, or return 0 if not a valid string</p>"},{"title":"testContrast","link":"<a href=\"global.html#testContrast\">testContrast</a>","description":"<p>Test if an element meets WCAG color contrast requirements</p>"},{"title":"testLang","link":"<a href=\"global.html#testLang\">testLang</a>","description":"<p>Tests the language of an HTML element against its content.</p>\n<p>This function checks the <code>lang</code> or <code>xml:lang</code> attribute of the given element\nand its ancestors to determine the language. It then uses the <code>franc</code> library\nto detect the language of the element's text content and compares it to the\nlanguage attribute.</p>"},{"title":"testOrder","link":"<a href=\"global.html#testOrder\">testOrder</a>"},{"title":"validAriaAttributes","link":"<a href=\"global.html#validAriaAttributes\">validAriaAttributes</a>","description":"<p>List of valid ARIA attributes based on WAI-ARIA specification.</p>"},{"title":"validLangCodes","link":"<a href=\"global.html#validLangCodes\">validLangCodes</a>","description":"<p>An array of valid language codes.</p>\n<p>This array contains ISO 639-1 language codes that are used to identify languages.</p>"}]}
|
|
1
|
+
{"list":[{"title":"RTL_LANGUAGES","link":"<a href=\"global.html#RTL_LANGUAGES\">RTL_LANGUAGES</a>","description":"<p>ISO 639-1 codes for right-to-left languages (comprehensive list).</p>"},{"title":"_internal","link":"<a href=\"global.html#_internal\">_internal</a>","description":"<p>Internal reference to Tesseract.recognize, exposed for test mocking.</p>"},{"title":"arrayCount","link":"<a href=\"global.html#arrayCount\">arrayCount</a>","description":"<p>Get a count of each occurrence for items in an array.</p>"},{"title":"arrayRemoveByValue","link":"<a href=\"global.html#arrayRemoveByValue\">arrayRemoveByValue</a>","description":"<p>Remove specified items by value from an array.</p>"},{"title":"arrayUnique","link":"<a href=\"global.html#arrayUnique\">arrayUnique</a>","description":"<p>Reduce an array to only the unique items.</p>"},{"title":"cellColorDiffs","link":"<a href=\"global.html#cellColorDiffs\">cellColorDiffs</a>","description":"<p>Checks if the color differences in the table cells exceed the specified limits.</p>"},{"title":"cellCount","link":"<a href=\"global.html#cellCount\">cellCount</a>","description":"<p>Counts the number of cells (both <td> and <th>) in a given table element.</p>"},{"title":"checkInconsistent","link":"<a href=\"global.html#checkInconsistent\">checkInconsistent</a>","description":"<p>Checks if a table element has inconsistent row or column spans.</p>\n<p>This function normalizes the table by removing <code>colspan</code> and <code>rowspan</code> attributes,\nand then checks if the number of columns is consistent across all rows.</p>"},{"title":"checkMultiRowsInHeader","link":"<a href=\"global.html#checkMultiRowsInHeader\">checkMultiRowsInHeader</a>","description":"<p>Checks if the given table element has multiple rows in the header.</p>"},{"title":"checkMultiRowsWithColspan","link":"<a href=\"global.html#checkMultiRowsWithColspan\">checkMultiRowsWithColspan</a>","description":"<p>Checks if the given table element has multiple rows with at least\none cell that has a colspan attribute.</p>"},{"title":"cleanBlank","link":"<a href=\"global.html#cleanBlank\">cleanBlank</a>","description":"<p>Remove items from an object that do not have a value.</p>"},{"title":"colCount","link":"<a href=\"global.html#colCount\">colCount</a>","description":"<p>Calculates the average number of columns in a given HTML table.</p>"},{"title":"collectSubtreeText","link":"<a href=\"global.html#collectSubtreeText\">collectSubtreeText</a>","description":"<p>Recursively collect accessible text parts from an element's subtree.\nHandles text nodes, img alt text, and input[type="image"] alt text.</p>"},{"title":"countBordersPct","link":"<a href=\"global.html#countBordersPct\">countBordersPct</a>","description":"<p>Calculates the percentage of table cells that have a border.</p>"},{"title":"domUtils.attrBegins","link":"<a href=\"domUtils.html#.attrBegins\">attrBegins</a>","description":"<p>Filters a list of elements to include only those whose attributes begin with a specified prefix.</p>"},{"title":"domUtils.containsNoCase","link":"<a href=\"domUtils.html#.containsNoCase\">containsNoCase</a>","description":"<p>Checks if the text content of a given DOM element contains a specified string, case-insensitively.</p>"},{"title":"domUtils.getAttributes","link":"<a href=\"domUtils.html#.getAttributes\">getAttributes</a>","description":"<p>Retrieves all attributes of a given DOM element as an object.</p>"},{"title":"domUtils.getAttributesAsString","link":"<a href=\"domUtils.html#.getAttributesAsString\">getAttributesAsString</a>","description":"<p>Retrieves the attributes of a given DOM element as a JSON string.</p>"},{"title":"domUtils.getConstructor","link":"<a href=\"domUtils.html#.getConstructor\">getConstructor</a>","description":"<p>Gets the constructor name of a given DOM element.</p>"},{"title":"domUtils.getDocumentSize","link":"<a href=\"domUtils.html#.getDocumentSize\">getDocumentSize</a>","description":"<p>Calculates the size of the document's HTML content.</p>\n<p>This function retrieves the outer HTML of the document's root element,\nremoves all whitespace characters, and returns the length of the resulting string.</p>"},{"title":"domUtils.getElementsWithDuplicateIds","link":"<a href=\"domUtils.html#.getElementsWithDuplicateIds\">getElementsWithDuplicateIds</a>","description":"<p>Finds and returns an array of elements that have duplicate IDs in the document.</p>"},{"title":"domUtils.getHeadingLevel","link":"<a href=\"domUtils.html#.getHeadingLevel\">getHeadingLevel</a>","description":"<p>Gets the heading level from an element.\nSupports native heading elements (h1-h6) and ARIA headings (role="heading" with aria-level).</p>"},{"title":"domUtils.getOuterHTML","link":"<a href=\"domUtils.html#.getOuterHTML\">getOuterHTML</a>","description":"<p>Returns the outer HTML of the given element.</p>"},{"title":"domUtils.getSemanticContainer","link":"<a href=\"domUtils.html#.getSemanticContainer\">getSemanticContainer</a>","description":"<p>Get the nearest semantic container for an element.</p>"},{"title":"domUtils.getXPath","link":"<a href=\"domUtils.html#.getXPath\">getXPath</a>","description":"<p>Generates an XPath string for a given DOM element.</p>"},{"title":"domUtils.hasAttr","link":"<a href=\"domUtils.html#.hasAttr\">hasAttr</a>","description":"<p>Checks if the specified element has the given attribute.</p>"},{"title":"domUtils.hasFocus","link":"<a href=\"domUtils.html#.hasFocus\">hasFocus</a>","description":"<p>Checks if the given element has focus.</p>"},{"title":"domUtils.hasInteractiveHandler","link":"<a href=\"domUtils.html#.hasInteractiveHandler\">hasInteractiveHandler</a>","description":"<p>Check if element has event handlers that suggest interactivity.</p>"},{"title":"domUtils.isEffectivelyInteractive","link":"<a href=\"domUtils.html#.isEffectivelyInteractive\">isEffectivelyInteractive</a>","description":"<p>Check if an element is effectively interactive (not disabled, not hidden from AT,\nnot role=presentation/none).</p>"},{"title":"domUtils.isFullyVisible","link":"<a href=\"domUtils.html#.isFullyVisible\">isFullyVisible</a>","description":"<p>Checks if the given element is fully visible within the viewport.</p>"},{"title":"domUtils.isHiddenFromAT","link":"<a href=\"domUtils.html#.isHiddenFromAT\">isHiddenFromAT</a>","description":"<p>Check if an element is hidden from assistive technology.</p>"},{"title":"domUtils.isIdReferenced","link":"<a href=\"domUtils.html#.isIdReferenced\">isIdReferenced</a>","description":"<p>Checks if a given ID is referenced by other elements in the document.\nReferences include label[for], aria-labelledby, aria-describedby,\naria-controls, aria-owns, aria-activedescendant, aria-flowto,\naria-errormessage, href="#id", headers, and list attributes.</p>"},{"title":"domUtils.isLandmark","link":"<a href=\"domUtils.html#.isLandmark\">isLandmark</a>","description":"<p>Check if an element is a landmark element.</p>"},{"title":"domUtils.isValidAriaNesting","link":"<a href=\"domUtils.html#.isValidAriaNesting\">isValidAriaNesting</a>","description":"<p>Check if a parent-child pair constitutes a valid ARIA composite widget nesting.</p>"},{"title":"domUtils.isWithinNavContext","link":"<a href=\"domUtils.html#.isWithinNavContext\">isWithinNavContext</a>","description":"<p>Check if an element is within a navigation context (nav, menu, menubar).</p>"},{"title":"extractMeaningfulContent","link":"<a href=\"global.html#extractMeaningfulContent\">extractMeaningfulContent</a>","description":"<p>Checks if a CSS content value is meaningful (non-empty, non-whitespace).\nStrips surrounding quotes and checks for actual visible content.</p>"},{"title":"getAccessibleName","link":"<a href=\"global.html#getAccessibleName\">getAccessibleName</a>","description":"<p>Gets the accessible name of an element according to the accessible name calculation algorithm</p>"},{"title":"getAccessibleText","link":"<a href=\"global.html#getAccessibleText\">getAccessibleText</a>","description":"<p>Get all accessible text for an element, including aria-labels and content from children.\nTraverses the DOM subtree collecting text from text nodes, img alt attributes,\nand input[type="image"] alt attributes.</p>"},{"title":"getAriaAttributesByElement","link":"<a href=\"global.html#getAriaAttributesByElement\">getAriaAttributesByElement</a>","description":"<p>Retrieves all ARIA attributes from a given DOM element.</p>"},{"title":"getAttributeHandlers","link":"<a href=\"global.html#getAttributeHandlers\">getAttributeHandlers</a>","description":"<p>Collect inline attribute event handlers from an element</p>"},{"title":"getCSSGeneratedContent","link":"<a href=\"global.html#getCSSGeneratedContent\">getCSSGeneratedContent</a>","description":"<p>Gets the CSS generated content for an element's ::before or ::after pseudo-elements.\nThis function only checks for content added via the CSS <code>content</code> property,\nnot the element's own text content. Empty, whitespace-only, and blank content\nvalues are filtered out as they do not convey meaningful information.</p>\n<p>Use getGeneratedContent() if you need ::before + textContent + ::after combined.</p>"},{"title":"getColorContrast","link":"<a href=\"global.html#getColorContrast\">getColorContrast</a>","description":"<p>Calculate color contrast ratio between foreground and background</p>"},{"title":"getComputedBackgroundColor","link":"<a href=\"global.html#getComputedBackgroundColor\">getComputedBackgroundColor</a>","description":"<p>Get the computed background color for an element.</p>"},{"title":"getComputedRole","link":"<a href=\"global.html#getComputedRole\">getComputedRole</a>","description":"<p>Gets the computed role of an HTML element.</p>"},{"title":"getContrastRatio","link":"<a href=\"global.html#getContrastRatio\">getContrastRatio</a>","description":"<p>Calculate contrast ratio between two color strings.</p>"},{"title":"getEffectiveDir","link":"<a href=\"global.html#getEffectiveDir\">getEffectiveDir</a>","description":"<p>Gets the effective dir attribute value for an element (including inherited).</p>"},{"title":"getEventListeners","link":"<a href=\"global.html#getEventListeners\">getEventListeners</a>","description":"<p>Get all event listeners on an element, including addEventListener, attribute, and property handlers</p>"},{"title":"getFocusableElements","link":"<a href=\"global.html#getFocusableElements\">getFocusableElements</a>","description":"<p>Gets all focusable elements within the specified container element.</p>"},{"title":"getGeneratedContent","link":"<a href=\"global.html#getGeneratedContent\">getGeneratedContent</a>","description":"<p>Get all visible text for an element, including CSS-generated ::before and ::after content\ncombined with the element's own text content.</p>\n<p>Unlike getCSSGeneratedContent (which returns only pseudo-element content),\nthis function returns the full visible text: ::before + textContent + ::after.</p>"},{"title":"getImageText","link":"<a href=\"global.html#getImageText\">getImageText</a>","description":"<p>Extracts text from an image using OCR.</p>"},{"title":"getPropertyHandlers","link":"<a href=\"global.html#getPropertyHandlers\">getPropertyHandlers</a>","description":"<p>Collect property-based event handlers from an element</p>"},{"title":"getRelativeLuminance","link":"<a href=\"global.html#getRelativeLuminance\">getRelativeLuminance</a>","description":"<p>Calculate relative luminance from an RGB object.\nWrapper around luminance() that accepts an object instead of three separate arguments.</p>"},{"title":"getStyleObject","link":"<a href=\"global.html#getStyleObject\">getStyleObject</a>","description":"<p>Retrieves the computed style properties of a given DOM element and returns them as an object.</p>"},{"title":"getTwoLetterCode","link":"<a href=\"global.html#getTwoLetterCode\">getTwoLetterCode</a>","description":"<p>Converts a three-letter language code to a two-letter language code.</p>"},{"title":"hasAccessibleName","link":"<a href=\"global.html#hasAccessibleName\">hasAccessibleName</a>","description":"<p>Determines if an element has an accessible name</p>"},{"title":"hasAttribute","link":"<a href=\"global.html#hasAttribute\">hasAttribute</a>","description":"<p>Checks if a given element has a specified attribute.</p>"},{"title":"hasBackgroundImage","link":"<a href=\"global.html#hasBackgroundImage\">hasBackgroundImage</a>","description":"<p>Check if an element or any of its ancestors has a background image set.\nWalks up the DOM tree until it finds a background image or an opaque background color.</p>"},{"title":"hasCSSGeneratedContent","link":"<a href=\"global.html#hasCSSGeneratedContent\">hasCSSGeneratedContent</a>","description":"<p>Checks if an element has CSS generated content in its ::before or ::after pseudo-elements.\nThis only checks for content added via the CSS <code>content</code> property, not regular HTML text content.</p>"},{"title":"hasHiddenParent","link":"<a href=\"global.html#hasHiddenParent\">hasHiddenParent</a>","description":"<p>Checks if the given element has a hidden parent element.</p>"},{"title":"hasParent","link":"<a href=\"global.html#hasParent\">hasParent</a>","description":"<p>Checks if the given element has a parent that matches any of the selectors in the array.</p>"},{"title":"hasValidAriaAttributes","link":"<a href=\"global.html#hasValidAriaAttributes\">hasValidAriaAttributes</a>","description":"<p>Checks if an element has any valid ARIA attributes.</p>"},{"title":"isA11yVisible","link":"<a href=\"global.html#isA11yVisible\">isA11yVisible</a>","description":"<p>Checks if an element is visible to assistive technologies (AT).</p>\n<p>Unlike isHidden (which checks simple visual hiding), this function determines\nwhether an element is meaningful to screen readers and other AT. Key differences:</p>\n<ul>\n<li>Elements referenced by aria-labelledby or aria-describedby are considered\nAT-visible even if visually hidden (display:none), because they provide\naccessible names/descriptions to other elements.</li>\n<li>Inherently non-visible elements (script, style, input[type="hidden"], etc.)\nare treated as AT-visible since they carry semantic meaning.</li>\n<li>Parent chain is walked to detect inherited hiding (CSS and aria-hidden in strict mode).</li>\n</ul>"},{"title":"isAriaAttributeValid","link":"<a href=\"global.html#isAriaAttributeValid\">isAriaAttributeValid</a>","description":"<p>Checks if a specific ARIA attribute is valid according to the WAI-ARIA specification.</p>"},{"title":"isComplexTable","link":"<a href=\"global.html#isComplexTable\">isComplexTable</a>","description":"<p>Determines if a given table element is complex.\nA table is considered complex if it has multiple rows in the header,\nrows with colspan attributes, or inconsistent structure.</p>"},{"title":"isDataTable","link":"<a href=\"global.html#isDataTable\">isDataTable</a>","description":"<p>Determines if a given table element is a data table based on various heuristics and options.</p>"},{"title":"isFocusable","link":"<a href=\"global.html#isFocusable\">isFocusable</a>","description":"<p>Determines if an element is focusable via user interaction (tab order).\nElements with tabindex="-1" are programmatically focusable via .focus()\nbut are NOT considered focusable by this function, as they are not\nreachable through keyboard navigation.</p>"},{"title":"isHidden","link":"<a href=\"global.html#isHidden\">isHidden</a>","description":"<p>Checks if a given DOM element is hidden.</p>\n<p>By default checks: computed display:none, visibility:hidden, and the hidden attribute.\nAdditional checks can be enabled via the options parameter.</p>"},{"title":"isNotVisible","link":"<a href=\"global.html#isNotVisible\">isNotVisible</a>","description":"<p>Helper function to check if element is NOT visible</p>"},{"title":"isOffScreen","link":"<a href=\"global.html#isOffScreen\">isOffScreen</a>","description":"<p>Checks if the selected element is off-screen.</p>"},{"title":"isRTLLanguage","link":"<a href=\"global.html#isRTLLanguage\">isRTLLanguage</a>","description":"<p>Checks if a language code represents an RTL language.</p>"},{"title":"isValidLanguageCode","link":"<a href=\"global.html#isValidLanguageCode\">isValidLanguageCode</a>","description":"<p>Validates if a language code is a valid ISO 639 language code.\nUses pre-defined lists of valid language codes from ISO 639-1 and ISO 639-2.</p>"},{"title":"isValidUrl","link":"<a href=\"global.html#isValidUrl\">isValidUrl</a>","description":"<p>Validate if a string is a valid URL.</p>"},{"title":"langCodes","link":"<a href=\"global.html#langCodes\">langCodes</a>","description":"<p>An array of language codes and their corresponding details.\nEach object in the array represents a language and contains the following properties:</p>"},{"title":"listEventListeners","link":"<a href=\"global.html#listEventListeners\">listEventListeners</a>","description":"<p>List all event listeners for an element and its children</p>"},{"title":"listEventListeners~processElement","link":"<a href=\"global.html#listEventListeners#~processElement\">processElement</a>","description":"<p>Process an element to extract its event listeners</p>"},{"title":"luminance","link":"<a href=\"global.html#luminance\">luminance</a>","description":"<p>Calculate the luminance of an RGB color.</p>"},{"title":"matchesSelector","link":"<a href=\"global.html#matchesSelector\">matchesSelector</a>","description":"<p>Helper function to check if an element matches a selector</p>"},{"title":"module:QueryCache","link":"<a href=\"module-QueryCache.html\">QueryCache</a>","description":"<p>Advanced DOM query caching utility with TTL, size limits, and performance optimizations</p>"},{"title":"module:QueryCache~QueryCache#_createMockComputedStyle","link":"<a href=\"module-QueryCache-QueryCache.html#_createMockComputedStyle\">_createMockComputedStyle</a>","description":"<p>Private method to create mock computed style</p>"},{"title":"module:QueryCache~QueryCache#_evictFromCache","link":"<a href=\"module-QueryCache-QueryCache.html#_evictFromCache\">_evictFromCache</a>","description":"<p>Private method to evict entries from main cache</p>"},{"title":"module:QueryCache~QueryCache#_evictFromComputedStyleCache","link":"<a href=\"module-QueryCache-QueryCache.html#_evictFromComputedStyleCache\">_evictFromComputedStyleCache</a>","description":"<p>Private method to evict entries from computed style cache</p>"},{"title":"module:QueryCache~QueryCache#_getCachedComputedStyle","link":"<a href=\"module-QueryCache-QueryCache.html#_getCachedComputedStyle\">_getCachedComputedStyle</a>","description":"<p>Private method to get cached computed style with TTL check</p>"},{"title":"module:QueryCache~QueryCache#_getCachedValue","link":"<a href=\"module-QueryCache-QueryCache.html#_getCachedValue\">_getCachedValue</a>","description":"<p>Private method to get cached value with TTL check</p>"},{"title":"module:QueryCache~QueryCache#_setCachedComputedStyle","link":"<a href=\"module-QueryCache-QueryCache.html#_setCachedComputedStyle\">_setCachedComputedStyle</a>","description":"<p>Private method to set cached computed style with eviction</p>"},{"title":"module:QueryCache~QueryCache#_setCachedValue","link":"<a href=\"module-QueryCache-QueryCache.html#_setCachedValue\">_setCachedValue</a>","description":"<p>Private method to set cached value with eviction</p>"},{"title":"module:QueryCache~QueryCache#clear","link":"<a href=\"module-QueryCache-QueryCache.html#clear\">clear</a>","description":"<p>Clear all caches</p>"},{"title":"module:QueryCache~QueryCache#getComputedStyle","link":"<a href=\"module-QueryCache-QueryCache.html#getComputedStyle\">getComputedStyle</a>","description":"<p>Get computed style for an element with caching</p>"},{"title":"module:QueryCache~QueryCache#getStats","link":"<a href=\"module-QueryCache-QueryCache.html#getStats\">getStats</a>","description":"<p>Get cache statistics</p>"},{"title":"module:QueryCache~QueryCache#invalidate","link":"<a href=\"module-QueryCache-QueryCache.html#invalidate\">invalidate</a>","description":"<p>Invalidate specific cache entries by selector pattern</p>"},{"title":"module:QueryCache~QueryCache#invalidateComputedStyles","link":"<a href=\"module-QueryCache-QueryCache.html#invalidateComputedStyles\">invalidateComputedStyles</a>","description":"<p>Invalidate computed style cache for specific elements</p>"},{"title":"module:QueryCache~QueryCache#querySelector","link":"<a href=\"module-QueryCache-QueryCache.html#querySelector\">querySelector</a>","description":"<p>Get a single element by selector with caching</p>"},{"title":"module:QueryCache~QueryCache#querySelectorAll","link":"<a href=\"module-QueryCache-QueryCache.html#querySelectorAll\">querySelectorAll</a>","description":"<p>Get elements by selector with caching</p>"},{"title":"module:afixt-test-utils","link":"<a href=\"module-afixt-test-utils.html\">afixt-test-utils</a>","description":"<p>A collection of utility functions for accessibility testing</p>"},{"title":"module:colorConversions","link":"<a href=\"module-colorConversions.html\">colorConversions</a>","description":"<p>Color conversion utilities for hex, RGB, and HSL color formats.</p>"},{"title":"module:colorConversions~hexToRgb","link":"<a href=\"module-colorConversions.html#~hexToRgb\">hexToRgb</a>","description":"<p>Parse a hex color string into an RGB object.\nAccepts 3-digit (#RGB), 6-digit (#RRGGBB), with or without '#'.</p>"},{"title":"module:colorConversions~hslToRgb","link":"<a href=\"module-colorConversions.html#~hslToRgb\">hslToRgb</a>","description":"<p>Convert an HSL object to an RGB object.</p>"},{"title":"module:colorConversions~hslToString","link":"<a href=\"module-colorConversions.html#~hslToString\">hslToString</a>","description":"<p>Format an HSL object as a CSS hsl() string.</p>"},{"title":"module:colorConversions~parseAnyColor","link":"<a href=\"module-colorConversions.html#~parseAnyColor\">parseAnyColor</a>","description":"<p>Parse any supported color string (hex, rgb(), rgba(), hsl()) into an RGB object.</p>"},{"title":"module:colorConversions~rgbToHex","link":"<a href=\"module-colorConversions.html#~rgbToHex\">rgbToHex</a>","description":"<p>Convert an RGB object to a 6-digit hex string with '#' prefix.</p>"},{"title":"module:colorConversions~rgbToHsl","link":"<a href=\"module-colorConversions.html#~rgbToHsl\">rgbToHsl</a>","description":"<p>Convert an RGB object to an HSL object.</p>"},{"title":"module:colorConversions~rgbToString","link":"<a href=\"module-colorConversions.html#~rgbToString\">rgbToString</a>","description":"<p>Format an RGB object as a CSS rgb() string.</p>"},{"title":"module:constants","link":"<a href=\"module-constants.html\">constants</a>","description":"<p>Shared constants for accessibility testing</p>"},{"title":"module:constants~COMPLEXITY_THRESHOLDS","link":"<a href=\"module-constants.html#~COMPLEXITY_THRESHOLDS\">COMPLEXITY_THRESHOLDS</a>","description":"<p>Thresholds for determining table complexity.</p>"},{"title":"module:constants~FOCUSABLE_SELECTOR","link":"<a href=\"module-constants.html#~FOCUSABLE_SELECTOR\">FOCUSABLE_SELECTOR</a>","description":"<p>CSS selector string for naturally focusable elements.\nThese elements are focusable by default (unless disabled).</p>"},{"title":"module:constants~FOCUSABLE_SELECTORS","link":"<a href=\"module-constants.html#~FOCUSABLE_SELECTORS\">FOCUSABLE_SELECTORS</a>","description":"<p>Raw array of CSS selectors for focusable elements (without :not([disabled]) filters).</p>"},{"title":"module:constants~GENERIC_LINK_TEXT","link":"<a href=\"module-constants.html#~GENERIC_LINK_TEXT\">GENERIC_LINK_TEXT</a>","description":"<p>Generic/meaningless link text strings.</p>"},{"title":"module:constants~GENERIC_SUMMARIES","link":"<a href=\"module-constants.html#~GENERIC_SUMMARIES\">GENERIC_SUMMARIES</a>","description":"<p>Generic or useless table summaries commonly found in the wild.\nMerged from multiple detection contexts.</p>"},{"title":"module:constants~GENERIC_TITLES","link":"<a href=\"module-constants.html#~GENERIC_TITLES\">GENERIC_TITLES</a>","description":"<p>Generic, non-descriptive, or meaningless frame/iframe titles.</p>"},{"title":"module:constants~INTERACTIVE_HANDLER_ATTRIBUTES","link":"<a href=\"module-constants.html#~INTERACTIVE_HANDLER_ATTRIBUTES\">INTERACTIVE_HANDLER_ATTRIBUTES</a>","description":"<p>Inline event handler attributes that indicate user interactivity.</p>"},{"title":"module:constants~INTERACTIVE_ROLES","link":"<a href=\"module-constants.html#~INTERACTIVE_ROLES\">INTERACTIVE_ROLES</a>","description":"<p>ARIA roles that represent interactive widgets.</p>"},{"title":"module:constants~INTERACTIVE_SELECTOR","link":"<a href=\"module-constants.html#~INTERACTIVE_SELECTOR\">INTERACTIVE_SELECTOR</a>","description":"<p>CSS selector string for interactive elements.\nMatches native HTML interactive elements and ARIA widget roles.</p>"},{"title":"module:constants~LABELLABLE_ELEMENTS","link":"<a href=\"module-constants.html#~LABELLABLE_ELEMENTS\">LABELLABLE_ELEMENTS</a>","description":"<p>Labellable elements per HTML spec that can be associated with a <label>.</p>"},{"title":"module:constants~LANDMARK_ELEMENT_MAP","link":"<a href=\"module-constants.html#~LANDMARK_ELEMENT_MAP\">LANDMARK_ELEMENT_MAP</a>","description":"<p>Mapping of HTML tag names to their implicit landmark roles.</p>"},{"title":"module:constants~LANDMARK_ROLES","link":"<a href=\"module-constants.html#~LANDMARK_ROLES\">LANDMARK_ROLES</a>","description":"<p>ARIA landmark roles.</p>"},{"title":"module:constants~LANDMARK_TAGS","link":"<a href=\"module-constants.html#~LANDMARK_TAGS\">LANDMARK_TAGS</a>","description":"<p>HTML tag names that are landmark elements.</p>"},{"title":"module:constants~MIN_TARGET_SIZE","link":"<a href=\"module-constants.html#~MIN_TARGET_SIZE\">MIN_TARGET_SIZE</a>","description":"<p>WCAG 2.5.5 minimum target size in CSS pixels.</p>"},{"title":"module:constants~NEW_WINDOW_WARNINGS","link":"<a href=\"module-constants.html#~NEW_WINDOW_WARNINGS\">NEW_WINDOW_WARNINGS</a>","description":"<p>Phrases that indicate a warning about new window/tab behavior.</p>"},{"title":"module:constants~NON_VISIBLE_SELECTORS","link":"<a href=\"module-constants.html#~NON_VISIBLE_SELECTORS\">NON_VISIBLE_SELECTORS</a>","description":"<p>CSS selectors for elements that are inherently not visible in the accessibility tree.</p>"},{"title":"module:constants~RTL_LANGUAGES","link":"<a href=\"module-constants.html#~RTL_LANGUAGES\">RTL_LANGUAGES</a>","description":"<p>ISO 639-1 codes for right-to-left languages.</p>"},{"title":"module:constants~SEMANTIC_CONTAINER_ROLES","link":"<a href=\"module-constants.html#~SEMANTIC_CONTAINER_ROLES\">SEMANTIC_CONTAINER_ROLES</a>","description":"<p>ARIA roles that represent semantic containers.</p>"},{"title":"module:constants~SEMANTIC_CONTAINER_TAGS","link":"<a href=\"module-constants.html#~SEMANTIC_CONTAINER_TAGS\">SEMANTIC_CONTAINER_TAGS</a>","description":"<p>HTML tag names that act as semantic containers.</p>"},{"title":"module:constants~STRUCTURE_PHRASES","link":"<a href=\"module-constants.html#~STRUCTURE_PHRASES\">STRUCTURE_PHRASES</a>","description":"<p>Phrases indicating structure-focused rather than content-focused table summary.</p>"},{"title":"module:constants~TEXT_ROLES","link":"<a href=\"module-constants.html#~TEXT_ROLES\">TEXT_ROLES</a>","description":"<p>ARIA roles that derive their accessible name from text content.</p>"},{"title":"module:constants~VAGUE_PHRASES","link":"<a href=\"module-constants.html#~VAGUE_PHRASES\">VAGUE_PHRASES</a>","description":"<p>Phrases indicating vague/rambling table summary content.</p>"},{"title":"module:constants~VALID_ALT_ELEMENTS","link":"<a href=\"module-constants.html#~VALID_ALT_ELEMENTS\">VALID_ALT_ELEMENTS</a>","description":"<p>Elements that validly support the alt attribute per HTML spec.</p>"},{"title":"module:constants~VALID_ARIA_ATTRIBUTES","link":"<a href=\"module-constants.html#~VALID_ARIA_ATTRIBUTES\">VALID_ARIA_ATTRIBUTES</a>","description":"<p>Set of valid ARIA attributes per WAI-ARIA specification.</p>"},{"title":"module:constants~VALID_ARIA_NESTING","link":"<a href=\"module-constants.html#~VALID_ARIA_NESTING\">VALID_ARIA_NESTING</a>","description":"<p>Valid ARIA parent-child interactive role combinations per the WAI-ARIA spec.\nThese composite widget patterns require interactive children by design.\nKey = parent role, Value = array of valid child roles.</p>"},{"title":"module:constants~VALID_ARIA_ROLES","link":"<a href=\"module-constants.html#~VALID_ARIA_ROLES\">VALID_ARIA_ROLES</a>","description":"<p>Set of all valid WAI-ARIA roles.</p>"},{"title":"module:cssUtils","link":"<a href=\"module-cssUtils.html\">cssUtils</a>","description":"<p>CSS styling inspection utilities</p>"},{"title":"module:cssUtils~cssUtils.hasButtonStyling","link":"<a href=\"module-cssUtils-cssUtils.html#.hasButtonStyling\">hasButtonStyling</a>","description":"<p>Check if an element has button-like styling (background/border with padding).</p>"},{"title":"module:cssUtils~cssUtils.hasLinkStyling","link":"<a href=\"module-cssUtils-cssUtils.html#.hasLinkStyling\">hasLinkStyling</a>","description":"<p>Check if an element has link-like styling (underline).</p>"},{"title":"module:cssUtils~cssUtils.hasNoBorder","link":"<a href=\"module-cssUtils-cssUtils.html#.hasNoBorder\">hasNoBorder</a>","description":"<p>Check if an element has no visible border.</p>"},{"title":"module:cssUtils~cssUtils.hasTransparentBackground","link":"<a href=\"module-cssUtils-cssUtils.html#.hasTransparentBackground\">hasTransparentBackground</a>","description":"<p>Check if an element's background is transparent/none.</p>"},{"title":"module:cssUtils~cssUtils.looksLikeText","link":"<a href=\"module-cssUtils-cssUtils.html#.looksLikeText\">looksLikeText</a>","description":"<p>Check if an element looks like regular text (no underline, background, or border).</p>"},{"title":"module:formUtils","link":"<a href=\"module-formUtils.html\">formUtils</a>","description":"<p>Form-related accessibility utilities</p>"},{"title":"module:formUtils~formUtils.findGroupingAncestor","link":"<a href=\"module-formUtils-formUtils.html#.findGroupingAncestor\">findGroupingAncestor</a>","description":"<p>Finds the grouping ancestor for an element (fieldset, form, or ARIA group).</p>"},{"title":"module:formUtils~formUtils.getTextContentExcludingControls","link":"<a href=\"module-formUtils-formUtils.html#.getTextContentExcludingControls\">getTextContentExcludingControls</a>","description":"<p>Get the text content of an element, excluding form control children.\nUseful for wrapped labels like <label><input type=\"checkbox\"> Remember me</label>\nwhere the input element should not contribute to label text.</p>"},{"title":"module:formUtils~formUtils.hasExplicitAccessibleName","link":"<a href=\"module-formUtils-formUtils.html#.hasExplicitAccessibleName\">hasExplicitAccessibleName</a>","description":"<p>Checks if an element has an explicit accessible name via aria-labelledby, aria-label, or title.</p>\n<p>Unlike getAccessibleName/hasAccessibleName, this deliberately excludes text content.\nThis is important for container roles (radiogroup, group) where text content of\nchild elements is not a valid accessible name source per the ARIA spec — these\nroles require an author-provided label.</p>\n<p>Used by isProperlyGrouped() to enforce that ARIA groups have explicit labels.</p>"},{"title":"module:formUtils~formUtils.isHiddenInput","link":"<a href=\"module-formUtils-formUtils.html#.isHiddenInput\">isHiddenInput</a>","description":"<p>Check if an element is a hidden input.</p>"},{"title":"module:formUtils~formUtils.isLabellable","link":"<a href=\"module-formUtils-formUtils.html#.isLabellable\">isLabellable</a>","description":"<p>Check if an element is a labellable form control per HTML spec.</p>"},{"title":"module:formUtils~formUtils.isProperlyGrouped","link":"<a href=\"module-formUtils-formUtils.html#.isProperlyGrouped\">isProperlyGrouped</a>","description":"<p>Checks if a form control is properly grouped with an accessible label.\nProper grouping means inside a fieldset with a legend, or inside an element\nwith role="radiogroup" or role="group" that has an explicit accessible name.</p>"},{"title":"module:suggestContrast","link":"<a href=\"module-suggestContrast.html\">suggestContrast</a>","description":"<p>Inspired by Tanaguru Contrast-Finder's HSL-space "Psycho" search strategy.\nGiven a foreground/background pair, this utility finds nearby colors that meet\nthe specified contrast ratio while staying perceptually close to the originals.</p>"},{"title":"module:suggestContrast~MAX_COMPONENT_DRIFT","link":"<a href=\"module-suggestContrast.html#~MAX_COMPONENT_DRIFT\">MAX_COMPONENT_DRIFT</a>","description":"<p>Maximum per-channel RGB drift from the original color.\nAdapted from Tanaguru's DEFAULT_COLOR_COMPONENT_BOUNDER.</p>"},{"title":"module:suggestContrast~SUGGESTION_COUNT","link":"<a href=\"module-suggestContrast.html#~SUGGESTION_COUNT\">SUGGESTION_COUNT</a>","description":"<p>Number of suggestions to return.</p>"},{"title":"module:suggestContrast~clamp","link":"<a href=\"module-suggestContrast.html#~clamp\">clamp</a>","description":"<p>Clamp a number between min and max.</p>"},{"title":"module:suggestContrast~computeContrastRatio","link":"<a href=\"module-suggestContrast.html#~computeContrastRatio\">computeContrastRatio</a>","description":"<p>Compute the WCAG contrast ratio between two RGB color objects.</p>"},{"title":"module:suggestContrast~deriveMinRatio","link":"<a href=\"module-suggestContrast.html#~deriveMinRatio\">deriveMinRatio</a>","description":"<p>Derive the default minimum contrast ratio based on font size and weight per WCAG 2.x.</p>"},{"title":"module:suggestContrast~formatColor","link":"<a href=\"module-suggestContrast.html#~formatColor\">formatColor</a>","description":"<p>Format an RGB object into a full suggestion color object with hex, rgb, and hsl representations.</p>"},{"title":"module:suggestContrast~generateVariations","link":"<a href=\"module-suggestContrast.html#~generateVariations\">generateVariations</a>","description":"<p>Generate hue/saturation variations from a base color that meet the contrast requirement.</p>"},{"title":"module:suggestContrast~rgbDistance","link":"<a href=\"module-suggestContrast.html#~rgbDistance\">rgbDistance</a>","description":"<p>Calculate the RGB Manhattan distance between two color objects.</p>"},{"title":"module:suggestContrast~searchLightness","link":"<a href=\"module-suggestContrast.html#~searchLightness\">searchLightness</a>","description":"<p>Search for valid colors by adjusting lightness in one direction.</p>"},{"title":"module:suggestContrast~searchLightnessUnconstrained","link":"<a href=\"module-suggestContrast.html#~searchLightnessUnconstrained\">searchLightnessUnconstrained</a>","description":"<p>Search for valid colors by adjusting lightness, without the drift constraint.\nUsed as a fallback when drift-constrained search yields too few results.</p>"},{"title":"module:suggestContrast~suggestContrast","link":"<a href=\"module-suggestContrast.html#~suggestContrast\">suggestContrast</a>","description":"<p>Suggest color pairs that meet a minimum contrast ratio.</p>\n<p>Takes a foreground/background color pair and returns up to 12 alternative color pair\nsuggestions that meet the specified (or WCAG-derived) minimum contrast ratio.\nEach suggestion stays perceptually close to the original colors.</p>"},{"title":"module:suggestContrast~withinDrift","link":"<a href=\"module-suggestContrast.html#~withinDrift\">withinDrift</a>","description":"<p>Check if a candidate color is within the allowed RGB drift from the original.</p>"},{"title":"module:suggestContrast~wrapHue","link":"<a href=\"module-suggestContrast.html#~wrapHue\">wrapHue</a>","description":"<p>Wrap a hue value to stay within 0-360.</p>"},{"title":"module:tableUtils","link":"<a href=\"module-tableUtils.html\">tableUtils</a>","description":"<p>Table-related accessibility utilities</p>"},{"title":"module:tableUtils~tableUtils.getMaxColumnCount","link":"<a href=\"module-tableUtils-tableUtils.html#.getMaxColumnCount\">getMaxColumnCount</a>","description":"<p>Count effective columns in a table (accounting for colspan).</p>"},{"title":"module:tableUtils~tableUtils.hasComplexHeaderSpans","link":"<a href=\"module-tableUtils-tableUtils.html#.hasComplexHeaderSpans\">hasComplexHeaderSpans</a>","description":"<p>Check if table has header cells with large colspan/rowspan values.</p>"},{"title":"module:tableUtils~tableUtils.hasMultiLevelHeaderGroupings","link":"<a href=\"module-tableUtils-tableUtils.html#.hasMultiLevelHeaderGroupings\">hasMultiLevelHeaderGroupings</a>","description":"<p>Check if table has multiple rows with colspan/rowspan on header cells,\nindicating multi-level grouped headers.</p>"},{"title":"module:tableUtils~tableUtils.hasMultipleHeaderRows","link":"<a href=\"module-tableUtils-tableUtils.html#.hasMultipleHeaderRows\">hasMultipleHeaderRows</a>","description":"<p>Check if table has multiple header rows (rows containing th elements).</p>"},{"title":"module:tableUtils~tableUtils.isGenericSummary","link":"<a href=\"module-tableUtils-tableUtils.html#.isGenericSummary\">isGenericSummary</a>","description":"<p>Checks if a summary is generic/useless.</p>"},{"title":"module:tableUtils~tableUtils.isHeaderOnlyAriaTable","link":"<a href=\"module-tableUtils-tableUtils.html#.isHeaderOnlyAriaTable\">isHeaderOnlyAriaTable</a>","description":"<p>Checks if an ARIA table has only header roles and no cell roles.</p>"},{"title":"module:tableUtils~tableUtils.isHeaderOnlyTable","link":"<a href=\"module-tableUtils-tableUtils.html#.isHeaderOnlyTable\">isHeaderOnlyTable</a>","description":"<p>Checks if an HTML table has only header cells (th) and no data cells (td).\nIndicates headers potentially separated from their data.</p>"},{"title":"module:tableUtils~tableUtils.isPunctuationOnly","link":"<a href=\"module-tableUtils-tableUtils.html#.isPunctuationOnly\">isPunctuationOnly</a>","description":"<p>Checks if a string contains only punctuation characters.</p>"},{"title":"parseColor","link":"<a href=\"global.html#parseColor\">parseColor</a>","description":"<p>Parse an RGB/RGBA color string into a structured object.</p>"},{"title":"parseRGB","link":"<a href=\"global.html#parseRGB\">parseRGB</a>","description":"<p>Parse an RGB or RGBA color string into its components</p>"},{"title":"rowCount","link":"<a href=\"global.html#rowCount\">rowCount</a>","description":"<p>Returns the number of rows in the given table element.</p>"},{"title":"rtls","link":"<a href=\"global.html#rtls\">rtls</a>","description":"<p>An array of language codes that are written from right to left.</p>"},{"title":"sortByVisualOrder","link":"<a href=\"global.html#sortByVisualOrder\">sortByVisualOrder</a>"},{"title":"strlen","link":"<a href=\"global.html#strlen\">strlen</a>","description":"<p>Get the length of a trimmed string, or return 0 if not a valid string</p>"},{"title":"testContrast","link":"<a href=\"global.html#testContrast\">testContrast</a>","description":"<p>Test if an element meets WCAG color contrast requirements</p>"},{"title":"testLang","link":"<a href=\"global.html#testLang\">testLang</a>","description":"<p>Tests the language of an HTML element against its content.</p>\n<p>This function checks the <code>lang</code> or <code>xml:lang</code> attribute of the given element\nand its ancestors to determine the language. It then uses the <code>franc</code> library\nto detect the language of the element's text content and compares it to the\nlanguage attribute.</p>"},{"title":"testOrder","link":"<a href=\"global.html#testOrder\">testOrder</a>"},{"title":"validLangCodes","link":"<a href=\"global.html#validLangCodes\">validLangCodes</a>","description":"<p>An array of valid language codes.</p>\n<p>This array contains ISO 639-1 language codes that are used to identify languages.</p>"}]}
|