@afixt/test-utils 1.1.2 → 1.1.4

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 (132) hide show
  1. package/.claude/settings.local.json +6 -2
  2. package/.github/workflows/test.yml +26 -0
  3. package/BROWSER_TESTING.md +109 -0
  4. package/CLAUDE.md +22 -0
  5. package/package.json +6 -8
  6. package/playwright.config.js +27 -0
  7. package/src/domUtils.js +1 -1
  8. package/src/getAccessibleName.js +8 -4
  9. package/src/getCSSGeneratedContent.js +9 -5
  10. package/src/getFocusableElements.js +13 -4
  11. package/src/getImageText.js +4 -1
  12. package/src/testContrast.js +5 -1
  13. package/test/__screenshots__/getImageText.test.js/getImageText-should-be-an-async-function-1.png +0 -0
  14. package/test/__screenshots__/getImageText.test.js/getImageText-should-be-defined-and-exported-from-the-module-1.png +0 -0
  15. package/test/__screenshots__/getImageText.test.js/getImageText-should-handle-empty-string-input-gracefully-1.png +0 -0
  16. package/test/__screenshots__/getImageText.test.js/getImageText-should-handle-invalid-image-paths-gracefully-1.png +0 -0
  17. package/test/__screenshots__/getImageText.test.js/getImageText-should-handle-null-or-undefined-input-gracefully-1.png +0 -0
  18. package/test/__screenshots__/getImageText.test.js/getImageText-should-log-errors-in-non-test-environments-1.png +0 -0
  19. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-addEventListener-override-should-call-original-addEventListener-1.png +0 -0
  20. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-addEventListener-override-should-track-added-event-listeners-1.png +0 -0
  21. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-addEventListener-override-should-track-listeners-for-different-event-types-1.png +0 -0
  22. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-addEventListener-override-should-track-multiple-listeners-for-the-same-event-1.png +0 -0
  23. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-addEventListener-override-should-track-options-parameter-1.png +0 -0
  24. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-getEventListeners-should-return-all-event-listeners-for-an-element-1.png +0 -0
  25. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-getEventListeners-should-return-empty-object-for-elements-without-listeners-1.png +0 -0
  26. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-getXPath-should-generate-XPath-for-elements-without-id-1.png +0 -0
  27. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-getXPath-should-handle-multiple-siblings-correctly-1.png +0 -0
  28. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-getXPath-should-return-XPath-for-element-with-id-1.png +0 -0
  29. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-listEventListeners-should-list-event-listeners-on-child-elements-1.png +0 -0
  30. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-listEventListeners-should-list-event-listeners-on-root-element-1.png +0 -0
  31. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-listEventListeners-should-list-listeners-from-multiple-elements-1.png +0 -0
  32. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-listEventListeners-should-list-multiple-event-types-on-same-element-1.png +0 -0
  33. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-listEventListeners-should-return-empty-array-when-no-event-listeners-exist-1.png +0 -0
  34. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-listEventListeners-should-use-document-as-default-root-element-1.png +0 -0
  35. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-listEventListeners-should-work-with-custom-root-element-1.png +0 -0
  36. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-removeEventListener-override-should-call-original-removeEventListener-1.png +0 -0
  37. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-removeEventListener-override-should-handle-removing-non-existent-listeners-gracefully-1.png +0 -0
  38. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-removeEventListener-override-should-only-remove-the-specified-listener-1.png +0 -0
  39. package/test/__screenshots__/listEventListeners.test.js/listEventListeners-removeEventListener-override-should-remove-tracked-event-listeners-1.png +0 -0
  40. package/test/arrayUtils.test.js +22 -0
  41. package/test/domUtils.test.js +241 -0
  42. package/test/getAccessibleName.test.js +182 -0
  43. package/test/getAccessibleText.test.js +350 -79
  44. package/test/getCSSGeneratedContent.test.js +175 -1
  45. package/test/getFocusableElements.test.js +106 -35
  46. package/test/getImageText.test.js +95 -12
  47. package/test/getStyleObject.test.js +19 -1
  48. package/test/hasCSSGeneratedContent.test.js +7 -2
  49. package/test/hasParent.test.js +116 -0
  50. package/test/hasValidAriaRole.test.js +64 -2
  51. package/test/index.test.js +165 -0
  52. package/test/interactiveRoles.test.js +60 -0
  53. package/test/isAriaAttributesValid.test.js +36 -0
  54. package/test/isDataTable.test.js +492 -0
  55. package/test/isFocusable.test.js +94 -1
  56. package/test/isValidUrl.test.js +31 -19
  57. package/test/isVisible.test.js +121 -3
  58. package/test/playwright/css-pseudo-elements.spec.js +155 -0
  59. package/test/playwright/fixtures/css-pseudo-elements.html +77 -0
  60. package/test/setup.js +9 -1
  61. package/test/stringUtils.test.js +277 -1
  62. package/test/testContrast.test.js +614 -9
  63. package/test/testLang.test.js +152 -11
  64. package/test/testOrder.integration.test.js +369 -0
  65. package/test/testOrder.test.js +756 -21
  66. package/todo.md +11 -1
  67. package/vitest.config.js +8 -1
  68. package/coverage/base.css +0 -224
  69. package/coverage/block-navigation.js +0 -87
  70. package/coverage/coverage-final.json +0 -51
  71. package/coverage/favicon.png +0 -0
  72. package/coverage/index.html +0 -161
  73. package/coverage/prettify.css +0 -1
  74. package/coverage/prettify.js +0 -2
  75. package/coverage/sort-arrow-sprite.png +0 -0
  76. package/coverage/sorter.js +0 -196
  77. package/coverage/test-utils/docs/scripts/core.js.html +0 -2263
  78. package/coverage/test-utils/docs/scripts/core.min.js.html +0 -151
  79. package/coverage/test-utils/docs/scripts/index.html +0 -176
  80. package/coverage/test-utils/docs/scripts/resize.js.html +0 -355
  81. package/coverage/test-utils/docs/scripts/search.js.html +0 -880
  82. package/coverage/test-utils/docs/scripts/search.min.js.html +0 -100
  83. package/coverage/test-utils/docs/scripts/third-party/fuse.js.html +0 -109
  84. package/coverage/test-utils/docs/scripts/third-party/hljs-line-num-original.js.html +0 -1192
  85. package/coverage/test-utils/docs/scripts/third-party/hljs-line-num.js.html +0 -85
  86. package/coverage/test-utils/docs/scripts/third-party/hljs-original.js.html +0 -15598
  87. package/coverage/test-utils/docs/scripts/third-party/hljs.js.html +0 -85
  88. package/coverage/test-utils/docs/scripts/third-party/index.html +0 -236
  89. package/coverage/test-utils/docs/scripts/third-party/popper.js.html +0 -100
  90. package/coverage/test-utils/docs/scripts/third-party/tippy.js.html +0 -88
  91. package/coverage/test-utils/docs/scripts/third-party/tocbot.js.html +0 -2098
  92. package/coverage/test-utils/docs/scripts/third-party/tocbot.min.js.html +0 -85
  93. package/coverage/test-utils/index.html +0 -131
  94. package/coverage/test-utils/src/arrayUtils.js.html +0 -283
  95. package/coverage/test-utils/src/domUtils.js.html +0 -622
  96. package/coverage/test-utils/src/getAccessibleName.js.html +0 -1444
  97. package/coverage/test-utils/src/getAccessibleText.js.html +0 -271
  98. package/coverage/test-utils/src/getAriaAttributesByElement.js.html +0 -142
  99. package/coverage/test-utils/src/getCSSGeneratedContent.js.html +0 -265
  100. package/coverage/test-utils/src/getComputedRole.js.html +0 -592
  101. package/coverage/test-utils/src/getFocusableElements.js.html +0 -163
  102. package/coverage/test-utils/src/getGeneratedContent.js.html +0 -130
  103. package/coverage/test-utils/src/getImageText.js.html +0 -160
  104. package/coverage/test-utils/src/getStyleObject.js.html +0 -220
  105. package/coverage/test-utils/src/hasAccessibleName.js.html +0 -166
  106. package/coverage/test-utils/src/hasAttribute.js.html +0 -130
  107. package/coverage/test-utils/src/hasCSSGeneratedContent.js.html +0 -145
  108. package/coverage/test-utils/src/hasHiddenParent.js.html +0 -172
  109. package/coverage/test-utils/src/hasParent.js.html +0 -247
  110. package/coverage/test-utils/src/hasValidAriaAttributes.js.html +0 -175
  111. package/coverage/test-utils/src/hasValidAriaRole.js.html +0 -172
  112. package/coverage/test-utils/src/index.html +0 -611
  113. package/coverage/test-utils/src/index.js.html +0 -274
  114. package/coverage/test-utils/src/interactiveRoles.js.html +0 -145
  115. package/coverage/test-utils/src/isAriaAttributesValid.js.html +0 -304
  116. package/coverage/test-utils/src/isComplexTable.js.html +0 -412
  117. package/coverage/test-utils/src/isDataTable.js.html +0 -799
  118. package/coverage/test-utils/src/isFocusable.js.html +0 -187
  119. package/coverage/test-utils/src/isHidden.js.html +0 -136
  120. package/coverage/test-utils/src/isOffScreen.js.html +0 -133
  121. package/coverage/test-utils/src/isValidUrl.js.html +0 -124
  122. package/coverage/test-utils/src/isVisible.js.html +0 -271
  123. package/coverage/test-utils/src/listEventListeners.js.html +0 -370
  124. package/coverage/test-utils/src/queryCache.js.html +0 -1156
  125. package/coverage/test-utils/src/stringUtils.js.html +0 -535
  126. package/coverage/test-utils/src/testContrast.js.html +0 -784
  127. package/coverage/test-utils/src/testLang.js.html +0 -1810
  128. package/coverage/test-utils/src/testOrder.js.html +0 -355
  129. package/coverage/test-utils/vitest.config.browser.js.html +0 -133
  130. package/coverage/test-utils/vitest.config.js.html +0 -157
  131. package/test/browser-setup.js +0 -68
  132. package/vitest.config.browser.js +0 -17
