@k-int/stripes-kint-components 1.3.0 → 1.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 (251) hide show
  1. package/CHANGELOG.md +34 -2
  2. package/es/artifacts/coverage-jest/lcov-report/block-navigation.js +109 -0
  3. package/es/artifacts/coverage-jest/lcov-report/prettify.js +998 -0
  4. package/es/artifacts/coverage-jest/lcov-report/sorter.js +238 -0
  5. package/es/index.js +69 -17
  6. package/es/lib/ActionList/ActionList.js +63 -24
  7. package/es/lib/ActionList/ActionListFieldArray.js +158 -96
  8. package/es/lib/ActionList/index.js +7 -3
  9. package/es/lib/EditableRefdataList/EditableRefdataList.js +69 -24
  10. package/es/lib/EditableRefdataList/index.js +7 -3
  11. package/es/lib/EditableSettingsList/EditableSettingsList.js +90 -0
  12. package/es/lib/EditableSettingsList/EditableSettingsListFieldArray.js +90 -0
  13. package/es/lib/EditableSettingsList/EditableSettingsListFieldArray.test.js +181 -0
  14. package/es/lib/{Settings → EditableSettingsList/SettingField}/EditSettingValue.js +72 -9
  15. package/es/lib/EditableSettingsList/SettingField/EditSettingValue.test.js +447 -0
  16. package/es/lib/{Settings → EditableSettingsList/SettingField}/RenderSettingValue.js +45 -7
  17. package/es/lib/EditableSettingsList/SettingField/RenderSettingValue.test.js +495 -0
  18. package/es/lib/EditableSettingsList/SettingField/SettingField.js +187 -0
  19. package/es/lib/EditableSettingsList/SettingField/SettingField.test.js +180 -0
  20. package/es/lib/EditableSettingsList/SettingField/index.js +35 -0
  21. package/es/lib/EditableSettingsList/index.js +35 -0
  22. package/es/lib/NoResultsMessage/NoResultsMessage.js +122 -0
  23. package/es/lib/NoResultsMessage/index.js +19 -0
  24. package/es/lib/QueryTypedown/QueryTypedown.js +48 -9
  25. package/es/lib/QueryTypedown/index.js +6 -2
  26. package/es/lib/RefdataButtons/RefdataButtons.js +143 -0
  27. package/es/lib/RefdataButtons/index.js +19 -0
  28. package/es/lib/SASQLookupComponent/SASQLookupComponent.js +202 -131
  29. package/es/lib/SASQLookupComponent/index.js +6 -2
  30. package/es/lib/SASQRoute/SASQRoute.js +55 -18
  31. package/es/lib/SASQRoute/index.js +6 -2
  32. package/es/lib/SASQViewComponent/SASQViewComponent.js +50 -11
  33. package/es/lib/SASQViewComponent/index.js +6 -2
  34. package/es/lib/SearchField/SearchField.js +48 -13
  35. package/es/lib/SearchField/index.js +6 -2
  36. package/es/lib/SettingPage/SettingPage.js +99 -0
  37. package/es/lib/SettingPage/SettingPagePane.js +83 -0
  38. package/es/lib/SettingPage/index.js +27 -0
  39. package/es/lib/TypeDown/TypeDown.js +143 -101
  40. package/es/lib/TypeDown/index.js +6 -2
  41. package/es/lib/Typedown/Typedown.js +140 -96
  42. package/es/lib/Typedown/index.js +6 -2
  43. package/es/lib/constants/eventCodes.js +31 -1
  44. package/es/lib/contexts/SettingsContext.js +41 -0
  45. package/es/lib/contexts/index.js +19 -0
  46. package/es/lib/hooks/index.js +42 -8
  47. package/es/lib/hooks/settingsHooks/index.js +27 -0
  48. package/es/lib/hooks/settingsHooks/useSettingSection.js +74 -0
  49. package/es/lib/hooks/settingsHooks/useSettings.js +175 -0
  50. package/es/lib/hooks/typedownHooks/index.js +8 -28
  51. package/es/lib/hooks/typedownHooks/useTypedown.js +129 -12
  52. package/es/lib/hooks/typedownHooks/useTypedownData.js +35 -2
  53. package/es/lib/hooks/typedownHooks/useTypedownToggle.js +39 -6
  54. package/es/lib/hooks/useActiveElement.js +33 -2
  55. package/es/lib/hooks/useHelperApp.js +51 -12
  56. package/es/lib/hooks/useKiwtFieldArray.js +142 -0
  57. package/es/lib/hooks/useKiwtSASQuery.js +62 -7
  58. package/es/lib/hooks/useLocalStorageState.js +37 -4
  59. package/es/lib/hooks/useMutateRefdataValue.js +42 -9
  60. package/es/lib/hooks/useQIndex.js +108 -0
  61. package/es/lib/hooks/useRefdata.js +56 -12
  62. package/es/lib/hooks/useTemplates.js +36 -3
  63. package/es/lib/utils/buildUrl.js +43 -10
  64. package/es/lib/utils/generateKiwtQuery.js +31 -108
  65. package/es/lib/utils/generateKiwtQueryParams.js +154 -0
  66. package/es/lib/utils/index.js +55 -3
  67. package/es/lib/utils/refdataOptions.js +43 -0
  68. package/es/lib/utils/renderHelpText.js +109 -0
  69. package/es/lib/utils/selectorSafe.js +31 -2
  70. package/es/lib/utils/sortByLabel.js +55 -0
  71. package/es/lib/utils/toCamelCase.js +48 -0
  72. package/jest.config.js +15 -1
  73. package/junit.xml +79 -0
  74. package/package.json +17 -10
  75. package/src/artifacts/coverage-jest/lcov-report/ActionList/ActionList.js.html +256 -0
  76. package/src/artifacts/coverage-jest/lcov-report/ActionList/ActionListFieldArray.js.html +799 -0
  77. package/src/artifacts/coverage-jest/lcov-report/ActionList/index.html +146 -0
  78. package/src/artifacts/coverage-jest/lcov-report/ActionList/index.js.html +88 -0
  79. package/src/artifacts/coverage-jest/lcov-report/EditableRefdataList/EditableRefdataList.js.html +376 -0
  80. package/src/artifacts/coverage-jest/lcov-report/EditableRefdataList/index.html +131 -0
  81. package/src/artifacts/coverage-jest/lcov-report/EditableRefdataList/index.js.html +88 -0
  82. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/EditableSettingsList.js.html +223 -0
  83. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/EditableSettingsListFieldArray.js.html +211 -0
  84. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/SettingField/EditSettingValue.js.html +376 -0
  85. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/SettingField/RenderSettingValue.js.html +262 -0
  86. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/SettingField/SettingField.js.html +436 -0
  87. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/SettingField/index.html +161 -0
  88. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/SettingField/index.js.html +94 -0
  89. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/index.html +146 -0
  90. package/src/artifacts/coverage-jest/lcov-report/EditableSettingsList/index.js.html +94 -0
  91. package/src/artifacts/coverage-jest/lcov-report/NoResultsMessage/NoResultsMessage.js.html +319 -0
  92. package/src/artifacts/coverage-jest/lcov-report/NoResultsMessage/index.html +131 -0
  93. package/src/artifacts/coverage-jest/lcov-report/NoResultsMessage/index.js.html +88 -0
  94. package/src/artifacts/coverage-jest/lcov-report/QueryTypedown/QueryTypedown.js.html +184 -0
  95. package/src/artifacts/coverage-jest/lcov-report/QueryTypedown/index.html +131 -0
  96. package/src/artifacts/coverage-jest/lcov-report/QueryTypedown/index.js.html +88 -0
  97. package/src/artifacts/coverage-jest/lcov-report/RefdataButtons/RefdataButtons.js.html +370 -0
  98. package/src/artifacts/coverage-jest/lcov-report/RefdataButtons/index.html +131 -0
  99. package/src/artifacts/coverage-jest/lcov-report/RefdataButtons/index.js.html +88 -0
  100. package/src/artifacts/coverage-jest/lcov-report/SASQLookupComponent/SASQLookupComponent.js.html +949 -0
  101. package/src/artifacts/coverage-jest/lcov-report/SASQLookupComponent/index.html +131 -0
  102. package/src/artifacts/coverage-jest/lcov-report/SASQLookupComponent/index.js.html +88 -0
  103. package/src/artifacts/coverage-jest/lcov-report/SASQRoute/SASQRoute.js.html +274 -0
  104. package/src/artifacts/coverage-jest/lcov-report/SASQRoute/index.html +131 -0
  105. package/src/artifacts/coverage-jest/lcov-report/SASQRoute/index.js.html +88 -0
  106. package/src/artifacts/coverage-jest/lcov-report/SASQViewComponent/SASQViewComponent.js.html +250 -0
  107. package/src/artifacts/coverage-jest/lcov-report/SASQViewComponent/index.html +131 -0
  108. package/src/artifacts/coverage-jest/lcov-report/SASQViewComponent/index.js.html +88 -0
  109. package/src/artifacts/coverage-jest/lcov-report/SearchField/SearchField.js.html +214 -0
  110. package/src/artifacts/coverage-jest/lcov-report/SearchField/index.html +131 -0
  111. package/src/artifacts/coverage-jest/lcov-report/SearchField/index.js.html +88 -0
  112. package/src/artifacts/coverage-jest/lcov-report/SettingPage/SettingPage.js.html +211 -0
  113. package/src/artifacts/coverage-jest/lcov-report/SettingPage/SettingPagePane.js.html +178 -0
  114. package/src/artifacts/coverage-jest/lcov-report/SettingPage/index.html +146 -0
  115. package/src/artifacts/coverage-jest/lcov-report/SettingPage/index.js.html +91 -0
  116. package/src/artifacts/coverage-jest/lcov-report/TypeDown/TypeDown.js.html +769 -0
  117. package/src/artifacts/coverage-jest/lcov-report/TypeDown/index.html +131 -0
  118. package/src/artifacts/coverage-jest/lcov-report/TypeDown/index.js.html +88 -0
  119. package/src/artifacts/coverage-jest/lcov-report/Typedown/Typedown.js.html +790 -0
  120. package/src/artifacts/coverage-jest/lcov-report/Typedown/index.html +131 -0
  121. package/src/artifacts/coverage-jest/lcov-report/Typedown/index.js.html +88 -0
  122. package/src/artifacts/coverage-jest/lcov-report/base.css +224 -0
  123. package/src/artifacts/coverage-jest/lcov-report/block-navigation.js +87 -0
  124. package/src/artifacts/coverage-jest/lcov-report/constants/eventCodes.js.html +94 -0
  125. package/src/artifacts/coverage-jest/lcov-report/constants/index.html +116 -0
  126. package/src/artifacts/coverage-jest/lcov-report/contexts/SettingsContext.js.html +97 -0
  127. package/src/artifacts/coverage-jest/lcov-report/contexts/index.html +131 -0
  128. package/src/artifacts/coverage-jest/lcov-report/contexts/index.js.html +91 -0
  129. package/src/artifacts/coverage-jest/lcov-report/favicon.png +0 -0
  130. package/src/artifacts/coverage-jest/lcov-report/hooks/index.html +251 -0
  131. package/src/artifacts/coverage-jest/lcov-report/hooks/index.js.html +115 -0
  132. package/src/artifacts/coverage-jest/lcov-report/hooks/settingsHooks/index.html +146 -0
  133. package/src/artifacts/coverage-jest/lcov-report/hooks/settingsHooks/index.js.html +91 -0
  134. package/src/artifacts/coverage-jest/lcov-report/hooks/settingsHooks/useSettingSection.js.html +163 -0
  135. package/src/artifacts/coverage-jest/lcov-report/hooks/settingsHooks/useSettings.js.html +403 -0
  136. package/src/artifacts/coverage-jest/lcov-report/hooks/typedownHooks/index.html +161 -0
  137. package/src/artifacts/coverage-jest/lcov-report/hooks/typedownHooks/index.js.html +94 -0
  138. package/src/artifacts/coverage-jest/lcov-report/hooks/typedownHooks/useTypedown.js.html +520 -0
  139. package/src/artifacts/coverage-jest/lcov-report/hooks/typedownHooks/useTypedownData.js.html +163 -0
  140. package/src/artifacts/coverage-jest/lcov-report/hooks/typedownHooks/useTypedownToggle.js.html +163 -0
  141. package/src/artifacts/coverage-jest/lcov-report/hooks/useActiveElement.js.html +157 -0
  142. package/src/artifacts/coverage-jest/lcov-report/hooks/useHelperApp.js.html +283 -0
  143. package/src/artifacts/coverage-jest/lcov-report/hooks/useKiwtFieldArray.js.html +274 -0
  144. package/src/artifacts/coverage-jest/lcov-report/hooks/useKiwtSASQuery.js.html +178 -0
  145. package/src/artifacts/coverage-jest/lcov-report/hooks/useLocalStorageState.js.html +136 -0
  146. package/src/artifacts/coverage-jest/lcov-report/hooks/useMutateRefdataValue.js.html +301 -0
  147. package/src/artifacts/coverage-jest/lcov-report/hooks/useQIndex.js.html +208 -0
  148. package/src/artifacts/coverage-jest/lcov-report/hooks/useRefdata.js.html +268 -0
  149. package/src/artifacts/coverage-jest/lcov-report/hooks/useTemplates.js.html +166 -0
  150. package/src/artifacts/coverage-jest/lcov-report/index.html +401 -0
  151. package/src/artifacts/coverage-jest/lcov-report/prettify.css +1 -0
  152. package/src/artifacts/coverage-jest/lcov-report/prettify.js +2 -0
  153. package/src/artifacts/coverage-jest/lcov-report/sort-arrow-sprite.png +0 -0
  154. package/src/artifacts/coverage-jest/lcov-report/sorter.js +196 -0
  155. package/src/artifacts/coverage-jest/lcov-report/utils/buildUrl.js.html +193 -0
  156. package/src/artifacts/coverage-jest/lcov-report/utils/generateKiwtQuery.js.html +109 -0
  157. package/src/artifacts/coverage-jest/lcov-report/utils/generateKiwtQueryParams.js.html +286 -0
  158. package/src/artifacts/coverage-jest/lcov-report/utils/index.html +236 -0
  159. package/src/artifacts/coverage-jest/lcov-report/utils/index.js.html +121 -0
  160. package/src/artifacts/coverage-jest/lcov-report/utils/refdataOptions.js.html +106 -0
  161. package/src/artifacts/coverage-jest/lcov-report/utils/renderHelpText.js.html +166 -0
  162. package/src/artifacts/coverage-jest/lcov-report/utils/selectorSafe.js.html +103 -0
  163. package/src/artifacts/coverage-jest/lcov-report/utils/sortByLabel.js.html +130 -0
  164. package/src/artifacts/coverage-jest/lcov-report/utils/toCamelCase.js.html +127 -0
  165. package/src/artifacts/coverage-jest/lcov.info +1999 -0
  166. package/src/index.js +21 -6
  167. package/src/lib/ActionList/ActionList.js +5 -2
  168. package/src/lib/ActionList/ActionListFieldArray.js +20 -8
  169. package/src/lib/ActionList/README.md +1 -0
  170. package/src/lib/ActionList/index.js +1 -1
  171. package/src/lib/EditableRefdataList/EditableRefdataList.js +10 -5
  172. package/src/lib/EditableRefdataList/index.js +1 -1
  173. package/src/lib/{Settings → EditableSettingsList}/EditableSettingsList.js +0 -0
  174. package/src/lib/{Settings → EditableSettingsList}/EditableSettingsListFieldArray.js +2 -2
  175. package/src/lib/EditableSettingsList/EditableSettingsListFieldArray.test.js +111 -0
  176. package/src/lib/{Settings → EditableSettingsList/SettingField}/EditSettingValue.js +24 -1
  177. package/src/lib/EditableSettingsList/SettingField/EditSettingValue.test.js +379 -0
  178. package/src/lib/{Settings → EditableSettingsList/SettingField}/RenderSettingValue.js +2 -1
  179. package/src/lib/EditableSettingsList/SettingField/RenderSettingValue.test.js +368 -0
  180. package/src/lib/{Settings → EditableSettingsList/SettingField}/SettingField.js +7 -7
  181. package/src/lib/EditableSettingsList/SettingField/SettingField.test.js +80 -0
  182. package/src/lib/EditableSettingsList/SettingField/index.js +3 -0
  183. package/src/lib/EditableSettingsList/index.js +3 -0
  184. package/src/lib/NoResultsMessage/NoResultsMessage.js +78 -0
  185. package/src/lib/NoResultsMessage/index.js +1 -0
  186. package/src/lib/{Settings → RefdataButtons}/RefdataButtons.js +1 -1
  187. package/src/lib/RefdataButtons/index.js +1 -0
  188. package/src/lib/SASQLookupComponent/SASQLookupComponent.js +36 -8
  189. package/src/lib/SASQRoute/README.md +1 -1
  190. package/src/lib/{Settings → SettingPage}/SettingPage.js +5 -5
  191. package/src/lib/{Settings → SettingPage}/SettingPagePane.js +12 -2
  192. package/src/lib/SettingPage/index.js +2 -0
  193. package/src/lib/TypeDown/README.md +1 -115
  194. package/src/lib/TypeDown/TypeDown.js +4 -2
  195. package/src/lib/Typedown/Typedown.js +2 -1
  196. package/src/lib/{Settings → contexts}/SettingsContext.js +1 -1
  197. package/src/lib/contexts/index.js +2 -0
  198. package/src/lib/hooks/README.md +107 -0
  199. package/src/lib/hooks/index.js +3 -0
  200. package/src/lib/hooks/settingsHooks/index.js +2 -0
  201. package/src/lib/{Settings → hooks/settingsHooks}/useSettingSection.js +0 -0
  202. package/src/lib/{Settings → hooks/settingsHooks}/useSettings.js +14 -6
  203. package/src/lib/hooks/typedownHooks/index.js +0 -3
  204. package/src/lib/hooks/typedownHooks/useTypedown.js +93 -11
  205. package/src/lib/hooks/useHelperApp.js +5 -1
  206. package/src/lib/hooks/useKiwtFieldArray.js +63 -0
  207. package/src/lib/hooks/useKiwtSASQuery.js +9 -1
  208. package/src/lib/hooks/useQIndex.js +41 -0
  209. package/src/lib/hooks/useRefdata.js +17 -6
  210. package/src/lib/utils/README.md +39 -1
  211. package/src/lib/utils/generateKiwtQuery.js +3 -62
  212. package/src/lib/utils/generateKiwtQueryParams.js +67 -0
  213. package/src/lib/utils/index.js +10 -0
  214. package/src/lib/utils/refdataOptions.js +7 -0
  215. package/src/lib/{Settings/utils → utils}/renderHelpText.js +1 -1
  216. package/src/lib/{Settings/utils → utils}/sortByLabel.js +1 -1
  217. package/src/lib/{Settings/utils → utils}/toCamelCase.js +0 -0
  218. package/styles/NoResultsMessage.css +38 -0
  219. package/test/helpers/index.js +1 -0
  220. package/test/helpers/translationsProperties.js +40 -0
  221. package/test/jest/helpers/KintHarness.js +36 -0
  222. package/test/jest/helpers/index.js +2 -0
  223. package/test/jest/helpers/renderWithKintHarness.js +15 -0
  224. package/test/jest/jest-transformer.js +4 -0
  225. package/test/jest/setupTests.js +1 -0
  226. package/translations/stripes-kint-components/en.json +4 -1
  227. package/babelOptions.js +0 -30
  228. package/es/lib/Settings/EditableSettingsList.js +0 -57
  229. package/es/lib/Settings/EditableSettingsListFieldArray.js +0 -59
  230. package/es/lib/Settings/RefdataButtons.js +0 -100
  231. package/es/lib/Settings/SettingField.js +0 -144
  232. package/es/lib/Settings/SettingPage.js +0 -64
  233. package/es/lib/Settings/SettingPagePane.js +0 -43
  234. package/es/lib/Settings/SettingsContext.js +0 -18
  235. package/es/lib/Settings/index.js +0 -71
  236. package/es/lib/Settings/useSettingSection.js +0 -41
  237. package/es/lib/Settings/useSettings.js +0 -126
  238. package/es/lib/Settings/utils/index.js +0 -31
  239. package/es/lib/Settings/utils/renderHelpText.js +0 -57
  240. package/es/lib/Settings/utils/sortByLabel.js +0 -26
  241. package/es/lib/Settings/utils/toCamelCase.js +0 -19
  242. package/es/lib/hooks/typedownHooks/useTypedownFooter.js +0 -47
  243. package/es/lib/hooks/typedownHooks/useTypedownList.js +0 -45
  244. package/es/lib/hooks/typedownHooks/useTypedownSearchField.js +0 -47
  245. package/es/lib/utils/getFocusableElements.js +0 -132
  246. package/src/lib/Settings/index.js +0 -8
  247. package/src/lib/Settings/utils/index.js +0 -3
  248. package/src/lib/hooks/typedownHooks/useTypedownFooter.js +0 -43
  249. package/src/lib/hooks/typedownHooks/useTypedownList.js +0 -36
  250. package/src/lib/hooks/typedownHooks/useTypedownSearchField.js +0 -39
  251. package/src/lib/utils/getFocusableElements.js +0 -99
