@zeedhi/common 3.0.6 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. package/coverage/clover.xml +5680 -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 +1075 -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 +1864 -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 +808 -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 +145 -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 +1507 -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 +436 -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 +136 -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 +10074 -0
  284. package/dist/style.css +1 -1
  285. package/dist/zd-common.d.mts +7843 -0
  286. package/dist/zd-common.iife.min.js +11 -0
  287. package/dist/zd-common.mjs +12325 -0
  288. package/package.json +16 -12
  289. package/src/components/zd-carousel/interfaces.ts +1 -1
  290. package/src/components/zd-component/component.ts +6 -9
  291. package/src/components/zd-component/interfaces.ts +2 -2
  292. package/src/components/zd-date-input/date-input.ts +40 -147
  293. package/src/components/zd-date-input/utils.ts +17 -0
  294. package/src/components/zd-date-range/date-range.ts +86 -210
  295. package/src/components/zd-date-range/utils.ts +31 -0
  296. package/src/components/zd-frame/frame.ts +2 -2
  297. package/src/components/zd-grid/interfaces.ts +1 -1
  298. package/src/components/zd-grid-editable/data-editor-with-add.ts +2 -8
  299. package/src/components/zd-grid-editable/data-editor.ts +2 -2
  300. package/src/components/zd-grid-editable/grid-editable-controller.ts +2 -0
  301. package/src/components/zd-grid-editable/grid-editable.ts +10 -0
  302. package/src/components/zd-grid-editable/interfaces.ts +1 -0
  303. package/src/components/zd-iterable-component-render/interfaces.ts +2 -2
  304. package/src/components/zd-list/interfaces.ts +1 -1
  305. package/src/components/zd-master-detail/interfaces.ts +1 -1
  306. package/src/components/zd-menu/interfaces.ts +13 -2
  307. package/src/components/zd-menu/menu-group.ts +2 -2
  308. package/src/components/zd-menu/menu-link.ts +2 -2
  309. package/src/components/zd-menu/menu.ts +1 -1
  310. package/src/components/zd-month/month.ts +19 -91
  311. package/src/components/zd-textarea/interfaces.ts +2 -1
  312. package/src/components/zd-textarea/textarea.ts +6 -0
  313. package/src/components/zd-tree/interfaces.ts +2 -2
  314. package/src/styles/_display.scss +3 -1
  315. package/src/styles/_elevation.scss +2 -1
  316. package/src/styles/_functions.scss +14 -11
  317. package/src/styles/_utilities.scss +67 -62
  318. package/src/styles/_variables.scss +17 -16
  319. package/src/styles/index.scss +5 -5
  320. package/src/utils/date-utils/date-utils.ts +9 -0
  321. package/src/utils/omit/omit.ts +7 -3
  322. package/src/utils/tree-data-structure/tree-data-structure.ts +1 -1
  323. package/tests/unit/components/zd-date-input/date-input.spec.ts +36 -281
  324. package/tests/unit/components/zd-date-range/date-range.spec.ts +372 -475
  325. package/tests/unit/components/zd-grid/grid-column.spec.ts +1 -1
  326. package/tests/unit/components/zd-grid-editable/grid-editable-controller.spec.ts +3 -0
  327. package/tests/unit/components/zd-menu/menu.spec.ts +1 -1
  328. package/tests/unit/components/zd-month/month.spec.ts +7 -334
  329. package/tests/unit/components/zd-select/select.spec.ts +1 -2
  330. package/tests/unit/utils/omit.spec.ts +15 -0
  331. package/tsdown.config.ts +74 -0
  332. package/dist/types/components/index.d.ts +0 -151
  333. package/dist/types/components/zd-alert/alert.d.ts +0 -94
  334. package/dist/types/components/zd-alert/interfaces.d.ts +0 -18
  335. package/dist/types/components/zd-badge/badge.d.ts +0 -28
  336. package/dist/types/components/zd-badge/interfaces.d.ts +0 -10
  337. package/dist/types/components/zd-breadcrumbs/breadcrumbs.d.ts +0 -32
  338. package/dist/types/components/zd-breadcrumbs/interfaces.d.ts +0 -24
  339. package/dist/types/components/zd-button/button.d.ts +0 -89
  340. package/dist/types/components/zd-button/interfaces.d.ts +0 -48
  341. package/dist/types/components/zd-button-group/button-group.d.ts +0 -67
  342. package/dist/types/components/zd-button-group/interfaces.d.ts +0 -25
  343. package/dist/types/components/zd-card/card.d.ts +0 -152
  344. package/dist/types/components/zd-card/interfaces.d.ts +0 -40
  345. package/dist/types/components/zd-carousel/carousel.d.ts +0 -163
  346. package/dist/types/components/zd-carousel/interfaces.d.ts +0 -49
  347. package/dist/types/components/zd-checkbox/checkbox.d.ts +0 -12
  348. package/dist/types/components/zd-checkbox/interfaces.d.ts +0 -5
  349. package/dist/types/components/zd-checkbox-multiple/checkbox-multiple.d.ts +0 -39
  350. package/dist/types/components/zd-checkbox-multiple/interfaces.d.ts +0 -13
  351. package/dist/types/components/zd-chip/chip.d.ts +0 -60
  352. package/dist/types/components/zd-chip/interfaces.d.ts +0 -18
  353. package/dist/types/components/zd-code-viewer/code-viewer.d.ts +0 -86
  354. package/dist/types/components/zd-code-viewer/interfaces.d.ts +0 -13
  355. package/dist/types/components/zd-col/col.d.ts +0 -33
  356. package/dist/types/components/zd-col/interfaces.d.ts +0 -15
  357. package/dist/types/components/zd-collapse-card/collapse-card.d.ts +0 -56
  358. package/dist/types/components/zd-collapse-card/interfaces.d.ts +0 -14
  359. package/dist/types/components/zd-component/child-not-found.d.ts +0 -6
  360. package/dist/types/components/zd-component/component-render.d.ts +0 -16
  361. package/dist/types/components/zd-component/component.d.ts +0 -120
  362. package/dist/types/components/zd-component/interfaces.d.ts +0 -74
  363. package/dist/types/components/zd-container/container.d.ts +0 -45
  364. package/dist/types/components/zd-container/interfaces.d.ts +0 -12
  365. package/dist/types/components/zd-currency/currency.d.ts +0 -12
  366. package/dist/types/components/zd-currency/interfaces.d.ts +0 -6
  367. package/dist/types/components/zd-date-input/date-input.d.ts +0 -152
  368. package/dist/types/components/zd-date-input/interfaces.d.ts +0 -27
  369. package/dist/types/components/zd-date-range/date-range.d.ts +0 -160
  370. package/dist/types/components/zd-date-range/interfaces.d.ts +0 -18
  371. package/dist/types/components/zd-dialog/dialog.d.ts +0 -76
  372. package/dist/types/components/zd-dialog/interfaces.d.ts +0 -13
  373. package/dist/types/components/zd-divider/divider.d.ts +0 -20
  374. package/dist/types/components/zd-divider/interfaces.d.ts +0 -8
  375. package/dist/types/components/zd-dropdown/dropdown.d.ts +0 -81
  376. package/dist/types/components/zd-dropdown/interfaces.d.ts +0 -23
  377. package/dist/types/components/zd-footer/footer.d.ts +0 -80
  378. package/dist/types/components/zd-footer/interfaces.d.ts +0 -26
  379. package/dist/types/components/zd-form/form.d.ts +0 -174
  380. package/dist/types/components/zd-form/interfaces.d.ts +0 -36
  381. package/dist/types/components/zd-frame/frame.d.ts +0 -81
  382. package/dist/types/components/zd-frame/interfaces.d.ts +0 -23
  383. package/dist/types/components/zd-frame-page/frame-page.d.ts +0 -14
  384. package/dist/types/components/zd-frame-page/interfaces.d.ts +0 -4
  385. package/dist/types/components/zd-grid/data-navigator.d.ts +0 -12
  386. package/dist/types/components/zd-grid/data-selector.d.ts +0 -25
  387. package/dist/types/components/zd-grid/grid-column.d.ts +0 -47
  388. package/dist/types/components/zd-grid/grid-events.d.ts +0 -26
  389. package/dist/types/components/zd-grid/grid.d.ts +0 -85
  390. package/dist/types/components/zd-grid/index.d.ts +0 -11
  391. package/dist/types/components/zd-grid/interfaces.d.ts +0 -148
  392. package/dist/types/components/zd-grid/iterable-table.d.ts +0 -28
  393. package/dist/types/components/zd-grid/keymap-merger.d.ts +0 -26
  394. package/dist/types/components/zd-grid/keymap-navigation.d.ts +0 -6
  395. package/dist/types/components/zd-grid/table-action-builder.d.ts +0 -19
  396. package/dist/types/components/zd-grid/view-navigator.d.ts +0 -10
  397. package/dist/types/components/zd-grid-editable/data-editor-with-add.d.ts +0 -35
  398. package/dist/types/components/zd-grid-editable/data-editor.d.ts +0 -64
  399. package/dist/types/components/zd-grid-editable/errors/index.d.ts +0 -2
  400. package/dist/types/components/zd-grid-editable/errors/not-editing.d.ts +0 -6
  401. package/dist/types/components/zd-grid-editable/errors/row-not-found.d.ts +0 -6
  402. package/dist/types/components/zd-grid-editable/grid-column-editable.d.ts +0 -9
  403. package/dist/types/components/zd-grid-editable/grid-editable-controller.d.ts +0 -8
  404. package/dist/types/components/zd-grid-editable/grid-editable-events.d.ts +0 -32
  405. package/dist/types/components/zd-grid-editable/grid-editable.d.ts +0 -124
  406. package/dist/types/components/zd-grid-editable/index.d.ts +0 -8
  407. package/dist/types/components/zd-grid-editable/interfaces.d.ts +0 -66
  408. package/dist/types/components/zd-grid-editable/keymap-editing.d.ts +0 -7
  409. package/dist/types/components/zd-header/header.d.ts +0 -94
  410. package/dist/types/components/zd-header/interfaces.d.ts +0 -29
  411. package/dist/types/components/zd-icon/icon.d.ts +0 -55
  412. package/dist/types/components/zd-icon/interfaces.d.ts +0 -13
  413. package/dist/types/components/zd-image/image.d.ts +0 -73
  414. package/dist/types/components/zd-image/interfaces.d.ts +0 -17
  415. package/dist/types/components/zd-increment/increment.d.ts +0 -56
  416. package/dist/types/components/zd-increment/interfaces.d.ts +0 -9
  417. package/dist/types/components/zd-input/input-factory.d.ts +0 -6
  418. package/dist/types/components/zd-input/input.d.ts +0 -223
  419. package/dist/types/components/zd-input/interfaces.d.ts +0 -38
  420. package/dist/types/components/zd-iterable/column-not-found.d.ts +0 -6
  421. package/dist/types/components/zd-iterable/column.d.ts +0 -78
  422. package/dist/types/components/zd-iterable/conditions-manager.d.ts +0 -49
  423. package/dist/types/components/zd-iterable/interfaces.d.ts +0 -103
  424. package/dist/types/components/zd-iterable/iterable-columns-button-controller.d.ts +0 -9
  425. package/dist/types/components/zd-iterable/iterable-columns-button.d.ts +0 -35
  426. package/dist/types/components/zd-iterable/iterable-controller.d.ts +0 -8
  427. package/dist/types/components/zd-iterable/iterable-page-component.d.ts +0 -27
  428. package/dist/types/components/zd-iterable/iterable-page-info.d.ts +0 -7
  429. package/dist/types/components/zd-iterable/iterable-page-size.d.ts +0 -62
  430. package/dist/types/components/zd-iterable/iterable-pagination.d.ts +0 -28
  431. package/dist/types/components/zd-iterable/iterable.d.ts +0 -86
  432. package/dist/types/components/zd-iterable/search.d.ts +0 -31
  433. package/dist/types/components/zd-iterable-component-render/interfaces.d.ts +0 -34
  434. package/dist/types/components/zd-iterable-component-render/iterable-component-render.d.ts +0 -84
  435. package/dist/types/components/zd-layout/interfaces.d.ts +0 -7
  436. package/dist/types/components/zd-layout/layout.d.ts +0 -9
  437. package/dist/types/components/zd-list/interfaces.d.ts +0 -44
  438. package/dist/types/components/zd-list/item-not-found.d.ts +0 -6
  439. package/dist/types/components/zd-list/list-group.d.ts +0 -30
  440. package/dist/types/components/zd-list/list-item.d.ts +0 -46
  441. package/dist/types/components/zd-list/list.d.ts +0 -81
  442. package/dist/types/components/zd-loading/interfaces.d.ts +0 -7
  443. package/dist/types/components/zd-loading/loading.d.ts +0 -21
  444. package/dist/types/components/zd-login/interfaces.d.ts +0 -25
  445. package/dist/types/components/zd-login/login-button.d.ts +0 -50
  446. package/dist/types/components/zd-login/login.d.ts +0 -54
  447. package/dist/types/components/zd-main/interfaces.d.ts +0 -5
  448. package/dist/types/components/zd-main/main.d.ts +0 -7
  449. package/dist/types/components/zd-master-detail/detail-not-found.d.ts +0 -7
  450. package/dist/types/components/zd-master-detail/interfaces.d.ts +0 -10
  451. package/dist/types/components/zd-master-detail/master-detail.d.ts +0 -18
  452. package/dist/types/components/zd-master-detail/master-not-found.d.ts +0 -7
  453. package/dist/types/components/zd-menu/interfaces.d.ts +0 -68
  454. package/dist/types/components/zd-menu/menu-button.d.ts +0 -29
  455. package/dist/types/components/zd-menu/menu-group.d.ts +0 -61
  456. package/dist/types/components/zd-menu/menu-link.d.ts +0 -50
  457. package/dist/types/components/zd-menu/menu-separator.d.ts +0 -7
  458. package/dist/types/components/zd-menu/menu.d.ts +0 -199
  459. package/dist/types/components/zd-modal/interfaces.d.ts +0 -35
  460. package/dist/types/components/zd-modal/modal-close-button.d.ts +0 -28
  461. package/dist/types/components/zd-modal/modal.d.ts +0 -53
  462. package/dist/types/components/zd-month/interfaces.d.ts +0 -6
  463. package/dist/types/components/zd-month/month.d.ts +0 -33
  464. package/dist/types/components/zd-number-input/interfaces.d.ts +0 -8
  465. package/dist/types/components/zd-number-input/number-input.d.ts +0 -43
  466. package/dist/types/components/zd-password/interfaces.d.ts +0 -6
  467. package/dist/types/components/zd-password/password.d.ts +0 -17
  468. package/dist/types/components/zd-progress/interfaces.d.ts +0 -10
  469. package/dist/types/components/zd-progress/progress.d.ts +0 -41
  470. package/dist/types/components/zd-radio/interfaces.d.ts +0 -11
  471. package/dist/types/components/zd-radio/radio.d.ts +0 -35
  472. package/dist/types/components/zd-row/interfaces.d.ts +0 -13
  473. package/dist/types/components/zd-row/row.d.ts +0 -39
  474. package/dist/types/components/zd-select/interfaces.d.ts +0 -24
  475. package/dist/types/components/zd-select/select.d.ts +0 -238
  476. package/dist/types/components/zd-select-multiple/interfaces.d.ts +0 -18
  477. package/dist/types/components/zd-select-multiple/select-multiple.d.ts +0 -113
  478. package/dist/types/components/zd-svg-map/interfaces.d.ts +0 -26
  479. package/dist/types/components/zd-svg-map/svg-map.d.ts +0 -35
  480. package/dist/types/components/zd-switch/interfaces.d.ts +0 -7
  481. package/dist/types/components/zd-switch/switch.d.ts +0 -16
  482. package/dist/types/components/zd-table/interfaces.d.ts +0 -25
  483. package/dist/types/components/zd-table/table.d.ts +0 -42
  484. package/dist/types/components/zd-tabs/interfaces.d.ts +0 -40
  485. package/dist/types/components/zd-tabs/tab-not-found.d.ts +0 -11
  486. package/dist/types/components/zd-tabs/tab.d.ts +0 -57
  487. package/dist/types/components/zd-tabs/tabs.d.ts +0 -86
  488. package/dist/types/components/zd-tag/interfaces.d.ts +0 -7
  489. package/dist/types/components/zd-tag/tag.d.ts +0 -13
  490. package/dist/types/components/zd-text/interfaces.d.ts +0 -9
  491. package/dist/types/components/zd-text/text.d.ts +0 -8
  492. package/dist/types/components/zd-text-input/interfaces.d.ts +0 -23
  493. package/dist/types/components/zd-text-input/text-input.d.ts +0 -91
  494. package/dist/types/components/zd-textarea/interfaces.d.ts +0 -21
  495. package/dist/types/components/zd-textarea/textarea.d.ts +0 -71
  496. package/dist/types/components/zd-time/interfaces.d.ts +0 -22
  497. package/dist/types/components/zd-time/time-format-selector.d.ts +0 -8
  498. package/dist/types/components/zd-time/time.d.ts +0 -149
  499. package/dist/types/components/zd-toggleable/interfaces.d.ts +0 -6
  500. package/dist/types/components/zd-toggleable/toggleable.d.ts +0 -21
  501. package/dist/types/components/zd-tooltip/interfaces.d.ts +0 -18
  502. package/dist/types/components/zd-tooltip/tooltip.d.ts +0 -57
  503. package/dist/types/components/zd-tree/interfaces.d.ts +0 -107
  504. package/dist/types/components/zd-tree/tree.d.ts +0 -161
  505. package/dist/types/components/zd-tree-grid/index.d.ts +0 -6
  506. package/dist/types/components/zd-tree-grid/interfaces.d.ts +0 -35
  507. package/dist/types/components/zd-tree-grid/iterable-tree.d.ts +0 -10
  508. package/dist/types/components/zd-tree-grid/keymap-tree.d.ts +0 -7
  509. package/dist/types/components/zd-tree-grid/tree-data-navigator.d.ts +0 -10
  510. package/dist/types/components/zd-tree-grid/tree-data-selector.d.ts +0 -18
  511. package/dist/types/components/zd-tree-grid/tree-grid.d.ts +0 -119
  512. package/dist/types/error/delete-rows.d.ts +0 -7
  513. package/dist/types/error/index.d.ts +0 -3
  514. package/dist/types/error/non-initialized.d.ts +0 -7
  515. package/dist/types/error/zeedhi-error.d.ts +0 -6
  516. package/dist/types/index.d.ts +0 -6
  517. package/dist/types/services/index.d.ts +0 -4
  518. package/dist/types/services/zd-alert/alert-queue.d.ts +0 -13
  519. package/dist/types/services/zd-alert/alert-replace.d.ts +0 -18
  520. package/dist/types/services/zd-alert/alert-service.d.ts +0 -45
  521. package/dist/types/services/zd-alert/alert-stack.d.ts +0 -9
  522. package/dist/types/services/zd-alert/index.d.ts +0 -5
  523. package/dist/types/services/zd-alert/interfaces.d.ts +0 -6
  524. package/dist/types/services/zd-dialog/dialog-service.d.ts +0 -24
  525. package/dist/types/services/zd-loading/loading-service.d.ts +0 -17
  526. package/dist/types/services/zd-modal/modal-service.d.ts +0 -39
  527. package/dist/types/utils/data-value-out/data-value-out.d.ts +0 -5
  528. package/dist/types/utils/data-value-out/index.d.ts +0 -2
  529. package/dist/types/utils/data-value-out/interfaces.d.ts +0 -8
  530. package/dist/types/utils/datasource-searcher/datasource-searcher.d.ts +0 -6
  531. package/dist/types/utils/datasource-searcher/index.d.ts +0 -2
  532. package/dist/types/utils/datasource-searcher/interfaces.d.ts +0 -5
  533. package/dist/types/utils/date-utils/date-utils.d.ts +0 -1
  534. package/dist/types/utils/icons/icons.d.ts +0 -24
  535. package/dist/types/utils/index.d.ts +0 -7
  536. package/dist/types/utils/omit/omit.d.ts +0 -11
  537. package/dist/types/utils/theme/theme.d.ts +0 -34
  538. package/dist/types/utils/tree-data-structure/index.d.ts +0 -2
  539. package/dist/types/utils/tree-data-structure/interfaces.d.ts +0 -30
  540. package/dist/types/utils/tree-data-structure/tree-data-structure.d.ts +0 -155
  541. package/dist/types/utils/unique-by/unique-by.d.ts +0 -3
  542. package/dist/zd-common.js +0 -13184
  543. package/dist/zd-common.min.js +0 -13184
  544. package/rollup.config.js +0 -27
  545. package/rollup.scss.config.js +0 -14
  546. 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">93x</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">93x</span>
571
+ <span class="cline-any cline-yes">93x</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">93x</span>
575
+ <span class="cline-any cline-yes">93x</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">93x</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.hasOwn(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.hasOwn(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 2026-07-03T14:17:58.205Z
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
+