axe-core 4.2.4 → 4.3.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.
Files changed (681) hide show
  1. package/CHANGELOG.md +37 -2
  2. package/README.md +24 -2
  3. package/axe.d.ts +60 -4
  4. package/axe.js +1198 -830
  5. package/axe.min.js +2 -2
  6. package/locales/de.json +1 -1
  7. package/locales/pt_BR.json +163 -44
  8. package/package.json +7 -1
  9. package/.eslintrc.js +0 -112
  10. package/.prettierrc.json +0 -10
  11. package/CONTRIBUTING.md +0 -242
  12. package/bower.json +0 -40
  13. package/doc/API.md +0 -963
  14. package/doc/accessibility-supported.md +0 -37
  15. package/doc/act-rules-format.md +0 -37
  16. package/doc/aria-supported.md +0 -13
  17. package/doc/backwards-compatibility-doc.md +0 -94
  18. package/doc/check-message-template.md +0 -124
  19. package/doc/check-options.md +0 -437
  20. package/doc/code-submission-guidelines.md +0 -171
  21. package/doc/developer-guide.md +0 -515
  22. package/doc/examples/chrome-debugging-protocol/README.md +0 -13
  23. package/doc/examples/chrome-debugging-protocol/axe-cdp.js +0 -81
  24. package/doc/examples/chrome-debugging-protocol/package.json +0 -11
  25. package/doc/examples/html-handlebars.md +0 -164
  26. package/doc/examples/jasmine/README.md +0 -35
  27. package/doc/examples/jasmine/karma.conf.js +0 -29
  28. package/doc/examples/jasmine/package-lock.json +0 -1489
  29. package/doc/examples/jasmine/package.json +0 -21
  30. package/doc/examples/jasmine/spec/a11y.js +0 -36
  31. package/doc/examples/jest_react/README.md +0 -41
  32. package/doc/examples/jest_react/link.js +0 -7
  33. package/doc/examples/jest_react/link.test.js +0 -24
  34. package/doc/examples/jest_react/package-lock.json +0 -7525
  35. package/doc/examples/jest_react/package.json +0 -28
  36. package/doc/examples/jest_react/test-helpers.js +0 -21
  37. package/doc/examples/jsdom/package.json +0 -15
  38. package/doc/examples/mocha/README.md +0 -35
  39. package/doc/examples/mocha/karma.conf.js +0 -29
  40. package/doc/examples/mocha/package-lock.json +0 -1671
  41. package/doc/examples/mocha/package.json +0 -22
  42. package/doc/examples/phantomjs/README.md +0 -17
  43. package/doc/examples/phantomjs/axe-phantom.js +0 -53
  44. package/doc/examples/phantomjs/package-lock.json +0 -862
  45. package/doc/examples/phantomjs/package.json +0 -19
  46. package/doc/examples/puppeteer/README.md +0 -12
  47. package/doc/examples/puppeteer/axe-puppeteer.js +0 -60
  48. package/doc/examples/puppeteer/package.json +0 -13
  49. package/doc/examples/qunit/README.md +0 -37
  50. package/doc/examples/qunit/package-lock.json +0 -2951
  51. package/doc/examples/qunit/package.json +0 -21
  52. package/doc/examples/test-examples.js +0 -40
  53. package/doc/frame-messenger.md +0 -107
  54. package/doc/plugins.md +0 -123
  55. package/doc/projects.md +0 -56
  56. package/doc/rule-descriptions.md +0 -135
  57. package/doc/rule-development.md +0 -123
  58. package/doc/rule-proposal.md +0 -106
  59. package/doc/standards-object.md +0 -147
  60. package/lib/checks/aria/abstractrole-evaluate.js +0 -40
  61. package/lib/checks/aria/abstractrole.json +0 -14
  62. package/lib/checks/aria/aria-allowed-attr-evaluate.js +0 -58
  63. package/lib/checks/aria/aria-allowed-attr.json +0 -14
  64. package/lib/checks/aria/aria-allowed-role-evaluate.js +0 -42
  65. package/lib/checks/aria/aria-allowed-role.json +0 -22
  66. package/lib/checks/aria/aria-errormessage-evaluate.js +0 -68
  67. package/lib/checks/aria/aria-errormessage.json +0 -18
  68. package/lib/checks/aria/aria-hidden-body-evaluate.js +0 -11
  69. package/lib/checks/aria/aria-hidden-body.json +0 -11
  70. package/lib/checks/aria/aria-prohibited-attr-evaluate.js +0 -68
  71. package/lib/checks/aria/aria-prohibited-attr.json +0 -15
  72. package/lib/checks/aria/aria-required-attr-evaluate.js +0 -67
  73. package/lib/checks/aria/aria-required-attr.json +0 -14
  74. package/lib/checks/aria/aria-required-children-evaluate.js +0 -137
  75. package/lib/checks/aria/aria-required-children.json +0 -32
  76. package/lib/checks/aria/aria-required-parent-evaluate.js +0 -120
  77. package/lib/checks/aria/aria-required-parent.json +0 -17
  78. package/lib/checks/aria/aria-roledescription-evaluate.js +0 -25
  79. package/lib/checks/aria/aria-roledescription.json +0 -23
  80. package/lib/checks/aria/aria-unsupported-attr-evaluate.js +0 -53
  81. package/lib/checks/aria/aria-unsupported-attr.json +0 -11
  82. package/lib/checks/aria/aria-valid-attr-evaluate.js +0 -51
  83. package/lib/checks/aria/aria-valid-attr-value-evaluate.js +0 -122
  84. package/lib/checks/aria/aria-valid-attr-value.json +0 -19
  85. package/lib/checks/aria/aria-valid-attr.json +0 -15
  86. package/lib/checks/aria/fallbackrole-evaluate.js +0 -13
  87. package/lib/checks/aria/fallbackrole.json +0 -11
  88. package/lib/checks/aria/has-global-aria-attribute-evaluate.js +0 -11
  89. package/lib/checks/aria/has-global-aria-attribute.json +0 -14
  90. package/lib/checks/aria/has-widget-role-evaluate.js +0 -20
  91. package/lib/checks/aria/has-widget-role.json +0 -12
  92. package/lib/checks/aria/invalidrole-evaluate.js +0 -45
  93. package/lib/checks/aria/invalidrole.json +0 -14
  94. package/lib/checks/aria/is-element-focusable-evaluate.js +0 -7
  95. package/lib/checks/aria/is-element-focusable.json +0 -11
  96. package/lib/checks/aria/no-implicit-explicit-label-evaluate.js +0 -54
  97. package/lib/checks/aria/no-implicit-explicit-label.json +0 -11
  98. package/lib/checks/aria/unsupportedrole-evaluate.js +0 -15
  99. package/lib/checks/aria/unsupportedrole.json +0 -11
  100. package/lib/checks/aria/valid-scrollable-semantics-evaluate.js +0 -70
  101. package/lib/checks/aria/valid-scrollable-semantics.json +0 -14
  102. package/lib/checks/color/color-contrast-evaluate.js +0 -178
  103. package/lib/checks/color/color-contrast.json +0 -42
  104. package/lib/checks/color/link-in-text-block-evaluate.js +0 -94
  105. package/lib/checks/color/link-in-text-block.json +0 -19
  106. package/lib/checks/forms/autocomplete-appropriate-evaluate.js +0 -84
  107. package/lib/checks/forms/autocomplete-appropriate.json +0 -11
  108. package/lib/checks/forms/autocomplete-valid-evaluate.js +0 -8
  109. package/lib/checks/forms/autocomplete-valid.json +0 -11
  110. package/lib/checks/generic/README.md +0 -13
  111. package/lib/checks/generic/attr-non-space-content-evaluate.js +0 -28
  112. package/lib/checks/generic/has-descendant-after.js +0 -15
  113. package/lib/checks/generic/has-descendant-evaluate.js +0 -20
  114. package/lib/checks/generic/has-text-content-evaluate.js +0 -11
  115. package/lib/checks/generic/matches-definition-evaluate.js +0 -7
  116. package/lib/checks/generic/page-no-duplicate-after.js +0 -6
  117. package/lib/checks/generic/page-no-duplicate-evaluate.js +0 -42
  118. package/lib/checks/index.js +0 -11
  119. package/lib/checks/keyboard/accesskeys-after.js +0 -23
  120. package/lib/checks/keyboard/accesskeys-evaluate.js +0 -11
  121. package/lib/checks/keyboard/accesskeys.json +0 -12
  122. package/lib/checks/keyboard/focusable-content-evaluate.js +0 -20
  123. package/lib/checks/keyboard/focusable-content.json +0 -11
  124. package/lib/checks/keyboard/focusable-disabled-evaluate.js +0 -36
  125. package/lib/checks/keyboard/focusable-disabled.json +0 -11
  126. package/lib/checks/keyboard/focusable-element-evaluate.js +0 -47
  127. package/lib/checks/keyboard/focusable-element.json +0 -11
  128. package/lib/checks/keyboard/focusable-modal-open-evaluate.js +0 -20
  129. package/lib/checks/keyboard/focusable-modal-open.json +0 -11
  130. package/lib/checks/keyboard/focusable-no-name-evaluate.js +0 -18
  131. package/lib/checks/keyboard/focusable-no-name.json +0 -12
  132. package/lib/checks/keyboard/focusable-not-tabbable-evaluate.js +0 -36
  133. package/lib/checks/keyboard/focusable-not-tabbable.json +0 -11
  134. package/lib/checks/keyboard/frame-focusable-content.json +0 -12
  135. package/lib/checks/keyboard/landmark-is-top-level-evaluate.js +0 -31
  136. package/lib/checks/keyboard/landmark-is-top-level.json +0 -11
  137. package/lib/checks/keyboard/no-focusable-content-evaluate.js +0 -35
  138. package/lib/checks/keyboard/no-focusable-content.json +0 -12
  139. package/lib/checks/keyboard/page-has-heading-one.json +0 -15
  140. package/lib/checks/keyboard/page-has-main.json +0 -15
  141. package/lib/checks/keyboard/page-no-duplicate-banner.json +0 -16
  142. package/lib/checks/keyboard/page-no-duplicate-contentinfo.json +0 -16
  143. package/lib/checks/keyboard/page-no-duplicate-main.json +0 -15
  144. package/lib/checks/keyboard/tabindex-evaluate.js +0 -10
  145. package/lib/checks/keyboard/tabindex.json +0 -11
  146. package/lib/checks/label/alt-space-value-evaluate.js +0 -7
  147. package/lib/checks/label/alt-space-value.json +0 -11
  148. package/lib/checks/label/duplicate-img-label-evaluate.js +0 -23
  149. package/lib/checks/label/duplicate-img-label.json +0 -14
  150. package/lib/checks/label/explicit-evaluate.js +0 -34
  151. package/lib/checks/label/explicit.json +0 -12
  152. package/lib/checks/label/help-same-as-label-evaluate.js +0 -28
  153. package/lib/checks/label/help-same-as-label.json +0 -12
  154. package/lib/checks/label/hidden-explicit-label-evaluate.js +0 -30
  155. package/lib/checks/label/hidden-explicit-label.json +0 -12
  156. package/lib/checks/label/implicit-evaluate.js +0 -16
  157. package/lib/checks/label/implicit.json +0 -12
  158. package/lib/checks/label/label-content-name-mismatch-evaluate.js +0 -71
  159. package/lib/checks/label/label-content-name-mismatch.json +0 -15
  160. package/lib/checks/label/multiple-label-evaluate.js +0 -44
  161. package/lib/checks/label/multiple-label.json +0 -11
  162. package/lib/checks/label/title-only-evaluate.js +0 -11
  163. package/lib/checks/label/title-only.json +0 -11
  164. package/lib/checks/landmarks/landmark-is-unique-after.js +0 -27
  165. package/lib/checks/landmarks/landmark-is-unique-evaluate.js +0 -14
  166. package/lib/checks/landmarks/landmark-is-unique.json +0 -12
  167. package/lib/checks/language/has-lang-evaluate.js +0 -39
  168. package/lib/checks/language/has-lang.json +0 -17
  169. package/lib/checks/language/valid-lang-evaluate.js +0 -36
  170. package/lib/checks/language/valid-lang.json +0 -14
  171. package/lib/checks/language/xml-lang-mismatch-evaluate.js +0 -10
  172. package/lib/checks/language/xml-lang-mismatch.json +0 -11
  173. package/lib/checks/lists/dlitem-evaluate.js +0 -30
  174. package/lib/checks/lists/dlitem.json +0 -11
  175. package/lib/checks/lists/listitem-evaluate.js +0 -28
  176. package/lib/checks/lists/listitem.json +0 -14
  177. package/lib/checks/lists/only-dlitems-evaluate.js +0 -51
  178. package/lib/checks/lists/only-dlitems.json +0 -11
  179. package/lib/checks/lists/only-listitems-evaluate.js +0 -63
  180. package/lib/checks/lists/only-listitems.json +0 -14
  181. package/lib/checks/lists/structured-dlitems-evaluate.js +0 -26
  182. package/lib/checks/lists/structured-dlitems.json +0 -11
  183. package/lib/checks/media/caption-evaluate.js +0 -13
  184. package/lib/checks/media/caption.json +0 -11
  185. package/lib/checks/media/frame-tested-after.js +0 -31
  186. package/lib/checks/media/frame-tested-evaluate.js +0 -6
  187. package/lib/checks/media/frame-tested.json +0 -16
  188. package/lib/checks/media/no-autoplay-audio-evaluate.js +0 -97
  189. package/lib/checks/media/no-autoplay-audio.json +0 -15
  190. package/lib/checks/mobile/css-orientation-lock-evaluate.js +0 -254
  191. package/lib/checks/mobile/css-orientation-lock.json +0 -15
  192. package/lib/checks/mobile/meta-viewport-large.json +0 -15
  193. package/lib/checks/mobile/meta-viewport-scale-evaluate.js +0 -71
  194. package/lib/checks/mobile/meta-viewport.json +0 -14
  195. package/lib/checks/navigation/header-present.json +0 -15
  196. package/lib/checks/navigation/heading-order-after.js +0 -132
  197. package/lib/checks/navigation/heading-order-evaluate.js +0 -58
  198. package/lib/checks/navigation/heading-order.json +0 -13
  199. package/lib/checks/navigation/identical-links-same-purpose-after.js +0 -106
  200. package/lib/checks/navigation/identical-links-same-purpose-evaluate.js +0 -35
  201. package/lib/checks/navigation/identical-links-same-purpose.json +0 -12
  202. package/lib/checks/navigation/internal-link-present-evaluate.js +0 -10
  203. package/lib/checks/navigation/internal-link-present.json +0 -11
  204. package/lib/checks/navigation/landmark.json +0 -14
  205. package/lib/checks/navigation/meta-refresh-evaluate.js +0 -8
  206. package/lib/checks/navigation/meta-refresh.json +0 -11
  207. package/lib/checks/navigation/p-as-heading-evaluate.js +0 -98
  208. package/lib/checks/navigation/p-as-heading.json +0 -30
  209. package/lib/checks/navigation/region-evaluate.js +0 -106
  210. package/lib/checks/navigation/region.json +0 -14
  211. package/lib/checks/navigation/skip-link-evaluate.js +0 -11
  212. package/lib/checks/navigation/skip-link.json +0 -12
  213. package/lib/checks/navigation/unique-frame-title-after.js +0 -13
  214. package/lib/checks/navigation/unique-frame-title-evaluate.js +0 -9
  215. package/lib/checks/navigation/unique-frame-title.json +0 -12
  216. package/lib/checks/parsing/duplicate-id-active.json +0 -12
  217. package/lib/checks/parsing/duplicate-id-after.js +0 -12
  218. package/lib/checks/parsing/duplicate-id-aria.json +0 -12
  219. package/lib/checks/parsing/duplicate-id-evaluate.js +0 -24
  220. package/lib/checks/parsing/duplicate-id.json +0 -12
  221. package/lib/checks/shared/aria-label-evaluate.js +0 -8
  222. package/lib/checks/shared/aria-label.json +0 -11
  223. package/lib/checks/shared/aria-labelledby-evaluate.js +0 -12
  224. package/lib/checks/shared/aria-labelledby.json +0 -12
  225. package/lib/checks/shared/avoid-inline-spacing-evaluate.js +0 -16
  226. package/lib/checks/shared/avoid-inline-spacing.json +0 -17
  227. package/lib/checks/shared/button-has-visible-text.json +0 -12
  228. package/lib/checks/shared/doc-has-title-evaluate.js +0 -8
  229. package/lib/checks/shared/doc-has-title.json +0 -11
  230. package/lib/checks/shared/exists-evaluate.js +0 -5
  231. package/lib/checks/shared/exists.json +0 -11
  232. package/lib/checks/shared/has-alt-evaluate.js +0 -10
  233. package/lib/checks/shared/has-alt.json +0 -11
  234. package/lib/checks/shared/has-visible-text.json +0 -12
  235. package/lib/checks/shared/is-on-screen-evaluate.js +0 -8
  236. package/lib/checks/shared/is-on-screen.json +0 -11
  237. package/lib/checks/shared/non-empty-alt.json +0 -17
  238. package/lib/checks/shared/non-empty-if-present-evaluate.js +0 -19
  239. package/lib/checks/shared/non-empty-if-present.json +0 -14
  240. package/lib/checks/shared/non-empty-placeholder.json +0 -17
  241. package/lib/checks/shared/non-empty-title.json +0 -17
  242. package/lib/checks/shared/non-empty-value.json +0 -17
  243. package/lib/checks/shared/presentational-role-evaluate.js +0 -42
  244. package/lib/checks/shared/presentational-role.json +0 -16
  245. package/lib/checks/shared/role-none.json +0 -19
  246. package/lib/checks/shared/role-presentation.json +0 -19
  247. package/lib/checks/shared/svg-non-empty-title-evaluate.js +0 -33
  248. package/lib/checks/shared/svg-non-empty-title.json +0 -15
  249. package/lib/checks/tables/caption-faked-evaluate.js +0 -16
  250. package/lib/checks/tables/caption-faked.json +0 -11
  251. package/lib/checks/tables/html5-scope-evaluate.js +0 -11
  252. package/lib/checks/tables/html5-scope.json +0 -11
  253. package/lib/checks/tables/same-caption-summary-evaluate.js +0 -12
  254. package/lib/checks/tables/same-caption-summary.json +0 -11
  255. package/lib/checks/tables/scope-value-evaluate.js +0 -7
  256. package/lib/checks/tables/scope-value.json +0 -14
  257. package/lib/checks/tables/td-has-header-evaluate.js +0 -33
  258. package/lib/checks/tables/td-has-header.json +0 -11
  259. package/lib/checks/tables/td-headers-attr-evaluate.js +0 -67
  260. package/lib/checks/tables/td-headers-attr.json +0 -12
  261. package/lib/checks/tables/th-has-data-cells-evaluate.js +0 -82
  262. package/lib/checks/tables/th-has-data-cells.json +0 -12
  263. package/lib/checks/visibility/hidden-content-evaluate.js +0 -34
  264. package/lib/checks/visibility/hidden-content.json +0 -12
  265. package/lib/commons/aria/allowed-attr.js +0 -31
  266. package/lib/commons/aria/arialabel-text.js +0 -21
  267. package/lib/commons/aria/arialabelledby-text.js +0 -65
  268. package/lib/commons/aria/get-accessible-refs.js +0 -73
  269. package/lib/commons/aria/get-element-unallowed-roles.js +0 -110
  270. package/lib/commons/aria/get-explicit-role.js +0 -26
  271. package/lib/commons/aria/get-owned-virtual.js +0 -27
  272. package/lib/commons/aria/get-role-type.js +0 -21
  273. package/lib/commons/aria/get-role.js +0 -178
  274. package/lib/commons/aria/get-roles-by-type.js +0 -16
  275. package/lib/commons/aria/get-roles-with-name-from-contents.js +0 -15
  276. package/lib/commons/aria/implicit-nodes.js +0 -23
  277. package/lib/commons/aria/implicit-role.js +0 -44
  278. package/lib/commons/aria/index.js +0 -32
  279. package/lib/commons/aria/is-accessible-ref.js +0 -12
  280. package/lib/commons/aria/is-aria-role-allowed-on-element.js +0 -32
  281. package/lib/commons/aria/is-unsupported-role.js +0 -16
  282. package/lib/commons/aria/is-valid-role.js +0 -22
  283. package/lib/commons/aria/label-virtual.js +0 -46
  284. package/lib/commons/aria/label.js +0 -17
  285. package/lib/commons/aria/lookup-table.js +0 -2435
  286. package/lib/commons/aria/named-from-contents.js +0 -39
  287. package/lib/commons/aria/required-attr.js +0 -21
  288. package/lib/commons/aria/required-context.js +0 -21
  289. package/lib/commons/aria/required-owned.js +0 -21
  290. package/lib/commons/aria/validate-attr-value.js +0 -70
  291. package/lib/commons/aria/validate-attr.js +0 -16
  292. package/lib/commons/color/center-point-of-rect.js +0 -31
  293. package/lib/commons/color/color.js +0 -250
  294. package/lib/commons/color/element-has-image.js +0 -35
  295. package/lib/commons/color/element-is-distinct.js +0 -87
  296. package/lib/commons/color/filtered-rect-stack.js +0 -51
  297. package/lib/commons/color/flatten-colors.js +0 -22
  298. package/lib/commons/color/get-background-color.js +0 -84
  299. package/lib/commons/color/get-background-stack.js +0 -130
  300. package/lib/commons/color/get-contrast.js +0 -27
  301. package/lib/commons/color/get-foreground-color.js +0 -69
  302. package/lib/commons/color/get-own-background-color.js +0 -24
  303. package/lib/commons/color/get-rect-stack.js +0 -32
  304. package/lib/commons/color/get-text-shadow-colors.js +0 -121
  305. package/lib/commons/color/has-valid-contrast-ratio.js +0 -30
  306. package/lib/commons/color/incomplete-data.js +0 -47
  307. package/lib/commons/color/index.js +0 -20
  308. package/lib/commons/dom/find-elms-in-context.js +0 -31
  309. package/lib/commons/dom/find-up-virtual.js +0 -52
  310. package/lib/commons/dom/find-up.js +0 -20
  311. package/lib/commons/dom/focus-disabled.js +0 -30
  312. package/lib/commons/dom/get-composed-parent.js +0 -26
  313. package/lib/commons/dom/get-element-by-reference.js +0 -34
  314. package/lib/commons/dom/get-element-coordinates.js +0 -38
  315. package/lib/commons/dom/get-element-stack.js +0 -28
  316. package/lib/commons/dom/get-rect-stack.js +0 -514
  317. package/lib/commons/dom/get-root-node.js +0 -12
  318. package/lib/commons/dom/get-scroll-offset.js +0 -32
  319. package/lib/commons/dom/get-tabbable-elements.js +0 -26
  320. package/lib/commons/dom/get-text-element-stack.js +0 -89
  321. package/lib/commons/dom/get-viewport-size.js +0 -35
  322. package/lib/commons/dom/has-content-virtual.js +0 -53
  323. package/lib/commons/dom/has-content.js +0 -21
  324. package/lib/commons/dom/idrefs.js +0 -41
  325. package/lib/commons/dom/index.js +0 -38
  326. package/lib/commons/dom/inserted-into-focus-order.js +0 -24
  327. package/lib/commons/dom/is-focusable.js +0 -36
  328. package/lib/commons/dom/is-hidden-with-css.js +0 -76
  329. package/lib/commons/dom/is-html5.js +0 -17
  330. package/lib/commons/dom/is-in-text-block.js +0 -107
  331. package/lib/commons/dom/is-modal-open.js +0 -104
  332. package/lib/commons/dom/is-natively-focusable.js +0 -41
  333. package/lib/commons/dom/is-node.js +0 -14
  334. package/lib/commons/dom/is-offscreen.js +0 -66
  335. package/lib/commons/dom/is-opaque.js +0 -16
  336. package/lib/commons/dom/is-skip-link.js +0 -49
  337. package/lib/commons/dom/is-visible.js +0 -201
  338. package/lib/commons/dom/is-visual-content.js +0 -49
  339. package/lib/commons/dom/reduce-to-elements-below-floating.js +0 -36
  340. package/lib/commons/dom/shadow-elements-from-point.js +0 -47
  341. package/lib/commons/dom/url-props-from-attribute.js +0 -152
  342. package/lib/commons/dom/visually-contains.js +0 -113
  343. package/lib/commons/dom/visually-overlaps.js +0 -46
  344. package/lib/commons/forms/index.js +0 -12
  345. package/lib/commons/forms/is-aria-combobox.js +0 -15
  346. package/lib/commons/forms/is-aria-listbox.js +0 -15
  347. package/lib/commons/forms/is-aria-range.js +0 -17
  348. package/lib/commons/forms/is-aria-textbox.js +0 -15
  349. package/lib/commons/forms/is-disabled.js +0 -40
  350. package/lib/commons/forms/is-native-select.js +0 -17
  351. package/lib/commons/forms/is-native-textbox.js +0 -34
  352. package/lib/commons/index.js +0 -31
  353. package/lib/commons/matches/attributes.js +0 -32
  354. package/lib/commons/matches/condition.js +0 -20
  355. package/lib/commons/matches/explicit-role.js +0 -24
  356. package/lib/commons/matches/from-definition.js +0 -73
  357. package/lib/commons/matches/from-function.js +0 -40
  358. package/lib/commons/matches/from-primative.js +0 -44
  359. package/lib/commons/matches/implicit-role.js +0 -24
  360. package/lib/commons/matches/index.js +0 -29
  361. package/lib/commons/matches/matches.js +0 -39
  362. package/lib/commons/matches/node-name.js +0 -29
  363. package/lib/commons/matches/properties.js +0 -32
  364. package/lib/commons/matches/semantic-role.js +0 -24
  365. package/lib/commons/standards/get-aria-roles-by-type.js +0 -14
  366. package/lib/commons/standards/get-aria-roles-supporting-name-from-content.js +0 -22
  367. package/lib/commons/standards/get-element-spec.js +0 -54
  368. package/lib/commons/standards/get-elements-by-content-type.js +0 -30
  369. package/lib/commons/standards/get-global-aria-attrs.js +0 -22
  370. package/lib/commons/standards/implicit-html-roles.js +0 -186
  371. package/lib/commons/standards/index.js +0 -11
  372. package/lib/commons/table/get-all-cells.js +0 -28
  373. package/lib/commons/table/get-cell-position.js +0 -32
  374. package/lib/commons/table/get-headers.js +0 -102
  375. package/lib/commons/table/get-scope.js +0 -58
  376. package/lib/commons/table/index.js +0 -19
  377. package/lib/commons/table/is-column-header.js +0 -15
  378. package/lib/commons/table/is-data-cell.js +0 -24
  379. package/lib/commons/table/is-data-table.js +0 -195
  380. package/lib/commons/table/is-header.js +0 -26
  381. package/lib/commons/table/is-row-header.js +0 -15
  382. package/lib/commons/table/to-grid.js +0 -48
  383. package/lib/commons/table/traverse.js +0 -76
  384. package/lib/commons/text/accessible-text-virtual.js +0 -152
  385. package/lib/commons/text/accessible-text.js +0 -19
  386. package/lib/commons/text/form-control-value.js +0 -216
  387. package/lib/commons/text/has-unicode.js +0 -38
  388. package/lib/commons/text/index.js +0 -32
  389. package/lib/commons/text/is-human-interpretable.js +0 -54
  390. package/lib/commons/text/is-icon-ligature.js +0 -214
  391. package/lib/commons/text/is-valid-autocomplete.js +0 -118
  392. package/lib/commons/text/label-text.js +0 -70
  393. package/lib/commons/text/label-virtual.js +0 -50
  394. package/lib/commons/text/label.js +0 -19
  395. package/lib/commons/text/native-element-type.js +0 -101
  396. package/lib/commons/text/native-text-alternative.js +0 -46
  397. package/lib/commons/text/native-text-methods.js +0 -136
  398. package/lib/commons/text/remove-unicode.js +0 -38
  399. package/lib/commons/text/sanitize.js +0 -21
  400. package/lib/commons/text/subtree-text.js +0 -74
  401. package/lib/commons/text/title-text.js +0 -33
  402. package/lib/commons/text/unicode.js +0 -85
  403. package/lib/commons/text/unsupported.js +0 -5
  404. package/lib/commons/text/visible-text-nodes.js +0 -27
  405. package/lib/commons/text/visible-virtual.js +0 -46
  406. package/lib/commons/text/visible.js +0 -18
  407. package/lib/core/base/audit.js +0 -767
  408. package/lib/core/base/cache.js +0 -30
  409. package/lib/core/base/check-result.js +0 -31
  410. package/lib/core/base/check.js +0 -215
  411. package/lib/core/base/context.js +0 -280
  412. package/lib/core/base/metadata-function-map.js +0 -353
  413. package/lib/core/base/rule-result.js +0 -39
  414. package/lib/core/base/rule.js +0 -611
  415. package/lib/core/base/virtual-node/abstract-virtual-node.js +0 -43
  416. package/lib/core/base/virtual-node/serial-virtual-node.js +0 -117
  417. package/lib/core/base/virtual-node/virtual-node.js +0 -194
  418. package/lib/core/constants.js +0 -70
  419. package/lib/core/core.js +0 -91
  420. package/lib/core/imports/index.js +0 -39
  421. package/lib/core/index.js +0 -40
  422. package/lib/core/log.js +0 -13
  423. package/lib/core/public/cleanup.js +0 -51
  424. package/lib/core/public/configure.js +0 -134
  425. package/lib/core/public/frame-messenger.js +0 -5
  426. package/lib/core/public/get-rules.js +0 -29
  427. package/lib/core/public/load.js +0 -65
  428. package/lib/core/public/plugins.js +0 -39
  429. package/lib/core/public/reporter.js +0 -25
  430. package/lib/core/public/reset.js +0 -13
  431. package/lib/core/public/run-rules.js +0 -83
  432. package/lib/core/public/run-virtual-rule.js +0 -63
  433. package/lib/core/public/run.js +0 -186
  434. package/lib/core/public/setup.js +0 -20
  435. package/lib/core/public/teardown.js +0 -21
  436. package/lib/core/reporters/helpers/failure-summary.js +0 -33
  437. package/lib/core/reporters/helpers/get-environment-data.js +0 -39
  438. package/lib/core/reporters/helpers/incomplete-fallback-msg.js +0 -12
  439. package/lib/core/reporters/helpers/index.js +0 -21
  440. package/lib/core/reporters/helpers/process-aggregate.js +0 -110
  441. package/lib/core/reporters/na.js +0 -24
  442. package/lib/core/reporters/no-passes.js +0 -20
  443. package/lib/core/reporters/raw-env.js +0 -17
  444. package/lib/core/reporters/raw.js +0 -32
  445. package/lib/core/reporters/v1.js +0 -33
  446. package/lib/core/reporters/v2.js +0 -19
  447. package/lib/core/utils/aggregate-checks.js +0 -90
  448. package/lib/core/utils/aggregate-node-results.js +0 -65
  449. package/lib/core/utils/aggregate-result.js +0 -39
  450. package/lib/core/utils/aggregate.js +0 -21
  451. package/lib/core/utils/are-styles-set.js +0 -18
  452. package/lib/core/utils/assert.js +0 -12
  453. package/lib/core/utils/check-helper.js +0 -36
  454. package/lib/core/utils/clone.js +0 -28
  455. package/lib/core/utils/closest.js +0 -30
  456. package/lib/core/utils/collect-results-from-frames.js +0 -84
  457. package/lib/core/utils/contains.js +0 -46
  458. package/lib/core/utils/css-parser.js +0 -9
  459. package/lib/core/utils/deep-merge.js +0 -31
  460. package/lib/core/utils/dq-element.js +0 -131
  461. package/lib/core/utils/element-matches.js +0 -43
  462. package/lib/core/utils/escape-selector.js +0 -79
  463. package/lib/core/utils/extend-meta-data.js +0 -20
  464. package/lib/core/utils/filter-html-attrs.js +0 -75
  465. package/lib/core/utils/finalize-result.js +0 -28
  466. package/lib/core/utils/find-by.js +0 -16
  467. package/lib/core/utils/frame-messenger/assert-window.js +0 -21
  468. package/lib/core/utils/frame-messenger/channel-store.js +0 -23
  469. package/lib/core/utils/frame-messenger/create-responder.js +0 -15
  470. package/lib/core/utils/frame-messenger/message-handler.js +0 -72
  471. package/lib/core/utils/frame-messenger/message-id.js +0 -22
  472. package/lib/core/utils/frame-messenger/message-parser.js +0 -109
  473. package/lib/core/utils/frame-messenger/post-message.js +0 -54
  474. package/lib/core/utils/frame-messenger/process-error.js +0 -30
  475. package/lib/core/utils/frame-messenger.js +0 -40
  476. package/lib/core/utils/get-all-checks.js +0 -13
  477. package/lib/core/utils/get-ancestry.js +0 -31
  478. package/lib/core/utils/get-base-lang.js +0 -18
  479. package/lib/core/utils/get-check-message.js +0 -24
  480. package/lib/core/utils/get-check-option.js +0 -41
  481. package/lib/core/utils/get-flattened-tree.js +0 -151
  482. package/lib/core/utils/get-friendly-uri-end.js +0 -143
  483. package/lib/core/utils/get-node-attributes.js +0 -22
  484. package/lib/core/utils/get-node-from-tree.js +0 -14
  485. package/lib/core/utils/get-root-node.js +0 -17
  486. package/lib/core/utils/get-rule.js +0 -17
  487. package/lib/core/utils/get-scroll-state.js +0 -43
  488. package/lib/core/utils/get-scroll.js +0 -41
  489. package/lib/core/utils/get-selector.js +0 -395
  490. package/lib/core/utils/get-shadow-selector.js +0 -31
  491. package/lib/core/utils/get-standards.js +0 -6
  492. package/lib/core/utils/get-stylesheet-factory.js +0 -53
  493. package/lib/core/utils/get-xpath.js +0 -84
  494. package/lib/core/utils/index.js +0 -90
  495. package/lib/core/utils/inject-style.js +0 -33
  496. package/lib/core/utils/is-hidden.js +0 -55
  497. package/lib/core/utils/is-html-element.js +0 -137
  498. package/lib/core/utils/is-node-in-context.js +0 -46
  499. package/lib/core/utils/is-shadow-root.js +0 -40
  500. package/lib/core/utils/is-xhtml.js +0 -15
  501. package/lib/core/utils/matches.js +0 -263
  502. package/lib/core/utils/memoize.js +0 -22
  503. package/lib/core/utils/merge-results.js +0 -134
  504. package/lib/core/utils/node-sorter.js +0 -23
  505. package/lib/core/utils/parse-crossorigin-stylesheet.js +0 -66
  506. package/lib/core/utils/parse-sameorigin-stylesheet.js +0 -100
  507. package/lib/core/utils/parse-stylesheet.js +0 -75
  508. package/lib/core/utils/performance-timer.js +0 -126
  509. package/lib/core/utils/pollyfills.js +0 -347
  510. package/lib/core/utils/preload-cssom.js +0 -249
  511. package/lib/core/utils/preload-media.js +0 -70
  512. package/lib/core/utils/preload.js +0 -150
  513. package/lib/core/utils/process-message.js +0 -77
  514. package/lib/core/utils/publish-metadata.js +0 -109
  515. package/lib/core/utils/query-selector-all-filter.js +0 -104
  516. package/lib/core/utils/query-selector-all.js +0 -15
  517. package/lib/core/utils/queue.js +0 -137
  518. package/lib/core/utils/respondable.js +0 -108
  519. package/lib/core/utils/rule-should-run.js +0 -83
  520. package/lib/core/utils/select.js +0 -87
  521. package/lib/core/utils/send-command-to-frame.js +0 -65
  522. package/lib/core/utils/set-scroll-state.js +0 -21
  523. package/lib/core/utils/to-array.js +0 -10
  524. package/lib/core/utils/token-list.js +0 -15
  525. package/lib/core/utils/unique-array.js +0 -13
  526. package/lib/core/utils/uuid.js +0 -253
  527. package/lib/core/utils/valid-input-type.js +0 -35
  528. package/lib/core/utils/valid-langs.js +0 -105
  529. package/lib/intro.stub +0 -15
  530. package/lib/misc/any-failure-summary.json +0 -6
  531. package/lib/misc/incomplete-fallback.json +0 -3
  532. package/lib/misc/none-failure-summary.json +0 -6
  533. package/lib/outro.stub +0 -2
  534. package/lib/rules/accesskeys.json +0 -13
  535. package/lib/rules/area-alt.json +0 -22
  536. package/lib/rules/aria-allowed-attr-matches.js +0 -15
  537. package/lib/rules/aria-allowed-attr.json +0 -12
  538. package/lib/rules/aria-allowed-role-matches.js +0 -12
  539. package/lib/rules/aria-allowed-role.json +0 -14
  540. package/lib/rules/aria-command-name.json +0 -18
  541. package/lib/rules/aria-dialog-name.json +0 -13
  542. package/lib/rules/aria-has-attr-matches.js +0 -9
  543. package/lib/rules/aria-hidden-body.json +0 -14
  544. package/lib/rules/aria-hidden-focus-matches.js +0 -22
  545. package/lib/rules/aria-hidden-focus.json +0 -18
  546. package/lib/rules/aria-input-field-name.json +0 -13
  547. package/lib/rules/aria-meter-name.json +0 -13
  548. package/lib/rules/aria-progressbar-name.json +0 -13
  549. package/lib/rules/aria-required-attr.json +0 -12
  550. package/lib/rules/aria-required-children-matches.js +0 -8
  551. package/lib/rules/aria-required-children.json +0 -13
  552. package/lib/rules/aria-required-parent-matches.js +0 -8
  553. package/lib/rules/aria-required-parent.json +0 -13
  554. package/lib/rules/aria-roledescription.json +0 -12
  555. package/lib/rules/aria-roles.json +0 -13
  556. package/lib/rules/aria-text.json +0 -12
  557. package/lib/rules/aria-toggle-field-name.json +0 -18
  558. package/lib/rules/aria-tooltip-name.json +0 -18
  559. package/lib/rules/aria-treeitem-name.json +0 -18
  560. package/lib/rules/aria-valid-attr-value.json +0 -12
  561. package/lib/rules/aria-valid-attr.json +0 -12
  562. package/lib/rules/audio-caption.json +0 -20
  563. package/lib/rules/autocomplete-matches.js +0 -58
  564. package/lib/rules/autocomplete-valid.json +0 -12
  565. package/lib/rules/avoid-inline-spacing.json +0 -12
  566. package/lib/rules/blink.json +0 -19
  567. package/lib/rules/button-name.json +0 -26
  568. package/lib/rules/bypass-matches.js +0 -14
  569. package/lib/rules/bypass.json +0 -21
  570. package/lib/rules/color-contrast-matches.js +0 -156
  571. package/lib/rules/color-contrast.json +0 -13
  572. package/lib/rules/css-orientation-lock.json +0 -13
  573. package/lib/rules/data-table-large-matches.js +0 -17
  574. package/lib/rules/data-table-matches.js +0 -7
  575. package/lib/rules/definition-list.json +0 -13
  576. package/lib/rules/dlitem.json +0 -13
  577. package/lib/rules/document-title.json +0 -13
  578. package/lib/rules/duplicate-id-active-matches.js +0 -15
  579. package/lib/rules/duplicate-id-active.json +0 -14
  580. package/lib/rules/duplicate-id-aria-matches.js +0 -7
  581. package/lib/rules/duplicate-id-aria.json +0 -14
  582. package/lib/rules/duplicate-id-misc-matches.js +0 -17
  583. package/lib/rules/duplicate-id.json +0 -14
  584. package/lib/rules/empty-heading.json +0 -19
  585. package/lib/rules/empty-table-header.json +0 -13
  586. package/lib/rules/focus-order-semantics.json +0 -13
  587. package/lib/rules/form-field-multiple-labels.json +0 -13
  588. package/lib/rules/frame-focusable-content-matches.js +0 -9
  589. package/lib/rules/frame-focusable-content.json +0 -13
  590. package/lib/rules/frame-tested.json +0 -12
  591. package/lib/rules/frame-title-has-text-matches.js +0 -8
  592. package/lib/rules/frame-title-unique.json +0 -13
  593. package/lib/rules/frame-title.json +0 -24
  594. package/lib/rules/has-implicit-chromium-role-matches.js +0 -7
  595. package/lib/rules/heading-matches.js +0 -19
  596. package/lib/rules/heading-order.json +0 -13
  597. package/lib/rules/hidden-content.json +0 -13
  598. package/lib/rules/html-has-lang.json +0 -13
  599. package/lib/rules/html-lang-valid.json +0 -12
  600. package/lib/rules/html-namespace-matches.js +0 -7
  601. package/lib/rules/html-xml-lang-mismatch.json +0 -13
  602. package/lib/rules/identical-links-same-purpose-matches.js +0 -18
  603. package/lib/rules/identical-links-same-purpose.json +0 -14
  604. package/lib/rules/image-alt.json +0 -26
  605. package/lib/rules/img-redundant-alt.json +0 -12
  606. package/lib/rules/input-button-name.json +0 -26
  607. package/lib/rules/input-image-alt.json +0 -20
  608. package/lib/rules/inserted-into-focus-order-matches.js +0 -7
  609. package/lib/rules/is-initiator-matches.js +0 -5
  610. package/lib/rules/label-content-name-mismatch-matches.js +0 -52
  611. package/lib/rules/label-content-name-mismatch.json +0 -12
  612. package/lib/rules/label-matches.js +0 -15
  613. package/lib/rules/label-title-only.json +0 -13
  614. package/lib/rules/label.json +0 -29
  615. package/lib/rules/landmark-banner-is-top-level.json +0 -13
  616. package/lib/rules/landmark-complementary-is-top-level.json +0 -12
  617. package/lib/rules/landmark-contentinfo-is-top-level.json +0 -13
  618. package/lib/rules/landmark-has-body-context-matches.js +0 -13
  619. package/lib/rules/landmark-main-is-top-level.json +0 -12
  620. package/lib/rules/landmark-no-duplicate-banner.json +0 -12
  621. package/lib/rules/landmark-no-duplicate-contentinfo.json +0 -12
  622. package/lib/rules/landmark-no-duplicate-main.json +0 -12
  623. package/lib/rules/landmark-one-main.json +0 -12
  624. package/lib/rules/landmark-unique-matches.js +0 -50
  625. package/lib/rules/landmark-unique.json +0 -13
  626. package/lib/rules/layout-table-matches.js +0 -8
  627. package/lib/rules/link-in-text-block-matches.js +0 -21
  628. package/lib/rules/link-in-text-block.json +0 -14
  629. package/lib/rules/link-name.json +0 -25
  630. package/lib/rules/list.json +0 -13
  631. package/lib/rules/listitem.json +0 -13
  632. package/lib/rules/marquee.json +0 -13
  633. package/lib/rules/meta-refresh.json +0 -20
  634. package/lib/rules/meta-viewport-large.json +0 -14
  635. package/lib/rules/meta-viewport.json +0 -14
  636. package/lib/rules/nested-interactive-matches.js +0 -13
  637. package/lib/rules/nested-interactive.json +0 -12
  638. package/lib/rules/no-autoplay-audio-matches.js +0 -22
  639. package/lib/rules/no-autoplay-audio.json +0 -15
  640. package/lib/rules/no-empty-role-matches.js +0 -13
  641. package/lib/rules/no-explicit-name-required-matches.js +0 -22
  642. package/lib/rules/no-naming-method-matches.js +0 -24
  643. package/lib/rules/no-role-matches.js +0 -5
  644. package/lib/rules/not-html-matches.js +0 -5
  645. package/lib/rules/object-alt.json +0 -24
  646. package/lib/rules/p-as-heading-matches.js +0 -21
  647. package/lib/rules/p-as-heading.json +0 -13
  648. package/lib/rules/page-has-heading-one.json +0 -12
  649. package/lib/rules/presentation-role-conflict-matches.js +0 -7
  650. package/lib/rules/presentation-role-conflict.json +0 -13
  651. package/lib/rules/region.json +0 -12
  652. package/lib/rules/role-img-alt.json +0 -20
  653. package/lib/rules/scope-attr-valid.json +0 -12
  654. package/lib/rules/scrollable-region-focusable-matches.js +0 -75
  655. package/lib/rules/scrollable-region-focusable.json +0 -12
  656. package/lib/rules/select-name.json +0 -27
  657. package/lib/rules/server-side-image-map.json +0 -18
  658. package/lib/rules/skip-link-matches.js +0 -7
  659. package/lib/rules/skip-link.json +0 -13
  660. package/lib/rules/svg-img-alt.json +0 -25
  661. package/lib/rules/svg-namespace-matches.js +0 -18
  662. package/lib/rules/tabindex.json +0 -12
  663. package/lib/rules/table-duplicate-name.json +0 -12
  664. package/lib/rules/table-fake-caption.json +0 -20
  665. package/lib/rules/td-has-header.json +0 -20
  666. package/lib/rules/td-headers-attr.json +0 -12
  667. package/lib/rules/th-has-data-cells.json +0 -13
  668. package/lib/rules/valid-lang.json +0 -13
  669. package/lib/rules/video-caption.json +0 -19
  670. package/lib/rules/window-is-top-matches.js +0 -8
  671. package/lib/rules/xml-lang-mismatch-matches.js +0 -14
  672. package/lib/standards/aria-attrs.js +0 -209
  673. package/lib/standards/aria-roles.js +0 -835
  674. package/lib/standards/css-colors.js +0 -153
  675. package/lib/standards/dpub-roles.js +0 -219
  676. package/lib/standards/graphics-roles.js +0 -22
  677. package/lib/standards/html-elms.js +0 -933
  678. package/lib/standards/index.js +0 -37
  679. package/sri-history.json +0 -274
  680. package/typings/axe-core/axe-core-tests.js +0 -203
  681. package/typings/axe-core/axe-core-tests.ts +0 -233
