@zeedhi/common 3.0.6 → 3.0.7

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 (525) hide show
  1. package/coverage/clover.xml +5676 -0
  2. package/coverage/coverage-final.json +147 -0
  3. package/coverage/lcov-report/base.css +224 -0
  4. package/coverage/lcov-report/block-navigation.js +87 -0
  5. package/coverage/lcov-report/favicon.png +0 -0
  6. package/coverage/lcov-report/index.html +1331 -0
  7. package/coverage/lcov-report/prettify.css +1 -0
  8. package/coverage/lcov-report/prettify.js +2 -0
  9. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  10. package/coverage/lcov-report/sorter.js +210 -0
  11. package/coverage/lcov-report/src/components/index.html +116 -0
  12. package/coverage/lcov-report/src/components/index.ts.html +730 -0
  13. package/coverage/lcov-report/src/components/tek-grid/columns-searcher.ts.html +151 -0
  14. package/coverage/lcov-report/src/components/tek-grid/dynamic-filter-datasource-factory.ts.html +145 -0
  15. package/coverage/lcov-report/src/components/tek-grid/filter-helper.ts.html +145 -0
  16. package/coverage/lcov-report/src/components/tek-grid/grid-filter-button.ts.html +1351 -0
  17. package/coverage/lcov-report/src/components/tek-grid/grouped-data-manager.ts.html +1429 -0
  18. package/coverage/lcov-report/src/components/tek-grid/grouped-data-selector.ts.html +205 -0
  19. package/coverage/lcov-report/src/components/tek-grid/grouped-view-navigator.ts.html +340 -0
  20. package/coverage/lcov-report/src/components/tek-grid/index.html +326 -0
  21. package/coverage/lcov-report/src/components/tek-grid/index.ts.html +139 -0
  22. package/coverage/lcov-report/src/components/tek-grid/interfaces.ts.html +1072 -0
  23. package/coverage/lcov-report/src/components/tek-grid/keymap-grouped.ts.html +148 -0
  24. package/coverage/lcov-report/src/components/tek-grid/layout-options.ts.html +829 -0
  25. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/index.html +161 -0
  26. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/index.ts.html +94 -0
  27. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/interfaces.ts.html +193 -0
  28. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/tek-memory-datasource.ts.html +1027 -0
  29. package/coverage/lcov-report/src/components/tek-grid/tek-datasource/tek-rest-datasource.ts.html +757 -0
  30. package/coverage/lcov-report/src/components/tek-grid/tek-grid-column.ts.html +664 -0
  31. package/coverage/lcov-report/src/components/tek-grid/tek-grid-columns-button/index.html +131 -0
  32. package/coverage/lcov-report/src/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button-controller.ts.html +169 -0
  33. package/coverage/lcov-report/src/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button.ts.html +196 -0
  34. package/coverage/lcov-report/src/components/tek-grid/tek-grid-controller.ts.html +505 -0
  35. package/coverage/lcov-report/src/components/tek-grid/tek-grid-events.ts.html +400 -0
  36. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/export-options/button-option.ts.html +163 -0
  37. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/export-options/index.html +146 -0
  38. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/export-options/index.ts.html +94 -0
  39. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/export-options/multi-option.ts.html +340 -0
  40. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/index.html +131 -0
  41. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/index.ts.html +91 -0
  42. package/coverage/lcov-report/src/components/tek-grid/tek-grid-toolbar-provider/tek-grid-toolbar-provider.ts.html +1186 -0
  43. package/coverage/lcov-report/src/components/tek-grid/tek-grid.ts.html +3451 -0
  44. package/coverage/lcov-report/src/components/zd-alert/alert.ts.html +502 -0
  45. package/coverage/lcov-report/src/components/zd-alert/index.html +116 -0
  46. package/coverage/lcov-report/src/components/zd-badge/badge.ts.html +226 -0
  47. package/coverage/lcov-report/src/components/zd-badge/index.html +116 -0
  48. package/coverage/lcov-report/src/components/zd-breadcrumbs/breadcrumbs.ts.html +226 -0
  49. package/coverage/lcov-report/src/components/zd-breadcrumbs/index.html +116 -0
  50. package/coverage/lcov-report/src/components/zd-button/button.ts.html +706 -0
  51. package/coverage/lcov-report/src/components/zd-button/index.html +116 -0
  52. package/coverage/lcov-report/src/components/zd-button-group/button-group.ts.html +412 -0
  53. package/coverage/lcov-report/src/components/zd-button-group/index.html +116 -0
  54. package/coverage/lcov-report/src/components/zd-card/card.ts.html +748 -0
  55. package/coverage/lcov-report/src/components/zd-card/index.html +116 -0
  56. package/coverage/lcov-report/src/components/zd-carousel/carousel.ts.html +949 -0
  57. package/coverage/lcov-report/src/components/zd-carousel/index.html +116 -0
  58. package/coverage/lcov-report/src/components/zd-checkbox/checkbox.ts.html +148 -0
  59. package/coverage/lcov-report/src/components/zd-checkbox/index.html +116 -0
  60. package/coverage/lcov-report/src/components/zd-checkbox-multiple/checkbox-multiple.ts.html +313 -0
  61. package/coverage/lcov-report/src/components/zd-checkbox-multiple/index.html +116 -0
  62. package/coverage/lcov-report/src/components/zd-chip/chip.ts.html +352 -0
  63. package/coverage/lcov-report/src/components/zd-chip/index.html +116 -0
  64. package/coverage/lcov-report/src/components/zd-code-editor/code-editor.ts.html +1045 -0
  65. package/coverage/lcov-report/src/components/zd-code-editor/index.html +116 -0
  66. package/coverage/lcov-report/src/components/zd-code-viewer/code-viewer.ts.html +682 -0
  67. package/coverage/lcov-report/src/components/zd-code-viewer/index.html +116 -0
  68. package/coverage/lcov-report/src/components/zd-col/col.ts.html +250 -0
  69. package/coverage/lcov-report/src/components/zd-col/index.html +116 -0
  70. package/coverage/lcov-report/src/components/zd-collapse-card/collapse-card.ts.html +343 -0
  71. package/coverage/lcov-report/src/components/zd-collapse-card/index.html +116 -0
  72. package/coverage/lcov-report/src/components/zd-component/child-not-found.ts.html +109 -0
  73. package/coverage/lcov-report/src/components/zd-component/component-render.ts.html +160 -0
  74. package/coverage/lcov-report/src/components/zd-component/component.ts.html +1084 -0
  75. package/coverage/lcov-report/src/components/zd-component/index.html +146 -0
  76. package/coverage/lcov-report/src/components/zd-container/container.ts.html +289 -0
  77. package/coverage/lcov-report/src/components/zd-container/index.html +116 -0
  78. package/coverage/lcov-report/src/components/zd-currency/currency.ts.html +259 -0
  79. package/coverage/lcov-report/src/components/zd-currency/index.html +116 -0
  80. package/coverage/lcov-report/src/components/zd-date-input/date-input.ts.html +1441 -0
  81. package/coverage/lcov-report/src/components/zd-date-input/index.html +131 -0
  82. package/coverage/lcov-report/src/components/zd-date-input/utils.ts.html +136 -0
  83. package/coverage/lcov-report/src/components/zd-date-range/date-range.ts.html +1873 -0
  84. package/coverage/lcov-report/src/components/zd-date-range/index.html +131 -0
  85. package/coverage/lcov-report/src/components/zd-date-range/utils.ts.html +178 -0
  86. package/coverage/lcov-report/src/components/zd-dialog/dialog.ts.html +541 -0
  87. package/coverage/lcov-report/src/components/zd-dialog/index.html +116 -0
  88. package/coverage/lcov-report/src/components/zd-divider/divider.ts.html +178 -0
  89. package/coverage/lcov-report/src/components/zd-divider/index.html +116 -0
  90. package/coverage/lcov-report/src/components/zd-dropdown/dropdown.ts.html +460 -0
  91. package/coverage/lcov-report/src/components/zd-dropdown/index.html +116 -0
  92. package/coverage/lcov-report/src/components/zd-field-group/field-group.ts.html +325 -0
  93. package/coverage/lcov-report/src/components/zd-field-group/index.html +116 -0
  94. package/coverage/lcov-report/src/components/zd-footer/footer.ts.html +451 -0
  95. package/coverage/lcov-report/src/components/zd-footer/index.html +116 -0
  96. package/coverage/lcov-report/src/components/zd-form/form.ts.html +1075 -0
  97. package/coverage/lcov-report/src/components/zd-form/index.html +116 -0
  98. package/coverage/lcov-report/src/components/zd-frame/frame.ts.html +763 -0
  99. package/coverage/lcov-report/src/components/zd-frame/index.html +116 -0
  100. package/coverage/lcov-report/src/components/zd-frame-page/frame-page.ts.html +169 -0
  101. package/coverage/lcov-report/src/components/zd-frame-page/index.html +116 -0
  102. package/coverage/lcov-report/src/components/zd-grid/data-navigator.ts.html +304 -0
  103. package/coverage/lcov-report/src/components/zd-grid/data-selector.ts.html +532 -0
  104. package/coverage/lcov-report/src/components/zd-grid/grid-column.ts.html +709 -0
  105. package/coverage/lcov-report/src/components/zd-grid/grid-events.ts.html +244 -0
  106. package/coverage/lcov-report/src/components/zd-grid/grid.ts.html +1042 -0
  107. package/coverage/lcov-report/src/components/zd-grid/index.html +266 -0
  108. package/coverage/lcov-report/src/components/zd-grid/index.ts.html +118 -0
  109. package/coverage/lcov-report/src/components/zd-grid/iterable-table.ts.html +274 -0
  110. package/coverage/lcov-report/src/components/zd-grid/keymap-merger.ts.html +241 -0
  111. package/coverage/lcov-report/src/components/zd-grid/keymap-navigation.ts.html +313 -0
  112. package/coverage/lcov-report/src/components/zd-grid/table-action-builder.ts.html +427 -0
  113. package/coverage/lcov-report/src/components/zd-grid/view-navigator.ts.html +175 -0
  114. package/coverage/lcov-report/src/components/zd-grid-editable/data-editor-with-add.ts.html +826 -0
  115. package/coverage/lcov-report/src/components/zd-grid-editable/data-editor.ts.html +1570 -0
  116. package/coverage/lcov-report/src/components/zd-grid-editable/errors/index.html +146 -0
  117. package/coverage/lcov-report/src/components/zd-grid-editable/errors/index.ts.html +91 -0
  118. package/coverage/lcov-report/src/components/zd-grid-editable/errors/not-editing.ts.html +109 -0
  119. package/coverage/lcov-report/src/components/zd-grid-editable/errors/row-not-found.ts.html +109 -0
  120. package/coverage/lcov-report/src/components/zd-grid-editable/grid-column-editable.ts.html +130 -0
  121. package/coverage/lcov-report/src/components/zd-grid-editable/grid-editable-controller.ts.html +139 -0
  122. package/coverage/lcov-report/src/components/zd-grid-editable/grid-editable-events.ts.html +430 -0
  123. package/coverage/lcov-report/src/components/zd-grid-editable/grid-editable.ts.html +1477 -0
  124. package/coverage/lcov-report/src/components/zd-grid-editable/index.html +221 -0
  125. package/coverage/lcov-report/src/components/zd-grid-editable/index.ts.html +109 -0
  126. package/coverage/lcov-report/src/components/zd-grid-editable/keymap-editing.ts.html +139 -0
  127. package/coverage/lcov-report/src/components/zd-header/header.ts.html +502 -0
  128. package/coverage/lcov-report/src/components/zd-header/index.html +116 -0
  129. package/coverage/lcov-report/src/components/zd-icon/icon.ts.html +325 -0
  130. package/coverage/lcov-report/src/components/zd-icon/index.html +116 -0
  131. package/coverage/lcov-report/src/components/zd-image/image.ts.html +424 -0
  132. package/coverage/lcov-report/src/components/zd-image/index.html +116 -0
  133. package/coverage/lcov-report/src/components/zd-increment/increment.ts.html +436 -0
  134. package/coverage/lcov-report/src/components/zd-increment/index.html +116 -0
  135. package/coverage/lcov-report/src/components/zd-input/index.html +131 -0
  136. package/coverage/lcov-report/src/components/zd-input/input-factory.ts.html +130 -0
  137. package/coverage/lcov-report/src/components/zd-input/input.ts.html +1345 -0
  138. package/coverage/lcov-report/src/components/zd-iterable/column-not-found.ts.html +109 -0
  139. package/coverage/lcov-report/src/components/zd-iterable/column.ts.html +823 -0
  140. package/coverage/lcov-report/src/components/zd-iterable/conditions-manager.ts.html +523 -0
  141. package/coverage/lcov-report/src/components/zd-iterable/index.html +281 -0
  142. package/coverage/lcov-report/src/components/zd-iterable/iterable-columns-button-controller.ts.html +136 -0
  143. package/coverage/lcov-report/src/components/zd-iterable/iterable-columns-button.ts.html +313 -0
  144. package/coverage/lcov-report/src/components/zd-iterable/iterable-controller.ts.html +166 -0
  145. package/coverage/lcov-report/src/components/zd-iterable/iterable-page-component.ts.html +244 -0
  146. package/coverage/lcov-report/src/components/zd-iterable/iterable-page-info.ts.html +106 -0
  147. package/coverage/lcov-report/src/components/zd-iterable/iterable-page-size.ts.html +421 -0
  148. package/coverage/lcov-report/src/components/zd-iterable/iterable-pagination.ts.html +208 -0
  149. package/coverage/lcov-report/src/components/zd-iterable/iterable.ts.html +934 -0
  150. package/coverage/lcov-report/src/components/zd-iterable/search.ts.html +343 -0
  151. package/coverage/lcov-report/src/components/zd-iterable-component-render/index.html +116 -0
  152. package/coverage/lcov-report/src/components/zd-iterable-component-render/iterable-component-render.ts.html +592 -0
  153. package/coverage/lcov-report/src/components/zd-layout/index.html +116 -0
  154. package/coverage/lcov-report/src/components/zd-layout/layout.ts.html +145 -0
  155. package/coverage/lcov-report/src/components/zd-list/index.html +161 -0
  156. package/coverage/lcov-report/src/components/zd-list/item-not-found.ts.html +109 -0
  157. package/coverage/lcov-report/src/components/zd-list/list-group.ts.html +241 -0
  158. package/coverage/lcov-report/src/components/zd-list/list-item.ts.html +298 -0
  159. package/coverage/lcov-report/src/components/zd-list/list.ts.html +460 -0
  160. package/coverage/lcov-report/src/components/zd-loading/index.html +116 -0
  161. package/coverage/lcov-report/src/components/zd-loading/loading.ts.html +217 -0
  162. package/coverage/lcov-report/src/components/zd-login/index.html +131 -0
  163. package/coverage/lcov-report/src/components/zd-login/login-button.ts.html +421 -0
  164. package/coverage/lcov-report/src/components/zd-login/login.ts.html +340 -0
  165. package/coverage/lcov-report/src/components/zd-main/index.html +116 -0
  166. package/coverage/lcov-report/src/components/zd-main/main.ts.html +133 -0
  167. package/coverage/lcov-report/src/components/zd-master-detail/detail-not-found.ts.html +118 -0
  168. package/coverage/lcov-report/src/components/zd-master-detail/index.html +146 -0
  169. package/coverage/lcov-report/src/components/zd-master-detail/master-detail.ts.html +331 -0
  170. package/coverage/lcov-report/src/components/zd-master-detail/master-not-found.ts.html +118 -0
  171. package/coverage/lcov-report/src/components/zd-menu/index.html +176 -0
  172. package/coverage/lcov-report/src/components/zd-menu/menu-button.ts.html +241 -0
  173. package/coverage/lcov-report/src/components/zd-menu/menu-group.ts.html +400 -0
  174. package/coverage/lcov-report/src/components/zd-menu/menu-link.ts.html +337 -0
  175. package/coverage/lcov-report/src/components/zd-menu/menu-separator.ts.html +106 -0
  176. package/coverage/lcov-report/src/components/zd-menu/menu.ts.html +1384 -0
  177. package/coverage/lcov-report/src/components/zd-modal/index.html +131 -0
  178. package/coverage/lcov-report/src/components/zd-modal/modal-close-button.ts.html +220 -0
  179. package/coverage/lcov-report/src/components/zd-modal/modal.ts.html +355 -0
  180. package/coverage/lcov-report/src/components/zd-month/index.html +116 -0
  181. package/coverage/lcov-report/src/components/zd-month/month.ts.html +352 -0
  182. package/coverage/lcov-report/src/components/zd-number-input/index.html +116 -0
  183. package/coverage/lcov-report/src/components/zd-number-input/number-input.ts.html +532 -0
  184. package/coverage/lcov-report/src/components/zd-password/index.html +116 -0
  185. package/coverage/lcov-report/src/components/zd-password/password.ts.html +220 -0
  186. package/coverage/lcov-report/src/components/zd-progress/index.html +116 -0
  187. package/coverage/lcov-report/src/components/zd-progress/progress.ts.html +262 -0
  188. package/coverage/lcov-report/src/components/zd-radio/index.html +116 -0
  189. package/coverage/lcov-report/src/components/zd-radio/radio.ts.html +289 -0
  190. package/coverage/lcov-report/src/components/zd-row/index.html +116 -0
  191. package/coverage/lcov-report/src/components/zd-row/row.ts.html +256 -0
  192. package/coverage/lcov-report/src/components/zd-select/index.html +116 -0
  193. package/coverage/lcov-report/src/components/zd-select/select.ts.html +2089 -0
  194. package/coverage/lcov-report/src/components/zd-select-multiple/index.html +116 -0
  195. package/coverage/lcov-report/src/components/zd-select-multiple/select-multiple.ts.html +1549 -0
  196. package/coverage/lcov-report/src/components/zd-svg-map/index.html +116 -0
  197. package/coverage/lcov-report/src/components/zd-svg-map/svg-map.ts.html +475 -0
  198. package/coverage/lcov-report/src/components/zd-switch/index.html +116 -0
  199. package/coverage/lcov-report/src/components/zd-switch/switch.ts.html +163 -0
  200. package/coverage/lcov-report/src/components/zd-table/index.html +116 -0
  201. package/coverage/lcov-report/src/components/zd-table/table.ts.html +280 -0
  202. package/coverage/lcov-report/src/components/zd-tabs/index.html +146 -0
  203. package/coverage/lcov-report/src/components/zd-tabs/tab-not-found.ts.html +127 -0
  204. package/coverage/lcov-report/src/components/zd-tabs/tab.ts.html +370 -0
  205. package/coverage/lcov-report/src/components/zd-tabs/tabs.ts.html +586 -0
  206. package/coverage/lcov-report/src/components/zd-tag/index.html +116 -0
  207. package/coverage/lcov-report/src/components/zd-tag/tag.ts.html +142 -0
  208. package/coverage/lcov-report/src/components/zd-text/index.html +116 -0
  209. package/coverage/lcov-report/src/components/zd-text/text.ts.html +136 -0
  210. package/coverage/lcov-report/src/components/zd-text-input/index.html +116 -0
  211. package/coverage/lcov-report/src/components/zd-text-input/text-input.ts.html +778 -0
  212. package/coverage/lcov-report/src/components/zd-textarea/index.html +116 -0
  213. package/coverage/lcov-report/src/components/zd-textarea/textarea.ts.html +418 -0
  214. package/coverage/lcov-report/src/components/zd-time/index.html +131 -0
  215. package/coverage/lcov-report/src/components/zd-time/time-format-selector.ts.html +157 -0
  216. package/coverage/lcov-report/src/components/zd-time/time.ts.html +1687 -0
  217. package/coverage/lcov-report/src/components/zd-toggleable/index.html +116 -0
  218. package/coverage/lcov-report/src/components/zd-toggleable/toggleable.ts.html +196 -0
  219. package/coverage/lcov-report/src/components/zd-tooltip/index.html +116 -0
  220. package/coverage/lcov-report/src/components/zd-tooltip/tooltip.ts.html +340 -0
  221. package/coverage/lcov-report/src/components/zd-tree/index.html +116 -0
  222. package/coverage/lcov-report/src/components/zd-tree/tree.ts.html +1849 -0
  223. package/coverage/lcov-report/src/components/zd-tree-grid/index.html +191 -0
  224. package/coverage/lcov-report/src/components/zd-tree-grid/index.ts.html +103 -0
  225. package/coverage/lcov-report/src/components/zd-tree-grid/iterable-tree.ts.html +202 -0
  226. package/coverage/lcov-report/src/components/zd-tree-grid/keymap-tree.ts.html +154 -0
  227. package/coverage/lcov-report/src/components/zd-tree-grid/tree-data-navigator.ts.html +235 -0
  228. package/coverage/lcov-report/src/components/zd-tree-grid/tree-data-selector.ts.html +448 -0
  229. package/coverage/lcov-report/src/components/zd-tree-grid/tree-grid.ts.html +1390 -0
  230. package/coverage/lcov-report/src/error/delete-rows.ts.html +124 -0
  231. package/coverage/lcov-report/src/error/index.html +161 -0
  232. package/coverage/lcov-report/src/error/index.ts.html +94 -0
  233. package/coverage/lcov-report/src/error/non-initialized.ts.html +118 -0
  234. package/coverage/lcov-report/src/error/tek-grid-delete-rows.ts.html +130 -0
  235. package/coverage/lcov-report/src/error/teknisa-common-error.ts.html +109 -0
  236. package/coverage/lcov-report/src/error/zeedhi-error.ts.html +109 -0
  237. package/coverage/lcov-report/src/index.html +116 -0
  238. package/coverage/lcov-report/src/index.ts.html +145 -0
  239. package/coverage/lcov-report/src/services/index.html +116 -0
  240. package/coverage/lcov-report/src/services/index.ts.html +97 -0
  241. package/coverage/lcov-report/src/services/zd-alert/alert-queue.ts.html +205 -0
  242. package/coverage/lcov-report/src/services/zd-alert/alert-replace.ts.html +220 -0
  243. package/coverage/lcov-report/src/services/zd-alert/alert-service.ts.html +316 -0
  244. package/coverage/lcov-report/src/services/zd-alert/alert-stack.ts.html +172 -0
  245. package/coverage/lcov-report/src/services/zd-alert/index.html +176 -0
  246. package/coverage/lcov-report/src/services/zd-alert/index.ts.html +100 -0
  247. package/coverage/lcov-report/src/services/zd-dialog/dialog-service.ts.html +205 -0
  248. package/coverage/lcov-report/src/services/zd-dialog/index.html +116 -0
  249. package/coverage/lcov-report/src/services/zd-loading/index.html +116 -0
  250. package/coverage/lcov-report/src/services/zd-loading/loading-service.ts.html +157 -0
  251. package/coverage/lcov-report/src/services/zd-modal/index.html +116 -0
  252. package/coverage/lcov-report/src/services/zd-modal/modal-service.ts.html +298 -0
  253. package/coverage/lcov-report/src/utils/data-value-out/data-value-out.ts.html +202 -0
  254. package/coverage/lcov-report/src/utils/data-value-out/index.html +131 -0
  255. package/coverage/lcov-report/src/utils/data-value-out/index.ts.html +91 -0
  256. package/coverage/lcov-report/src/utils/datasource-searcher/datasource-searcher.ts.html +241 -0
  257. package/coverage/lcov-report/src/utils/datasource-searcher/index.html +131 -0
  258. package/coverage/lcov-report/src/utils/datasource-searcher/index.ts.html +91 -0
  259. package/coverage/lcov-report/src/utils/date-utils/date-utils.ts.html +166 -0
  260. package/coverage/lcov-report/src/utils/date-utils/index.html +116 -0
  261. package/coverage/lcov-report/src/utils/icons/icons.ts.html +547 -0
  262. package/coverage/lcov-report/src/utils/icons/index.html +116 -0
  263. package/coverage/lcov-report/src/utils/index.html +116 -0
  264. package/coverage/lcov-report/src/utils/index.ts.html +106 -0
  265. package/coverage/lcov-report/src/utils/is-filled-object/index.html +116 -0
  266. package/coverage/lcov-report/src/utils/is-filled-object/is-filled-object.ts.html +100 -0
  267. package/coverage/lcov-report/src/utils/is-nil.ts.html +94 -0
  268. package/coverage/lcov-report/src/utils/omit/index.html +116 -0
  269. package/coverage/lcov-report/src/utils/omit/omit.ts.html +124 -0
  270. package/coverage/lcov-report/src/utils/theme/index.html +116 -0
  271. package/coverage/lcov-report/src/utils/theme/theme.ts.html +679 -0
  272. package/coverage/lcov-report/src/utils/tree-data-structure/index.html +131 -0
  273. package/coverage/lcov-report/src/utils/tree-data-structure/index.ts.html +91 -0
  274. package/coverage/lcov-report/src/utils/tree-data-structure/tree-data-structure.ts.html +1645 -0
  275. package/coverage/lcov-report/src/utils/unique-by/index.html +116 -0
  276. package/coverage/lcov-report/src/utils/unique-by/unique-by.ts.html +130 -0
  277. package/coverage/lcov-report/tests/unit/__helpers__/component-event-helper.ts.html +106 -0
  278. package/coverage/lcov-report/tests/unit/__helpers__/flush-promises-helper.ts.html +94 -0
  279. package/coverage/lcov-report/tests/unit/__helpers__/index.html +146 -0
  280. package/coverage/lcov-report/tests/unit/__helpers__/mock-http-get-helper.ts.html +172 -0
  281. package/coverage/lcov-report/tests/unit/components/zd-component/ComponentMock.ts.html +166 -0
  282. package/coverage/lcov-report/tests/unit/components/zd-component/index.html +116 -0
  283. package/coverage/lcov.info +10070 -0
  284. package/dist/style.css +1 -1
  285. package/dist/zd-common.d.mts +7826 -0
  286. package/dist/zd-common.iife.min.js +11 -0
  287. package/dist/zd-common.mjs +12318 -0
  288. package/package.json +16 -12
  289. package/src/components/zd-date-input/date-input.ts +40 -147
  290. package/src/components/zd-date-input/utils.ts +17 -0
  291. package/src/components/zd-date-range/date-range.ts +86 -210
  292. package/src/components/zd-date-range/utils.ts +31 -0
  293. package/src/components/zd-frame/frame.ts +2 -2
  294. package/src/components/zd-grid-editable/data-editor-with-add.ts +1 -1
  295. package/src/components/zd-grid-editable/data-editor.ts +2 -2
  296. package/src/components/zd-month/month.ts +19 -91
  297. package/src/styles/_display.scss +3 -1
  298. package/src/styles/_elevation.scss +2 -1
  299. package/src/styles/_functions.scss +14 -11
  300. package/src/styles/_utilities.scss +67 -62
  301. package/src/styles/_variables.scss +17 -16
  302. package/src/styles/index.scss +5 -5
  303. package/src/utils/date-utils/date-utils.ts +9 -0
  304. package/src/utils/tree-data-structure/tree-data-structure.ts +1 -1
  305. package/tests/unit/components/zd-date-input/date-input.spec.ts +36 -281
  306. package/tests/unit/components/zd-date-range/date-range.spec.ts +372 -475
  307. package/tests/unit/components/zd-grid/grid-column.spec.ts +1 -1
  308. package/tests/unit/components/zd-month/month.spec.ts +7 -334
  309. package/tests/unit/components/zd-select/select.spec.ts +1 -2
  310. package/tsdown.config.ts +74 -0
  311. package/dist/types/components/index.d.ts +0 -151
  312. package/dist/types/components/zd-alert/alert.d.ts +0 -94
  313. package/dist/types/components/zd-alert/interfaces.d.ts +0 -18
  314. package/dist/types/components/zd-badge/badge.d.ts +0 -28
  315. package/dist/types/components/zd-badge/interfaces.d.ts +0 -10
  316. package/dist/types/components/zd-breadcrumbs/breadcrumbs.d.ts +0 -32
  317. package/dist/types/components/zd-breadcrumbs/interfaces.d.ts +0 -24
  318. package/dist/types/components/zd-button/button.d.ts +0 -89
  319. package/dist/types/components/zd-button/interfaces.d.ts +0 -48
  320. package/dist/types/components/zd-button-group/button-group.d.ts +0 -67
  321. package/dist/types/components/zd-button-group/interfaces.d.ts +0 -25
  322. package/dist/types/components/zd-card/card.d.ts +0 -152
  323. package/dist/types/components/zd-card/interfaces.d.ts +0 -40
  324. package/dist/types/components/zd-carousel/carousel.d.ts +0 -163
  325. package/dist/types/components/zd-carousel/interfaces.d.ts +0 -49
  326. package/dist/types/components/zd-checkbox/checkbox.d.ts +0 -12
  327. package/dist/types/components/zd-checkbox/interfaces.d.ts +0 -5
  328. package/dist/types/components/zd-checkbox-multiple/checkbox-multiple.d.ts +0 -39
  329. package/dist/types/components/zd-checkbox-multiple/interfaces.d.ts +0 -13
  330. package/dist/types/components/zd-chip/chip.d.ts +0 -60
  331. package/dist/types/components/zd-chip/interfaces.d.ts +0 -18
  332. package/dist/types/components/zd-code-viewer/code-viewer.d.ts +0 -86
  333. package/dist/types/components/zd-code-viewer/interfaces.d.ts +0 -13
  334. package/dist/types/components/zd-col/col.d.ts +0 -33
  335. package/dist/types/components/zd-col/interfaces.d.ts +0 -15
  336. package/dist/types/components/zd-collapse-card/collapse-card.d.ts +0 -56
  337. package/dist/types/components/zd-collapse-card/interfaces.d.ts +0 -14
  338. package/dist/types/components/zd-component/child-not-found.d.ts +0 -6
  339. package/dist/types/components/zd-component/component-render.d.ts +0 -16
  340. package/dist/types/components/zd-component/component.d.ts +0 -120
  341. package/dist/types/components/zd-component/interfaces.d.ts +0 -74
  342. package/dist/types/components/zd-container/container.d.ts +0 -45
  343. package/dist/types/components/zd-container/interfaces.d.ts +0 -12
  344. package/dist/types/components/zd-currency/currency.d.ts +0 -12
  345. package/dist/types/components/zd-currency/interfaces.d.ts +0 -6
  346. package/dist/types/components/zd-date-input/date-input.d.ts +0 -152
  347. package/dist/types/components/zd-date-input/interfaces.d.ts +0 -27
  348. package/dist/types/components/zd-date-range/date-range.d.ts +0 -160
  349. package/dist/types/components/zd-date-range/interfaces.d.ts +0 -18
  350. package/dist/types/components/zd-dialog/dialog.d.ts +0 -76
  351. package/dist/types/components/zd-dialog/interfaces.d.ts +0 -13
  352. package/dist/types/components/zd-divider/divider.d.ts +0 -20
  353. package/dist/types/components/zd-divider/interfaces.d.ts +0 -8
  354. package/dist/types/components/zd-dropdown/dropdown.d.ts +0 -81
  355. package/dist/types/components/zd-dropdown/interfaces.d.ts +0 -23
  356. package/dist/types/components/zd-footer/footer.d.ts +0 -80
  357. package/dist/types/components/zd-footer/interfaces.d.ts +0 -26
  358. package/dist/types/components/zd-form/form.d.ts +0 -174
  359. package/dist/types/components/zd-form/interfaces.d.ts +0 -36
  360. package/dist/types/components/zd-frame/frame.d.ts +0 -81
  361. package/dist/types/components/zd-frame/interfaces.d.ts +0 -23
  362. package/dist/types/components/zd-frame-page/frame-page.d.ts +0 -14
  363. package/dist/types/components/zd-frame-page/interfaces.d.ts +0 -4
  364. package/dist/types/components/zd-grid/data-navigator.d.ts +0 -12
  365. package/dist/types/components/zd-grid/data-selector.d.ts +0 -25
  366. package/dist/types/components/zd-grid/grid-column.d.ts +0 -47
  367. package/dist/types/components/zd-grid/grid-events.d.ts +0 -26
  368. package/dist/types/components/zd-grid/grid.d.ts +0 -85
  369. package/dist/types/components/zd-grid/index.d.ts +0 -11
  370. package/dist/types/components/zd-grid/interfaces.d.ts +0 -148
  371. package/dist/types/components/zd-grid/iterable-table.d.ts +0 -28
  372. package/dist/types/components/zd-grid/keymap-merger.d.ts +0 -26
  373. package/dist/types/components/zd-grid/keymap-navigation.d.ts +0 -6
  374. package/dist/types/components/zd-grid/table-action-builder.d.ts +0 -19
  375. package/dist/types/components/zd-grid/view-navigator.d.ts +0 -10
  376. package/dist/types/components/zd-grid-editable/data-editor-with-add.d.ts +0 -35
  377. package/dist/types/components/zd-grid-editable/data-editor.d.ts +0 -64
  378. package/dist/types/components/zd-grid-editable/errors/index.d.ts +0 -2
  379. package/dist/types/components/zd-grid-editable/errors/not-editing.d.ts +0 -6
  380. package/dist/types/components/zd-grid-editable/errors/row-not-found.d.ts +0 -6
  381. package/dist/types/components/zd-grid-editable/grid-column-editable.d.ts +0 -9
  382. package/dist/types/components/zd-grid-editable/grid-editable-controller.d.ts +0 -8
  383. package/dist/types/components/zd-grid-editable/grid-editable-events.d.ts +0 -32
  384. package/dist/types/components/zd-grid-editable/grid-editable.d.ts +0 -124
  385. package/dist/types/components/zd-grid-editable/index.d.ts +0 -8
  386. package/dist/types/components/zd-grid-editable/interfaces.d.ts +0 -66
  387. package/dist/types/components/zd-grid-editable/keymap-editing.d.ts +0 -7
  388. package/dist/types/components/zd-header/header.d.ts +0 -94
  389. package/dist/types/components/zd-header/interfaces.d.ts +0 -29
  390. package/dist/types/components/zd-icon/icon.d.ts +0 -55
  391. package/dist/types/components/zd-icon/interfaces.d.ts +0 -13
  392. package/dist/types/components/zd-image/image.d.ts +0 -73
  393. package/dist/types/components/zd-image/interfaces.d.ts +0 -17
  394. package/dist/types/components/zd-increment/increment.d.ts +0 -56
  395. package/dist/types/components/zd-increment/interfaces.d.ts +0 -9
  396. package/dist/types/components/zd-input/input-factory.d.ts +0 -6
  397. package/dist/types/components/zd-input/input.d.ts +0 -223
  398. package/dist/types/components/zd-input/interfaces.d.ts +0 -38
  399. package/dist/types/components/zd-iterable/column-not-found.d.ts +0 -6
  400. package/dist/types/components/zd-iterable/column.d.ts +0 -78
  401. package/dist/types/components/zd-iterable/conditions-manager.d.ts +0 -49
  402. package/dist/types/components/zd-iterable/interfaces.d.ts +0 -103
  403. package/dist/types/components/zd-iterable/iterable-columns-button-controller.d.ts +0 -9
  404. package/dist/types/components/zd-iterable/iterable-columns-button.d.ts +0 -35
  405. package/dist/types/components/zd-iterable/iterable-controller.d.ts +0 -8
  406. package/dist/types/components/zd-iterable/iterable-page-component.d.ts +0 -27
  407. package/dist/types/components/zd-iterable/iterable-page-info.d.ts +0 -7
  408. package/dist/types/components/zd-iterable/iterable-page-size.d.ts +0 -62
  409. package/dist/types/components/zd-iterable/iterable-pagination.d.ts +0 -28
  410. package/dist/types/components/zd-iterable/iterable.d.ts +0 -86
  411. package/dist/types/components/zd-iterable/search.d.ts +0 -31
  412. package/dist/types/components/zd-iterable-component-render/interfaces.d.ts +0 -34
  413. package/dist/types/components/zd-iterable-component-render/iterable-component-render.d.ts +0 -84
  414. package/dist/types/components/zd-layout/interfaces.d.ts +0 -7
  415. package/dist/types/components/zd-layout/layout.d.ts +0 -9
  416. package/dist/types/components/zd-list/interfaces.d.ts +0 -44
  417. package/dist/types/components/zd-list/item-not-found.d.ts +0 -6
  418. package/dist/types/components/zd-list/list-group.d.ts +0 -30
  419. package/dist/types/components/zd-list/list-item.d.ts +0 -46
  420. package/dist/types/components/zd-list/list.d.ts +0 -81
  421. package/dist/types/components/zd-loading/interfaces.d.ts +0 -7
  422. package/dist/types/components/zd-loading/loading.d.ts +0 -21
  423. package/dist/types/components/zd-login/interfaces.d.ts +0 -25
  424. package/dist/types/components/zd-login/login-button.d.ts +0 -50
  425. package/dist/types/components/zd-login/login.d.ts +0 -54
  426. package/dist/types/components/zd-main/interfaces.d.ts +0 -5
  427. package/dist/types/components/zd-main/main.d.ts +0 -7
  428. package/dist/types/components/zd-master-detail/detail-not-found.d.ts +0 -7
  429. package/dist/types/components/zd-master-detail/interfaces.d.ts +0 -10
  430. package/dist/types/components/zd-master-detail/master-detail.d.ts +0 -18
  431. package/dist/types/components/zd-master-detail/master-not-found.d.ts +0 -7
  432. package/dist/types/components/zd-menu/interfaces.d.ts +0 -68
  433. package/dist/types/components/zd-menu/menu-button.d.ts +0 -29
  434. package/dist/types/components/zd-menu/menu-group.d.ts +0 -61
  435. package/dist/types/components/zd-menu/menu-link.d.ts +0 -50
  436. package/dist/types/components/zd-menu/menu-separator.d.ts +0 -7
  437. package/dist/types/components/zd-menu/menu.d.ts +0 -199
  438. package/dist/types/components/zd-modal/interfaces.d.ts +0 -35
  439. package/dist/types/components/zd-modal/modal-close-button.d.ts +0 -28
  440. package/dist/types/components/zd-modal/modal.d.ts +0 -53
  441. package/dist/types/components/zd-month/interfaces.d.ts +0 -6
  442. package/dist/types/components/zd-month/month.d.ts +0 -33
  443. package/dist/types/components/zd-number-input/interfaces.d.ts +0 -8
  444. package/dist/types/components/zd-number-input/number-input.d.ts +0 -43
  445. package/dist/types/components/zd-password/interfaces.d.ts +0 -6
  446. package/dist/types/components/zd-password/password.d.ts +0 -17
  447. package/dist/types/components/zd-progress/interfaces.d.ts +0 -10
  448. package/dist/types/components/zd-progress/progress.d.ts +0 -41
  449. package/dist/types/components/zd-radio/interfaces.d.ts +0 -11
  450. package/dist/types/components/zd-radio/radio.d.ts +0 -35
  451. package/dist/types/components/zd-row/interfaces.d.ts +0 -13
  452. package/dist/types/components/zd-row/row.d.ts +0 -39
  453. package/dist/types/components/zd-select/interfaces.d.ts +0 -24
  454. package/dist/types/components/zd-select/select.d.ts +0 -238
  455. package/dist/types/components/zd-select-multiple/interfaces.d.ts +0 -18
  456. package/dist/types/components/zd-select-multiple/select-multiple.d.ts +0 -113
  457. package/dist/types/components/zd-svg-map/interfaces.d.ts +0 -26
  458. package/dist/types/components/zd-svg-map/svg-map.d.ts +0 -35
  459. package/dist/types/components/zd-switch/interfaces.d.ts +0 -7
  460. package/dist/types/components/zd-switch/switch.d.ts +0 -16
  461. package/dist/types/components/zd-table/interfaces.d.ts +0 -25
  462. package/dist/types/components/zd-table/table.d.ts +0 -42
  463. package/dist/types/components/zd-tabs/interfaces.d.ts +0 -40
  464. package/dist/types/components/zd-tabs/tab-not-found.d.ts +0 -11
  465. package/dist/types/components/zd-tabs/tab.d.ts +0 -57
  466. package/dist/types/components/zd-tabs/tabs.d.ts +0 -86
  467. package/dist/types/components/zd-tag/interfaces.d.ts +0 -7
  468. package/dist/types/components/zd-tag/tag.d.ts +0 -13
  469. package/dist/types/components/zd-text/interfaces.d.ts +0 -9
  470. package/dist/types/components/zd-text/text.d.ts +0 -8
  471. package/dist/types/components/zd-text-input/interfaces.d.ts +0 -23
  472. package/dist/types/components/zd-text-input/text-input.d.ts +0 -91
  473. package/dist/types/components/zd-textarea/interfaces.d.ts +0 -21
  474. package/dist/types/components/zd-textarea/textarea.d.ts +0 -71
  475. package/dist/types/components/zd-time/interfaces.d.ts +0 -22
  476. package/dist/types/components/zd-time/time-format-selector.d.ts +0 -8
  477. package/dist/types/components/zd-time/time.d.ts +0 -149
  478. package/dist/types/components/zd-toggleable/interfaces.d.ts +0 -6
  479. package/dist/types/components/zd-toggleable/toggleable.d.ts +0 -21
  480. package/dist/types/components/zd-tooltip/interfaces.d.ts +0 -18
  481. package/dist/types/components/zd-tooltip/tooltip.d.ts +0 -57
  482. package/dist/types/components/zd-tree/interfaces.d.ts +0 -107
  483. package/dist/types/components/zd-tree/tree.d.ts +0 -161
  484. package/dist/types/components/zd-tree-grid/index.d.ts +0 -6
  485. package/dist/types/components/zd-tree-grid/interfaces.d.ts +0 -35
  486. package/dist/types/components/zd-tree-grid/iterable-tree.d.ts +0 -10
  487. package/dist/types/components/zd-tree-grid/keymap-tree.d.ts +0 -7
  488. package/dist/types/components/zd-tree-grid/tree-data-navigator.d.ts +0 -10
  489. package/dist/types/components/zd-tree-grid/tree-data-selector.d.ts +0 -18
  490. package/dist/types/components/zd-tree-grid/tree-grid.d.ts +0 -119
  491. package/dist/types/error/delete-rows.d.ts +0 -7
  492. package/dist/types/error/index.d.ts +0 -3
  493. package/dist/types/error/non-initialized.d.ts +0 -7
  494. package/dist/types/error/zeedhi-error.d.ts +0 -6
  495. package/dist/types/index.d.ts +0 -6
  496. package/dist/types/services/index.d.ts +0 -4
  497. package/dist/types/services/zd-alert/alert-queue.d.ts +0 -13
  498. package/dist/types/services/zd-alert/alert-replace.d.ts +0 -18
  499. package/dist/types/services/zd-alert/alert-service.d.ts +0 -45
  500. package/dist/types/services/zd-alert/alert-stack.d.ts +0 -9
  501. package/dist/types/services/zd-alert/index.d.ts +0 -5
  502. package/dist/types/services/zd-alert/interfaces.d.ts +0 -6
  503. package/dist/types/services/zd-dialog/dialog-service.d.ts +0 -24
  504. package/dist/types/services/zd-loading/loading-service.d.ts +0 -17
  505. package/dist/types/services/zd-modal/modal-service.d.ts +0 -39
  506. package/dist/types/utils/data-value-out/data-value-out.d.ts +0 -5
  507. package/dist/types/utils/data-value-out/index.d.ts +0 -2
  508. package/dist/types/utils/data-value-out/interfaces.d.ts +0 -8
  509. package/dist/types/utils/datasource-searcher/datasource-searcher.d.ts +0 -6
  510. package/dist/types/utils/datasource-searcher/index.d.ts +0 -2
  511. package/dist/types/utils/datasource-searcher/interfaces.d.ts +0 -5
  512. package/dist/types/utils/date-utils/date-utils.d.ts +0 -1
  513. package/dist/types/utils/icons/icons.d.ts +0 -24
  514. package/dist/types/utils/index.d.ts +0 -7
  515. package/dist/types/utils/omit/omit.d.ts +0 -11
  516. package/dist/types/utils/theme/theme.d.ts +0 -34
  517. package/dist/types/utils/tree-data-structure/index.d.ts +0 -2
  518. package/dist/types/utils/tree-data-structure/interfaces.d.ts +0 -30
  519. package/dist/types/utils/tree-data-structure/tree-data-structure.d.ts +0 -155
  520. package/dist/types/utils/unique-by/unique-by.d.ts +0 -3
  521. package/dist/zd-common.js +0 -13184
  522. package/dist/zd-common.min.js +0 -13184
  523. package/rollup.config.js +0 -27
  524. package/rollup.scss.config.js +0 -14
  525. package/tsconfig.build.json +0 -7
