@qualweb/act-rules 0.7.0-alpha2 → 0.7.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 (243) hide show
  1. package/README.md +109 -76
  2. package/dist/ACTRulesModule.d.ts +11 -0
  3. package/dist/ACTRulesModule.d.ts.map +1 -0
  4. package/dist/ACTRulesModule.js +65 -0
  5. package/dist/ACTRulesRunner.d.ts +14 -0
  6. package/dist/ACTRulesRunner.d.ts.map +1 -0
  7. package/dist/ACTRulesRunner.js +44 -0
  8. package/dist/__webpack/act.bundle.js +1 -0
  9. package/dist/index.d.ts +3 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +7 -0
  12. package/dist/lib/ACTRulesTester.object.d.ts +15 -0
  13. package/dist/lib/ACTRulesTester.object.d.ts.map +1 -0
  14. package/dist/lib/ACTRulesTester.object.js +150 -0
  15. package/dist/lib/AtomicRule.object.d.ts +7 -0
  16. package/dist/lib/AtomicRule.object.d.ts.map +1 -0
  17. package/dist/lib/AtomicRule.object.js +7 -0
  18. package/dist/lib/CompositeRule.object.d.ts +13 -0
  19. package/dist/lib/CompositeRule.object.d.ts.map +1 -0
  20. package/dist/lib/CompositeRule.object.js +80 -0
  21. package/dist/lib/Rule.object.d.ts +19 -0
  22. package/dist/lib/Rule.object.d.ts.map +1 -0
  23. package/dist/lib/Rule.object.js +76 -0
  24. package/dist/lib/mapping.d.ts +36 -0
  25. package/dist/lib/mapping.d.ts.map +1 -0
  26. package/dist/lib/mapping.js +38 -0
  27. package/dist/lib/mappingComposite.d.ts +39 -0
  28. package/dist/lib/mappingComposite.d.ts.map +1 -0
  29. package/dist/lib/mappingComposite.js +23 -0
  30. package/dist/lib/rules.json +1523 -0
  31. package/dist/lib/types.d.ts +15 -0
  32. package/dist/lib/types.d.ts.map +1 -0
  33. package/dist/lib/types.js +2 -0
  34. package/dist/rules/QW-ACT-R1.d.ts +7 -0
  35. package/dist/rules/QW-ACT-R1.d.ts.map +1 -0
  36. package/dist/rules/QW-ACT-R1.js +49 -0
  37. package/dist/rules/QW-ACT-R10.d.ts +8 -0
  38. package/dist/rules/QW-ACT-R10.d.ts.map +1 -0
  39. package/dist/rules/QW-ACT-R10.js +98 -0
  40. package/dist/rules/QW-ACT-R11.d.ts +7 -0
  41. package/dist/rules/QW-ACT-R11.d.ts.map +1 -0
  42. package/dist/rules/QW-ACT-R11.js +40 -0
  43. package/dist/rules/QW-ACT-R12.d.ts +7 -0
  44. package/dist/rules/QW-ACT-R12.d.ts.map +1 -0
  45. package/dist/rules/QW-ACT-R12.js +40 -0
  46. package/dist/rules/QW-ACT-R13.d.ts +9 -0
  47. package/dist/rules/QW-ACT-R13.d.ts.map +1 -0
  48. package/dist/rules/QW-ACT-R13.js +76 -0
  49. package/dist/rules/QW-ACT-R14.d.ts +7 -0
  50. package/dist/rules/QW-ACT-R14.d.ts.map +1 -0
  51. package/dist/rules/QW-ACT-R14.js +73 -0
  52. package/dist/rules/QW-ACT-R15.d.ts +6 -0
  53. package/dist/rules/QW-ACT-R15.d.ts.map +1 -0
  54. package/dist/rules/QW-ACT-R15.js +26 -0
  55. package/dist/rules/QW-ACT-R16.d.ts +7 -0
  56. package/dist/rules/QW-ACT-R16.d.ts.map +1 -0
  57. package/dist/rules/QW-ACT-R16.js +52 -0
  58. package/dist/rules/QW-ACT-R17.d.ts +7 -0
  59. package/dist/rules/QW-ACT-R17.d.ts.map +1 -0
  60. package/dist/rules/QW-ACT-R17.js +52 -0
  61. package/dist/rules/QW-ACT-R19.d.ts +7 -0
  62. package/dist/rules/QW-ACT-R19.d.ts.map +1 -0
  63. package/dist/rules/QW-ACT-R19.js +42 -0
  64. package/dist/rules/QW-ACT-R2.d.ts +7 -0
  65. package/dist/rules/QW-ACT-R2.d.ts.map +1 -0
  66. package/dist/rules/QW-ACT-R2.js +40 -0
  67. package/dist/rules/QW-ACT-R20.d.ts +7 -0
  68. package/dist/rules/QW-ACT-R20.d.ts.map +1 -0
  69. package/dist/rules/QW-ACT-R20.js +39 -0
  70. package/dist/rules/QW-ACT-R21.d.ts +8 -0
  71. package/dist/rules/QW-ACT-R21.d.ts.map +1 -0
  72. package/dist/rules/QW-ACT-R21.js +50 -0
  73. package/dist/rules/QW-ACT-R22.d.ts +9 -0
  74. package/dist/rules/QW-ACT-R22.d.ts.map +1 -0
  75. package/dist/rules/QW-ACT-R22.js +69 -0
  76. package/dist/rules/QW-ACT-R23.d.ts +6 -0
  77. package/dist/rules/QW-ACT-R23.d.ts.map +1 -0
  78. package/dist/rules/QW-ACT-R23.js +26 -0
  79. package/dist/rules/QW-ACT-R24.d.ts +12 -0
  80. package/dist/rules/QW-ACT-R24.d.ts.map +1 -0
  81. package/dist/rules/QW-ACT-R24.js +298 -0
  82. package/dist/rules/QW-ACT-R25.d.ts +7 -0
  83. package/dist/rules/QW-ACT-R25.d.ts.map +1 -0
  84. package/dist/rules/QW-ACT-R25.js +67 -0
  85. package/dist/rules/QW-ACT-R26.d.ts +6 -0
  86. package/dist/rules/QW-ACT-R26.d.ts.map +1 -0
  87. package/dist/rules/QW-ACT-R26.js +26 -0
  88. package/dist/rules/QW-ACT-R27.d.ts +7 -0
  89. package/dist/rules/QW-ACT-R27.d.ts.map +1 -0
  90. package/dist/rules/QW-ACT-R27.js +55 -0
  91. package/dist/rules/QW-ACT-R28.d.ts +7 -0
  92. package/dist/rules/QW-ACT-R28.d.ts.map +1 -0
  93. package/dist/rules/QW-ACT-R28.js +83 -0
  94. package/dist/rules/QW-ACT-R29.d.ts +6 -0
  95. package/dist/rules/QW-ACT-R29.d.ts.map +1 -0
  96. package/dist/rules/QW-ACT-R29.js +26 -0
  97. package/dist/rules/QW-ACT-R30.d.ts +9 -0
  98. package/dist/rules/QW-ACT-R30.d.ts.map +1 -0
  99. package/dist/rules/QW-ACT-R30.js +69 -0
  100. package/dist/rules/QW-ACT-R31.d.ts +6 -0
  101. package/dist/rules/QW-ACT-R31.d.ts.map +1 -0
  102. package/dist/rules/QW-ACT-R31.js +26 -0
  103. package/dist/rules/QW-ACT-R32.d.ts +6 -0
  104. package/dist/rules/QW-ACT-R32.d.ts.map +1 -0
  105. package/dist/rules/QW-ACT-R32.js +26 -0
  106. package/dist/rules/QW-ACT-R33.d.ts +8 -0
  107. package/dist/rules/QW-ACT-R33.d.ts.map +1 -0
  108. package/dist/rules/QW-ACT-R33.js +89 -0
  109. package/dist/rules/QW-ACT-R34.d.ts +7 -0
  110. package/dist/rules/QW-ACT-R34.d.ts.map +1 -0
  111. package/dist/rules/QW-ACT-R34.js +112 -0
  112. package/dist/rules/QW-ACT-R35.d.ts +7 -0
  113. package/dist/rules/QW-ACT-R35.d.ts.map +1 -0
  114. package/dist/rules/QW-ACT-R35.js +40 -0
  115. package/dist/rules/QW-ACT-R36.d.ts +7 -0
  116. package/dist/rules/QW-ACT-R36.d.ts.map +1 -0
  117. package/dist/rules/QW-ACT-R36.js +108 -0
  118. package/dist/rules/QW-ACT-R37.d.ts +23 -0
  119. package/dist/rules/QW-ACT-R37.d.ts.map +1 -0
  120. package/dist/rules/QW-ACT-R37.js +358 -0
  121. package/dist/rules/QW-ACT-R38.d.ts +9 -0
  122. package/dist/rules/QW-ACT-R38.d.ts.map +1 -0
  123. package/dist/rules/QW-ACT-R38.js +100 -0
  124. package/dist/rules/QW-ACT-R39.d.ts +8 -0
  125. package/dist/rules/QW-ACT-R39.d.ts.map +1 -0
  126. package/dist/rules/QW-ACT-R39.js +155 -0
  127. package/dist/rules/QW-ACT-R4.d.ts +8 -0
  128. package/dist/rules/QW-ACT-R4.d.ts.map +1 -0
  129. package/dist/rules/QW-ACT-R4.js +85 -0
  130. package/dist/rules/QW-ACT-R40.d.ts +7 -0
  131. package/dist/rules/QW-ACT-R40.d.ts.map +1 -0
  132. package/dist/rules/QW-ACT-R40.js +58 -0
  133. package/dist/rules/QW-ACT-R41.d.ts +7 -0
  134. package/dist/rules/QW-ACT-R41.d.ts.map +1 -0
  135. package/dist/rules/QW-ACT-R41.js +42 -0
  136. package/dist/rules/QW-ACT-R42.d.ts +7 -0
  137. package/dist/rules/QW-ACT-R42.d.ts.map +1 -0
  138. package/dist/rules/QW-ACT-R42.js +40 -0
  139. package/dist/rules/QW-ACT-R43.d.ts +8 -0
  140. package/dist/rules/QW-ACT-R43.d.ts.map +1 -0
  141. package/dist/rules/QW-ACT-R43.js +98 -0
  142. package/dist/rules/QW-ACT-R44.d.ts +8 -0
  143. package/dist/rules/QW-ACT-R44.d.ts.map +1 -0
  144. package/dist/rules/QW-ACT-R44.js +92 -0
  145. package/dist/rules/QW-ACT-R48.d.ts +7 -0
  146. package/dist/rules/QW-ACT-R48.d.ts.map +1 -0
  147. package/dist/rules/QW-ACT-R48.js +38 -0
  148. package/dist/rules/QW-ACT-R49.d.ts +8 -0
  149. package/dist/rules/QW-ACT-R49.d.ts.map +1 -0
  150. package/dist/rules/QW-ACT-R49.js +81 -0
  151. package/dist/rules/QW-ACT-R5.d.ts +8 -0
  152. package/dist/rules/QW-ACT-R5.d.ts.map +1 -0
  153. package/dist/rules/QW-ACT-R5.js +44 -0
  154. package/dist/rules/QW-ACT-R50.d.ts +8 -0
  155. package/dist/rules/QW-ACT-R50.d.ts.map +1 -0
  156. package/dist/rules/QW-ACT-R50.js +72 -0
  157. package/dist/rules/QW-ACT-R51.d.ts +7 -0
  158. package/dist/rules/QW-ACT-R51.d.ts.map +1 -0
  159. package/dist/rules/QW-ACT-R51.js +41 -0
  160. package/dist/rules/QW-ACT-R53.d.ts +7 -0
  161. package/dist/rules/QW-ACT-R53.d.ts.map +1 -0
  162. package/dist/rules/QW-ACT-R53.js +41 -0
  163. package/dist/rules/QW-ACT-R54.d.ts +7 -0
  164. package/dist/rules/QW-ACT-R54.d.ts.map +1 -0
  165. package/dist/rules/QW-ACT-R54.js +41 -0
  166. package/dist/rules/QW-ACT-R55.d.ts +7 -0
  167. package/dist/rules/QW-ACT-R55.d.ts.map +1 -0
  168. package/dist/rules/QW-ACT-R55.js +41 -0
  169. package/dist/rules/QW-ACT-R56.d.ts +7 -0
  170. package/dist/rules/QW-ACT-R56.d.ts.map +1 -0
  171. package/dist/rules/QW-ACT-R56.js +41 -0
  172. package/dist/rules/QW-ACT-R58.d.ts +7 -0
  173. package/dist/rules/QW-ACT-R58.d.ts.map +1 -0
  174. package/dist/rules/QW-ACT-R58.js +33 -0
  175. package/dist/rules/QW-ACT-R59.d.ts +7 -0
  176. package/dist/rules/QW-ACT-R59.d.ts.map +1 -0
  177. package/dist/rules/QW-ACT-R59.js +33 -0
  178. package/dist/rules/QW-ACT-R6.d.ts +7 -0
  179. package/dist/rules/QW-ACT-R6.d.ts.map +1 -0
  180. package/dist/rules/QW-ACT-R6.js +40 -0
  181. package/dist/rules/QW-ACT-R60.d.ts +7 -0
  182. package/dist/rules/QW-ACT-R60.d.ts.map +1 -0
  183. package/dist/rules/QW-ACT-R60.js +41 -0
  184. package/dist/rules/QW-ACT-R61.d.ts +7 -0
  185. package/dist/rules/QW-ACT-R61.d.ts.map +1 -0
  186. package/dist/rules/QW-ACT-R61.js +41 -0
  187. package/dist/rules/QW-ACT-R62.d.ts +7 -0
  188. package/dist/rules/QW-ACT-R62.d.ts.map +1 -0
  189. package/dist/rules/QW-ACT-R62.js +37 -0
  190. package/dist/rules/QW-ACT-R63.d.ts +8 -0
  191. package/dist/rules/QW-ACT-R63.d.ts.map +1 -0
  192. package/dist/rules/QW-ACT-R63.js +60 -0
  193. package/dist/rules/QW-ACT-R64.d.ts +8 -0
  194. package/dist/rules/QW-ACT-R64.d.ts.map +1 -0
  195. package/dist/rules/QW-ACT-R64.js +60 -0
  196. package/dist/rules/QW-ACT-R65.d.ts +7 -0
  197. package/dist/rules/QW-ACT-R65.d.ts.map +1 -0
  198. package/dist/rules/QW-ACT-R65.js +58 -0
  199. package/dist/rules/QW-ACT-R66.d.ts +7 -0
  200. package/dist/rules/QW-ACT-R66.d.ts.map +1 -0
  201. package/dist/rules/QW-ACT-R66.js +40 -0
  202. package/dist/rules/QW-ACT-R67.d.ts +12 -0
  203. package/dist/rules/QW-ACT-R67.d.ts.map +1 -0
  204. package/dist/rules/QW-ACT-R67.js +94 -0
  205. package/dist/rules/QW-ACT-R68.d.ts +14 -0
  206. package/dist/rules/QW-ACT-R68.d.ts.map +1 -0
  207. package/dist/rules/QW-ACT-R68.js +117 -0
  208. package/dist/rules/QW-ACT-R69.d.ts +12 -0
  209. package/dist/rules/QW-ACT-R69.d.ts.map +1 -0
  210. package/dist/rules/QW-ACT-R69.js +94 -0
  211. package/dist/rules/QW-ACT-R7.d.ts +14 -0
  212. package/dist/rules/QW-ACT-R7.d.ts.map +1 -0
  213. package/dist/rules/QW-ACT-R7.js +167 -0
  214. package/dist/rules/QW-ACT-R70.d.ts +7 -0
  215. package/dist/rules/QW-ACT-R70.d.ts.map +1 -0
  216. package/dist/rules/QW-ACT-R70.js +52 -0
  217. package/dist/rules/QW-ACT-R71.d.ts +8 -0
  218. package/dist/rules/QW-ACT-R71.d.ts.map +1 -0
  219. package/dist/rules/QW-ACT-R71.js +81 -0
  220. package/dist/rules/QW-ACT-R73.d.ts +8 -0
  221. package/dist/rules/QW-ACT-R73.d.ts.map +1 -0
  222. package/dist/rules/QW-ACT-R73.js +60 -0
  223. package/dist/rules/QW-ACT-R74.d.ts +8 -0
  224. package/dist/rules/QW-ACT-R74.d.ts.map +1 -0
  225. package/dist/rules/QW-ACT-R74.js +80 -0
  226. package/dist/rules/QW-ACT-R75.d.ts +6 -0
  227. package/dist/rules/QW-ACT-R75.d.ts.map +1 -0
  228. package/dist/rules/QW-ACT-R75.js +27 -0
  229. package/dist/rules/QW-ACT-R76.d.ts +23 -0
  230. package/dist/rules/QW-ACT-R76.d.ts.map +1 -0
  231. package/dist/rules/QW-ACT-R76.js +336 -0
  232. package/dist/rules/QW-ACT-R77.d.ts +7 -0
  233. package/dist/rules/QW-ACT-R77.d.ts.map +1 -0
  234. package/dist/rules/QW-ACT-R77.js +53 -0
  235. package/dist/rules/QW-ACT-R9.d.ts +7 -0
  236. package/dist/rules/QW-ACT-R9.d.ts.map +1 -0
  237. package/dist/rules/QW-ACT-R9.js +87 -0
  238. package/dist/rules/index.d.ts +69 -0
  239. package/dist/rules/index.d.ts.map +1 -0
  240. package/dist/rules/index.js +84 -0
  241. package/package.json +38 -32
  242. package/LICENSE +0 -15
  243. package/dist/act.bundle.js +0 -1
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.QW_ACT_R61 = void 0;
13
+ const applicability_1 = require("@qualweb/util/applicability");
14
+ const evaluation_1 = require("@qualweb/core/evaluation");
15
+ const AtomicRule_object_1 = require("../lib/AtomicRule.object");
16
+ class QW_ACT_R61 extends AtomicRule_object_1.AtomicRule {
17
+ execute(element) {
18
+ const duration = parseInt(element.getElementProperty('duration'));
19
+ const hasSoundTrack = window.DomUtils.videoElementHasAudio(element);
20
+ const hasPuppeteerApplicableData = duration > 0 && hasSoundTrack;
21
+ const test = new evaluation_1.Test(evaluation_1.Verdict.WARNING);
22
+ if (!(duration >= 0 && hasSoundTrack)) {
23
+ test.resultCode = 'W1';
24
+ test.addElement(element);
25
+ this.addTestResult(test);
26
+ }
27
+ else if (hasPuppeteerApplicableData) {
28
+ test.resultCode = 'W2';
29
+ test.addElement(element);
30
+ this.addTestResult(test);
31
+ }
32
+ }
33
+ }
34
+ exports.QW_ACT_R61 = QW_ACT_R61;
35
+ __decorate([
36
+ applicability_1.ElementExists,
37
+ applicability_1.ElementIsVisible,
38
+ __metadata("design:type", Function),
39
+ __metadata("design:paramtypes", [Function]),
40
+ __metadata("design:returntype", void 0)
41
+ ], QW_ACT_R61.prototype, "execute", null);
@@ -0,0 +1,7 @@
1
+ import type { QWElement } from '@qualweb/qw-element';
2
+ import { AtomicRule } from '../lib/AtomicRule.object';
3
+ declare class QW_ACT_R62 extends AtomicRule {
4
+ execute(element: QWElement): void;
5
+ }
6
+ export { QW_ACT_R62 };
7
+ //# sourceMappingURL=QW-ACT-R62.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QW-ACT-R62.d.ts","sourceRoot":"","sources":["../../src/rules/QW-ACT-R62.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,cAAM,UAAW,SAAQ,UAAU;IAEjC,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;CAclC;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.QW_ACT_R62 = void 0;
13
+ const applicability_1 = require("@qualweb/util/applicability");
14
+ const evaluation_1 = require("@qualweb/core/evaluation");
15
+ const AtomicRule_object_1 = require("../lib/AtomicRule.object");
16
+ class QW_ACT_R62 extends AtomicRule_object_1.AtomicRule {
17
+ execute(element) {
18
+ const elementList = element.getElements('*');
19
+ const inSequentialFocusList = elementList.filter((element) => {
20
+ return window.AccessibilityUtils.isPartOfSequentialFocusNavigation(element);
21
+ });
22
+ if (inSequentialFocusList.length >= 1) {
23
+ for (const inSequentialFocusElement of inSequentialFocusList !== null && inSequentialFocusList !== void 0 ? inSequentialFocusList : []) {
24
+ const test = new evaluation_1.Test(evaluation_1.Verdict.WARNING, undefined, 'W1');
25
+ test.addElement(inSequentialFocusElement);
26
+ this.addTestResult(test);
27
+ }
28
+ }
29
+ }
30
+ }
31
+ exports.QW_ACT_R62 = QW_ACT_R62;
32
+ __decorate([
33
+ applicability_1.ElementExists,
34
+ __metadata("design:type", Function),
35
+ __metadata("design:paramtypes", [Function]),
36
+ __metadata("design:returntype", void 0)
37
+ ], QW_ACT_R62.prototype, "execute", null);
@@ -0,0 +1,8 @@
1
+ import type { QWElement } from '@qualweb/qw-element';
2
+ import { AtomicRule } from '../lib/AtomicRule.object';
3
+ declare class QW_ACT_R63 extends AtomicRule {
4
+ execute(element: QWElement): void;
5
+ private checkDestination;
6
+ }
7
+ export { QW_ACT_R63 };
8
+ //# sourceMappingURL=QW-ACT-R63.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QW-ACT-R63.d.ts","sourceRoot":"","sources":["../../src/rules/QW-ACT-R63.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,cAAM,UAAW,SAAQ,UAAU;IAGjC,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;IAiCjC,OAAO,CAAC,gBAAgB;CASzB;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.QW_ACT_R63 = void 0;
13
+ const applicability_1 = require("@qualweb/util/applicability");
14
+ const evaluation_1 = require("@qualweb/core/evaluation");
15
+ const AtomicRule_object_1 = require("../lib/AtomicRule.object");
16
+ class QW_ACT_R63 extends AtomicRule_object_1.AtomicRule {
17
+ execute(element) {
18
+ var _a;
19
+ const test = new evaluation_1.Test();
20
+ let hasLinks = false;
21
+ const links = element.getElements('a');
22
+ if (links) {
23
+ const host = location.hostname;
24
+ for (const link of links) {
25
+ if (link.elementHasAttribute('href')) {
26
+ const href = (_a = link.getElementAttribute('href')) === null || _a === void 0 ? void 0 : _a.trim();
27
+ if (href &&
28
+ !this.checkDestination(href) &&
29
+ (href.startsWith('/') || href.startsWith('.') || href.startsWith(host))) {
30
+ test.verdict = evaluation_1.Verdict.WARNING;
31
+ test.resultCode = 'W1';
32
+ hasLinks = true;
33
+ break;
34
+ }
35
+ }
36
+ }
37
+ }
38
+ if (!hasLinks) {
39
+ test.verdict = evaluation_1.Verdict.PASSED;
40
+ test.resultCode = 'P1';
41
+ }
42
+ test.addElement(element, false);
43
+ this.addTestResult(test);
44
+ }
45
+ checkDestination(destination) {
46
+ const url = window.qwPage.getURL();
47
+ return (destination.startsWith('#') ||
48
+ destination.startsWith('/#') ||
49
+ destination.startsWith(url + '#') ||
50
+ destination.startsWith(url + '/#'));
51
+ }
52
+ }
53
+ exports.QW_ACT_R63 = QW_ACT_R63;
54
+ __decorate([
55
+ applicability_1.IsHTMLDocument,
56
+ applicability_1.ElementExists,
57
+ __metadata("design:type", Function),
58
+ __metadata("design:paramtypes", [Function]),
59
+ __metadata("design:returntype", void 0)
60
+ ], QW_ACT_R63.prototype, "execute", null);
@@ -0,0 +1,8 @@
1
+ import type { QWElement } from '@qualweb/qw-element';
2
+ import { AtomicRule } from '../lib/AtomicRule.object';
3
+ declare class QW_ACT_R64 extends AtomicRule {
4
+ execute(element: QWElement): void;
5
+ private checkDestination;
6
+ }
7
+ export { QW_ACT_R64 };
8
+ //# sourceMappingURL=QW-ACT-R64.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QW-ACT-R64.d.ts","sourceRoot":"","sources":["../../src/rules/QW-ACT-R64.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,cAAM,UAAW,SAAQ,UAAU;IAGjC,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;IAiCjC,OAAO,CAAC,gBAAgB;CASzB;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.QW_ACT_R64 = void 0;
13
+ const applicability_1 = require("@qualweb/util/applicability");
14
+ const evaluation_1 = require("@qualweb/core/evaluation");
15
+ const AtomicRule_object_1 = require("../lib/AtomicRule.object");
16
+ class QW_ACT_R64 extends AtomicRule_object_1.AtomicRule {
17
+ execute(element) {
18
+ var _a;
19
+ const test = new evaluation_1.Test();
20
+ let hasLinks = false;
21
+ const links = element.getElements('a');
22
+ if (links) {
23
+ const host = location.hostname;
24
+ for (const link of links) {
25
+ if (link.elementHasAttribute('href')) {
26
+ const href = (_a = link.getElementAttribute('href')) === null || _a === void 0 ? void 0 : _a.trim();
27
+ if (href &&
28
+ !this.checkDestination(href) &&
29
+ (href.startsWith('/') || href.startsWith('.') || href.startsWith(host))) {
30
+ test.verdict = evaluation_1.Verdict.WARNING;
31
+ test.resultCode = 'W1';
32
+ hasLinks = true;
33
+ break;
34
+ }
35
+ }
36
+ }
37
+ }
38
+ if (!hasLinks) {
39
+ test.verdict = evaluation_1.Verdict.PASSED;
40
+ test.resultCode = 'P1';
41
+ }
42
+ test.addElement(element, false);
43
+ this.addTestResult(test);
44
+ }
45
+ checkDestination(destination) {
46
+ const url = window.qwPage.getURL();
47
+ return (destination.startsWith('#') ||
48
+ destination.startsWith('/#') ||
49
+ destination.startsWith(url + '#') ||
50
+ destination.startsWith(url + '/#'));
51
+ }
52
+ }
53
+ exports.QW_ACT_R64 = QW_ACT_R64;
54
+ __decorate([
55
+ applicability_1.IsHTMLDocument,
56
+ applicability_1.ElementExists,
57
+ __metadata("design:type", Function),
58
+ __metadata("design:paramtypes", [Function]),
59
+ __metadata("design:returntype", void 0)
60
+ ], QW_ACT_R64.prototype, "execute", null);
@@ -0,0 +1,7 @@
1
+ import type { QWElement } from '@qualweb/qw-element';
2
+ import { AtomicRule } from '../lib/AtomicRule.object';
3
+ declare class QW_ACT_R65 extends AtomicRule {
4
+ execute(element: QWElement): void;
5
+ }
6
+ export { QW_ACT_R65 };
7
+ //# sourceMappingURL=QW-ACT-R65.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QW-ACT-R65.d.ts","sourceRoot":"","sources":["../../src/rules/QW-ACT-R65.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,cAAM,UAAW,SAAQ,UAAU;IAkBjC,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;CAqBlC;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.QW_ACT_R65 = void 0;
13
+ const applicability_1 = require("@qualweb/util/applicability");
14
+ const evaluation_1 = require("@qualweb/core/evaluation");
15
+ const AtomicRule_object_1 = require("../lib/AtomicRule.object");
16
+ class QW_ACT_R65 extends AtomicRule_object_1.AtomicRule {
17
+ execute(element) {
18
+ const elementList = element.getElements('*');
19
+ const inSequentialFocusList = elementList.filter((element) => {
20
+ return window.AccessibilityUtils.isPartOfSequentialFocusNavigation(element);
21
+ });
22
+ const test = new evaluation_1.Test();
23
+ if (inSequentialFocusList.length === 0) {
24
+ test.verdict = evaluation_1.Verdict.PASSED;
25
+ test.resultCode = 'P1';
26
+ test.addElement(element);
27
+ }
28
+ else {
29
+ test.verdict = evaluation_1.Verdict.FAILED;
30
+ test.resultCode = 'F1';
31
+ test.addElement(element, false);
32
+ }
33
+ this.addTestResult(test);
34
+ }
35
+ }
36
+ exports.QW_ACT_R65 = QW_ACT_R65;
37
+ __decorate([
38
+ applicability_1.ElementExists,
39
+ (0, applicability_1.ElementHasOneOfTheFollowingRoles)([
40
+ 'button',
41
+ 'checkbox',
42
+ 'img',
43
+ 'math',
44
+ 'menuitemcheckbox',
45
+ 'menuitemradio',
46
+ 'option',
47
+ 'progressbar',
48
+ 'radio',
49
+ 'scrollbar',
50
+ 'separator',
51
+ 'slider',
52
+ 'switch',
53
+ 'tab'
54
+ ]),
55
+ __metadata("design:type", Function),
56
+ __metadata("design:paramtypes", [Function]),
57
+ __metadata("design:returntype", void 0)
58
+ ], QW_ACT_R65.prototype, "execute", null);
@@ -0,0 +1,7 @@
1
+ import type { QWElement } from '@qualweb/qw-element';
2
+ import { AtomicRule } from '../lib/AtomicRule.object';
3
+ declare class QW_ACT_R66 extends AtomicRule {
4
+ execute(element: QWElement): void;
5
+ }
6
+ export { QW_ACT_R66 };
7
+ //# sourceMappingURL=QW-ACT-R66.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QW-ACT-R66.d.ts","sourceRoot":"","sources":["../../src/rules/QW-ACT-R66.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,cAAM,UAAW,SAAQ,UAAU;IAIjC,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;CAelC;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.QW_ACT_R66 = void 0;
13
+ const applicability_1 = require("@qualweb/util/applicability");
14
+ const evaluation_1 = require("@qualweb/core/evaluation");
15
+ const AtomicRule_object_1 = require("../lib/AtomicRule.object");
16
+ class QW_ACT_R66 extends AtomicRule_object_1.AtomicRule {
17
+ execute(element) {
18
+ const test = new evaluation_1.Test();
19
+ const accessibleName = window.AccessibilityUtils.getAccessibleName(element);
20
+ if (accessibleName && accessibleName.trim() !== '') {
21
+ test.verdict = evaluation_1.Verdict.PASSED;
22
+ test.resultCode = 'P1';
23
+ }
24
+ else {
25
+ test.verdict = evaluation_1.Verdict.FAILED;
26
+ test.resultCode = 'F1';
27
+ }
28
+ test.addElement(element, true, false, true);
29
+ this.addTestResult(test);
30
+ }
31
+ }
32
+ exports.QW_ACT_R66 = QW_ACT_R66;
33
+ __decorate([
34
+ applicability_1.ElementExists,
35
+ applicability_1.ElementIsInAccessibilityTree,
36
+ (0, applicability_1.ElementHasOneOfTheFollowingRoles)(['menuitem']),
37
+ __metadata("design:type", Function),
38
+ __metadata("design:paramtypes", [Function]),
39
+ __metadata("design:returntype", void 0)
40
+ ], QW_ACT_R66.prototype, "execute", null);
@@ -0,0 +1,12 @@
1
+ import type { QWElement } from '@qualweb/qw-element';
2
+ import { AtomicRule } from '../lib/AtomicRule.object';
3
+ declare class QW_ACT_R67 extends AtomicRule {
4
+ execute(element: QWElement): void;
5
+ private parseStyle;
6
+ private isImportant;
7
+ private isWide;
8
+ private isCascade;
9
+ private findParentWithCSSProperty;
10
+ }
11
+ export { QW_ACT_R67 };
12
+ //# sourceMappingURL=QW-ACT-R67.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QW-ACT-R67.d.ts","sourceRoot":"","sources":["../../src/rules/QW-ACT-R67.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,cAAM,UAAW,SAAQ,UAAU;IAIjC,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;IA6BjC,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,yBAAyB;CASlC;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.QW_ACT_R67 = void 0;
13
+ const applicability_1 = require("@qualweb/util/applicability");
14
+ const evaluation_1 = require("@qualweb/core/evaluation");
15
+ const AtomicRule_object_1 = require("../lib/AtomicRule.object");
16
+ class QW_ACT_R67 extends AtomicRule_object_1.AtomicRule {
17
+ execute(element) {
18
+ if (element.hasCSSProperty('letter-spacing') || this.findParentWithCSSProperty(element) !== null) {
19
+ const styleAttribute = element.getElementAttribute('style');
20
+ const declaredLetterSpacing = this.parseStyle(styleAttribute);
21
+ const computedRawLetterSpacing = element.getCSSProperty('letter-spacing');
22
+ const computedLetterSpacing = element.getElementStyleProperty('letter-spacing', null);
23
+ const fontSize = element.getElementStyleProperty('font-size', null);
24
+ const test = new evaluation_1.Test();
25
+ if (element.hasCSSProperty('letter-spacing') && !this.isImportant(computedRawLetterSpacing, element)) {
26
+ test.verdict = evaluation_1.Verdict.PASSED;
27
+ test.resultCode = 'P1';
28
+ }
29
+ else if (this.isWide(computedLetterSpacing, fontSize)) {
30
+ test.verdict = evaluation_1.Verdict.PASSED;
31
+ test.resultCode = 'P2';
32
+ }
33
+ else if (!this.isCascade(declaredLetterSpacing, computedRawLetterSpacing)) {
34
+ test.verdict = evaluation_1.Verdict.PASSED;
35
+ test.resultCode = 'P3';
36
+ }
37
+ else {
38
+ test.verdict = evaluation_1.Verdict.FAILED;
39
+ test.resultCode = 'F1';
40
+ }
41
+ test.addElement(element, true, false, true);
42
+ this.addTestResult(test);
43
+ }
44
+ }
45
+ parseStyle(style) {
46
+ if (style === null) {
47
+ style = '';
48
+ }
49
+ const startLS = style.indexOf('letter-spacing:');
50
+ let endLS = style.indexOf(';', startLS);
51
+ if (endLS === -1) {
52
+ endLS = style.length;
53
+ }
54
+ return style === null || style === void 0 ? void 0 : style.substring(startLS + 15, endLS);
55
+ }
56
+ isImportant(cssValue, element) {
57
+ if (cssValue.value === 'inherit' || cssValue.value === 'unset') {
58
+ const parent = this.findParentWithCSSProperty(element.getElementParent());
59
+ if (parent === null)
60
+ return false;
61
+ return this.isImportant(parent === null || parent === void 0 ? void 0 : parent.getCSSProperty('letter-spacing'), parent);
62
+ }
63
+ return cssValue.important;
64
+ }
65
+ isWide(letterSpacing, fontSize) {
66
+ const letter = parseFloat(letterSpacing.slice(0, -2));
67
+ const font = parseFloat(fontSize.slice(0, -2));
68
+ return letter >= font * 0.12;
69
+ }
70
+ isCascade(declaredStyle, computedStyle) {
71
+ if (declaredStyle.trim().length > 0 && computedStyle && computedStyle.value) {
72
+ return declaredStyle.includes(computedStyle.value);
73
+ }
74
+ return false;
75
+ }
76
+ findParentWithCSSProperty(element) {
77
+ while (element !== null) {
78
+ if (element === null || element === void 0 ? void 0 : element.getCSSProperty('letter-spacing')) {
79
+ return element;
80
+ }
81
+ element = element.getElementParent();
82
+ }
83
+ return null;
84
+ }
85
+ }
86
+ exports.QW_ACT_R67 = QW_ACT_R67;
87
+ __decorate([
88
+ applicability_1.ElementExists,
89
+ applicability_1.ElementIsVisible,
90
+ applicability_1.ElementHasTextNode,
91
+ __metadata("design:type", Function),
92
+ __metadata("design:paramtypes", [Function]),
93
+ __metadata("design:returntype", void 0)
94
+ ], QW_ACT_R67.prototype, "execute", null);
@@ -0,0 +1,14 @@
1
+ import type { QWElement } from '@qualweb/qw-element';
2
+ import { AtomicRule } from '../lib/AtomicRule.object';
3
+ declare class QW_ACT_R68 extends AtomicRule {
4
+ execute(element: QWElement): void;
5
+ private parseStyle;
6
+ private isImportant;
7
+ private isNormal;
8
+ private isLarge;
9
+ private isCascade;
10
+ private findParentWithCSSProperty;
11
+ private computeLineNumber;
12
+ }
13
+ export { QW_ACT_R68 };
14
+ //# sourceMappingURL=QW-ACT-R68.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QW-ACT-R68.d.ts","sourceRoot":"","sources":["../../src/rules/QW-ACT-R68.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,cAAM,UAAW,SAAQ,UAAU;IAIjC,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;IAmCjC,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,yBAAyB;IAUjC,OAAO,CAAC,iBAAiB;CAW1B;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.QW_ACT_R68 = void 0;
13
+ const applicability_1 = require("@qualweb/util/applicability");
14
+ const evaluation_1 = require("@qualweb/core/evaluation");
15
+ const AtomicRule_object_1 = require("../lib/AtomicRule.object");
16
+ class QW_ACT_R68 extends AtomicRule_object_1.AtomicRule {
17
+ execute(element) {
18
+ const test = new evaluation_1.Test();
19
+ if (element.hasCSSProperty('line-height') || this.findParentWithCSSProperty(element) !== null) {
20
+ const styleAttribute = element.getElementAttribute('style');
21
+ const declaredLineHeight = this.parseStyle(styleAttribute);
22
+ const computedRawLineHeight = element.getCSSProperty('line-height');
23
+ const computedLineHeight = element.getElementStyleProperty('line-height', null);
24
+ const fontSize = element.getElementStyleProperty('font-size', null);
25
+ const numLines = this.computeLineNumber(element, computedLineHeight);
26
+ if (numLines < 2) {
27
+ return;
28
+ }
29
+ if (element.hasCSSProperty('line-height') && !this.isImportant(computedRawLineHeight, element)) {
30
+ test.verdict = evaluation_1.Verdict.PASSED;
31
+ test.resultCode = 'P1';
32
+ }
33
+ else if (!this.isNormal(computedLineHeight, element) && this.isLarge(computedLineHeight, fontSize)) {
34
+ test.verdict = evaluation_1.Verdict.PASSED;
35
+ test.resultCode = 'P2';
36
+ }
37
+ else if (!this.isCascade(declaredLineHeight, computedRawLineHeight)) {
38
+ test.verdict = evaluation_1.Verdict.PASSED;
39
+ test.resultCode = 'P3';
40
+ }
41
+ else {
42
+ test.verdict = evaluation_1.Verdict.FAILED;
43
+ test.resultCode = 'F1';
44
+ }
45
+ test.addElement(element, true, false, true);
46
+ this.addTestResult(test);
47
+ }
48
+ }
49
+ parseStyle(style) {
50
+ if (style === null) {
51
+ style = '';
52
+ }
53
+ const startLS = style.indexOf('line-height:');
54
+ let endLS = style.indexOf(';', startLS);
55
+ if (endLS === -1) {
56
+ endLS = style.length;
57
+ }
58
+ return style.substring(startLS + 12, endLS);
59
+ }
60
+ isImportant(cssValue, element) {
61
+ if (cssValue.value === 'inherit' || cssValue.value === 'unset') {
62
+ const parent = this.findParentWithCSSProperty(element.getElementParent());
63
+ if (parent === null)
64
+ return false;
65
+ return this.isImportant(parent === null || parent === void 0 ? void 0 : parent.getCSSProperty('line-height'), parent);
66
+ }
67
+ return cssValue.important;
68
+ }
69
+ isNormal(cssValue, element) {
70
+ if (cssValue.value === 'inherit' || cssValue.value === 'unset') {
71
+ const parent = this.findParentWithCSSProperty(element.getElementParent());
72
+ if (parent === null)
73
+ return false;
74
+ return this.isImportant(parent === null || parent === void 0 ? void 0 : parent.getCSSProperty('line-height'), parent);
75
+ }
76
+ return cssValue.value === 'normal';
77
+ }
78
+ isLarge(lineHeight, fontSize) {
79
+ const line = parseFloat(lineHeight.slice(0, -2));
80
+ const font = parseFloat(fontSize.slice(0, -2));
81
+ return line >= font * 1.5;
82
+ }
83
+ isCascade(declaredStyle, computedStyle) {
84
+ if (computedStyle && computedStyle.value) {
85
+ return declaredStyle.includes(computedStyle.value);
86
+ }
87
+ return false;
88
+ }
89
+ findParentWithCSSProperty(element) {
90
+ while (element !== null) {
91
+ if (element === null || element === void 0 ? void 0 : element.getCSSProperty('line-height')) {
92
+ return element;
93
+ }
94
+ element = element.getElementParent();
95
+ }
96
+ return null;
97
+ }
98
+ computeLineNumber(element, lineHeight) {
99
+ const elementHeight = parseInt(element.getElementProperty('offsetHeight'));
100
+ const padding_top = parseInt(element.getElementStyleProperty('padding-top', null));
101
+ const padding_bottom = parseInt(element.getElementStyleProperty('padding-bottom', null));
102
+ const border_top = parseInt(element.getElementStyleProperty('border-top', null));
103
+ const border_bottom = parseInt(element.getElementStyleProperty('border-bottom', null));
104
+ const textHeight = elementHeight - padding_top - padding_bottom - border_top - border_bottom;
105
+ const numLines = textHeight / parseInt(lineHeight);
106
+ return numLines;
107
+ }
108
+ }
109
+ exports.QW_ACT_R68 = QW_ACT_R68;
110
+ __decorate([
111
+ applicability_1.ElementExists,
112
+ applicability_1.ElementIsVisible,
113
+ applicability_1.ElementHasTextNode,
114
+ __metadata("design:type", Function),
115
+ __metadata("design:paramtypes", [Function]),
116
+ __metadata("design:returntype", void 0)
117
+ ], QW_ACT_R68.prototype, "execute", null);
@@ -0,0 +1,12 @@
1
+ import type { QWElement } from '@qualweb/qw-element';
2
+ import { AtomicRule } from '../lib/AtomicRule.object';
3
+ declare class QW_ACT_R69 extends AtomicRule {
4
+ execute(element: QWElement): void;
5
+ private parseStyle;
6
+ private isImportant;
7
+ private isWide;
8
+ private isCascade;
9
+ private findParentWithCSSProperty;
10
+ }
11
+ export { QW_ACT_R69 };
12
+ //# sourceMappingURL=QW-ACT-R69.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QW-ACT-R69.d.ts","sourceRoot":"","sources":["../../src/rules/QW-ACT-R69.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,cAAM,UAAW,SAAQ,UAAU;IAIjC,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;IA6BjC,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,yBAAyB;CASlC;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}