@@ -0,0 +1,790 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for Typedown/Typedown.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">Typedown</a> Typedown.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/35</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/22</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/13</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/33</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 oninput="onInput()" 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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
302
+ <span class="cline-any cline-neutral">&nbsp;</span>
303
+ <span class="cline-any cline-neutral">&nbsp;</span>
304
+ <span class="cline-any cline-neutral">&nbsp;</span>
305
+ <span class="cline-any cline-neutral">&nbsp;</span>
306
+ <span class="cline-any cline-neutral">&nbsp;</span>
307
+ <span class="cline-any cline-neutral">&nbsp;</span>
308
+ <span class="cline-any cline-neutral">&nbsp;</span>
309
+ <span class="cline-any cline-neutral">&nbsp;</span>
310
+ <span class="cline-any cline-neutral">&nbsp;</span>
311
+ <span class="cline-any cline-neutral">&nbsp;</span>
312
+ <span class="cline-any cline-neutral">&nbsp;</span>
313
+ <span class="cline-any cline-neutral">&nbsp;</span>
314
+ <span class="cline-any cline-neutral">&nbsp;</span>
315
+ <span class="cline-any cline-neutral">&nbsp;</span>
316
+ <span class="cline-any cline-neutral">&nbsp;</span>
317
+ <span class="cline-any cline-neutral">&nbsp;</span>
318
+ <span class="cline-any cline-no">&nbsp;</span>
319
+ <span class="cline-any cline-neutral">&nbsp;</span>
320
+ <span class="cline-any cline-neutral">&nbsp;</span>
321
+ <span class="cline-any cline-neutral">&nbsp;</span>
322
+ <span class="cline-any cline-neutral">&nbsp;</span>
323
+ <span class="cline-any cline-neutral">&nbsp;</span>
324
+ <span class="cline-any cline-neutral">&nbsp;</span>
325
+ <span class="cline-any cline-neutral">&nbsp;</span>
326
+ <span class="cline-any cline-neutral">&nbsp;</span>
327
+ <span class="cline-any cline-neutral">&nbsp;</span>
328
+ <span class="cline-any cline-neutral">&nbsp;</span>
329
+ <span class="cline-any cline-no">&nbsp;</span>
330
+ <span class="cline-any cline-neutral">&nbsp;</span>
331
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
336
+ <span class="cline-any cline-neutral">&nbsp;</span>
337
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
347
+ <span class="cline-any cline-no">&nbsp;</span>
348
+ <span class="cline-any cline-neutral">&nbsp;</span>
349
+ <span class="cline-any cline-neutral">&nbsp;</span>
350
+ <span class="cline-any cline-neutral">&nbsp;</span>
351
+ <span class="cline-any cline-neutral">&nbsp;</span>
352
+ <span class="cline-any cline-neutral">&nbsp;</span>
353
+ <span class="cline-any cline-neutral">&nbsp;</span>
354
+ <span class="cline-any cline-neutral">&nbsp;</span>
355
+ <span class="cline-any cline-neutral">&nbsp;</span>
356
+ <span class="cline-any cline-neutral">&nbsp;</span>
357
+ <span class="cline-any cline-neutral">&nbsp;</span>
358
+ <span class="cline-any cline-neutral">&nbsp;</span>
359
+ <span class="cline-any cline-neutral">&nbsp;</span>
360
+ <span class="cline-any cline-neutral">&nbsp;</span>
361
+ <span class="cline-any cline-neutral">&nbsp;</span>
362
+ <span class="cline-any cline-neutral">&nbsp;</span>
363
+ <span class="cline-any cline-neutral">&nbsp;</span>
364
+ <span class="cline-any cline-neutral">&nbsp;</span>
365
+ <span class="cline-any cline-neutral">&nbsp;</span>
366
+ <span class="cline-any cline-neutral">&nbsp;</span>
367
+ <span class="cline-any cline-neutral">&nbsp;</span>
368
+ <span class="cline-any cline-neutral">&nbsp;</span>
369
+ <span class="cline-any cline-neutral">&nbsp;</span>
370
+ <span class="cline-any cline-no">&nbsp;</span>
371
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
375
+ <span class="cline-any cline-neutral">&nbsp;</span>
376
+ <span class="cline-any cline-neutral">&nbsp;</span>
377
+ <span class="cline-any cline-neutral">&nbsp;</span>
378
+ <span class="cline-any cline-neutral">&nbsp;</span>
379
+ <span class="cline-any cline-neutral">&nbsp;</span>
380
+ <span class="cline-any cline-neutral">&nbsp;</span>
381
+ <span class="cline-any cline-neutral">&nbsp;</span>
382
+ <span class="cline-any cline-neutral">&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-neutral">&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-neutral">&nbsp;</span>
389
+ <span class="cline-any cline-neutral">&nbsp;</span>
390
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
394
+ <span class="cline-any cline-neutral">&nbsp;</span>
395
+ <span class="cline-any cline-neutral">&nbsp;</span>
396
+ <span class="cline-any cline-neutral">&nbsp;</span>
397
+ <span class="cline-any cline-neutral">&nbsp;</span>
398
+ <span class="cline-any cline-neutral">&nbsp;</span>
399
+ <span class="cline-any cline-neutral">&nbsp;</span>
400
+ <span class="cline-any cline-neutral">&nbsp;</span>
401
+ <span class="cline-any cline-neutral">&nbsp;</span>
402
+ <span class="cline-any cline-neutral">&nbsp;</span>
403
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
407
+ <span class="cline-any cline-neutral">&nbsp;</span>
408
+ <span class="cline-any cline-neutral">&nbsp;</span>
409
+ <span class="cline-any cline-neutral">&nbsp;</span>
410
+ <span class="cline-any cline-neutral">&nbsp;</span>
411
+ <span class="cline-any cline-neutral">&nbsp;</span>
412
+ <span class="cline-any cline-neutral">&nbsp;</span>
413
+ <span class="cline-any cline-neutral">&nbsp;</span>
414
+ <span class="cline-any cline-neutral">&nbsp;</span>
415
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
419
+ <span class="cline-any cline-neutral">&nbsp;</span>
420
+ <span class="cline-any cline-neutral">&nbsp;</span>
421
+ <span class="cline-any cline-neutral">&nbsp;</span>
422
+ <span class="cline-any cline-neutral">&nbsp;</span>
423
+ <span class="cline-any cline-neutral">&nbsp;</span>
424
+ <span class="cline-any cline-neutral">&nbsp;</span>
425
+ <span class="cline-any cline-neutral">&nbsp;</span>
426
+ <span class="cline-any cline-neutral">&nbsp;</span>
427
+ <span class="cline-any cline-neutral">&nbsp;</span>
428
+ <span class="cline-any cline-neutral">&nbsp;</span>
429
+ <span class="cline-any cline-neutral">&nbsp;</span>
430
+ <span class="cline-any cline-neutral">&nbsp;</span>
431
+ <span class="cline-any cline-neutral">&nbsp;</span>
432
+ <span class="cline-any cline-neutral">&nbsp;</span>
433
+ <span class="cline-any cline-neutral">&nbsp;</span>
434
+ <span class="cline-any cline-neutral">&nbsp;</span>
435
+ <span class="cline-any cline-neutral">&nbsp;</span>
436
+ <span class="cline-any cline-neutral">&nbsp;</span>
437
+ <span class="cline-any cline-neutral">&nbsp;</span>
438
+ <span class="cline-any cline-neutral">&nbsp;</span>
439
+ <span class="cline-any cline-neutral">&nbsp;</span>
440
+ <span class="cline-any cline-neutral">&nbsp;</span>
441
+ <span class="cline-any cline-neutral">&nbsp;</span>
442
+ <span class="cline-any cline-neutral">&nbsp;</span>
443
+ <span class="cline-any cline-neutral">&nbsp;</span>
444
+ <span class="cline-any cline-neutral">&nbsp;</span>
445
+ <span class="cline-any cline-neutral">&nbsp;</span>
446
+ <span class="cline-any cline-neutral">&nbsp;</span>
447
+ <span class="cline-any cline-neutral">&nbsp;</span>
448
+ <span class="cline-any cline-neutral">&nbsp;</span>
449
+ <span class="cline-any cline-neutral">&nbsp;</span>
450
+ <span class="cline-any cline-neutral">&nbsp;</span>
451
+ <span class="cline-any cline-neutral">&nbsp;</span>
452
+ <span class="cline-any cline-neutral">&nbsp;</span>
453
+ <span class="cline-any cline-neutral">&nbsp;</span>
454
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
458
+ <span class="cline-any cline-neutral">&nbsp;</span>
459
+ <span class="cline-any cline-neutral">&nbsp;</span>
460
+ <span class="cline-any cline-neutral">&nbsp;</span>
461
+ <span class="cline-any cline-neutral">&nbsp;</span>
462
+ <span class="cline-any cline-neutral">&nbsp;</span>
463
+ <span class="cline-any cline-neutral">&nbsp;</span>
464
+ <span class="cline-any cline-neutral">&nbsp;</span>
465
+ <span class="cline-any cline-neutral">&nbsp;</span>
466
+ <span class="cline-any cline-neutral">&nbsp;</span>
467
+ <span class="cline-any cline-neutral">&nbsp;</span>
468
+ <span class="cline-any cline-neutral">&nbsp;</span>
469
+ <span class="cline-any cline-neutral">&nbsp;</span>
470
+ <span class="cline-any cline-neutral">&nbsp;</span>
471
+ <span class="cline-any cline-neutral">&nbsp;</span>
472
+ <span class="cline-any cline-neutral">&nbsp;</span>
473
+ <span class="cline-any cline-no">&nbsp;</span>
474
+ <span class="cline-any cline-neutral">&nbsp;</span>
475
+ <span class="cline-any cline-neutral">&nbsp;</span>
476
+ <span class="cline-any cline-neutral">&nbsp;</span>
477
+ <span class="cline-any cline-neutral">&nbsp;</span>
478
+ <span class="cline-any cline-neutral">&nbsp;</span>
479
+ <span class="cline-any cline-neutral">&nbsp;</span>
480
+ <span class="cline-any cline-neutral">&nbsp;</span>
481
+ <span class="cline-any cline-neutral">&nbsp;</span>
482
+ <span class="cline-any cline-neutral">&nbsp;</span>
483
+ <span class="cline-any cline-neutral">&nbsp;</span>
484
+ <span class="cline-any cline-neutral">&nbsp;</span>
485
+ <span class="cline-any cline-neutral">&nbsp;</span>
486
+ <span class="cline-any cline-neutral">&nbsp;</span>
487
+ <span class="cline-any cline-neutral">&nbsp;</span>
488
+ <span class="cline-any cline-neutral">&nbsp;</span>
489
+ <span class="cline-any cline-neutral">&nbsp;</span>
490
+ <span class="cline-any cline-neutral">&nbsp;</span>
491
+ <span class="cline-any cline-neutral">&nbsp;</span>
492
+ <span class="cline-any cline-neutral">&nbsp;</span>
493
+ <span class="cline-any cline-no">&nbsp;</span>
494
+ <span class="cline-any cline-neutral">&nbsp;</span>
495
+ <span class="cline-any cline-neutral">&nbsp;</span>
496
+ <span class="cline-any cline-neutral">&nbsp;</span>
497
+ <span class="cline-any cline-neutral">&nbsp;</span>
498
+ <span class="cline-any cline-neutral">&nbsp;</span>
499
+ <span class="cline-any cline-neutral">&nbsp;</span>
500
+ <span class="cline-any cline-neutral">&nbsp;</span>
501
+ <span class="cline-any cline-neutral">&nbsp;</span>
502
+ <span class="cline-any cline-neutral">&nbsp;</span>
503
+ <span class="cline-any cline-neutral">&nbsp;</span>
504
+ <span class="cline-any cline-neutral">&nbsp;</span>
505
+ <span class="cline-any cline-neutral">&nbsp;</span>
506
+ <span class="cline-any cline-neutral">&nbsp;</span>
507
+ <span class="cline-any cline-neutral">&nbsp;</span>
508
+ <span class="cline-any cline-neutral">&nbsp;</span>
509
+ <span class="cline-any cline-neutral">&nbsp;</span>
510
+ <span class="cline-any cline-neutral">&nbsp;</span>
511
+ <span class="cline-any cline-neutral">&nbsp;</span>
512
+ <span class="cline-any cline-neutral">&nbsp;</span>
513
+ <span class="cline-any cline-neutral">&nbsp;</span>
514
+ <span class="cline-any cline-neutral">&nbsp;</span>
515
+ <span class="cline-any cline-no">&nbsp;</span>
516
+ <span class="cline-any cline-neutral">&nbsp;</span>
517
+ <span class="cline-any cline-neutral">&nbsp;</span>
518
+ <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-neutral">&nbsp;</span>
520
+ <span class="cline-any cline-neutral">&nbsp;</span>
521
+ <span class="cline-any cline-neutral">&nbsp;</span>
522
+ <span class="cline-any cline-neutral">&nbsp;</span>
523
+ <span class="cline-any cline-no">&nbsp;</span>
524
+ <span class="cline-any cline-neutral">&nbsp;</span>
525
+ <span class="cline-any cline-neutral">&nbsp;</span>
526
+ <span class="cline-any cline-neutral">&nbsp;</span>
527
+ <span class="cline-any cline-neutral">&nbsp;</span>
528
+ <span class="cline-any cline-neutral">&nbsp;</span>
529
+ <span class="cline-any cline-neutral">&nbsp;</span>
530
+ <span class="cline-any cline-neutral">&nbsp;</span>
531
+ <span class="cline-any cline-neutral">&nbsp;</span>
532
+ <span class="cline-any cline-neutral">&nbsp;</span>
533
+ <span class="cline-any cline-neutral">&nbsp;</span>
534
+ <span class="cline-any cline-neutral">&nbsp;</span>
535
+ <span class="cline-any cline-neutral">&nbsp;</span>
536
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import React, { useCallback, useEffect, useState } from 'react';
537
+ import PropTypes from 'prop-types';
538
+ import classnames from 'classnames';
539
+ &nbsp;
540
+ import get from 'lodash/get';
541
+ &nbsp;
542
+ import { EndOfList, IconButton, Popper } from '@folio/stripes/components';
543
+ &nbsp;
544
+ // eslint-disable-next-line import/no-extraneous-dependencies
545
+ import { interactionStyles } from '@folio/stripes-components/lib/sharedStyles/interactionStyles.css';
546
+ &nbsp;
547
+ import SearchField from '../SearchField';
548
+ import css from '../../../styles/TypeDown.css';
549
+ &nbsp;
550
+ import { useTypedown } from '../hooks/typedownHooks';
551
+ import selectorSafe from '../utils/selectorSafe';
552
+ &nbsp;
553
+ const Typedown = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >({</span></span>
554
+ dataOptions,
555
+ input,
556
+ filterPath,
557
+ meta,
558
+ onChange,
559
+ onType,
560
+ renderFooter = <span class="branch-0 cbranch-no" title="branch not covered" >null,</span>
561
+ renderListItem = <span class="branch-0 cbranch-no" title="branch not covered" >null,</span>
562
+ uniqueIdentificationPath = <span class="branch-0 cbranch-no" title="branch not covered" >'id'</span>
563
+ }) =&gt; {
564
+ const selectedUniqueId = <span class="cstat-no" title="statement not covered" >get(input.value, uniqueIdentificationPath);</span>
565
+ &nbsp;
566
+ // Display data needs to be in line with data options but also able to react to default handleType
567
+ const [displayData, setDisplayData] = <span class="cstat-no" title="statement not covered" >useState(dataOptions);</span>
568
+ <span class="cstat-no" title="statement not covered" > useEffect(<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
569
+ <span class="cstat-no" title="statement not covered" > setDisplayData(dataOptions);</span>
570
+ }, [dataOptions]);
571
+ &nbsp;
572
+ // Setup default handleType
573
+ const handleType = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(e</span>) =&gt; {</span>
574
+ const regex = <span class="cstat-no" title="statement not covered" >new RegExp(`${e.target.value.toLowerCase()}`);</span>
575
+ <span class="cstat-no" title="statement not covered" > if (onType) {</span>
576
+ <span class="cstat-no" title="statement not covered" > onType(e);</span>
577
+ } else <span class="cstat-no" title="statement not covered" >if (filterPath &amp;&amp; e?.target?.value) {</span>
578
+ <span class="cstat-no" title="statement not covered" > setDisplayData(dataOptions.filter(<span class="fstat-no" title="function not covered" >it</span>em =&gt; <span class="cstat-no" title="statement not covered" >get(item, filterPath)?.toLowerCase()?.match(regex))</span>);</span>
579
+ } else <span class="cstat-no" title="statement not covered" >if (e?.target?.value) {</span>
580
+ <span class="cstat-no" title="statement not covered" > setDisplayData(dataOptions.filter(<span class="fstat-no" title="function not covered" >it</span>em =&gt; <span class="cstat-no" title="statement not covered" >get(item, uniqueIdentificationPath)?.toLowerCase()?.match(regex))</span>);</span>
581
+ } else {
582
+ <span class="cstat-no" title="statement not covered" > setDisplayData(dataOptions);</span>
583
+ }
584
+ };
585
+ &nbsp;
586
+ // Hook to set up all the essentials
587
+ const {
588
+ refs: {
589
+ listRef,
590
+ triggerRef,
591
+ overlayRef,
592
+ footerRef
593
+ },
594
+ handlers: {
595
+ handleNextFocus,
596
+ listKeyDownHandler,
597
+ searchFieldKeyDownHandler
598
+ },
599
+ variables: {
600
+ open,
601
+ portal,
602
+ resizeRef,
603
+ searchWidth
604
+ }
605
+ } = <span class="cstat-no" title="statement not covered" >useTypedown(input.name);</span>
606
+ &nbsp;
607
+ const renderItem = <span class="cstat-no" title="statement not covered" >useCallback(<span class="fstat-no" title="function not covered" >(o</span>ption) =&gt; (</span>
608
+ <span class="cstat-no" title="statement not covered" > &lt;div</span>
609
+ className={css.listItem}
610
+ &gt;
611
+ {renderListItem ?
612
+ renderListItem(option) :
613
+ get(option, uniqueIdentificationPath)
614
+ }
615
+ &lt;/div&gt;
616
+ ), [renderListItem, uniqueIdentificationPath]);
617
+ &nbsp;
618
+ const handleChange = <span class="cstat-no" title="statement not covered" >useCallback(<span class="fstat-no" title="function not covered" >va</span>lue =&gt; {</span>
619
+ <span class="cstat-no" title="statement not covered" > input.onChange(value);</span>
620
+ &nbsp;
621
+ <span class="cstat-no" title="statement not covered" > if (typeof onChange === 'function') {</span>
622
+ <span class="cstat-no" title="statement not covered" > onChange(value);</span>
623
+ }
624
+ }, [input, onChange]);
625
+ &nbsp;
626
+ const dropDown = <span class="cstat-no" title="statement not covered" >useCallback(<span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
627
+ <span class="cstat-no" title="statement not covered" > return (</span>
628
+ &lt;div
629
+ className={css.dropdownMenu}
630
+ id={`typedown-parent-${selectorSafe(input.name)}-menu`}
631
+ style={{ '--searchWidth': `${searchWidth}px` }}
632
+ &gt;
633
+ &lt;div
634
+ ref={listRef}
635
+ className={css.listContainer}
636
+ id="typedown-list"
637
+ &gt;
638
+ {displayData?.length ? displayData?.map(<span class="fstat-no" title="function not covered" >(d</span>, index) =&gt; {
639
+ const isSelected = <span class="cstat-no" title="statement not covered" >get(input.value, uniqueIdentificationPath) === get(d, uniqueIdentificationPath);</span>
640
+ <span class="cstat-no" title="statement not covered" > return (</span>
641
+ &lt;button
642
+ key={`typedown-button-[${index}]`}
643
+ className={classnames(
644
+ interactionStyles,
645
+ css.fullWidth,
646
+ css.menuButton
647
+ )}
648
+ data-selected={isSelected}
649
+ id={`typedown-button-[${index}]`}
650
+ onClick={<span class="fstat-no" title="function not covered" >()</span> =&gt; {
651
+ <span class="cstat-no" title="statement not covered" > handleChange(d);</span>
652
+ <span class="cstat-no" title="statement not covered" > handleNextFocus();</span>
653
+ }}
654
+ onKeyDown={listKeyDownHandler}
655
+ type="button"
656
+ &gt;
657
+ {renderItem(d)}
658
+ &lt;/button&gt;
659
+ );
660
+ }) :
661
+ // TODO test this
662
+ &lt;EndOfList /&gt;
663
+ }
664
+ &lt;/div&gt;
665
+ {renderFooter &amp;&amp;
666
+ &lt;div
667
+ ref={footerRef}
668
+ className={css.footer}
669
+ id={`typedown-footer-${selectorSafe(input.name)}`}
670
+ &gt;
671
+ {renderFooter()}
672
+ &lt;/div&gt;
673
+ }
674
+ &lt;/div&gt;
675
+ );
676
+ }, [
677
+ displayData,
678
+ footerRef,
679
+ handleChange,
680
+ handleNextFocus,
681
+ input,
682
+ listKeyDownHandler,
683
+ listRef,
684
+ renderFooter,
685
+ renderItem,
686
+ searchWidth,
687
+ uniqueIdentificationPath
688
+ ]);
689
+ &nbsp;
690
+ const renderSearchField = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >()</span> =&gt; {</span>
691
+ <span class="cstat-no" title="statement not covered" > return (</span>
692
+ &lt;div
693
+ ref={triggerRef}
694
+ id={`typedown-parent-${selectorSafe(input.name)}-searchField`}
695
+ &gt;
696
+ &lt;SearchField
697
+ // Pass meta through so correct styling gets applied to the TextField
698
+ id={`typedown-searchField-${selectorSafe(input.name)}`}
699
+ marginBottom0
700
+ meta={meta}
701
+ onChange={handleType}
702
+ onKeyDown={searchFieldKeyDownHandler}
703
+ /&gt;
704
+ &lt;/div&gt;
705
+ );
706
+ };
707
+ &nbsp;
708
+ <span class="cstat-no" title="statement not covered" > return (</span>
709
+ &lt;div
710
+ ref={resizeRef}
711
+ &gt;
712
+ {renderSearchField()}
713
+ &lt;Popper
714
+ key="typedown-menu-toggle"
715
+ anchorRef={triggerRef}
716
+ className={classnames(
717
+ css.dropdown,
718
+ css.fullWidth
719
+ )}
720
+ isOpen={open}
721
+ modifiers={{
722
+ flip: { boundariesElement: 'viewport', padding: 10 },
723
+ preventOverflow: { boundariesElement: 'viewport', padding: 10 }
724
+ }}
725
+ overlayProps={{
726
+ 'ref': overlayRef,
727
+ 'tabIndex': '-1',
728
+ 'onClick': <span class="fstat-no" title="function not covered" >(e</span>) =&gt; { <span class="cstat-no" title="statement not covered" >e.stopPropagation(); </span>} // prevent propagation of click events
729
+ }}
730
+ overlayRef={overlayRef}
731
+ portal={portal}
732
+ &gt;
733
+ {dropDown()}
734
+ &lt;/Popper&gt;
735
+ {selectedUniqueId &amp;&amp; !open &amp;&amp;
736
+ &lt;div
737
+ className={classnames(
738
+ css.selected,
739
+ css.selectedDisplay
740
+ )}
741
+ &gt;
742
+ &lt;div
743
+ className={css.selectedItem}
744
+ &gt;
745
+ {renderItem(input.value)}
746
+ &lt;/div&gt;
747
+ &lt;IconButton
748
+ className={css.clearItem}
749
+ icon="times-circle-solid"
750
+ onClick={<span class="fstat-no" title="function not covered" >()</span> =&gt; <span class="cstat-no" title="statement not covered" >handleChange()}</span>
751
+ /&gt;
752
+ &lt;/div&gt;
753
+ }
754
+ &lt;/div&gt;
755
+ );
756
+ };
757
+ &nbsp;
758
+ <span class="cstat-no" title="statement not covered" >Typedown.propTypes = {</span>
759
+ dataOptions: PropTypes.arrayOf(PropTypes.object),
760
+ filterPath: PropTypes.string,
761
+ input: PropTypes.object,
762
+ meta: PropTypes.object,
763
+ onChange: PropTypes.func,
764
+ onType: PropTypes.func,
765
+ renderFooter: PropTypes.func,
766
+ renderListItem: PropTypes.func,
767
+ uniqueIdentificationPath: PropTypes.string
768
+ };
769
+ &nbsp;
770
+ export default Typedown;
771
+ &nbsp;</pre></td></tr></table></pre>
772
+
773
+ <div class='push'></div><!-- for sticky footer -->
774
+ </div><!-- /wrapper -->
775
+ <div class='footer quiet pad2 space-top1 center small'>
776
+ Code coverage generated by
777
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
778
+ at Thu Jan 20 2022 16:19:40 GMT+0000 (Greenwich Mean Time)
779
+ </div>
780
+ <script src="../prettify.js"></script>
781
+ <script>
782
+ window.onload = function () {
783
+ prettyPrint();
784
+ };
785
+ </script>
786
+ <script src="../sorter.js"></script>
787
+ <script src="../block-navigation.js"></script>
788
+ </body>
789
+ </html>
790
+