@@ -1,880 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for test-utils/docs/scripts/search.js</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../../prettify.css" />
9
- <link rel="stylesheet" href="../../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../../index.html">All files</a> / <a href="index.html">test-utils/docs/scripts</a> search.js</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>0/265</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>0/1</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>0/1</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>0/265</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line low'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
332
- <span class="cline-any cline-no">&nbsp;</span>
333
- <span class="cline-any cline-no">&nbsp;</span>
334
- <span class="cline-any cline-no">&nbsp;</span>
335
- <span class="cline-any cline-no">&nbsp;</span>
336
- <span class="cline-any cline-no">&nbsp;</span>
337
- <span class="cline-any cline-no">&nbsp;</span>
338
- <span class="cline-any cline-no">&nbsp;</span>
339
- <span class="cline-any cline-no">&nbsp;</span>
340
- <span class="cline-any cline-no">&nbsp;</span>
341
- <span class="cline-any cline-no">&nbsp;</span>
342
- <span class="cline-any cline-no">&nbsp;</span>
343
- <span class="cline-any cline-no">&nbsp;</span>
344
- <span class="cline-any cline-no">&nbsp;</span>
345
- <span class="cline-any cline-no">&nbsp;</span>
346
- <span class="cline-any cline-no">&nbsp;</span>
347
- <span class="cline-any cline-no">&nbsp;</span>
348
- <span class="cline-any cline-no">&nbsp;</span>
349
- <span class="cline-any cline-no">&nbsp;</span>
350
- <span class="cline-any cline-no">&nbsp;</span>
351
- <span class="cline-any cline-no">&nbsp;</span>
352
- <span class="cline-any cline-no">&nbsp;</span>
353
- <span class="cline-any cline-no">&nbsp;</span>
354
- <span class="cline-any cline-no">&nbsp;</span>
355
- <span class="cline-any cline-no">&nbsp;</span>
356
- <span class="cline-any cline-no">&nbsp;</span>
357
- <span class="cline-any cline-no">&nbsp;</span>
358
- <span class="cline-any cline-no">&nbsp;</span>
359
- <span class="cline-any cline-no">&nbsp;</span>
360
- <span class="cline-any cline-no">&nbsp;</span>
361
- <span class="cline-any cline-no">&nbsp;</span>
362
- <span class="cline-any cline-no">&nbsp;</span>
363
- <span class="cline-any cline-no">&nbsp;</span>
364
- <span class="cline-any cline-no">&nbsp;</span>
365
- <span class="cline-any cline-no">&nbsp;</span>
366
- <span class="cline-any cline-no">&nbsp;</span>
367
- <span class="cline-any cline-no">&nbsp;</span>
368
- <span class="cline-any cline-no">&nbsp;</span>
369
- <span class="cline-any cline-no">&nbsp;</span>
370
- <span class="cline-any cline-no">&nbsp;</span>
371
- <span class="cline-any cline-no">&nbsp;</span>
372
- <span class="cline-any cline-no">&nbsp;</span>
373
- <span class="cline-any cline-no">&nbsp;</span>
374
- <span class="cline-any cline-no">&nbsp;</span>
375
- <span class="cline-any cline-no">&nbsp;</span>
376
- <span class="cline-any cline-no">&nbsp;</span>
377
- <span class="cline-any cline-no">&nbsp;</span>
378
- <span class="cline-any cline-no">&nbsp;</span>
379
- <span class="cline-any cline-no">&nbsp;</span>
380
- <span class="cline-any cline-no">&nbsp;</span>
381
- <span class="cline-any cline-no">&nbsp;</span>
382
- <span class="cline-any cline-no">&nbsp;</span>
383
- <span class="cline-any cline-no">&nbsp;</span>
384
- <span class="cline-any cline-no">&nbsp;</span>
385
- <span class="cline-any cline-no">&nbsp;</span>
386
- <span class="cline-any cline-no">&nbsp;</span>
387
- <span class="cline-any cline-no">&nbsp;</span>
388
- <span class="cline-any cline-no">&nbsp;</span>
389
- <span class="cline-any cline-no">&nbsp;</span>
390
- <span class="cline-any cline-no">&nbsp;</span>
391
- <span class="cline-any cline-no">&nbsp;</span>
392
- <span class="cline-any cline-no">&nbsp;</span>
393
- <span class="cline-any cline-no">&nbsp;</span>
394
- <span class="cline-any cline-no">&nbsp;</span>
395
- <span class="cline-any cline-no">&nbsp;</span>
396
- <span class="cline-any cline-no">&nbsp;</span>
397
- <span class="cline-any cline-no">&nbsp;</span>
398
- <span class="cline-any cline-no">&nbsp;</span>
399
- <span class="cline-any cline-no">&nbsp;</span>
400
- <span class="cline-any cline-no">&nbsp;</span>
401
- <span class="cline-any cline-no">&nbsp;</span>
402
- <span class="cline-any cline-no">&nbsp;</span>
403
- <span class="cline-any cline-no">&nbsp;</span>
404
- <span class="cline-any cline-no">&nbsp;</span>
405
- <span class="cline-any cline-no">&nbsp;</span>
406
- <span class="cline-any cline-no">&nbsp;</span>
407
- <span class="cline-any cline-no">&nbsp;</span>
408
- <span class="cline-any cline-no">&nbsp;</span>
409
- <span class="cline-any cline-no">&nbsp;</span>
410
- <span class="cline-any cline-no">&nbsp;</span>
411
- <span class="cline-any cline-no">&nbsp;</span>
412
- <span class="cline-any cline-no">&nbsp;</span>
413
- <span class="cline-any cline-no">&nbsp;</span>
414
- <span class="cline-any cline-no">&nbsp;</span>
415
- <span class="cline-any cline-no">&nbsp;</span>
416
- <span class="cline-any cline-no">&nbsp;</span>
417
- <span class="cline-any cline-no">&nbsp;</span>
418
- <span class="cline-any cline-no">&nbsp;</span>
419
- <span class="cline-any cline-no">&nbsp;</span>
420
- <span class="cline-any cline-no">&nbsp;</span>
421
- <span class="cline-any cline-no">&nbsp;</span>
422
- <span class="cline-any cline-no">&nbsp;</span>
423
- <span class="cline-any cline-no">&nbsp;</span>
424
- <span class="cline-any cline-no">&nbsp;</span>
425
- <span class="cline-any cline-no">&nbsp;</span>
426
- <span class="cline-any cline-no">&nbsp;</span>
427
- <span class="cline-any cline-no">&nbsp;</span>
428
- <span class="cline-any cline-no">&nbsp;</span>
429
- <span class="cline-any cline-no">&nbsp;</span>
430
- <span class="cline-any cline-no">&nbsp;</span>
431
- <span class="cline-any cline-no">&nbsp;</span>
432
- <span class="cline-any cline-no">&nbsp;</span>
433
- <span class="cline-any cline-no">&nbsp;</span>
434
- <span class="cline-any cline-no">&nbsp;</span>
435
- <span class="cline-any cline-no">&nbsp;</span>
436
- <span class="cline-any cline-no">&nbsp;</span>
437
- <span class="cline-any cline-no">&nbsp;</span>
438
- <span class="cline-any cline-no">&nbsp;</span>
439
- <span class="cline-any cline-no">&nbsp;</span>
440
- <span class="cline-any cline-no">&nbsp;</span>
441
- <span class="cline-any cline-no">&nbsp;</span>
442
- <span class="cline-any cline-no">&nbsp;</span>
443
- <span class="cline-any cline-no">&nbsp;</span>
444
- <span class="cline-any cline-no">&nbsp;</span>
445
- <span class="cline-any cline-no">&nbsp;</span>
446
- <span class="cline-any cline-no">&nbsp;</span>
447
- <span class="cline-any cline-no">&nbsp;</span>
448
- <span class="cline-any cline-no">&nbsp;</span>
449
- <span class="cline-any cline-no">&nbsp;</span>
450
- <span class="cline-any cline-no">&nbsp;</span>
451
- <span class="cline-any cline-no">&nbsp;</span>
452
- <span class="cline-any cline-no">&nbsp;</span>
453
- <span class="cline-any cline-no">&nbsp;</span>
454
- <span class="cline-any cline-no">&nbsp;</span>
455
- <span class="cline-any cline-no">&nbsp;</span>
456
- <span class="cline-any cline-no">&nbsp;</span>
457
- <span class="cline-any cline-no">&nbsp;</span>
458
- <span class="cline-any cline-no">&nbsp;</span>
459
- <span class="cline-any cline-no">&nbsp;</span>
460
- <span class="cline-any cline-no">&nbsp;</span>
461
- <span class="cline-any cline-no">&nbsp;</span>
462
- <span class="cline-any cline-no">&nbsp;</span>
463
- <span class="cline-any cline-no">&nbsp;</span>
464
- <span class="cline-any cline-no">&nbsp;</span>
465
- <span class="cline-any cline-no">&nbsp;</span>
466
- <span class="cline-any cline-no">&nbsp;</span>
467
- <span class="cline-any cline-no">&nbsp;</span>
468
- <span class="cline-any cline-no">&nbsp;</span>
469
- <span class="cline-any cline-no">&nbsp;</span>
470
- <span class="cline-any cline-no">&nbsp;</span>
471
- <span class="cline-any cline-no">&nbsp;</span>
472
- <span class="cline-any cline-no">&nbsp;</span>
473
- <span class="cline-any cline-no">&nbsp;</span>
474
- <span class="cline-any cline-no">&nbsp;</span>
475
- <span class="cline-any cline-no">&nbsp;</span>
476
- <span class="cline-any cline-no">&nbsp;</span>
477
- <span class="cline-any cline-no">&nbsp;</span>
478
- <span class="cline-any cline-no">&nbsp;</span>
479
- <span class="cline-any cline-no">&nbsp;</span>
480
- <span class="cline-any cline-no">&nbsp;</span>
481
- <span class="cline-any cline-no">&nbsp;</span>
482
- <span class="cline-any cline-no">&nbsp;</span>
483
- <span class="cline-any cline-no">&nbsp;</span>
484
- <span class="cline-any cline-no">&nbsp;</span>
485
- <span class="cline-any cline-no">&nbsp;</span>
486
- <span class="cline-any cline-no">&nbsp;</span>
487
- <span class="cline-any cline-no">&nbsp;</span>
488
- <span class="cline-any cline-no">&nbsp;</span>
489
- <span class="cline-any cline-no">&nbsp;</span>
490
- <span class="cline-any cline-no">&nbsp;</span>
491
- <span class="cline-any cline-no">&nbsp;</span>
492
- <span class="cline-any cline-no">&nbsp;</span>
493
- <span class="cline-any cline-no">&nbsp;</span>
494
- <span class="cline-any cline-no">&nbsp;</span>
495
- <span class="cline-any cline-no">&nbsp;</span>
496
- <span class="cline-any cline-no">&nbsp;</span>
497
- <span class="cline-any cline-no">&nbsp;</span>
498
- <span class="cline-any cline-no">&nbsp;</span>
499
- <span class="cline-any cline-no">&nbsp;</span>
500
- <span class="cline-any cline-no">&nbsp;</span>
501
- <span class="cline-any cline-no">&nbsp;</span>
502
- <span class="cline-any cline-no">&nbsp;</span>
503
- <span class="cline-any cline-no">&nbsp;</span>
504
- <span class="cline-any cline-no">&nbsp;</span>
505
- <span class="cline-any cline-no">&nbsp;</span>
506
- <span class="cline-any cline-no">&nbsp;</span>
507
- <span class="cline-any cline-no">&nbsp;</span>
508
- <span class="cline-any cline-no">&nbsp;</span>
509
- <span class="cline-any cline-no">&nbsp;</span>
510
- <span class="cline-any cline-no">&nbsp;</span>
511
- <span class="cline-any cline-no">&nbsp;</span>
512
- <span class="cline-any cline-no">&nbsp;</span>
513
- <span class="cline-any cline-no">&nbsp;</span>
514
- <span class="cline-any cline-no">&nbsp;</span>
515
- <span class="cline-any cline-no">&nbsp;</span>
516
- <span class="cline-any cline-no">&nbsp;</span>
517
- <span class="cline-any cline-no">&nbsp;</span>
518
- <span class="cline-any cline-no">&nbsp;</span>
519
- <span class="cline-any cline-no">&nbsp;</span>
520
- <span class="cline-any cline-no">&nbsp;</span>
521
- <span class="cline-any cline-no">&nbsp;</span>
522
- <span class="cline-any cline-no">&nbsp;</span>
523
- <span class="cline-any cline-no">&nbsp;</span>
524
- <span class="cline-any cline-no">&nbsp;</span>
525
- <span class="cline-any cline-no">&nbsp;</span>
526
- <span class="cline-any cline-no">&nbsp;</span>
527
- <span class="cline-any cline-no">&nbsp;</span>
528
- <span class="cline-any cline-no">&nbsp;</span>
529
- <span class="cline-any cline-no">&nbsp;</span>
530
- <span class="cline-any cline-no">&nbsp;</span>
531
- <span class="cline-any cline-no">&nbsp;</span>
532
- <span class="cline-any cline-no">&nbsp;</span>
533
- <span class="cline-any cline-no">&nbsp;</span>
534
- <span class="cline-any cline-no">&nbsp;</span>
535
- <span class="cline-any cline-no">&nbsp;</span>
536
- <span class="cline-any cline-no">&nbsp;</span>
537
- <span class="cline-any cline-no">&nbsp;</span>
538
- <span class="cline-any cline-no">&nbsp;</span>
539
- <span class="cline-any cline-no">&nbsp;</span>
540
- <span class="cline-any cline-no">&nbsp;</span>
541
- <span class="cline-any cline-no">&nbsp;</span>
542
- <span class="cline-any cline-no">&nbsp;</span>
543
- <span class="cline-any cline-no">&nbsp;</span>
544
- <span class="cline-any cline-no">&nbsp;</span>
545
- <span class="cline-any cline-no">&nbsp;</span>
546
- <span class="cline-any cline-no">&nbsp;</span>
547
- <span class="cline-any cline-no">&nbsp;</span>
548
- <span class="cline-any cline-no">&nbsp;</span>
549
- <span class="cline-any cline-no">&nbsp;</span>
550
- <span class="cline-any cline-no">&nbsp;</span>
551
- <span class="cline-any cline-no">&nbsp;</span>
552
- <span class="cline-any cline-no">&nbsp;</span>
553
- <span class="cline-any cline-no">&nbsp;</span>
554
- <span class="cline-any cline-no">&nbsp;</span>
555
- <span class="cline-any cline-no">&nbsp;</span>
556
- <span class="cline-any cline-no">&nbsp;</span>
557
- <span class="cline-any cline-no">&nbsp;</span>
558
- <span class="cline-any cline-no">&nbsp;</span>
559
- <span class="cline-any cline-no">&nbsp;</span>
560
- <span class="cline-any cline-no">&nbsp;</span>
561
- <span class="cline-any cline-no">&nbsp;</span>
562
- <span class="cline-any cline-no">&nbsp;</span>
563
- <span class="cline-any cline-no">&nbsp;</span>
564
- <span class="cline-any cline-no">&nbsp;</span>
565
- <span class="cline-any cline-no">&nbsp;</span>
566
- <span class="cline-any cline-no">&nbsp;</span>
567
- <span class="cline-any cline-no">&nbsp;</span>
568
- <span class="cline-any cline-no">&nbsp;</span>
569
- <span class="cline-any cline-no">&nbsp;</span>
570
- <span class="cline-any cline-no">&nbsp;</span>
571
- <span class="cline-any cline-no">&nbsp;</span>
572
- <span class="cline-any cline-no">&nbsp;</span>
573
- <span class="cline-any cline-no">&nbsp;</span>
574
- <span class="cline-any cline-no">&nbsp;</span>
575
- <span class="cline-any cline-no">&nbsp;</span>
576
- <span class="cline-any cline-no">&nbsp;</span>
577
- <span class="cline-any cline-no">&nbsp;</span>
578
- <span class="cline-any cline-no">&nbsp;</span>
579
- <span class="cline-any cline-no">&nbsp;</span>
580
- <span class="cline-any cline-no">&nbsp;</span>
581
- <span class="cline-any cline-no">&nbsp;</span>
582
- <span class="cline-any cline-no">&nbsp;</span>
583
- <span class="cline-any cline-no">&nbsp;</span>
584
- <span class="cline-any cline-no">&nbsp;</span>
585
- <span class="cline-any cline-no">&nbsp;</span>
586
- <span class="cline-any cline-no">&nbsp;</span>
587
- <span class="cline-any cline-no">&nbsp;</span>
588
- <span class="cline-any cline-no">&nbsp;</span>
589
- <span class="cline-any cline-no">&nbsp;</span>
590
- <span class="cline-any cline-no">&nbsp;</span>
591
- <span class="cline-any cline-no">&nbsp;</span>
592
- <span class="cline-any cline-no">&nbsp;</span>
593
- <span class="cline-any cline-no">&nbsp;</span>
594
- <span class="cline-any cline-no">&nbsp;</span>
595
- <span class="cline-any cline-no">&nbsp;</span>
596
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >/* global document */</span></span></span>
597
- <span class="cstat-no" title="statement not covered" ></span>
598
- <span class="cstat-no" title="statement not covered" >const searchId = 'LiBfqbJVcV';</span>
599
- <span class="cstat-no" title="statement not covered" >const searchHash = '#' + searchId;</span>
600
- <span class="cstat-no" title="statement not covered" >const searchContainer = document.querySelector('#PkfLWpAbet');</span>
601
- <span class="cstat-no" title="statement not covered" >const searchWrapper = document.querySelector('#iCxFxjkHbP');</span>
602
- <span class="cstat-no" title="statement not covered" >const searchCloseButton = document.querySelector('#VjLlGakifb');</span>
603
- <span class="cstat-no" title="statement not covered" >const searchInput = document.querySelector('#vpcKVYIppa');</span>
604
- <span class="cstat-no" title="statement not covered" >const resultBox = document.querySelector('#fWwVHRuDuN');</span>
605
- <span class="cstat-no" title="statement not covered" ></span>
606
- <span class="cstat-no" title="statement not covered" >function showResultText(text) {</span>
607
- <span class="cstat-no" title="statement not covered" > resultBox.innerHTML = `&lt;span class="search-result-c-text"&gt;${text}&lt;/span&gt;`;</span>
608
- <span class="cstat-no" title="statement not covered" >}</span>
609
- <span class="cstat-no" title="statement not covered" ></span>
610
- <span class="cstat-no" title="statement not covered" >function hideSearch() {</span>
611
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-undef</span>
612
- <span class="cstat-no" title="statement not covered" > if (window.location.hash === searchHash) {</span>
613
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-undef</span>
614
- <span class="cstat-no" title="statement not covered" > history.go(-1);</span>
615
- <span class="cstat-no" title="statement not covered" > }</span>
616
- <span class="cstat-no" title="statement not covered" ></span>
617
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-undef</span>
618
- <span class="cstat-no" title="statement not covered" > window.onhashchange = null;</span>
619
- <span class="cstat-no" title="statement not covered" ></span>
620
- <span class="cstat-no" title="statement not covered" > if (searchContainer) {</span>
621
- <span class="cstat-no" title="statement not covered" > searchContainer.style.display = 'none';</span>
622
- <span class="cstat-no" title="statement not covered" > }</span>
623
- <span class="cstat-no" title="statement not covered" >}</span>
624
- <span class="cstat-no" title="statement not covered" ></span>
625
- <span class="cstat-no" title="statement not covered" >function listenCloseKey(event) {</span>
626
- <span class="cstat-no" title="statement not covered" > if (event.key === 'Escape') {</span>
627
- <span class="cstat-no" title="statement not covered" > hideSearch();</span>
628
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-undef</span>
629
- <span class="cstat-no" title="statement not covered" > window.removeEventListener('keyup', listenCloseKey);</span>
630
- <span class="cstat-no" title="statement not covered" > }</span>
631
- <span class="cstat-no" title="statement not covered" >}</span>
632
- <span class="cstat-no" title="statement not covered" ></span>
633
- <span class="cstat-no" title="statement not covered" >function showSearch() {</span>
634
- <span class="cstat-no" title="statement not covered" > try {</span>
635
- <span class="cstat-no" title="statement not covered" > // Closing mobile menu before opening</span>
636
- <span class="cstat-no" title="statement not covered" > // search box.</span>
637
- <span class="cstat-no" title="statement not covered" > // It is defined in core.js</span>
638
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-undef</span>
639
- <span class="cstat-no" title="statement not covered" > hideMobileMenu();</span>
640
- <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
641
- <span class="cstat-no" title="statement not covered" > console.error(error);</span>
642
- <span class="cstat-no" title="statement not covered" > }</span>
643
- <span class="cstat-no" title="statement not covered" ></span>
644
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-undef</span>
645
- <span class="cstat-no" title="statement not covered" > window.onhashchange = hideSearch;</span>
646
- <span class="cstat-no" title="statement not covered" ></span>
647
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-undef</span>
648
- <span class="cstat-no" title="statement not covered" > if (window.location.hash !== searchHash) {</span>
649
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-undef</span>
650
- <span class="cstat-no" title="statement not covered" > history.pushState(null, null, searchHash);</span>
651
- <span class="cstat-no" title="statement not covered" > }</span>
652
- <span class="cstat-no" title="statement not covered" ></span>
653
- <span class="cstat-no" title="statement not covered" > if (searchContainer) {</span>
654
- <span class="cstat-no" title="statement not covered" > searchContainer.style.display = 'flex';</span>
655
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-undef</span>
656
- <span class="cstat-no" title="statement not covered" > window.addEventListener('keyup', listenCloseKey);</span>
657
- <span class="cstat-no" title="statement not covered" > }</span>
658
- <span class="cstat-no" title="statement not covered" ></span>
659
- <span class="cstat-no" title="statement not covered" > if (searchInput) {</span>
660
- <span class="cstat-no" title="statement not covered" > searchInput.focus();</span>
661
- <span class="cstat-no" title="statement not covered" > }</span>
662
- <span class="cstat-no" title="statement not covered" >}</span>
663
- <span class="cstat-no" title="statement not covered" ></span>
664
- <span class="cstat-no" title="statement not covered" >async function fetchAllData() {</span>
665
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-undef</span>
666
- <span class="cstat-no" title="statement not covered" > const { hostname, protocol, port } = location;</span>
667
- <span class="cstat-no" title="statement not covered" ></span>
668
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-undef</span>
669
- <span class="cstat-no" title="statement not covered" > const base = protocol + '//' + hostname + (port !== '' ? ':' + port : '') + baseURL;</span>
670
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-undef</span>
671
- <span class="cstat-no" title="statement not covered" > const url = new URL('data/search.json', base);</span>
672
- <span class="cstat-no" title="statement not covered" > const result = await fetch(url);</span>
673
- <span class="cstat-no" title="statement not covered" > const { list } = await result.json();</span>
674
- <span class="cstat-no" title="statement not covered" ></span>
675
- <span class="cstat-no" title="statement not covered" > return list;</span>
676
- <span class="cstat-no" title="statement not covered" >}</span>
677
- <span class="cstat-no" title="statement not covered" ></span>
678
- <span class="cstat-no" title="statement not covered" >// eslint-disable-next-line no-unused-vars</span>
679
- <span class="cstat-no" title="statement not covered" >function onClickSearchItem(event) {</span>
680
- <span class="cstat-no" title="statement not covered" > const target = event.currentTarget;</span>
681
- <span class="cstat-no" title="statement not covered" ></span>
682
- <span class="cstat-no" title="statement not covered" > if (target) {</span>
683
- <span class="cstat-no" title="statement not covered" > const href = target.getAttribute('href') || '';</span>
684
- <span class="cstat-no" title="statement not covered" > let elementId = href.split('#')[1] || '';</span>
685
- <span class="cstat-no" title="statement not covered" > let element = document.getElementById(elementId);</span>
686
- <span class="cstat-no" title="statement not covered" ></span>
687
- <span class="cstat-no" title="statement not covered" > if (!element) {</span>
688
- <span class="cstat-no" title="statement not covered" > elementId = decodeURI(elementId);</span>
689
- <span class="cstat-no" title="statement not covered" > element = document.getElementById(elementId);</span>
690
- <span class="cstat-no" title="statement not covered" > }</span>
691
- <span class="cstat-no" title="statement not covered" ></span>
692
- <span class="cstat-no" title="statement not covered" > if (element) {</span>
693
- <span class="cstat-no" title="statement not covered" > setTimeout(function() {</span>
694
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-undef</span>
695
- <span class="cstat-no" title="statement not covered" > bringElementIntoView(element); // defined in core.js</span>
696
- <span class="cstat-no" title="statement not covered" > }, 100);</span>
697
- <span class="cstat-no" title="statement not covered" > }</span>
698
- <span class="cstat-no" title="statement not covered" > }</span>
699
- <span class="cstat-no" title="statement not covered" >}</span>
700
- <span class="cstat-no" title="statement not covered" ></span>
701
- <span class="cstat-no" title="statement not covered" >function buildSearchResult(result) {</span>
702
- <span class="cstat-no" title="statement not covered" > let output = '';</span>
703
- <span class="cstat-no" title="statement not covered" > const removeHTMLTagsRegExp = /(&lt;([^&gt;]+)&gt;)/ig;</span>
704
- <span class="cstat-no" title="statement not covered" > </span>
705
- <span class="cstat-no" title="statement not covered" > for (const res of result) {</span>
706
- <span class="cstat-no" title="statement not covered" > const { title = '', description = '' } = res.item;</span>
707
- <span class="cstat-no" title="statement not covered" ></span>
708
- <span class="cstat-no" title="statement not covered" > const _link = res.item.link.replace('&lt;a href="', '').replace(/"&gt;.*/, '');</span>
709
- <span class="cstat-no" title="statement not covered" > const _title = title.replace(removeHTMLTagsRegExp, "");</span>
710
- <span class="cstat-no" title="statement not covered" > const _description = description.replace(removeHTMLTagsRegExp, "");</span>
711
- <span class="cstat-no" title="statement not covered" ></span>
712
- <span class="cstat-no" title="statement not covered" > output += `</span>
713
- <span class="cstat-no" title="statement not covered" > &lt;a onclick="onClickSearchItem(event)" href="${_link}" class="search-result-item"&gt;</span>
714
- <span class="cstat-no" title="statement not covered" > &lt;div class="search-result-item-title"&gt;${_title}&lt;/div&gt;</span>
715
- <span class="cstat-no" title="statement not covered" > &lt;div class="search-result-item-p"&gt;${_description || 'No description available.'}&lt;/div&gt;</span>
716
- <span class="cstat-no" title="statement not covered" > &lt;/a&gt;</span>
717
- <span class="cstat-no" title="statement not covered" > `;</span>
718
- <span class="cstat-no" title="statement not covered" > }</span>
719
- <span class="cstat-no" title="statement not covered" ></span>
720
- <span class="cstat-no" title="statement not covered" > return output;</span>
721
- <span class="cstat-no" title="statement not covered" >}</span>
722
- <span class="cstat-no" title="statement not covered" ></span>
723
- <span class="cstat-no" title="statement not covered" >function getSearchResult(list, keys, searchKey) {</span>
724
- <span class="cstat-no" title="statement not covered" > const defaultOptions = {</span>
725
- <span class="cstat-no" title="statement not covered" > shouldSort: true,</span>
726
- <span class="cstat-no" title="statement not covered" > threshold: 0.4,</span>
727
- <span class="cstat-no" title="statement not covered" > location: 0,</span>
728
- <span class="cstat-no" title="statement not covered" > distance: 100,</span>
729
- <span class="cstat-no" title="statement not covered" > maxPatternLength: 32,</span>
730
- <span class="cstat-no" title="statement not covered" > minMatchCharLength: 1,</span>
731
- <span class="cstat-no" title="statement not covered" > keys: keys</span>
732
- <span class="cstat-no" title="statement not covered" > };</span>
733
- <span class="cstat-no" title="statement not covered" ></span>
734
- <span class="cstat-no" title="statement not covered" > const options = { ...defaultOptions };</span>
735
- <span class="cstat-no" title="statement not covered" ></span>
736
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-undef</span>
737
- <span class="cstat-no" title="statement not covered" > const searchIndex = Fuse.createIndex(options.keys, list);</span>
738
- <span class="cstat-no" title="statement not covered" ></span>
739
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-undef</span>
740
- <span class="cstat-no" title="statement not covered" > const fuse = new Fuse(list, options, searchIndex);</span>
741
- <span class="cstat-no" title="statement not covered" ></span>
742
- <span class="cstat-no" title="statement not covered" > const result = fuse.search(searchKey);</span>
743
- <span class="cstat-no" title="statement not covered" ></span>
744
- <span class="cstat-no" title="statement not covered" > if (result.length &gt; 20) {</span>
745
- <span class="cstat-no" title="statement not covered" > return result.slice(0, 20);</span>
746
- <span class="cstat-no" title="statement not covered" > }</span>
747
- <span class="cstat-no" title="statement not covered" ></span>
748
- <span class="cstat-no" title="statement not covered" > return result;</span>
749
- <span class="cstat-no" title="statement not covered" >}</span>
750
- <span class="cstat-no" title="statement not covered" ></span>
751
- <span class="cstat-no" title="statement not covered" >function debounce(func, wait, immediate) {</span>
752
- <span class="cstat-no" title="statement not covered" > let timeout;</span>
753
- <span class="cstat-no" title="statement not covered" ></span>
754
- <span class="cstat-no" title="statement not covered" > return function() {</span>
755
- <span class="cstat-no" title="statement not covered" > const args = arguments;</span>
756
- <span class="cstat-no" title="statement not covered" ></span>
757
- <span class="cstat-no" title="statement not covered" > clearTimeout(timeout);</span>
758
- <span class="cstat-no" title="statement not covered" > timeout = setTimeout(() =&gt; {</span>
759
- <span class="cstat-no" title="statement not covered" > timeout = null;</span>
760
- <span class="cstat-no" title="statement not covered" > if (!immediate) {</span>
761
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line consistent-this, no-invalid-this</span>
762
- <span class="cstat-no" title="statement not covered" > func.apply(this, args);</span>
763
- <span class="cstat-no" title="statement not covered" > }</span>
764
- <span class="cstat-no" title="statement not covered" > }, wait);</span>
765
- <span class="cstat-no" title="statement not covered" ></span>
766
- <span class="cstat-no" title="statement not covered" > if (immediate &amp;&amp; !timeout) {</span>
767
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line consistent-this, no-invalid-this</span>
768
- <span class="cstat-no" title="statement not covered" > func.apply(this, args);</span>
769
- <span class="cstat-no" title="statement not covered" > }</span>
770
- <span class="cstat-no" title="statement not covered" > };</span>
771
- <span class="cstat-no" title="statement not covered" >}</span>
772
- <span class="cstat-no" title="statement not covered" ></span>
773
- <span class="cstat-no" title="statement not covered" >let searchData;</span>
774
- <span class="cstat-no" title="statement not covered" ></span>
775
- <span class="cstat-no" title="statement not covered" >async function search(event) {</span>
776
- <span class="cstat-no" title="statement not covered" > const value = event.target.value;</span>
777
- <span class="cstat-no" title="statement not covered" > const keys = ['title', 'description'];</span>
778
- <span class="cstat-no" title="statement not covered" ></span>
779
- <span class="cstat-no" title="statement not covered" > if (!resultBox) {</span>
780
- <span class="cstat-no" title="statement not covered" > console.error('Search result container not found');</span>
781
- <span class="cstat-no" title="statement not covered" ></span>
782
- <span class="cstat-no" title="statement not covered" > return;</span>
783
- <span class="cstat-no" title="statement not covered" > }</span>
784
- <span class="cstat-no" title="statement not covered" ></span>
785
- <span class="cstat-no" title="statement not covered" > if (!value) {</span>
786
- <span class="cstat-no" title="statement not covered" > showResultText('Type anything to view search result');</span>
787
- <span class="cstat-no" title="statement not covered" ></span>
788
- <span class="cstat-no" title="statement not covered" > return;</span>
789
- <span class="cstat-no" title="statement not covered" > }</span>
790
- <span class="cstat-no" title="statement not covered" ></span>
791
- <span class="cstat-no" title="statement not covered" > if (!searchData) {</span>
792
- <span class="cstat-no" title="statement not covered" > showResultText('Loading...');</span>
793
- <span class="cstat-no" title="statement not covered" ></span>
794
- <span class="cstat-no" title="statement not covered" > try {</span>
795
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line require-atomic-updates</span>
796
- <span class="cstat-no" title="statement not covered" > searchData = await fetchAllData();</span>
797
- <span class="cstat-no" title="statement not covered" > } catch (e) {</span>
798
- <span class="cstat-no" title="statement not covered" > console.log(e);</span>
799
- <span class="cstat-no" title="statement not covered" > showResultText('Failed to load result.');</span>
800
- <span class="cstat-no" title="statement not covered" ></span>
801
- <span class="cstat-no" title="statement not covered" > return;</span>
802
- <span class="cstat-no" title="statement not covered" > }</span>
803
- <span class="cstat-no" title="statement not covered" > }</span>
804
- <span class="cstat-no" title="statement not covered" ></span>
805
- <span class="cstat-no" title="statement not covered" > const result = getSearchResult(searchData, keys, value);</span>
806
- <span class="cstat-no" title="statement not covered" ></span>
807
- <span class="cstat-no" title="statement not covered" > if (!result.length) {</span>
808
- <span class="cstat-no" title="statement not covered" > showResultText('No result found! Try some different combination.');</span>
809
- <span class="cstat-no" title="statement not covered" ></span>
810
- <span class="cstat-no" title="statement not covered" > return;</span>
811
- <span class="cstat-no" title="statement not covered" > }</span>
812
- <span class="cstat-no" title="statement not covered" ></span>
813
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line require-atomic-updates</span>
814
- <span class="cstat-no" title="statement not covered" > resultBox.innerHTML = buildSearchResult(result);</span>
815
- <span class="cstat-no" title="statement not covered" >}</span>
816
- <span class="cstat-no" title="statement not covered" ></span>
817
- <span class="cstat-no" title="statement not covered" >function onDomContentLoaded() {</span>
818
- <span class="cstat-no" title="statement not covered" > const searchButton = document.querySelectorAll('.search-button');</span>
819
- <span class="cstat-no" title="statement not covered" > const debouncedSearch = debounce(search, 300);</span>
820
- <span class="cstat-no" title="statement not covered" ></span>
821
- <span class="cstat-no" title="statement not covered" > if (searchCloseButton) {</span>
822
- <span class="cstat-no" title="statement not covered" > searchCloseButton.addEventListener('click', hideSearch);</span>
823
- <span class="cstat-no" title="statement not covered" > }</span>
824
- <span class="cstat-no" title="statement not covered" ></span>
825
- <span class="cstat-no" title="statement not covered" > if (searchButton) {</span>
826
- <span class="cstat-no" title="statement not covered" > searchButton.forEach(function(item) {</span>
827
- <span class="cstat-no" title="statement not covered" > item.addEventListener('click', showSearch);</span>
828
- <span class="cstat-no" title="statement not covered" > });</span>
829
- <span class="cstat-no" title="statement not covered" > }</span>
830
- <span class="cstat-no" title="statement not covered" ></span>
831
- <span class="cstat-no" title="statement not covered" > if (searchContainer) {</span>
832
- <span class="cstat-no" title="statement not covered" > searchContainer.addEventListener('click', hideSearch);</span>
833
- <span class="cstat-no" title="statement not covered" > }</span>
834
- <span class="cstat-no" title="statement not covered" ></span>
835
- <span class="cstat-no" title="statement not covered" > if (searchWrapper) {</span>
836
- <span class="cstat-no" title="statement not covered" > searchWrapper.addEventListener('click', function(event) {</span>
837
- <span class="cstat-no" title="statement not covered" > event.stopPropagation();</span>
838
- <span class="cstat-no" title="statement not covered" > });</span>
839
- <span class="cstat-no" title="statement not covered" > }</span>
840
- <span class="cstat-no" title="statement not covered" ></span>
841
- <span class="cstat-no" title="statement not covered" > if (searchInput) {</span>
842
- <span class="cstat-no" title="statement not covered" > searchInput.addEventListener('keyup', debouncedSearch);</span>
843
- <span class="cstat-no" title="statement not covered" > }</span>
844
- <span class="cstat-no" title="statement not covered" ></span>
845
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-undef</span>
846
- <span class="cstat-no" title="statement not covered" > if (window.location.hash === searchHash) {</span>
847
- <span class="cstat-no" title="statement not covered" > showSearch();</span>
848
- <span class="cstat-no" title="statement not covered" > }</span>
849
- <span class="cstat-no" title="statement not covered" >}</span>
850
- <span class="cstat-no" title="statement not covered" ></span>
851
- <span class="cstat-no" title="statement not covered" >// eslint-disable-next-line no-undef</span>
852
- <span class="cstat-no" title="statement not covered" >window.addEventListener('DOMContentLoaded', onDomContentLoaded);</span>
853
- <span class="cstat-no" title="statement not covered" ></span>
854
- <span class="cstat-no" title="statement not covered" >// eslint-disable-next-line no-undef</span>
855
- <span class="cstat-no" title="statement not covered" >window.addEventListener('hashchange', function() {</span>
856
- <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-undef</span>
857
- <span class="cstat-no" title="statement not covered" > if (window.location.hash === searchHash) {</span>
858
- <span class="cstat-no" title="statement not covered" > showSearch();</span>
859
- <span class="cstat-no" title="statement not covered" > }</span>
860
- <span class="cstat-no" title="statement not covered" >});</span>
861
- &nbsp;</pre></td></tr></table></pre>
862
-
863
- <div class='push'></div><!-- for sticky footer -->
864
- </div><!-- /wrapper -->
865
- <div class='footer quiet pad2 space-top1 center small'>
866
- Code coverage generated by
867
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
868
- at 2025-06-23T19:41:12.391Z
869
- </div>
870
- <script src="../../../prettify.js"></script>
871
- <script>
872
- window.onload = function () {
873
- prettyPrint();
874
- };
875
- </script>
876
- <script src="../../../sorter.js"></script>
877
- <script src="../../../block-navigation.js"></script>
878
- </body>
879
- </html>
880
-