@@ -1,84 +0,0 @@
1
- import incompleteData from './incomplete-data';
2
- import getBackgroundStack from './get-background-stack';
3
- import getOwnBackgroundColor from './get-own-background-color';
4
- import elementHasImage from './element-has-image';
5
- import Color from './color';
6
- import flattenColors from './flatten-colors';
7
- import getTextShadowColors from './get-text-shadow-colors';
8
- import visuallyContains from '../dom/visually-contains';
9
-
10
- /**
11
- * Determine if element is partially overlapped, triggering a Can't Tell result
12
- * @private
13
- * @param {Element} elm
14
- * @param {Element} bgElm
15
- * @param {Object} bgColor
16
- * @return {Boolean}
17
- */
18
- function elmPartiallyObscured(elm, bgElm, bgColor) {
19
- var obscured =
20
- elm !== bgElm && !visuallyContains(elm, bgElm) && bgColor.alpha !== 0;
21
- if (obscured) {
22
- incompleteData.set('bgColor', 'elmPartiallyObscured');
23
- }
24
- return obscured;
25
- }
26
-
27
- /**
28
- * Returns background color for element
29
- * Uses getBackgroundStack() to get all elements rendered underneath the current element,
30
- * to help determine the composite background color.
31
- *
32
- * @method getBackgroundColor
33
- * @memberof axe.commons.color
34
- * @param {Element} elm Element to determine background color
35
- * @param {Array} [bgElms=[]] elements to inspect
36
- * @param {Number} shadowOutlineEmMax Thickness of `text-shadow` at which it becomes a background color
37
- * @returns {Color}
38
- */
39
- function getBackgroundColor(elm, bgElms = [], shadowOutlineEmMax = 0.1) {
40
- let bgColors = getTextShadowColors(elm, { minRatio: shadowOutlineEmMax });
41
- const elmStack = getBackgroundStack(elm);
42
-
43
- // Search the stack until we have an alpha === 1 background
44
- (elmStack || []).some(bgElm => {
45
- const bgElmStyle = window.getComputedStyle(bgElm);
46
-
47
- // Get the background color
48
- const bgColor = getOwnBackgroundColor(bgElmStyle);
49
-
50
- if (
51
- // abort if a node is partially obscured and obscuring element has a background
52
- elmPartiallyObscured(elm, bgElm, bgColor) ||
53
- // OR if the background elm is a graphic
54
- elementHasImage(bgElm, bgElmStyle)
55
- ) {
56
- bgColors = null;
57
- bgElms.push(bgElm);
58
-
59
- return true;
60
- }
61
-
62
- if (bgColor.alpha !== 0) {
63
- // store elements contributing to the br color.
64
- bgElms.push(bgElm);
65
- bgColors.push(bgColor);
66
-
67
- // Exit if the background is opaque
68
- return bgColor.alpha === 1;
69
- } else {
70
- return false;
71
- }
72
- });
73
-
74
- if (bgColors === null || elmStack === null) {
75
- return null;
76
- }
77
-
78
- // Mix the colors together, on top of a default white
79
- bgColors.push(new Color(255, 255, 255, 1));
80
- var colors = bgColors.reduce(flattenColors);
81
- return colors;
82
- }
83
-
84
- export default getBackgroundColor;
@@ -1,130 +0,0 @@
1
- import filteredRectStack from './filtered-rect-stack';
2
- import elementHasImage from './element-has-image';
3
- import getOwnBackgroundColor from './get-own-background-color';
4
- import incompleteData from './incomplete-data';
5
- import shadowElementsFromPoint from '../dom/shadow-elements-from-point';
6
- import reduceToElementsBelowFloating from '../dom/reduce-to-elements-below-floating';
7
-
8
- /**
9
- * Determines overlap of node's content with a bgNode. Used for inline elements
10
- * @private
11
- * @param {Element} targetElement
12
- * @param {Element} bgNode
13
- * @return {Boolean}
14
- */
15
- function contentOverlapping(targetElement, bgNode) {
16
- // get content box of target element
17
- // check to see if the current bgNode is overlapping
18
- var targetRect = targetElement.getClientRects()[0];
19
- var obscuringElements = shadowElementsFromPoint(
20
- targetRect.left,
21
- targetRect.top
22
- );
23
- if (obscuringElements) {
24
- for (var i = 0; i < obscuringElements.length; i++) {
25
- if (
26
- obscuringElements[i] !== targetElement &&
27
- obscuringElements[i] === bgNode
28
- ) {
29
- return true;
30
- }
31
- }
32
- }
33
- return false;
34
- }
35
-
36
- /**
37
- * Calculate alpha transparency of a background element obscuring the current node
38
- * @private
39
- * @param {Number} elmIndex
40
- * @param {Array} elmStack
41
- * @param {Element} originalElm
42
- * @return {Number|undefined}
43
- */
44
- function calculateObscuringElement(elmIndex, elmStack, originalElm) {
45
- if (elmIndex > 0) {
46
- // there are elements above our element, check if they contribute to the background
47
- for (var i = elmIndex - 1; i >= 0; i--) {
48
- const bgElm = elmStack[i];
49
- if (contentOverlapping(originalElm, bgElm)) {
50
- return true;
51
- } else {
52
- // remove elements not contributing to the background
53
- elmStack.splice(i, 1);
54
- }
55
- }
56
- }
57
-
58
- return false;
59
- }
60
-
61
- /**
62
- * Look at document and body elements for relevant background information
63
- * @method sortPageBackground
64
- * @private
65
- * @param {Array} elmStack
66
- * @returns {Array}
67
- */
68
- function sortPageBackground(elmStack) {
69
- const bodyIndex = elmStack.indexOf(document.body);
70
- const bgNodes = elmStack;
71
-
72
- // Body can sometimes appear out of order in the stack:
73
- // 1) Body is not the first element due to negative z-index elements
74
- // 2) Elements are positioned outside of body's rect coordinates
75
- // (see https://github.com/dequelabs/axe-core/issues/1456)
76
- // In those instances we want to reinsert body back into the element stack
77
- // when not using the root document element as the html canvas for bgcolor
78
- // prettier-ignore
79
- const sortBodyElement =
80
- bodyIndex > 1 || // negative z-index elements
81
- bodyIndex === -1; // element does not intersect with body
82
-
83
- if (
84
- sortBodyElement &&
85
- !elementHasImage(document.documentElement) &&
86
- getOwnBackgroundColor(window.getComputedStyle(document.documentElement))
87
- .alpha === 0
88
- ) {
89
- // Only remove document.body if it was originally contained within the element stack
90
- if (bodyIndex > 1) {
91
- bgNodes.splice(bodyIndex, 1);
92
- }
93
- // Remove document element since body will be used for bgcolor
94
- bgNodes.splice(elmStack.indexOf(document.documentElement), 1);
95
-
96
- // Put the body background as the lowest element
97
- bgNodes.push(document.body);
98
- }
99
- return bgNodes;
100
- }
101
-
102
- /**
103
- * Get all elements rendered underneath the current element,
104
- * In the order they are displayed (front to back)
105
- *
106
- * @method getBackgroundStack
107
- * @memberof axe.commons.color
108
- * @param {Element} elm
109
- * @return {Array}
110
- */
111
- function getBackgroundStack(elm) {
112
- let elmStack = filteredRectStack(elm);
113
-
114
- if (elmStack === null) {
115
- return null;
116
- }
117
- elmStack = reduceToElementsBelowFloating(elmStack, elm);
118
- elmStack = sortPageBackground(elmStack);
119
-
120
- // Return all elements BELOW the current element, null if the element is undefined
121
- const elmIndex = elmStack.indexOf(elm);
122
- if (calculateObscuringElement(elmIndex, elmStack, elm)) {
123
- // if the total of the elements above our element results in total obscuring, return null
124
- incompleteData.set('bgColor', 'bgOverlap');
125
- return null;
126
- }
127
- return elmIndex !== -1 ? elmStack : null;
128
- }
129
-
130
- export default getBackgroundStack;
@@ -1,27 +0,0 @@
1
- import flattenColors from './flatten-colors';
2
-
3
- /**
4
- * Get the contrast of two colors
5
- * @method getContrast
6
- * @memberof axe.commons.color.Color
7
- * @instance
8
- * @param {Color} bgcolor Background color
9
- * @param {Color} fgcolor Foreground color
10
- * @return {number} The contrast ratio
11
- */
12
- function getContrast(bgColor, fgColor) {
13
- if (!fgColor || !bgColor) {
14
- return null;
15
- }
16
-
17
- if (fgColor.alpha < 1) {
18
- fgColor = flattenColors(fgColor, bgColor);
19
- }
20
-
21
- var bL = bgColor.getRelativeLuminance();
22
- var fL = fgColor.getRelativeLuminance();
23
-
24
- return (Math.max(fL, bL) + 0.05) / (Math.min(fL, bL) + 0.05);
25
- }
26
-
27
- export default getContrast;
@@ -1,69 +0,0 @@
1
- import Color from './color';
2
- import getBackgroundColor from './get-background-color';
3
- import incompleteData from './incomplete-data';
4
- import flattenColors from './flatten-colors';
5
- import { getNodeFromTree } from '../../core/utils';
6
-
7
- function getOpacity(node) {
8
- if (!node) {
9
- return 1;
10
- }
11
-
12
- const vNode = getNodeFromTree(node);
13
-
14
- if (vNode && vNode._opacity !== undefined && vNode._opacity !== null) {
15
- return vNode._opacity;
16
- }
17
-
18
- const nodeStyle = window.getComputedStyle(node);
19
- const opacity = nodeStyle.getPropertyValue('opacity');
20
- const finalOpacity = opacity * getOpacity(node.parentElement);
21
-
22
- // cache the results of the getOpacity check on the parent tree
23
- // so we don't have to look at the parent tree again for all its
24
- // descendants
25
- if (vNode) {
26
- vNode._opacity = finalOpacity;
27
- }
28
-
29
- return finalOpacity;
30
- }
31
-
32
- /**
33
- * Returns the flattened foreground color of an element, or null if it can't be determined because
34
- * of transparency
35
- * @method getForegroundColor
36
- * @memberof axe.commons.color
37
- * @instance
38
- * @param {Element} node
39
- * @param {Boolean} noScroll (default false)
40
- * @param {Color} bgColor
41
- * @return {Color|null}
42
- *
43
- * @deprecated noScroll parameter
44
- */
45
- function getForegroundColor(node, _, bgColor) {
46
- const nodeStyle = window.getComputedStyle(node);
47
-
48
- const fgColor = new Color();
49
- fgColor.parseString(nodeStyle.getPropertyValue('color'));
50
- const opacity = getOpacity(node);
51
- fgColor.alpha = fgColor.alpha * opacity;
52
- if (fgColor.alpha === 1) {
53
- return fgColor;
54
- }
55
-
56
- if (!bgColor) {
57
- bgColor = getBackgroundColor(node, []);
58
- }
59
-
60
- if (bgColor === null) {
61
- const reason = incompleteData.get('bgColor');
62
- incompleteData.set('fgColor', reason);
63
- return null;
64
- }
65
-
66
- return flattenColors(fgColor, bgColor);
67
- }
68
-
69
- export default getForegroundColor;
@@ -1,24 +0,0 @@
1
- import Color from './color';
2
-
3
- /**
4
- * Returns the non-alpha-blended background color of an element
5
- *
6
- * @method getOwnBackgroundColor
7
- * @memberof axe.commons.color
8
- *
9
- * @param {Object} elmStyle style of the element
10
- * @return {Color}
11
- */
12
- function getOwnBackgroundColor(elmStyle) {
13
- const bgColor = new Color();
14
- bgColor.parseString(elmStyle.getPropertyValue('background-color'));
15
-
16
- if (bgColor.alpha !== 0) {
17
- const opacity = elmStyle.getPropertyValue('opacity');
18
- bgColor.alpha = bgColor.alpha * opacity;
19
- }
20
-
21
- return bgColor;
22
- }
23
-
24
- export default getOwnBackgroundColor;
@@ -1,32 +0,0 @@
1
- import getElementStack from '../dom/get-element-stack';
2
- import getTextElementStack from '../dom/get-text-element-stack';
3
-
4
- /**
5
- * Get relevant stacks of block and inline elements, excluding line breaks
6
- * @method getRectStack
7
- * @memberof axe.commons.color
8
- * @param {Element} elm
9
- * @return {Array}
10
- */
11
- function getRectStack(elm) {
12
- const boundingStack = getElementStack(elm);
13
-
14
- // Handle inline elements spanning multiple lines to be evaluated
15
- const filteredArr = getTextElementStack(elm);
16
-
17
- // If the element does not have multiple rects, like for display:block, return a single stack
18
- if (!filteredArr || filteredArr.length <= 1) {
19
- return [boundingStack];
20
- }
21
-
22
- if (filteredArr.some(stack => stack === undefined)) {
23
- // Can be happen when one or more of the rects sits outside the viewport
24
- return null;
25
- }
26
-
27
- // add bounding client rect stack for comparison later
28
- filteredArr.splice(0, 0, boundingStack);
29
- return filteredArr;
30
- }
31
-
32
- export default getRectStack;
@@ -1,121 +0,0 @@
1
- import Color from './color';
2
- import assert from '../../core/utils/assert';
3
-
4
- /**
5
- * Get text-shadow colors that can impact the color contrast of the text
6
- * @param {Element} node DOM Element
7
- * @param {Object} options (optional)
8
- * @property {Bool} minRatio Ignore shadows smaller than this, ratio shadow size divided by font size
9
- * @property {Bool} maxRatio Ignore shadows equal or larter than this, ratio shadow size divided by font size
10
- */
11
- function getTextShadowColors(node, { minRatio, maxRatio } = {}) {
12
- const style = window.getComputedStyle(node);
13
- const textShadow = style.getPropertyValue('text-shadow');
14
- if (textShadow === 'none') {
15
- return [];
16
- }
17
-
18
- const fontSizeStr = style.getPropertyValue('font-size');
19
- const fontSize = parseInt(fontSizeStr);
20
- assert(
21
- isNaN(fontSize) === false,
22
- `Unable to determine font-size value ${fontSizeStr}`
23
- );
24
-
25
- const shadowColors = [];
26
- const shadows = parseTextShadows(textShadow);
27
- shadows.forEach(({ colorStr, pixels }) => {
28
- // Defautls only necessary for IE
29
- colorStr = colorStr || style.getPropertyValue('color');
30
- const [offsetY, offsetX, blurRadius = 0] = pixels;
31
- if (
32
- (!minRatio || blurRadius >= fontSize * minRatio) &&
33
- (!maxRatio || blurRadius < fontSize * maxRatio)
34
- ) {
35
- const color = textShadowColor({
36
- colorStr,
37
- offsetY,
38
- offsetX,
39
- blurRadius,
40
- fontSize
41
- });
42
- shadowColors.push(color);
43
- }
44
- });
45
- return shadowColors;
46
- }
47
-
48
- /**
49
- * Parse text-shadow property value. Required for IE, which can return the color
50
- * either at the start or the end, and either in rgb(a) or as a named color
51
- */
52
- function parseTextShadows(textShadow) {
53
- let current = { pixels: [] };
54
- let str = textShadow.trim();
55
- const shadows = [current];
56
- if (!str) {
57
- return [];
58
- }
59
-
60
- while (str) {
61
- const colorMatch =
62
- str.match(/^rgba?\([0-9,.\s]+\)/i) ||
63
- str.match(/^[a-z]+/i) ||
64
- str.match(/^#[0-9a-f]+/i);
65
- const pixelMatch = str.match(/^([0-9.-]+)px/i) || str.match(/^(0)/);
66
-
67
- if (colorMatch) {
68
- assert(
69
- !current.colorStr,
70
- `Multiple colors identified in text-shadow: ${textShadow}`
71
- );
72
- str = str.replace(colorMatch[0], '').trim();
73
- current.colorStr = colorMatch[0];
74
- } else if (pixelMatch) {
75
- assert(
76
- current.pixels.length < 3,
77
- `Too many pixel units in text-shadow: ${textShadow}`
78
- );
79
- str = str.replace(pixelMatch[0], '').trim();
80
- const pixelUnit = parseFloat(
81
- (pixelMatch[1][0] === '.' ? '0' : '') + pixelMatch[1]
82
- );
83
- current.pixels.push(pixelUnit);
84
- } else if (str[0] === ',') {
85
- // multiple text-shadows in a single string (e.g. `text-shadow: 1px 1px 1px #000, 3px 3px 5px blue;`
86
- assert(
87
- current.pixels.length >= 2,
88
- `Missing pixel value in text-shadow: ${textShadow}`
89
- );
90
- current = { pixels: [] };
91
- shadows.push(current);
92
- str = str.substr(1).trim();
93
- } else {
94
- throw new Error(`Unable to process text-shadows: ${textShadow}`);
95
- }
96
- }
97
-
98
- return shadows;
99
- }
100
-
101
- function textShadowColor({ colorStr, offsetX, offsetY, blurRadius, fontSize }) {
102
- if (offsetX > blurRadius || offsetY > blurRadius) {
103
- // Shadow is too far removed from the text to impact contrast
104
- return new Color(0, 0, 0, 0);
105
- }
106
-
107
- const shadowColor = new Color();
108
- shadowColor.parseString(colorStr);
109
- shadowColor.alpha *= blurRadiusToAlpha(blurRadius, fontSize);
110
-
111
- return shadowColor;
112
- }
113
-
114
- function blurRadiusToAlpha(blurRadius, fontSize) {
115
- // This formula is an estimate based on various tests.
116
- // Different people test this differently, so opinions may vary.
117
- const relativeBlur = blurRadius / fontSize;
118
- return 0.185 / (relativeBlur + 0.4);
119
- }
120
-
121
- export default getTextShadowColors;
@@ -1,30 +0,0 @@
1
- import getContrast from './get-contrast';
2
-
3
- /**
4
- * Check whether certain text properties meet WCAG contrast rules
5
- * @method hasValidContrastRatio
6
- * @memberof axe.commons.color.Color
7
- * @instance
8
- * @param {Color} bgcolor Background color
9
- * @param {Color} fgcolor Foreground color
10
- * @param {number} fontSize Font size of text, in pixels
11
- * @param {boolean} isBold Whether the text is bold
12
- * @return {{isValid: boolean, contrastRatio: number, expectedContrastRatio: number}}
13
- *
14
- * @deprecated
15
- */
16
- function hasValidContrastRatio(bg, fg, fontSize, isBold) {
17
- var contrast = getContrast(bg, fg);
18
- var isSmallFont =
19
- (isBold && Math.ceil(fontSize * 72) / 96 < 14) ||
20
- (!isBold && Math.ceil(fontSize * 72) / 96 < 18);
21
- var expectedContrastRatio = isSmallFont ? 4.5 : 3;
22
-
23
- return {
24
- isValid: contrast > expectedContrastRatio,
25
- contrastRatio: contrast,
26
- expectedContrastRatio: expectedContrastRatio
27
- };
28
- }
29
-
30
- export default hasValidContrastRatio;
@@ -1,47 +0,0 @@
1
- /**
2
- * API for handling incomplete color data
3
- * @namespace axe.commons.color.incompleteData
4
- * @inner
5
- */
6
- let data = {};
7
- const incompleteData = {
8
- /**
9
- * Store incomplete data by key with a string value
10
- * @method set
11
- * @memberof axe.commons.color.incompleteData
12
- * @instance
13
- * @param {String} key Identifier for missing data point (fgColor, bgColor, etc.)
14
- * @param {String} reason Missing data reason to match message template
15
- */
16
- set: function(key, reason) {
17
- if (typeof key !== 'string') {
18
- throw new Error('Incomplete data: key must be a string');
19
- }
20
- if (reason) {
21
- data[key] = reason;
22
- }
23
- return data[key];
24
- },
25
- /**
26
- * Get incomplete data by key
27
- * @method get
28
- * @memberof axe.commons.color.incompleteData
29
- * @instance
30
- * @param {String} key Identifier for missing data point (fgColor, bgColor, etc.)
31
- * @return {String} String for reason we couldn't tell
32
- */
33
- get: function(key) {
34
- return data[key];
35
- },
36
- /**
37
- * Clear incomplete data on demand
38
- * @method clear
39
- * @memberof axe.commons.color.incompleteData
40
- * @instance
41
- */
42
- clear: function() {
43
- data = {};
44
- }
45
- };
46
-
47
- export default incompleteData;
@@ -1,20 +0,0 @@
1
- /**
2
- * Namespace for color-related utilities.
3
- * @namespace commons.color
4
- * @memberof axe
5
- */
6
- export { default as centerPointOfRect } from './center-point-of-rect';
7
- export { default as Color } from './color';
8
- export { default as elementHasImage } from './element-has-image';
9
- export { default as elementIsDistinct } from './element-is-distinct';
10
- export { default as filteredRectStack } from './filtered-rect-stack';
11
- export { default as flattenColors } from './flatten-colors';
12
- export { default as getBackgroundColor } from './get-background-color';
13
- export { default as getBackgroundStack } from './get-background-stack';
14
- export { default as getContrast } from './get-contrast';
15
- export { default as getForegroundColor } from './get-foreground-color';
16
- export { default as getOwnBackgroundColor } from './get-own-background-color';
17
- export { default as getRectStack } from './get-rect-stack';
18
- export { default as hasValidContrastRatio } from './has-valid-contrast-ratio';
19
- export { default as incompleteData } from './incomplete-data';
20
- export { default as getTextShadowColors } from './get-text-shadow-colors';
@@ -1,31 +0,0 @@
1
- import getRootNode from './get-root-node';
2
- import { escapeSelector } from '../../core/utils';
3
-
4
- /**
5
- * Find elements referenced from a given context
6
- * @method findElmsInContext
7
- * @memberof axe.commons.dom
8
- * @instance
9
- * @param {Object} element
10
- * @param {String} element.context Element in the same context
11
- * @param {String} element.value Attribute value to search for
12
- * @param {String} element.attr Attribute name to search for
13
- * @param {String} element.elm NodeName to search for (optional)
14
- * @return {Array<Node>}
15
- */
16
- function findElmsInContext({ context, value, attr, elm = '' }) {
17
- let root;
18
- const escapedValue = escapeSelector(value);
19
-
20
- if (context.nodeType === 9 || context.nodeType === 11) {
21
- // It's already root
22
- root = context;
23
- } else {
24
- root = getRootNode(context);
25
- }
26
- return Array.from(
27
- root.querySelectorAll(elm + '[' + attr + '=' + escapedValue + ']')
28
- );
29
- }
30
-
31
- export default findElmsInContext;
@@ -1,52 +0,0 @@
1
- import { matchesSelector } from '../../core/utils';
2
-
3
- /**
4
- * recusively walk up the DOM, checking for a node which matches a selector
5
- *
6
- * **WARNING:** this should be used sparingly, as it's not even close to being performant
7
- * @method findUpVirtual
8
- * @memberof axe.commons.dom
9
- * @instance
10
- * @deprecated use axe.utils.closest
11
- * @param {VirtualNode} element The starting virtualNode
12
- * @param {String} target The selector for the HTMLElement
13
- * @return {HTMLElement|null} Either the matching HTMLElement or `null` if there was no match
14
- */
15
- function findUpVirtual(element, target) {
16
- let parent;
17
-
18
- parent = element.actualNode;
19
- // virtualNode will have a shadowId if the element lives inside a shadow DOM or is
20
- // slotted into a shadow DOM
21
- if (!element.shadowId && typeof element.actualNode.closest === 'function') {
22
- // non-shadow DOM elements
23
- const match = element.actualNode.closest(target);
24
- if (match) {
25
- return match;
26
- }
27
- return null;
28
- }
29
- // handle shadow DOM elements and older browsers
30
- do {
31
- // recursively walk up the DOM, checking each parent node
32
- parent = parent.assignedSlot ? parent.assignedSlot : parent.parentNode;
33
- if (parent && parent.nodeType === 11) {
34
- parent = parent.host;
35
- }
36
- } while (
37
- parent &&
38
- !matchesSelector(parent, target) &&
39
- parent !== document.documentElement
40
- );
41
-
42
- if (!parent) {
43
- return null;
44
- }
45
-
46
- if (!matchesSelector(parent, target)) {
47
- return null;
48
- }
49
- return parent;
50
- }
51
-
52
- export default findUpVirtual;