@@ -0,0 +1,1570 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/components/zd-grid-editable/data-editor.ts</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">src/components/zd-grid-editable</a> data-editor.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>219/219</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>73/73</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>48/48</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>209/209</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 high'></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>
332
+ <a name='L267'></a><a href='#L267'>267</a>
333
+ <a name='L268'></a><a href='#L268'>268</a>
334
+ <a name='L269'></a><a href='#L269'>269</a>
335
+ <a name='L270'></a><a href='#L270'>270</a>
336
+ <a name='L271'></a><a href='#L271'>271</a>
337
+ <a name='L272'></a><a href='#L272'>272</a>
338
+ <a name='L273'></a><a href='#L273'>273</a>
339
+ <a name='L274'></a><a href='#L274'>274</a>
340
+ <a name='L275'></a><a href='#L275'>275</a>
341
+ <a name='L276'></a><a href='#L276'>276</a>
342
+ <a name='L277'></a><a href='#L277'>277</a>
343
+ <a name='L278'></a><a href='#L278'>278</a>
344
+ <a name='L279'></a><a href='#L279'>279</a>
345
+ <a name='L280'></a><a href='#L280'>280</a>
346
+ <a name='L281'></a><a href='#L281'>281</a>
347
+ <a name='L282'></a><a href='#L282'>282</a>
348
+ <a name='L283'></a><a href='#L283'>283</a>
349
+ <a name='L284'></a><a href='#L284'>284</a>
350
+ <a name='L285'></a><a href='#L285'>285</a>
351
+ <a name='L286'></a><a href='#L286'>286</a>
352
+ <a name='L287'></a><a href='#L287'>287</a>
353
+ <a name='L288'></a><a href='#L288'>288</a>
354
+ <a name='L289'></a><a href='#L289'>289</a>
355
+ <a name='L290'></a><a href='#L290'>290</a>
356
+ <a name='L291'></a><a href='#L291'>291</a>
357
+ <a name='L292'></a><a href='#L292'>292</a>
358
+ <a name='L293'></a><a href='#L293'>293</a>
359
+ <a name='L294'></a><a href='#L294'>294</a>
360
+ <a name='L295'></a><a href='#L295'>295</a>
361
+ <a name='L296'></a><a href='#L296'>296</a>
362
+ <a name='L297'></a><a href='#L297'>297</a>
363
+ <a name='L298'></a><a href='#L298'>298</a>
364
+ <a name='L299'></a><a href='#L299'>299</a>
365
+ <a name='L300'></a><a href='#L300'>300</a>
366
+ <a name='L301'></a><a href='#L301'>301</a>
367
+ <a name='L302'></a><a href='#L302'>302</a>
368
+ <a name='L303'></a><a href='#L303'>303</a>
369
+ <a name='L304'></a><a href='#L304'>304</a>
370
+ <a name='L305'></a><a href='#L305'>305</a>
371
+ <a name='L306'></a><a href='#L306'>306</a>
372
+ <a name='L307'></a><a href='#L307'>307</a>
373
+ <a name='L308'></a><a href='#L308'>308</a>
374
+ <a name='L309'></a><a href='#L309'>309</a>
375
+ <a name='L310'></a><a href='#L310'>310</a>
376
+ <a name='L311'></a><a href='#L311'>311</a>
377
+ <a name='L312'></a><a href='#L312'>312</a>
378
+ <a name='L313'></a><a href='#L313'>313</a>
379
+ <a name='L314'></a><a href='#L314'>314</a>
380
+ <a name='L315'></a><a href='#L315'>315</a>
381
+ <a name='L316'></a><a href='#L316'>316</a>
382
+ <a name='L317'></a><a href='#L317'>317</a>
383
+ <a name='L318'></a><a href='#L318'>318</a>
384
+ <a name='L319'></a><a href='#L319'>319</a>
385
+ <a name='L320'></a><a href='#L320'>320</a>
386
+ <a name='L321'></a><a href='#L321'>321</a>
387
+ <a name='L322'></a><a href='#L322'>322</a>
388
+ <a name='L323'></a><a href='#L323'>323</a>
389
+ <a name='L324'></a><a href='#L324'>324</a>
390
+ <a name='L325'></a><a href='#L325'>325</a>
391
+ <a name='L326'></a><a href='#L326'>326</a>
392
+ <a name='L327'></a><a href='#L327'>327</a>
393
+ <a name='L328'></a><a href='#L328'>328</a>
394
+ <a name='L329'></a><a href='#L329'>329</a>
395
+ <a name='L330'></a><a href='#L330'>330</a>
396
+ <a name='L331'></a><a href='#L331'>331</a>
397
+ <a name='L332'></a><a href='#L332'>332</a>
398
+ <a name='L333'></a><a href='#L333'>333</a>
399
+ <a name='L334'></a><a href='#L334'>334</a>
400
+ <a name='L335'></a><a href='#L335'>335</a>
401
+ <a name='L336'></a><a href='#L336'>336</a>
402
+ <a name='L337'></a><a href='#L337'>337</a>
403
+ <a name='L338'></a><a href='#L338'>338</a>
404
+ <a name='L339'></a><a href='#L339'>339</a>
405
+ <a name='L340'></a><a href='#L340'>340</a>
406
+ <a name='L341'></a><a href='#L341'>341</a>
407
+ <a name='L342'></a><a href='#L342'>342</a>
408
+ <a name='L343'></a><a href='#L343'>343</a>
409
+ <a name='L344'></a><a href='#L344'>344</a>
410
+ <a name='L345'></a><a href='#L345'>345</a>
411
+ <a name='L346'></a><a href='#L346'>346</a>
412
+ <a name='L347'></a><a href='#L347'>347</a>
413
+ <a name='L348'></a><a href='#L348'>348</a>
414
+ <a name='L349'></a><a href='#L349'>349</a>
415
+ <a name='L350'></a><a href='#L350'>350</a>
416
+ <a name='L351'></a><a href='#L351'>351</a>
417
+ <a name='L352'></a><a href='#L352'>352</a>
418
+ <a name='L353'></a><a href='#L353'>353</a>
419
+ <a name='L354'></a><a href='#L354'>354</a>
420
+ <a name='L355'></a><a href='#L355'>355</a>
421
+ <a name='L356'></a><a href='#L356'>356</a>
422
+ <a name='L357'></a><a href='#L357'>357</a>
423
+ <a name='L358'></a><a href='#L358'>358</a>
424
+ <a name='L359'></a><a href='#L359'>359</a>
425
+ <a name='L360'></a><a href='#L360'>360</a>
426
+ <a name='L361'></a><a href='#L361'>361</a>
427
+ <a name='L362'></a><a href='#L362'>362</a>
428
+ <a name='L363'></a><a href='#L363'>363</a>
429
+ <a name='L364'></a><a href='#L364'>364</a>
430
+ <a name='L365'></a><a href='#L365'>365</a>
431
+ <a name='L366'></a><a href='#L366'>366</a>
432
+ <a name='L367'></a><a href='#L367'>367</a>
433
+ <a name='L368'></a><a href='#L368'>368</a>
434
+ <a name='L369'></a><a href='#L369'>369</a>
435
+ <a name='L370'></a><a href='#L370'>370</a>
436
+ <a name='L371'></a><a href='#L371'>371</a>
437
+ <a name='L372'></a><a href='#L372'>372</a>
438
+ <a name='L373'></a><a href='#L373'>373</a>
439
+ <a name='L374'></a><a href='#L374'>374</a>
440
+ <a name='L375'></a><a href='#L375'>375</a>
441
+ <a name='L376'></a><a href='#L376'>376</a>
442
+ <a name='L377'></a><a href='#L377'>377</a>
443
+ <a name='L378'></a><a href='#L378'>378</a>
444
+ <a name='L379'></a><a href='#L379'>379</a>
445
+ <a name='L380'></a><a href='#L380'>380</a>
446
+ <a name='L381'></a><a href='#L381'>381</a>
447
+ <a name='L382'></a><a href='#L382'>382</a>
448
+ <a name='L383'></a><a href='#L383'>383</a>
449
+ <a name='L384'></a><a href='#L384'>384</a>
450
+ <a name='L385'></a><a href='#L385'>385</a>
451
+ <a name='L386'></a><a href='#L386'>386</a>
452
+ <a name='L387'></a><a href='#L387'>387</a>
453
+ <a name='L388'></a><a href='#L388'>388</a>
454
+ <a name='L389'></a><a href='#L389'>389</a>
455
+ <a name='L390'></a><a href='#L390'>390</a>
456
+ <a name='L391'></a><a href='#L391'>391</a>
457
+ <a name='L392'></a><a href='#L392'>392</a>
458
+ <a name='L393'></a><a href='#L393'>393</a>
459
+ <a name='L394'></a><a href='#L394'>394</a>
460
+ <a name='L395'></a><a href='#L395'>395</a>
461
+ <a name='L396'></a><a href='#L396'>396</a>
462
+ <a name='L397'></a><a href='#L397'>397</a>
463
+ <a name='L398'></a><a href='#L398'>398</a>
464
+ <a name='L399'></a><a href='#L399'>399</a>
465
+ <a name='L400'></a><a href='#L400'>400</a>
466
+ <a name='L401'></a><a href='#L401'>401</a>
467
+ <a name='L402'></a><a href='#L402'>402</a>
468
+ <a name='L403'></a><a href='#L403'>403</a>
469
+ <a name='L404'></a><a href='#L404'>404</a>
470
+ <a name='L405'></a><a href='#L405'>405</a>
471
+ <a name='L406'></a><a href='#L406'>406</a>
472
+ <a name='L407'></a><a href='#L407'>407</a>
473
+ <a name='L408'></a><a href='#L408'>408</a>
474
+ <a name='L409'></a><a href='#L409'>409</a>
475
+ <a name='L410'></a><a href='#L410'>410</a>
476
+ <a name='L411'></a><a href='#L411'>411</a>
477
+ <a name='L412'></a><a href='#L412'>412</a>
478
+ <a name='L413'></a><a href='#L413'>413</a>
479
+ <a name='L414'></a><a href='#L414'>414</a>
480
+ <a name='L415'></a><a href='#L415'>415</a>
481
+ <a name='L416'></a><a href='#L416'>416</a>
482
+ <a name='L417'></a><a href='#L417'>417</a>
483
+ <a name='L418'></a><a href='#L418'>418</a>
484
+ <a name='L419'></a><a href='#L419'>419</a>
485
+ <a name='L420'></a><a href='#L420'>420</a>
486
+ <a name='L421'></a><a href='#L421'>421</a>
487
+ <a name='L422'></a><a href='#L422'>422</a>
488
+ <a name='L423'></a><a href='#L423'>423</a>
489
+ <a name='L424'></a><a href='#L424'>424</a>
490
+ <a name='L425'></a><a href='#L425'>425</a>
491
+ <a name='L426'></a><a href='#L426'>426</a>
492
+ <a name='L427'></a><a href='#L427'>427</a>
493
+ <a name='L428'></a><a href='#L428'>428</a>
494
+ <a name='L429'></a><a href='#L429'>429</a>
495
+ <a name='L430'></a><a href='#L430'>430</a>
496
+ <a name='L431'></a><a href='#L431'>431</a>
497
+ <a name='L432'></a><a href='#L432'>432</a>
498
+ <a name='L433'></a><a href='#L433'>433</a>
499
+ <a name='L434'></a><a href='#L434'>434</a>
500
+ <a name='L435'></a><a href='#L435'>435</a>
501
+ <a name='L436'></a><a href='#L436'>436</a>
502
+ <a name='L437'></a><a href='#L437'>437</a>
503
+ <a name='L438'></a><a href='#L438'>438</a>
504
+ <a name='L439'></a><a href='#L439'>439</a>
505
+ <a name='L440'></a><a href='#L440'>440</a>
506
+ <a name='L441'></a><a href='#L441'>441</a>
507
+ <a name='L442'></a><a href='#L442'>442</a>
508
+ <a name='L443'></a><a href='#L443'>443</a>
509
+ <a name='L444'></a><a href='#L444'>444</a>
510
+ <a name='L445'></a><a href='#L445'>445</a>
511
+ <a name='L446'></a><a href='#L446'>446</a>
512
+ <a name='L447'></a><a href='#L447'>447</a>
513
+ <a name='L448'></a><a href='#L448'>448</a>
514
+ <a name='L449'></a><a href='#L449'>449</a>
515
+ <a name='L450'></a><a href='#L450'>450</a>
516
+ <a name='L451'></a><a href='#L451'>451</a>
517
+ <a name='L452'></a><a href='#L452'>452</a>
518
+ <a name='L453'></a><a href='#L453'>453</a>
519
+ <a name='L454'></a><a href='#L454'>454</a>
520
+ <a name='L455'></a><a href='#L455'>455</a>
521
+ <a name='L456'></a><a href='#L456'>456</a>
522
+ <a name='L457'></a><a href='#L457'>457</a>
523
+ <a name='L458'></a><a href='#L458'>458</a>
524
+ <a name='L459'></a><a href='#L459'>459</a>
525
+ <a name='L460'></a><a href='#L460'>460</a>
526
+ <a name='L461'></a><a href='#L461'>461</a>
527
+ <a name='L462'></a><a href='#L462'>462</a>
528
+ <a name='L463'></a><a href='#L463'>463</a>
529
+ <a name='L464'></a><a href='#L464'>464</a>
530
+ <a name='L465'></a><a href='#L465'>465</a>
531
+ <a name='L466'></a><a href='#L466'>466</a>
532
+ <a name='L467'></a><a href='#L467'>467</a>
533
+ <a name='L468'></a><a href='#L468'>468</a>
534
+ <a name='L469'></a><a href='#L469'>469</a>
535
+ <a name='L470'></a><a href='#L470'>470</a>
536
+ <a name='L471'></a><a href='#L471'>471</a>
537
+ <a name='L472'></a><a href='#L472'>472</a>
538
+ <a name='L473'></a><a href='#L473'>473</a>
539
+ <a name='L474'></a><a href='#L474'>474</a>
540
+ <a name='L475'></a><a href='#L475'>475</a>
541
+ <a name='L476'></a><a href='#L476'>476</a>
542
+ <a name='L477'></a><a href='#L477'>477</a>
543
+ <a name='L478'></a><a href='#L478'>478</a>
544
+ <a name='L479'></a><a href='#L479'>479</a>
545
+ <a name='L480'></a><a href='#L480'>480</a>
546
+ <a name='L481'></a><a href='#L481'>481</a>
547
+ <a name='L482'></a><a href='#L482'>482</a>
548
+ <a name='L483'></a><a href='#L483'>483</a>
549
+ <a name='L484'></a><a href='#L484'>484</a>
550
+ <a name='L485'></a><a href='#L485'>485</a>
551
+ <a name='L486'></a><a href='#L486'>486</a>
552
+ <a name='L487'></a><a href='#L487'>487</a>
553
+ <a name='L488'></a><a href='#L488'>488</a>
554
+ <a name='L489'></a><a href='#L489'>489</a>
555
+ <a name='L490'></a><a href='#L490'>490</a>
556
+ <a name='L491'></a><a href='#L491'>491</a>
557
+ <a name='L492'></a><a href='#L492'>492</a>
558
+ <a name='L493'></a><a href='#L493'>493</a>
559
+ <a name='L494'></a><a href='#L494'>494</a>
560
+ <a name='L495'></a><a href='#L495'>495</a>
561
+ <a name='L496'></a><a href='#L496'>496</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">92x</span>
562
+ <span class="cline-any cline-neutral">&nbsp;</span>
563
+ <span class="cline-any cline-neutral">&nbsp;</span>
564
+ <span class="cline-any cline-neutral">&nbsp;</span>
565
+ <span class="cline-any cline-neutral">&nbsp;</span>
566
+ <span class="cline-any cline-neutral">&nbsp;</span>
567
+ <span class="cline-any cline-neutral">&nbsp;</span>
568
+ <span class="cline-any cline-neutral">&nbsp;</span>
569
+ <span class="cline-any cline-neutral">&nbsp;</span>
570
+ <span class="cline-any cline-yes">92x</span>
571
+ <span class="cline-any cline-yes">92x</span>
572
+ <span class="cline-any cline-neutral">&nbsp;</span>
573
+ <span class="cline-any cline-neutral">&nbsp;</span>
574
+ <span class="cline-any cline-yes">92x</span>
575
+ <span class="cline-any cline-yes">92x</span>
576
+ <span class="cline-any cline-neutral">&nbsp;</span>
577
+ <span class="cline-any cline-neutral">&nbsp;</span>
578
+ <span class="cline-any cline-neutral">&nbsp;</span>
579
+ <span class="cline-any cline-yes">92x</span>
580
+ <span class="cline-any cline-neutral">&nbsp;</span>
581
+ <span class="cline-any cline-neutral">&nbsp;</span>
582
+ <span class="cline-any cline-yes">168x</span>
583
+ <span class="cline-any cline-neutral">&nbsp;</span>
584
+ <span class="cline-any cline-neutral">&nbsp;</span>
585
+ <span class="cline-any cline-neutral">&nbsp;</span>
586
+ <span class="cline-any cline-neutral">&nbsp;</span>
587
+ <span class="cline-any cline-neutral">&nbsp;</span>
588
+ <span class="cline-any cline-yes">168x</span>
589
+ <span class="cline-any cline-neutral">&nbsp;</span>
590
+ <span class="cline-any cline-yes">168x</span>
591
+ <span class="cline-any cline-neutral">&nbsp;</span>
592
+ <span class="cline-any cline-neutral">&nbsp;</span>
593
+ <span class="cline-any cline-yes">168x</span>
594
+ <span class="cline-any cline-neutral">&nbsp;</span>
595
+ <span class="cline-any cline-neutral">&nbsp;</span>
596
+ <span class="cline-any cline-neutral">&nbsp;</span>
597
+ <span class="cline-any cline-neutral">&nbsp;</span>
598
+ <span class="cline-any cline-neutral">&nbsp;</span>
599
+ <span class="cline-any cline-neutral">&nbsp;</span>
600
+ <span class="cline-any cline-neutral">&nbsp;</span>
601
+ <span class="cline-any cline-neutral">&nbsp;</span>
602
+ <span class="cline-any cline-yes">233x</span>
603
+ <span class="cline-any cline-neutral">&nbsp;</span>
604
+ <span class="cline-any cline-neutral">&nbsp;</span>
605
+ <span class="cline-any cline-neutral">&nbsp;</span>
606
+ <span class="cline-any cline-yes">194x</span>
607
+ <span class="cline-any cline-yes">194x</span>
608
+ <span class="cline-any cline-yes">194x</span>
609
+ <span class="cline-any cline-yes">1x</span>
610
+ <span class="cline-any cline-neutral">&nbsp;</span>
611
+ <span class="cline-any cline-yes">193x</span>
612
+ <span class="cline-any cline-neutral">&nbsp;</span>
613
+ <span class="cline-any cline-neutral">&nbsp;</span>
614
+ <span class="cline-any cline-neutral">&nbsp;</span>
615
+ <span class="cline-any cline-neutral">&nbsp;</span>
616
+ <span class="cline-any cline-neutral">&nbsp;</span>
617
+ <span class="cline-any cline-neutral">&nbsp;</span>
618
+ <span class="cline-any cline-neutral">&nbsp;</span>
619
+ <span class="cline-any cline-yes">194x</span>
620
+ <span class="cline-any cline-neutral">&nbsp;</span>
621
+ <span class="cline-any cline-yes">9x</span>
622
+ <span class="cline-any cline-neutral">&nbsp;</span>
623
+ <span class="cline-any cline-neutral">&nbsp;</span>
624
+ <span class="cline-any cline-yes">9x</span>
625
+ <span class="cline-any cline-neutral">&nbsp;</span>
626
+ <span class="cline-any cline-yes">8x</span>
627
+ <span class="cline-any cline-neutral">&nbsp;</span>
628
+ <span class="cline-any cline-yes">8x</span>
629
+ <span class="cline-any cline-yes">2x</span>
630
+ <span class="cline-any cline-yes">6x</span>
631
+ <span class="cline-any cline-yes">6x</span>
632
+ <span class="cline-any cline-neutral">&nbsp;</span>
633
+ <span class="cline-any cline-yes">2x</span>
634
+ <span class="cline-any cline-neutral">&nbsp;</span>
635
+ <span class="cline-any cline-neutral">&nbsp;</span>
636
+ <span class="cline-any cline-yes">6x</span>
637
+ <span class="cline-any cline-neutral">&nbsp;</span>
638
+ <span class="cline-any cline-neutral">&nbsp;</span>
639
+ <span class="cline-any cline-neutral">&nbsp;</span>
640
+ <span class="cline-any cline-neutral">&nbsp;</span>
641
+ <span class="cline-any cline-yes">2x</span>
642
+ <span class="cline-any cline-yes">2x</span>
643
+ <span class="cline-any cline-yes">2x</span>
644
+ <span class="cline-any cline-neutral">&nbsp;</span>
645
+ <span class="cline-any cline-neutral">&nbsp;</span>
646
+ <span class="cline-any cline-yes">4x</span>
647
+ <span class="cline-any cline-neutral">&nbsp;</span>
648
+ <span class="cline-any cline-neutral">&nbsp;</span>
649
+ <span class="cline-any cline-neutral">&nbsp;</span>
650
+ <span class="cline-any cline-yes">12x</span>
651
+ <span class="cline-any cline-yes">12x</span>
652
+ <span class="cline-any cline-neutral">&nbsp;</span>
653
+ <span class="cline-any cline-yes">9x</span>
654
+ <span class="cline-any cline-neutral">&nbsp;</span>
655
+ <span class="cline-any cline-yes">9x</span>
656
+ <span class="cline-any cline-yes">9x</span>
657
+ <span class="cline-any cline-yes">9x</span>
658
+ <span class="cline-any cline-neutral">&nbsp;</span>
659
+ <span class="cline-any cline-yes">8x</span>
660
+ <span class="cline-any cline-neutral">&nbsp;</span>
661
+ <span class="cline-any cline-neutral">&nbsp;</span>
662
+ <span class="cline-any cline-neutral">&nbsp;</span>
663
+ <span class="cline-any cline-yes">22x</span>
664
+ <span class="cline-any cline-yes">22x</span>
665
+ <span class="cline-any cline-neutral">&nbsp;</span>
666
+ <span class="cline-any cline-yes">22x</span>
667
+ <span class="cline-any cline-yes">3x</span>
668
+ <span class="cline-any cline-neutral">&nbsp;</span>
669
+ <span class="cline-any cline-yes">19x</span>
670
+ <span class="cline-any cline-neutral">&nbsp;</span>
671
+ <span class="cline-any cline-neutral">&nbsp;</span>
672
+ <span class="cline-any cline-yes">22x</span>
673
+ <span class="cline-any cline-neutral">&nbsp;</span>
674
+ <span class="cline-any cline-neutral">&nbsp;</span>
675
+ <span class="cline-any cline-neutral">&nbsp;</span>
676
+ <span class="cline-any cline-yes">194x</span>
677
+ <span class="cline-any cline-yes">194x</span>
678
+ <span class="cline-any cline-yes">2x</span>
679
+ <span class="cline-any cline-neutral">&nbsp;</span>
680
+ <span class="cline-any cline-neutral">&nbsp;</span>
681
+ <span class="cline-any cline-neutral">&nbsp;</span>
682
+ <span class="cline-any cline-neutral">&nbsp;</span>
683
+ <span class="cline-any cline-yes">194x</span>
684
+ <span class="cline-any cline-yes">194x</span>
685
+ <span class="cline-any cline-yes">194x</span>
686
+ <span class="cline-any cline-neutral">&nbsp;</span>
687
+ <span class="cline-any cline-yes">194x</span>
688
+ <span class="cline-any cline-yes">194x</span>
689
+ <span class="cline-any cline-yes">194x</span>
690
+ <span class="cline-any cline-yes">194x</span>
691
+ <span class="cline-any cline-yes">2x</span>
692
+ <span class="cline-any cline-neutral">&nbsp;</span>
693
+ <span class="cline-any cline-neutral">&nbsp;</span>
694
+ <span class="cline-any cline-yes">194x</span>
695
+ <span class="cline-any cline-neutral">&nbsp;</span>
696
+ <span class="cline-any cline-yes">194x</span>
697
+ <span class="cline-any cline-neutral">&nbsp;</span>
698
+ <span class="cline-any cline-yes">11x</span>
699
+ <span class="cline-any cline-yes">11x</span>
700
+ <span class="cline-any cline-yes">11x</span>
701
+ <span class="cline-any cline-yes">1x</span>
702
+ <span class="cline-any cline-neutral">&nbsp;</span>
703
+ <span class="cline-any cline-neutral">&nbsp;</span>
704
+ <span class="cline-any cline-neutral">&nbsp;</span>
705
+ <span class="cline-any cline-neutral">&nbsp;</span>
706
+ <span class="cline-any cline-neutral">&nbsp;</span>
707
+ <span class="cline-any cline-neutral">&nbsp;</span>
708
+ <span class="cline-any cline-neutral">&nbsp;</span>
709
+ <span class="cline-any cline-neutral">&nbsp;</span>
710
+ <span class="cline-any cline-neutral">&nbsp;</span>
711
+ <span class="cline-any cline-yes">5x</span>
712
+ <span class="cline-any cline-yes">5x</span>
713
+ <span class="cline-any cline-yes">1x</span>
714
+ <span class="cline-any cline-neutral">&nbsp;</span>
715
+ <span class="cline-any cline-neutral">&nbsp;</span>
716
+ <span class="cline-any cline-neutral">&nbsp;</span>
717
+ <span class="cline-any cline-neutral">&nbsp;</span>
718
+ <span class="cline-any cline-neutral">&nbsp;</span>
719
+ <span class="cline-any cline-neutral">&nbsp;</span>
720
+ <span class="cline-any cline-neutral">&nbsp;</span>
721
+ <span class="cline-any cline-neutral">&nbsp;</span>
722
+ <span class="cline-any cline-neutral">&nbsp;</span>
723
+ <span class="cline-any cline-yes">4x</span>
724
+ <span class="cline-any cline-yes">4x</span>
725
+ <span class="cline-any cline-yes">2x</span>
726
+ <span class="cline-any cline-neutral">&nbsp;</span>
727
+ <span class="cline-any cline-neutral">&nbsp;</span>
728
+ <span class="cline-any cline-neutral">&nbsp;</span>
729
+ <span class="cline-any cline-neutral">&nbsp;</span>
730
+ <span class="cline-any cline-neutral">&nbsp;</span>
731
+ <span class="cline-any cline-neutral">&nbsp;</span>
732
+ <span class="cline-any cline-neutral">&nbsp;</span>
733
+ <span class="cline-any cline-neutral">&nbsp;</span>
734
+ <span class="cline-any cline-neutral">&nbsp;</span>
735
+ <span class="cline-any cline-yes">194x</span>
736
+ <span class="cline-any cline-neutral">&nbsp;</span>
737
+ <span class="cline-any cline-yes">194x</span>
738
+ <span class="cline-any cline-neutral">&nbsp;</span>
739
+ <span class="cline-any cline-neutral">&nbsp;</span>
740
+ <span class="cline-any cline-neutral">&nbsp;</span>
741
+ <span class="cline-any cline-neutral">&nbsp;</span>
742
+ <span class="cline-any cline-neutral">&nbsp;</span>
743
+ <span class="cline-any cline-neutral">&nbsp;</span>
744
+ <span class="cline-any cline-neutral">&nbsp;</span>
745
+ <span class="cline-any cline-neutral">&nbsp;</span>
746
+ <span class="cline-any cline-neutral">&nbsp;</span>
747
+ <span class="cline-any cline-neutral">&nbsp;</span>
748
+ <span class="cline-any cline-neutral">&nbsp;</span>
749
+ <span class="cline-any cline-neutral">&nbsp;</span>
750
+ <span class="cline-any cline-neutral">&nbsp;</span>
751
+ <span class="cline-any cline-neutral">&nbsp;</span>
752
+ <span class="cline-any cline-neutral">&nbsp;</span>
753
+ <span class="cline-any cline-neutral">&nbsp;</span>
754
+ <span class="cline-any cline-neutral">&nbsp;</span>
755
+ <span class="cline-any cline-neutral">&nbsp;</span>
756
+ <span class="cline-any cline-neutral">&nbsp;</span>
757
+ <span class="cline-any cline-neutral">&nbsp;</span>
758
+ <span class="cline-any cline-neutral">&nbsp;</span>
759
+ <span class="cline-any cline-yes">29x</span>
760
+ <span class="cline-any cline-yes">29x</span>
761
+ <span class="cline-any cline-yes">29x</span>
762
+ <span class="cline-any cline-yes">29x</span>
763
+ <span class="cline-any cline-yes">19x</span>
764
+ <span class="cline-any cline-yes">19x</span>
765
+ <span class="cline-any cline-yes">19x</span>
766
+ <span class="cline-any cline-yes">19x</span>
767
+ <span class="cline-any cline-neutral">&nbsp;</span>
768
+ <span class="cline-any cline-yes">19x</span>
769
+ <span class="cline-any cline-yes">16x</span>
770
+ <span class="cline-any cline-yes">16x</span>
771
+ <span class="cline-any cline-neutral">&nbsp;</span>
772
+ <span class="cline-any cline-neutral">&nbsp;</span>
773
+ <span class="cline-any cline-yes">19x</span>
774
+ <span class="cline-any cline-yes">10x</span>
775
+ <span class="cline-any cline-yes">7x</span>
776
+ <span class="cline-any cline-yes">7x</span>
777
+ <span class="cline-any cline-yes">7x</span>
778
+ <span class="cline-any cline-neutral">&nbsp;</span>
779
+ <span class="cline-any cline-yes">7x</span>
780
+ <span class="cline-any cline-neutral">&nbsp;</span>
781
+ <span class="cline-any cline-yes">7x</span>
782
+ <span class="cline-any cline-yes">5x</span>
783
+ <span class="cline-any cline-yes">5x</span>
784
+ <span class="cline-any cline-neutral">&nbsp;</span>
785
+ <span class="cline-any cline-neutral">&nbsp;</span>
786
+ <span class="cline-any cline-yes">7x</span>
787
+ <span class="cline-any cline-yes">2x</span>
788
+ <span class="cline-any cline-neutral">&nbsp;</span>
789
+ <span class="cline-any cline-neutral">&nbsp;</span>
790
+ <span class="cline-any cline-neutral">&nbsp;</span>
791
+ <span class="cline-any cline-neutral">&nbsp;</span>
792
+ <span class="cline-any cline-neutral">&nbsp;</span>
793
+ <span class="cline-any cline-yes">2x</span>
794
+ <span class="cline-any cline-yes">2x</span>
795
+ <span class="cline-any cline-yes">2x</span>
796
+ <span class="cline-any cline-neutral">&nbsp;</span>
797
+ <span class="cline-any cline-neutral">&nbsp;</span>
798
+ <span class="cline-any cline-neutral">&nbsp;</span>
799
+ <span class="cline-any cline-yes">10x</span>
800
+ <span class="cline-any cline-yes">10x</span>
801
+ <span class="cline-any cline-neutral">&nbsp;</span>
802
+ <span class="cline-any cline-yes">10x</span>
803
+ <span class="cline-any cline-yes">2x</span>
804
+ <span class="cline-any cline-neutral">&nbsp;</span>
805
+ <span class="cline-any cline-neutral">&nbsp;</span>
806
+ <span class="cline-any cline-yes">8x</span>
807
+ <span class="cline-any cline-yes">8x</span>
808
+ <span class="cline-any cline-neutral">&nbsp;</span>
809
+ <span class="cline-any cline-yes">6x</span>
810
+ <span class="cline-any cline-neutral">&nbsp;</span>
811
+ <span class="cline-any cline-yes">6x</span>
812
+ <span class="cline-any cline-neutral">&nbsp;</span>
813
+ <span class="cline-any cline-yes">2x</span>
814
+ <span class="cline-any cline-yes">1x</span>
815
+ <span class="cline-any cline-neutral">&nbsp;</span>
816
+ <span class="cline-any cline-neutral">&nbsp;</span>
817
+ <span class="cline-any cline-yes">1x</span>
818
+ <span class="cline-any cline-neutral">&nbsp;</span>
819
+ <span class="cline-any cline-neutral">&nbsp;</span>
820
+ <span class="cline-any cline-neutral">&nbsp;</span>
821
+ <span class="cline-any cline-neutral">&nbsp;</span>
822
+ <span class="cline-any cline-yes">1x</span>
823
+ <span class="cline-any cline-yes">1x</span>
824
+ <span class="cline-any cline-neutral">&nbsp;</span>
825
+ <span class="cline-any cline-yes">1x</span>
826
+ <span class="cline-any cline-neutral">&nbsp;</span>
827
+ <span class="cline-any cline-neutral">&nbsp;</span>
828
+ <span class="cline-any cline-neutral">&nbsp;</span>
829
+ <span class="cline-any cline-neutral">&nbsp;</span>
830
+ <span class="cline-any cline-neutral">&nbsp;</span>
831
+ <span class="cline-any cline-neutral">&nbsp;</span>
832
+ <span class="cline-any cline-yes">1x</span>
833
+ <span class="cline-any cline-yes">1x</span>
834
+ <span class="cline-any cline-neutral">&nbsp;</span>
835
+ <span class="cline-any cline-yes">3x</span>
836
+ <span class="cline-any cline-yes">1x</span>
837
+ <span class="cline-any cline-yes">2x</span>
838
+ <span class="cline-any cline-neutral">&nbsp;</span>
839
+ <span class="cline-any cline-yes">2x</span>
840
+ <span class="cline-any cline-neutral">&nbsp;</span>
841
+ <span class="cline-any cline-neutral">&nbsp;</span>
842
+ <span class="cline-any cline-neutral">&nbsp;</span>
843
+ <span class="cline-any cline-neutral">&nbsp;</span>
844
+ <span class="cline-any cline-yes">2x</span>
845
+ <span class="cline-any cline-neutral">&nbsp;</span>
846
+ <span class="cline-any cline-neutral">&nbsp;</span>
847
+ <span class="cline-any cline-yes">1x</span>
848
+ <span class="cline-any cline-yes">2x</span>
849
+ <span class="cline-any cline-yes">2x</span>
850
+ <span class="cline-any cline-yes">4x</span>
851
+ <span class="cline-any cline-neutral">&nbsp;</span>
852
+ <span class="cline-any cline-yes">4x</span>
853
+ <span class="cline-any cline-yes">1x</span>
854
+ <span class="cline-any cline-neutral">&nbsp;</span>
855
+ <span class="cline-any cline-neutral">&nbsp;</span>
856
+ <span class="cline-any cline-neutral">&nbsp;</span>
857
+ <span class="cline-any cline-neutral">&nbsp;</span>
858
+ <span class="cline-any cline-yes">1x</span>
859
+ <span class="cline-any cline-yes">1x</span>
860
+ <span class="cline-any cline-yes">1x</span>
861
+ <span class="cline-any cline-yes">1x</span>
862
+ <span class="cline-any cline-yes">1x</span>
863
+ <span class="cline-any cline-yes">1x</span>
864
+ <span class="cline-any cline-neutral">&nbsp;</span>
865
+ <span class="cline-any cline-neutral">&nbsp;</span>
866
+ <span class="cline-any cline-neutral">&nbsp;</span>
867
+ <span class="cline-any cline-neutral">&nbsp;</span>
868
+ <span class="cline-any cline-yes">1x</span>
869
+ <span class="cline-any cline-neutral">&nbsp;</span>
870
+ <span class="cline-any cline-neutral">&nbsp;</span>
871
+ <span class="cline-any cline-neutral">&nbsp;</span>
872
+ <span class="cline-any cline-yes">30x</span>
873
+ <span class="cline-any cline-yes">27x</span>
874
+ <span class="cline-any cline-neutral">&nbsp;</span>
875
+ <span class="cline-any cline-neutral">&nbsp;</span>
876
+ <span class="cline-any cline-yes">3x</span>
877
+ <span class="cline-any cline-yes">1x</span>
878
+ <span class="cline-any cline-neutral">&nbsp;</span>
879
+ <span class="cline-any cline-neutral">&nbsp;</span>
880
+ <span class="cline-any cline-yes">2x</span>
881
+ <span class="cline-any cline-neutral">&nbsp;</span>
882
+ <span class="cline-any cline-yes">2x</span>
883
+ <span class="cline-any cline-yes">4x</span>
884
+ <span class="cline-any cline-yes">12x</span>
885
+ <span class="cline-any cline-yes">12x</span>
886
+ <span class="cline-any cline-neutral">&nbsp;</span>
887
+ <span class="cline-any cline-yes">12x</span>
888
+ <span class="cline-any cline-neutral">&nbsp;</span>
889
+ <span class="cline-any cline-yes">8x</span>
890
+ <span class="cline-any cline-neutral">&nbsp;</span>
891
+ <span class="cline-any cline-neutral">&nbsp;</span>
892
+ <span class="cline-any cline-neutral">&nbsp;</span>
893
+ <span class="cline-any cline-yes">2x</span>
894
+ <span class="cline-any cline-neutral">&nbsp;</span>
895
+ <span class="cline-any cline-neutral">&nbsp;</span>
896
+ <span class="cline-any cline-neutral">&nbsp;</span>
897
+ <span class="cline-any cline-yes">25x</span>
898
+ <span class="cline-any cline-yes">25x</span>
899
+ <span class="cline-any cline-neutral">&nbsp;</span>
900
+ <span class="cline-any cline-neutral">&nbsp;</span>
901
+ <span class="cline-any cline-neutral">&nbsp;</span>
902
+ <span class="cline-any cline-neutral">&nbsp;</span>
903
+ <span class="cline-any cline-neutral">&nbsp;</span>
904
+ <span class="cline-any cline-neutral">&nbsp;</span>
905
+ <span class="cline-any cline-neutral">&nbsp;</span>
906
+ <span class="cline-any cline-neutral">&nbsp;</span>
907
+ <span class="cline-any cline-neutral">&nbsp;</span>
908
+ <span class="cline-any cline-neutral">&nbsp;</span>
909
+ <span class="cline-any cline-yes">42x</span>
910
+ <span class="cline-any cline-neutral">&nbsp;</span>
911
+ <span class="cline-any cline-neutral">&nbsp;</span>
912
+ <span class="cline-any cline-yes">42x</span>
913
+ <span class="cline-any cline-yes">18x</span>
914
+ <span class="cline-any cline-yes">18x</span>
915
+ <span class="cline-any cline-neutral">&nbsp;</span>
916
+ <span class="cline-any cline-neutral">&nbsp;</span>
917
+ <span class="cline-any cline-yes">24x</span>
918
+ <span class="cline-any cline-yes">24x</span>
919
+ <span class="cline-any cline-neutral">&nbsp;</span>
920
+ <span class="cline-any cline-yes">21x</span>
921
+ <span class="cline-any cline-neutral">&nbsp;</span>
922
+ <span class="cline-any cline-yes">3x</span>
923
+ <span class="cline-any cline-yes">2x</span>
924
+ <span class="cline-any cline-yes">2x</span>
925
+ <span class="cline-any cline-neutral">&nbsp;</span>
926
+ <span class="cline-any cline-neutral">&nbsp;</span>
927
+ <span class="cline-any cline-yes">1x</span>
928
+ <span class="cline-any cline-neutral">&nbsp;</span>
929
+ <span class="cline-any cline-neutral">&nbsp;</span>
930
+ <span class="cline-any cline-neutral">&nbsp;</span>
931
+ <span class="cline-any cline-neutral">&nbsp;</span>
932
+ <span class="cline-any cline-yes">30x</span>
933
+ <span class="cline-any cline-yes">65x</span>
934
+ <span class="cline-any cline-yes">65x</span>
935
+ <span class="cline-any cline-neutral">&nbsp;</span>
936
+ <span class="cline-any cline-neutral">&nbsp;</span>
937
+ <span class="cline-any cline-neutral">&nbsp;</span>
938
+ <span class="cline-any cline-neutral">&nbsp;</span>
939
+ <span class="cline-any cline-yes">11x</span>
940
+ <span class="cline-any cline-yes">1x</span>
941
+ <span class="cline-any cline-neutral">&nbsp;</span>
942
+ <span class="cline-any cline-neutral">&nbsp;</span>
943
+ <span class="cline-any cline-yes">10x</span>
944
+ <span class="cline-any cline-yes">10x</span>
945
+ <span class="cline-any cline-neutral">&nbsp;</span>
946
+ <span class="cline-any cline-yes">10x</span>
947
+ <span class="cline-any cline-yes">1x</span>
948
+ <span class="cline-any cline-neutral">&nbsp;</span>
949
+ <span class="cline-any cline-neutral">&nbsp;</span>
950
+ <span class="cline-any cline-yes">9x</span>
951
+ <span class="cline-any cline-yes">23x</span>
952
+ <span class="cline-any cline-neutral">&nbsp;</span>
953
+ <span class="cline-any cline-yes">23x</span>
954
+ <span class="cline-any cline-neutral">&nbsp;</span>
955
+ <span class="cline-any cline-neutral">&nbsp;</span>
956
+ <span class="cline-any cline-neutral">&nbsp;</span>
957
+ <span class="cline-any cline-neutral">&nbsp;</span>
958
+ <span class="cline-any cline-yes">21x</span>
959
+ <span class="cline-any cline-yes">1x</span>
960
+ <span class="cline-any cline-neutral">&nbsp;</span>
961
+ <span class="cline-any cline-neutral">&nbsp;</span>
962
+ <span class="cline-any cline-yes">20x</span>
963
+ <span class="cline-any cline-neutral">&nbsp;</span>
964
+ <span class="cline-any cline-yes">20x</span>
965
+ <span class="cline-any cline-yes">1x</span>
966
+ <span class="cline-any cline-neutral">&nbsp;</span>
967
+ <span class="cline-any cline-neutral">&nbsp;</span>
968
+ <span class="cline-any cline-yes">19x</span>
969
+ <span class="cline-any cline-yes">19x</span>
970
+ <span class="cline-any cline-neutral">&nbsp;</span>
971
+ <span class="cline-any cline-neutral">&nbsp;</span>
972
+ <span class="cline-any cline-neutral">&nbsp;</span>
973
+ <span class="cline-any cline-yes">3x</span>
974
+ <span class="cline-any cline-yes">4x</span>
975
+ <span class="cline-any cline-yes">4x</span>
976
+ <span class="cline-any cline-neutral">&nbsp;</span>
977
+ <span class="cline-any cline-neutral">&nbsp;</span>
978
+ <span class="cline-any cline-yes">3x</span>
979
+ <span class="cline-any cline-neutral">&nbsp;</span>
980
+ <span class="cline-any cline-yes">2x</span>
981
+ <span class="cline-any cline-neutral">&nbsp;</span>
982
+ <span class="cline-any cline-yes">2x</span>
983
+ <span class="cline-any cline-neutral">&nbsp;</span>
984
+ <span class="cline-any cline-neutral">&nbsp;</span>
985
+ <span class="cline-any cline-neutral">&nbsp;</span>
986
+ <span class="cline-any cline-yes">1x</span>
987
+ <span class="cline-any cline-neutral">&nbsp;</span>
988
+ <span class="cline-any cline-neutral">&nbsp;</span>
989
+ <span class="cline-any cline-neutral">&nbsp;</span>
990
+ <span class="cline-any cline-yes">2x</span>
991
+ <span class="cline-any cline-yes">1x</span>
992
+ <span class="cline-any cline-neutral">&nbsp;</span>
993
+ <span class="cline-any cline-yes">1x</span>
994
+ <span class="cline-any cline-neutral">&nbsp;</span>
995
+ <span class="cline-any cline-neutral">&nbsp;</span>
996
+ <span class="cline-any cline-neutral">&nbsp;</span>
997
+ <span class="cline-any cline-yes">1x</span>
998
+ <span class="cline-any cline-yes">1x</span>
999
+ <span class="cline-any cline-yes">1x</span>
1000
+ <span class="cline-any cline-neutral">&nbsp;</span>
1001
+ <span class="cline-any cline-neutral">&nbsp;</span>
1002
+ <span class="cline-any cline-neutral">&nbsp;</span>
1003
+ <span class="cline-any cline-yes">1x</span>
1004
+ <span class="cline-any cline-yes">2x</span>
1005
+ <span class="cline-any cline-yes">1x</span>
1006
+ <span class="cline-any cline-yes">1x</span>
1007
+ <span class="cline-any cline-yes">1x</span>
1008
+ <span class="cline-any cline-neutral">&nbsp;</span>
1009
+ <span class="cline-any cline-yes">1x</span>
1010
+ <span class="cline-any cline-yes">1x</span>
1011
+ <span class="cline-any cline-neutral">&nbsp;</span>
1012
+ <span class="cline-any cline-neutral">&nbsp;</span>
1013
+ <span class="cline-any cline-yes">168x</span>
1014
+ <span class="cline-any cline-neutral">&nbsp;</span>
1015
+ <span class="cline-any cline-neutral">&nbsp;</span>
1016
+ <span class="cline-any cline-neutral">&nbsp;</span>
1017
+ <span class="cline-any cline-yes">1x</span>
1018
+ <span class="cline-any cline-neutral">&nbsp;</span>
1019
+ <span class="cline-any cline-neutral">&nbsp;</span>
1020
+ <span class="cline-any cline-yes">1x</span>
1021
+ <span class="cline-any cline-neutral">&nbsp;</span>
1022
+ <span class="cline-any cline-neutral">&nbsp;</span>
1023
+ <span class="cline-any cline-neutral">&nbsp;</span>
1024
+ <span class="cline-any cline-yes">11x</span>
1025
+ <span class="cline-any cline-neutral">&nbsp;</span>
1026
+ <span class="cline-any cline-neutral">&nbsp;</span>
1027
+ <span class="cline-any cline-neutral">&nbsp;</span>
1028
+ <span class="cline-any cline-yes">16x</span>
1029
+ <span class="cline-any cline-yes">16x</span>
1030
+ <span class="cline-any cline-neutral">&nbsp;</span>
1031
+ <span class="cline-any cline-yes">16x</span>
1032
+ <span class="cline-any cline-yes">67x</span>
1033
+ <span class="cline-any cline-neutral">&nbsp;</span>
1034
+ <span class="cline-any cline-neutral">&nbsp;</span>
1035
+ <span class="cline-any cline-yes">16x</span>
1036
+ <span class="cline-any cline-neutral">&nbsp;</span>
1037
+ <span class="cline-any cline-neutral">&nbsp;</span>
1038
+ <span class="cline-any cline-neutral">&nbsp;</span>
1039
+ <span class="cline-any cline-yes">28x</span>
1040
+ <span class="cline-any cline-yes">28x</span>
1041
+ <span class="cline-any cline-yes">27x</span>
1042
+ <span class="cline-any cline-yes">27x</span>
1043
+ <span class="cline-any cline-yes">2x</span>
1044
+ <span class="cline-any cline-neutral">&nbsp;</span>
1045
+ <span class="cline-any cline-neutral">&nbsp;</span>
1046
+ <span class="cline-any cline-yes">25x</span>
1047
+ <span class="cline-any cline-neutral">&nbsp;</span>
1048
+ <span class="cline-any cline-yes">26x</span>
1049
+ <span class="cline-any cline-neutral">&nbsp;</span>
1050
+ <span class="cline-any cline-neutral">&nbsp;</span>
1051
+ <span class="cline-any cline-neutral">&nbsp;</span>
1052
+ <span class="cline-any cline-yes">2x</span>
1053
+ <span class="cline-any cline-yes">2x</span>
1054
+ <span class="cline-any cline-neutral">&nbsp;</span>
1055
+ <span class="cline-any cline-neutral">&nbsp;</span>
1056
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import {
1057
+ IDictionary,
1058
+ InstanceNotFoundError,
1059
+ Metadata,
1060
+ MethodNotAssignedError,
1061
+ Utils,
1062
+ ViewService,
1063
+ Event as ZdEvent,
1064
+ } from '@zeedhi/core';
1065
+ import merge from 'lodash.merge';
1066
+ import { omit } from '../../utils';
1067
+ import { IComponentRender } from '../zd-component/interfaces';
1068
+ import { Input } from '../zd-input/input';
1069
+ import { InputFactory } from '../zd-input/input-factory';
1070
+ import { NotEditingError, RowNotFoundError } from './errors';
1071
+ import { GridColumnEditable } from './grid-column-editable';
1072
+ import { IDataEditor, IGridColumnEditable, IGridEditable } from './interfaces';
1073
+ &nbsp;
1074
+ export class DataEditor implements IDataEditor {
1075
+ protected grid: IGridEditable;
1076
+ &nbsp;
1077
+ protected editedRows: Map&lt;string | number, IDictionary&gt; = new Map();
1078
+ &nbsp;
1079
+ /**
1080
+ * Invalid inline components
1081
+ * @private
1082
+ */
1083
+ protected invalidComponents: Set&lt;string&gt; = new Set();
1084
+ &nbsp;
1085
+ private viewEnterEdit: ((rowKey: string, columnName: string) =&gt; void) | null = null;
1086
+ &nbsp;
1087
+ constructor(grid: IGridEditable) {
1088
+ this.grid = grid;
1089
+ }
1090
+ &nbsp;
1091
+ /**
1092
+ * Gets the editable component name
1093
+ * @param key Row unique key
1094
+ * @param columnName Column name
1095
+ */
1096
+ private getCompName(key: string | number, columnName: string) {
1097
+ return `${columnName}_editable_${key}`;
1098
+ }
1099
+ &nbsp;
1100
+ getVisibleValue(row: IDictionary, column: IGridColumnEditable) {
1101
+ const key = this.grid.getRowKey(row);
1102
+ const editedRow = this.editedRows.get(key);
1103
+ if (editedRow &amp;&amp; Object.prototype.hasOwnProperty.call(editedRow, column.name)) {
1104
+ return editedRow[column.name];
1105
+ }
1106
+ return row[column.name];
1107
+ }
1108
+ &nbsp;
1109
+ /**
1110
+ * Pushes lookup values into the column's datasource
1111
+ * If the row[column.name] has a selected value, pushes it
1112
+ */
1113
+ private checkLookupData(column: IGridColumnEditable, row: IDictionary, componentProps: IDictionary) {
1114
+ if (!row[column.name] || !column.lookupData || !componentProps.datasource) return;
1115
+ &nbsp;
1116
+ componentProps.datasource.data = componentProps.datasource.data || [];
1117
+ &nbsp;
1118
+ // prevent pushing lookup values when using accessor in data
1119
+ if (!Array.isArray(componentProps.datasource.data)) return;
1120
+ &nbsp;
1121
+ const colValue = row[column.name];
1122
+ &nbsp;
1123
+ if (Array.isArray(colValue)) {
1124
+ colValue.forEach((item) =&gt; {
1125
+ const value = typeof item === 'object' ? item[componentProps.dataValue] : item;
1126
+ this.pushLookupValue(column, value, componentProps);
1127
+ });
1128
+ return;
1129
+ }
1130
+ &nbsp;
1131
+ if (
1132
+ colValue &amp;&amp;
1133
+ typeof colValue === 'object' &amp;&amp;
1134
+ Object.prototype.hasOwnProperty.call(colValue, componentProps.dataValue)
1135
+ ) {
1136
+ const value = (colValue as IDictionary)[componentProps.dataValue];
1137
+ this.pushLookupValue(column, value, componentProps);
1138
+ return;
1139
+ }
1140
+ &nbsp;
1141
+ this.pushLookupValue(column, colValue, componentProps);
1142
+ }
1143
+ &nbsp;
1144
+ private pushLookupValue(column: IGridColumnEditable, value: any, componentProps: IDictionary) {
1145
+ const lookupValue = column.lookupData[value];
1146
+ if (!lookupValue) return;
1147
+ &nbsp;
1148
+ const { dataValue } = componentProps;
1149
+ &nbsp;
1150
+ const key = lookupValue[dataValue];
1151
+ const isValueInDatasource = componentProps.datasource.data.find((row: IDictionary) =&gt; row[dataValue] === key);
1152
+ if (isValueInDatasource) return;
1153
+ &nbsp;
1154
+ componentProps.datasource.data.push(lookupValue);
1155
+ }
1156
+ &nbsp;
1157
+ private async checkCompValidity(input: Input) {
1158
+ const validationErrors = await input.validate();
1159
+ const isValid = validationErrors.length === 0;
1160
+ &nbsp;
1161
+ if (!isValid) {
1162
+ this.invalidComponents.add(input.name);
1163
+ } else {
1164
+ this.invalidComponents.delete(input.name);
1165
+ }
1166
+ &nbsp;
1167
+ return isValid;
1168
+ }
1169
+ &nbsp;
1170
+ private updateOriginalRow(key: any, row: IDictionary) {
1171
+ const editedRow = this.editedRows.get(key);
1172
+ if (editedRow) {
1173
+ editedRow.originalRow = omit(row, 'originalRow');
1174
+ }
1175
+ }
1176
+ &nbsp;
1177
+ getEditableComponent(column: GridColumnEditable, row: IDictionary&lt;any&gt;): IComponentRender {
1178
+ const key = this.grid.getRowKey(row);
1179
+ const compName = this.getCompName(key, column.name);
1180
+ const colValue: any = this.getVisibleValue(row, column);
1181
+ &nbsp;
1182
+ const conditionalProps = this.grid.getConditionalProps({ row, column });
1183
+ const componentProps: IComponentRender = merge({}, column.componentProps, conditionalProps?.componentProps);
1184
+ let compEvents: any = {};
1185
+ if (componentProps?.events) {
1186
+ compEvents = ZdEvent.factory(componentProps.events);
1187
+ }
1188
+ &nbsp;
1189
+ this.checkLookupData(column, { ...row }, componentProps);
1190
+ &nbsp;
1191
+ const newEvents = {
1192
+ change: ({ component, event, element }: any) =&gt; {
1193
+ this.changeEditableComponent(column, { ...row }, component.value, component);
1194
+ this.checkCompValidity(component);
1195
+ if (compEvents.change) {
1196
+ compEvents.change({
1197
+ component,
1198
+ event,
1199
+ element,
1200
+ row,
1201
+ column,
1202
+ });
1203
+ }
1204
+ },
1205
+ blur: ({ event, element, component }: any) =&gt; {
1206
+ this.checkCompValidity(component);
1207
+ if (compEvents.blur) {
1208
+ compEvents.blur({
1209
+ component,
1210
+ event,
1211
+ element,
1212
+ row,
1213
+ column,
1214
+ });
1215
+ }
1216
+ },
1217
+ focus: ({ event, element, component }: any) =&gt; {
1218
+ this.grid.setCurrentRow(row);
1219
+ if (compEvents.focus) {
1220
+ compEvents.focus({
1221
+ component,
1222
+ event,
1223
+ element,
1224
+ row,
1225
+ column,
1226
+ });
1227
+ }
1228
+ },
1229
+ };
1230
+ this.updateOriginalRow(key, row);
1231
+ &nbsp;
1232
+ return {
1233
+ ...componentProps,
1234
+ name: compName,
1235
+ parent: this.grid,
1236
+ align: column.align,
1237
+ showLabel: false,
1238
+ showHelper: false,
1239
+ dense: true,
1240
+ value: colValue,
1241
+ events: newEvents,
1242
+ autofill: false,
1243
+ allowDuplicate: true,
1244
+ autoRegister: false,
1245
+ };
1246
+ }
1247
+ &nbsp;
1248
+ protected changeEditableComponent(
1249
+ column: IGridColumnEditable,
1250
+ row: IDictionary&lt;any&gt;,
1251
+ value: any,
1252
+ component?: Input,
1253
+ ): void {
1254
+ const key = this.grid.getRowKey(row);
1255
+ const columnName = column.name;
1256
+ const editedRow = this.editedRows.get(key);
1257
+ if (!Utils.isEqual(value, row[columnName])) {
1258
+ const newRow: IDictionary = { ...editedRow };
1259
+ newRow.originalRow = omit(row, 'originalRow');
1260
+ newRow[columnName] = value;
1261
+ newRow[`${columnName}_original`] = row[columnName];
1262
+ &nbsp;
1263
+ if (component) {
1264
+ column.checkOutValues(component, row, newRow);
1265
+ component.value = value;
1266
+ }
1267
+ &nbsp;
1268
+ this.editedRows.set(key, newRow);
1269
+ } else if (editedRow) {
1270
+ let newRow = { ...editedRow };
1271
+ newRow = omit(newRow, columnName);
1272
+ newRow = omit(newRow, `${columnName}_original`);
1273
+ &nbsp;
1274
+ this.editedRows.set(key, newRow);
1275
+ &nbsp;
1276
+ if (component) {
1277
+ column.checkOutValues(component, row, newRow);
1278
+ component.value = value;
1279
+ }
1280
+ &nbsp;
1281
+ if (Object.keys(newRow).length === 1 &amp;&amp; newRow.originalRow) {
1282
+ this.editedRows.delete(key);
1283
+ }
1284
+ }
1285
+ }
1286
+ &nbsp;
1287
+ isEdited(column: IGridColumnEditable, row: IDictionary): boolean {
1288
+ const key = this.grid.getRowKey(row);
1289
+ const editedRow = this.editedRows.get(key);
1290
+ return !!editedRow &amp;&amp; editedRow[column.name] !== editedRow[`${column.name}_original`];
1291
+ }
1292
+ &nbsp;
1293
+ async isValid(column: IGridColumnEditable, row: IDictionary, revalidate?: boolean): Promise&lt;boolean&gt; {
1294
+ const key = this.grid.getRowKey(row);
1295
+ const compName = this.getCompName(key, column.name);
1296
+ &nbsp;
1297
+ if (!revalidate) {
1298
+ return !this.invalidComponents.has(compName);
1299
+ }
1300
+ &nbsp;
1301
+ try {
1302
+ const input = this.getComponent&lt;Input&gt;(key, column.name);
1303
+ &nbsp;
1304
+ const isValid = await this.checkCompValidity(input);
1305
+ &nbsp;
1306
+ return isValid;
1307
+ } catch (e) {
1308
+ if (e instanceof InstanceNotFoundError) {
1309
+ return true;
1310
+ }
1311
+ &nbsp;
1312
+ throw e;
1313
+ }
1314
+ }
1315
+ &nbsp;
1316
+ checkValid(column: IGridColumnEditable, row: IDictionary): boolean {
1317
+ const key = this.grid.getRowKey(row);
1318
+ const compName = this.getCompName(key, column.name);
1319
+ &nbsp;
1320
+ return !this.invalidComponents.has(compName);
1321
+ }
1322
+ &nbsp;
1323
+ /**
1324
+ * Checks whether the grid is valid while not in editing mode
1325
+ */
1326
+ private isViewGridValid(forceEditing = true) {
1327
+ const invalidCompNames: string[] = [];
1328
+ const componentInstances: IDictionary&lt;Input&gt; = {};
1329
+ &nbsp;
1330
+ const editableColumns = this.grid.columns.filter((column) =&gt; column.editable &amp;&amp; column.isVisible);
1331
+ editableColumns.forEach((column) =&gt; {
1332
+ const compName = this.getCompName('temp', column.name);
1333
+ &nbsp;
1334
+ const componentProps = {
1335
+ ...column.componentProps,
1336
+ name: compName,
1337
+ };
1338
+ &nbsp;
1339
+ componentInstances[column.name] = InputFactory.factory(componentProps);
1340
+ });
1341
+ &nbsp;
1342
+ this.grid.getData().forEach((row) =&gt; {
1343
+ const key = this.grid.getRowKey(row);
1344
+ editableColumns.forEach((column) =&gt; {
1345
+ const instance = componentInstances[column.name];
1346
+ &nbsp;
1347
+ if (!instance.isValid(row[column.name])) {
1348
+ invalidCompNames.push(this.getCompName(key, column.name));
1349
+ }
1350
+ });
1351
+ });
1352
+ &nbsp;
1353
+ if (invalidCompNames.length &gt; 0 &amp;&amp; forceEditing) {
1354
+ this.grid.editing = true;
1355
+ ViewService.nextTick(() =&gt; {
1356
+ invalidCompNames.forEach((compName) =&gt; {
1357
+ const invalidComponent = Metadata.getInstance&lt;Input&gt;(compName);
1358
+ invalidComponent.validate();
1359
+ });
1360
+ });
1361
+ }
1362
+ &nbsp;
1363
+ return invalidCompNames.length === 0;
1364
+ }
1365
+ &nbsp;
1366
+ isGridValid(revalidate?: boolean): boolean {
1367
+ if (!revalidate) {
1368
+ return this.invalidComponents.size === 0;
1369
+ }
1370
+ &nbsp;
1371
+ if (!this.grid.editing) {
1372
+ return this.isViewGridValid();
1373
+ }
1374
+ &nbsp;
1375
+ let allValid = true;
1376
+ &nbsp;
1377
+ this.grid.getData().forEach((row) =&gt;
1378
+ this.grid.columns.forEach((column) =&gt; {
1379
+ const cellsApplied = this.grid.getAppliedConditions({ row, column });
1380
+ const editable = cellsApplied.editable ?? column.editable;
1381
+ &nbsp;
1382
+ if (!column.isVisible || !editable) return;
1383
+ &nbsp;
1384
+ if (!this.isValid(column, row, true)) allValid = false;
1385
+ }),
1386
+ );
1387
+ &nbsp;
1388
+ return allValid;
1389
+ }
1390
+ &nbsp;
1391
+ getComponent&lt;T&gt;(key: string | number, columnName: string): T {
1392
+ const compName = this.getCompName(key, columnName);
1393
+ return Metadata.getInstance&lt;T&gt;(compName);
1394
+ }
1395
+ &nbsp;
1396
+ /**
1397
+ * Changes a cell value in editedRows
1398
+ * @param rowKey Cell's row key
1399
+ * @param rowIdx Cell's row index in datasource.data
1400
+ * @param column Cell's column
1401
+ * @param value Value to be set in the cell
1402
+ */
1403
+ private changeCell(rowKey: string | number, rowIdx: number, column: GridColumnEditable, value: any) {
1404
+ const originalRow = this.grid.getData()[rowIdx];
1405
+ &nbsp;
1406
+ // Column doesn't have component
1407
+ if (!column.editable || !column.isVisible) {
1408
+ this.changeEditableComponent(column, originalRow, value);
1409
+ return;
1410
+ }
1411
+ &nbsp;
1412
+ try {
1413
+ const component = this.getComponent&lt;Input&gt;(rowKey, column.name);
1414
+ &nbsp;
1415
+ this.changeEditableComponent(column, originalRow, value, component);
1416
+ } catch (e) {
1417
+ if (e instanceof InstanceNotFoundError) {
1418
+ this.changeEditableComponent(column, originalRow, value);
1419
+ return;
1420
+ }
1421
+ &nbsp;
1422
+ throw e;
1423
+ }
1424
+ }
1425
+ &nbsp;
1426
+ private getRowIndex(newRowKey: string | number) {
1427
+ return this.grid.getData().findIndex((row: IDictionary) =&gt; {
1428
+ const rowKey = this.grid.getRowKey(row);
1429
+ return rowKey === newRowKey;
1430
+ });
1431
+ }
1432
+ &nbsp;
1433
+ updateRow(newRow: IDictionary): void {
1434
+ if (!this.grid.editing) {
1435
+ throw new NotEditingError('updateRow');
1436
+ }
1437
+ &nbsp;
1438
+ const newRowKey = this.grid.getRowKey(newRow);
1439
+ const rowIdx = this.getRowIndex(newRowKey);
1440
+ &nbsp;
1441
+ if (rowIdx === -1) {
1442
+ throw new RowNotFoundError(newRowKey, this.grid.name);
1443
+ }
1444
+ &nbsp;
1445
+ this.grid.columns.forEach((column: GridColumnEditable) =&gt; {
1446
+ const columnName = column.name;
1447
+ &nbsp;
1448
+ this.changeCell(newRowKey, rowIdx, column, newRow[columnName]);
1449
+ });
1450
+ }
1451
+ &nbsp;
1452
+ updateCell(rowKey: string, columnName: string, value: any): void {
1453
+ if (!this.grid.editing) {
1454
+ throw new NotEditingError('updateCell');
1455
+ }
1456
+ &nbsp;
1457
+ const rowIdx = this.getRowIndex(rowKey);
1458
+ &nbsp;
1459
+ if (rowIdx === -1) {
1460
+ throw new RowNotFoundError(rowKey, this.grid.name);
1461
+ }
1462
+ &nbsp;
1463
+ const column = this.grid.getColumn(columnName);
1464
+ this.changeCell(rowKey, rowIdx, column, value);
1465
+ }
1466
+ &nbsp;
1467
+ changeData(data?: IDictionary&lt;any&gt;[]): void {
1468
+ const emptyRow = data?.find((row) =&gt; {
1469
+ const rowKey = this.grid.getRowKey(row);
1470
+ return rowKey !== 0 &amp;&amp; !rowKey;
1471
+ });
1472
+ &nbsp;
1473
+ if (!emptyRow) return;
1474
+ &nbsp;
1475
+ const emptyRowKey = this.grid.getRowKey(emptyRow);
1476
+ &nbsp;
1477
+ this.editedRows.delete(emptyRowKey);
1478
+ }
1479
+ &nbsp;
1480
+ setViewEnterEdit(fn: ((rowKey: string, columnName: string) =&gt; void) | null) {
1481
+ this.viewEnterEdit = fn;
1482
+ }
1483
+ &nbsp;
1484
+ enterEdit(rowKey: string, columnName: string): void {
1485
+ if (!this.viewEnterEdit) {
1486
+ throw new MethodNotAssignedError('viewEnterEdit');
1487
+ }
1488
+ this.viewEnterEdit(rowKey, columnName);
1489
+ }
1490
+ &nbsp;
1491
+ async cancelEditedRows(): Promise&lt;void&gt; {
1492
+ this.grid.editing = false;
1493
+ this.editedRows.clear();
1494
+ this.invalidComponents.clear();
1495
+ }
1496
+ &nbsp;
1497
+ async saveEditedRows(revalidate?: boolean): Promise&lt;void[]&gt; {
1498
+ const page = this.grid.getPage();
1499
+ const response = await Promise.all(this.getEditedRows(revalidate).map((row) =&gt; this.grid.datasource.put(row)));
1500
+ this.grid.editing = false;
1501
+ this.editedRows.clear();
1502
+ this.invalidComponents.clear();
1503
+ &nbsp;
1504
+ await this.grid.setPage(page);
1505
+ return response;
1506
+ }
1507
+ &nbsp;
1508
+ protected canEditRowConditions = new Map&lt;string | number, boolean | undefined&gt;();
1509
+ &nbsp;
1510
+ reapplyCanEditRow(row: IDictionary&lt;any&gt;) {
1511
+ const canEdit =
1512
+ !this.grid.canEditRow ||
1513
+ typeof this.grid.canEditRow !== 'function' ||
1514
+ this.grid.canEditRow({ row, component: this.grid });
1515
+ this.canEditRowConditions.set(this.grid.getRowKey(row), canEdit);
1516
+ }
1517
+ &nbsp;
1518
+ getCanEditRow(row: IDictionary&lt;any&gt;) {
1519
+ return this.canEditRowConditions.get(this.grid.getRowKey(row));
1520
+ }
1521
+ &nbsp;
1522
+ protected omitInternals(editedRow: IDictionary) {
1523
+ let row = { ...editedRow.originalRow, ...editedRow };
1524
+ row = omit(row, 'originalRow');
1525
+ &nbsp;
1526
+ Object.keys(row).forEach((attr) =&gt; {
1527
+ row = omit(row, `${attr}_original`);
1528
+ });
1529
+ &nbsp;
1530
+ return row;
1531
+ }
1532
+ &nbsp;
1533
+ getEditedRows(revalidate?: boolean, silent?: boolean): IDictionary&lt;any&gt;[] {
1534
+ const editedRows: IDictionary&lt;any&gt;[] = [];
1535
+ this.editedRows.forEach((editedRow) =&gt; {
1536
+ const row = this.omitInternals(editedRow);
1537
+ if (!silent &amp;&amp; !this.isGridValid(revalidate)) {
1538
+ throw new Error('Invalid rows');
1539
+ }
1540
+ &nbsp;
1541
+ editedRows.push(row);
1542
+ });
1543
+ return editedRows;
1544
+ }
1545
+ &nbsp;
1546
+ getEditedRow(row: IDictionary): IDictionary | undefined {
1547
+ const editedRow = this.editedRows.get(this.grid.getRowKey(row));
1548
+ return editedRow ? this.omitInternals(editedRow) : undefined;
1549
+ }
1550
+ }
1551
+ &nbsp;</pre></td></tr></table></pre>
1552
+
1553
+ <div class='push'></div><!-- for sticky footer -->
1554
+ </div><!-- /wrapper -->
1555
+ <div class='footer quiet pad2 space-top1 center small'>
1556
+ Code coverage generated by
1557
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1558
+ at 2025-12-29T16:02:58.168Z
1559
+ </div>
1560
+ <script src="../../../prettify.js"></script>
1561
+ <script>
1562
+ window.onload = function () {
1563
+ prettyPrint();
1564
+ };
1565
+ </script>
1566
+ <script src="../../../sorter.js"></script>
1567
+ <script src="../../../block-navigation.js"></script>
1568
+ </body>
1569
+ </html>
1570
+