@tetacom/ng-components 1.1.1 → 1.1.3

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 (738) hide show
  1. package/assets/color-icons.svg +374 -687
  2. package/assets/file-icons.svg +0 -1
  3. package/assets/icons.svg +205 -138
  4. package/common/contract/auto-close-ignore-case.d.ts +1 -1
  5. package/common/contract/constructor-type.d.ts +1 -1
  6. package/common/model/public-api.d.ts +1 -0
  7. package/common/model/view-type.model.d.ts +1 -0
  8. package/common/public-api.d.ts +1 -0
  9. package/component/accordion/accordion/accordion.component.d.ts +1 -1
  10. package/component/accordion/accordion-content.directive.d.ts +1 -1
  11. package/component/accordion/accordion-head/accordion-head.component.d.ts +1 -1
  12. package/component/accordion/accordion-item/accordion-item.component.d.ts +4 -1
  13. package/component/autocomplete/autocomplete/autocomplete.component.d.ts +1 -1
  14. package/component/avatar/avatar/avatar.component.d.ts +17 -0
  15. package/component/avatar/avatar.module.d.ts +9 -0
  16. package/component/avatar/model/avatar-color.enum.d.ts +20 -0
  17. package/component/avatar/public-api.d.ts +2 -0
  18. package/component/button/button/button.component.d.ts +5 -2
  19. package/component/chart-3d/chart3d/chart3d.component.d.ts +1 -1
  20. package/component/checkbox/checkbox/checkbox.component.d.ts +2 -1
  21. package/component/date-picker/base-calendar.d.ts +49 -0
  22. package/component/date-picker/base-picker.d.ts +60 -0
  23. package/component/date-picker/date-picker/date-calendar/date-calendar.component.d.ts +20 -0
  24. package/component/date-picker/date-picker/date-picker.component.d.ts +38 -68
  25. package/component/date-picker/date-picker.module.d.ts +19 -16
  26. package/component/date-picker/date-range/date-range.component.d.ts +46 -0
  27. package/component/date-picker/date-range/range-calendar/range-calendar.component.d.ts +39 -0
  28. package/component/date-picker/day-picker/day-item/day-item.component.d.ts +9 -0
  29. package/component/date-picker/day-picker/day-picker.component.d.ts +30 -0
  30. package/component/date-picker/model/from-to.model.d.ts +4 -0
  31. package/component/date-picker/model/min-max-date.model.d.ts +4 -0
  32. package/component/date-picker/model/public-api.d.ts +5 -0
  33. package/component/date-picker/month-picker/month-picker.component.d.ts +16 -50
  34. package/component/date-picker/public-api.d.ts +6 -5
  35. package/component/date-picker/year-picker/scroll-to-selected-year.directive.d.ts +11 -0
  36. package/component/date-picker/year-picker/year-picker.component.d.ts +24 -0
  37. package/component/delimiter/delimiter/delimiter.component.d.ts +1 -1
  38. package/component/divider/divider/divider.component.d.ts +10 -0
  39. package/component/divider/divider.module.d.ts +8 -0
  40. package/component/divider/public-api.d.ts +2 -0
  41. package/component/dropdown/dropdown/dropdown.component.d.ts +1 -1
  42. package/component/dropdown/dropdown-base.d.ts +3 -1
  43. package/component/dropdown/dropdown-content.directive.d.ts +1 -1
  44. package/component/dropdown/dropdown-head.directive.d.ts +1 -1
  45. package/component/dropdown/dropdown.directive.d.ts +1 -1
  46. package/component/dynamic-component/popup-content/popup-content.component.d.ts +1 -1
  47. package/component/expand-card/expand-card/expand-card.component.d.ts +1 -1
  48. package/component/expand-card/expand-item/expand-item.component.d.ts +1 -1
  49. package/component/expand-panel/expand-panel/expand-panel.component.d.ts +1 -1
  50. package/component/expand-panel/expand-panel-content.directive.d.ts +1 -1
  51. package/component/expand-panel/expand-panel-head.directive.d.ts +1 -1
  52. package/component/file-upload/file-item/file-item.component.d.ts +1 -1
  53. package/component/file-upload/file-upload-area/file-upload-area.component.d.ts +1 -1
  54. package/component/filter/base/filter-base.d.ts +2 -2
  55. package/component/filter/base/filter-component-base.d.ts +1 -1
  56. package/component/filter/boolean-filter/boolean-filter.component.d.ts +2 -2
  57. package/component/filter/contarct/boolean-filter.d.ts +1 -2
  58. package/component/filter/contarct/date-filter.d.ts +1 -2
  59. package/component/filter/contarct/i-filter.d.ts +2 -2
  60. package/component/filter/contarct/list-filter.d.ts +1 -2
  61. package/component/filter/contarct/numeric-filter.d.ts +1 -2
  62. package/component/filter/contarct/string-filter.d.ts +1 -2
  63. package/component/filter/date-filter/date-filter.component.d.ts +3 -2
  64. package/component/filter/filter-host/filter-host.component.d.ts +2 -2
  65. package/component/filter/list-filter/list-filter.component.d.ts +2 -2
  66. package/component/filter/numeric-filter/numeric-filter.component.d.ts +3 -2
  67. package/component/filter/string-filter/string-filter.component.d.ts +2 -2
  68. package/component/icon/icon/icon.component.d.ts +1 -1
  69. package/component/icon/icon-file/icon-file.component.d.ts +9 -3
  70. package/component/icon/icon-file/icon-file.module.d.ts +9 -0
  71. package/component/icon/icon-sprite.directive.d.ts +1 -1
  72. package/component/icon/icon.module.d.ts +4 -5
  73. package/component/icon/public-api.d.ts +1 -0
  74. package/component/input/color-input/color-input.component.d.ts +1 -1
  75. package/component/input/form-group-title/form-group-title.component.d.ts +1 -1
  76. package/component/input/input/input.component.d.ts +3 -1
  77. package/component/input/text-field/text-field.component.d.ts +1 -1
  78. package/component/message/message/message.component.d.ts +1 -1
  79. package/component/message/message-host/message-host.component.d.ts +1 -1
  80. package/component/message/model/message.d.ts +3 -0
  81. package/component/modal/dialog/dialog.component.d.ts +1 -1
  82. package/component/modal/modal-container/modal-container.component.d.ts +1 -1
  83. package/component/pager/pager/pager.component.d.ts +1 -1
  84. package/component/panel/panel/panel.component.d.ts +1 -1
  85. package/component/progress-bar/progress-bar/progress-bar.component.d.ts +1 -1
  86. package/component/property-grid/property-grid/property-grid-group/property-grid-group.component.d.ts +1 -1
  87. package/component/property-grid/property-grid/property-grid-item/property-grid-item.component.d.ts +1 -1
  88. package/component/property-grid/property-grid/property-grid-item-description.directive.d.ts +1 -1
  89. package/component/property-grid/property-grid/property-grid.component.d.ts +1 -1
  90. package/component/public-api.d.ts +2 -0
  91. package/component/radio/radio/radio.component.d.ts +1 -1
  92. package/component/radio/radio-button/radio-button.component.d.ts +1 -1
  93. package/component/resize-panel/resize-panel/resize-panel.component.d.ts +1 -1
  94. package/component/select/select/select.component.d.ts +4 -1
  95. package/component/select/select-option.directive.d.ts +1 -1
  96. package/component/select/select-value.directive.d.ts +1 -1
  97. package/component/sidebar/sidebar/sidebar.component.d.ts +1 -1
  98. package/component/switch/switch/switch.component.d.ts +4 -1
  99. package/component/switch/switch-button/switch-button.component.d.ts +1 -1
  100. package/component/table/base/cell-component-base.d.ts +1 -1
  101. package/component/table/base/head-cell-component-base.d.ts +1 -1
  102. package/component/table/cell/cell.component.d.ts +1 -1
  103. package/component/table/cell-host/cell-host.component.d.ts +1 -1
  104. package/component/table/contract/table-column.d.ts +0 -2
  105. package/component/table/default/boolean-cell/boolean-cell.component.d.ts +1 -4
  106. package/component/table/default/date-cell/date-cell.component.d.ts +1 -4
  107. package/component/table/default/date-time-cell/date-time-cell.component.d.ts +1 -4
  108. package/component/table/default/default-head-cell/default-head-cell.component.d.ts +1 -1
  109. package/component/table/default/list-cell/list-cell.component.d.ts +1 -5
  110. package/component/table/default/numeric-cell/numeric-cell.component.d.ts +1 -4
  111. package/component/table/default/string-cell/string-cell.component.d.ts +1 -4
  112. package/component/table/head-cell/head-cell.component.d.ts +1 -1
  113. package/component/table/head-cell-dropdown/head-cell-dropdown.component.d.ts +1 -1
  114. package/component/table/head-cell-host/head-cell-host.component.d.ts +1 -1
  115. package/component/table/selection-cell/selection-cell.component.d.ts +1 -1
  116. package/component/table/selection-head-cell/selection-head-cell.component.d.ts +1 -1
  117. package/component/table/table/table.component.d.ts +1 -1
  118. package/component/table/table-body/table-body.component.d.ts +1 -1
  119. package/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.d.ts +1 -1
  120. package/component/table/table-head/main-dropdown-tab/main-dropdown-tab.component.d.ts +1 -1
  121. package/component/table/table-head/table-head.component.d.ts +1 -1
  122. package/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.d.ts +1 -1
  123. package/component/table/table-head-group/table-head-group.component.d.ts +1 -1
  124. package/component/tabs/tab/tab.component.d.ts +1 -1
  125. package/component/tabs/tab-content.directive.d.ts +1 -1
  126. package/component/tabs/tab-title.directive.d.ts +1 -1
  127. package/component/tabs/tabs/tabs.component.d.ts +1 -1
  128. package/component/theme-switch/theme-switch/theme-switch.component.d.ts +1 -1
  129. package/component/toggle/toggle/toggle.component.d.ts +1 -1
  130. package/component/toolbar/toolbar/toolbar.component.d.ts +1 -1
  131. package/component/tree/tree/tree.component.d.ts +1 -1
  132. package/component/tree/tree-item/tree-item.component.d.ts +1 -1
  133. package/component/tree/tree-item-toggle/tree-item-toggle.component.d.ts +1 -1
  134. package/directive/auto-position/auto-position.directive.d.ts +1 -1
  135. package/directive/click-outside/click-outside.directive.d.ts +1 -1
  136. package/directive/context-menu/context-menu.directive.d.ts +1 -1
  137. package/directive/disable-control/disable-control.directive.d.ts +1 -1
  138. package/directive/drag-drop/drag-container.directive.d.ts +1 -1
  139. package/directive/drag-drop/drag-placeholder.directive.d.ts +1 -1
  140. package/directive/drag-drop/drag-preview.directive.d.ts +1 -1
  141. package/directive/drag-drop/drag.directive.d.ts +1 -1
  142. package/directive/drag-drop/model/drop-target.d.ts +1 -1
  143. package/directive/drag-sort/drag-sort-container.directive.d.ts +1 -1
  144. package/directive/drag-sort/drag-sort-item.directive.d.ts +1 -1
  145. package/directive/dynamic-content-base.directive.d.ts +1 -1
  146. package/directive/highlight/highlight.directive.d.ts +1 -1
  147. package/directive/hint/hint.directive.d.ts +3 -1
  148. package/directive/let/let.directive.d.ts +1 -1
  149. package/directive/loader/loader.directive.d.ts +1 -1
  150. package/directive/no-autofill/no-autofill.directive.d.ts +1 -1
  151. package/directive/only-number/only-number.directive.d.ts +1 -1
  152. package/directive/resize-drag/resize-drag.directive.d.ts +1 -1
  153. package/directive/scroll-into-view/scroll-into-view.directive.d.ts +1 -1
  154. package/directive/scrollable/scrollable/scrollable.component.d.ts +1 -1
  155. package/directive/scrollable/scrollable.directive.d.ts +1 -1
  156. package/directive/teta-template/teta-template.directive.d.ts +1 -1
  157. package/directive/tooltip/tooltip.directive.d.ts +1 -1
  158. package/esm2022/common/contract/teta-content-ref.mjs +11 -0
  159. package/esm2022/common/model/public-api.mjs +2 -0
  160. package/esm2022/common/model/view-type.model.mjs +2 -0
  161. package/esm2022/common/public-api.mjs +6 -0
  162. package/esm2022/common/service/click.service.mjs +26 -0
  163. package/esm2022/common/service/dynamic-component.service.mjs +97 -0
  164. package/esm2022/common/service/overlay-container.service.mjs +43 -0
  165. package/esm2022/component/accordion/accordion/accordion.component.mjs +19 -0
  166. package/esm2022/component/accordion/accordion-content.directive.mjs +17 -0
  167. package/esm2022/component/accordion/accordion-head/accordion-head.component.mjs +54 -0
  168. package/esm2022/component/accordion/accordion-item/accordion-item.component.mjs +58 -0
  169. package/{esm2020 → esm2022}/component/accordion/accordion.module.mjs +7 -7
  170. package/{esm2020 → esm2022}/component/autocomplete/autocomplete/autocomplete.component.mjs +4 -4
  171. package/{esm2020 → esm2022}/component/autocomplete/autocomplete.module.mjs +5 -5
  172. package/esm2022/component/avatar/avatar/avatar.component.mjs +60 -0
  173. package/esm2022/component/avatar/avatar.module.mjs +28 -0
  174. package/esm2022/component/avatar/model/avatar-color.enum.mjs +22 -0
  175. package/esm2022/component/avatar/public-api.mjs +3 -0
  176. package/esm2022/component/button/button/button.component.mjs +57 -0
  177. package/{esm2020 → esm2022}/component/button/button.module.mjs +5 -5
  178. package/{esm2020 → esm2022}/component/chart-3d/chart-3d.module.mjs +5 -5
  179. package/esm2022/component/chart-3d/chart3d/chart3d.component.mjs +255 -0
  180. package/esm2022/component/chart-3d/model/chart-3d-options.mjs +9 -0
  181. package/esm2022/component/chart-3d/model/series-3d.mjs +9 -0
  182. package/esm2022/component/checkbox/checkbox/checkbox.component.mjs +154 -0
  183. package/{esm2020 → esm2022}/component/checkbox/checkbox.module.mjs +7 -7
  184. package/esm2022/component/date-picker/base-calendar.mjs +100 -0
  185. package/esm2022/component/date-picker/base-picker.mjs +107 -0
  186. package/esm2022/component/date-picker/date-picker/date-calendar/date-calendar.component.mjs +56 -0
  187. package/esm2022/component/date-picker/date-picker/date-picker.component.mjs +206 -0
  188. package/esm2022/component/date-picker/date-picker.module.mjs +65 -0
  189. package/esm2022/component/date-picker/date-range/date-range.component.mjs +218 -0
  190. package/esm2022/component/date-picker/date-range/range-calendar/range-calendar.component.mjs +119 -0
  191. package/esm2022/component/date-picker/day-picker/day-item/day-item.component.mjs +16 -0
  192. package/esm2022/component/date-picker/day-picker/day-picker.component.mjs +120 -0
  193. package/esm2022/component/date-picker/model/date-period.mjs +9 -0
  194. package/esm2022/component/date-picker/model/day-model.mjs +19 -0
  195. package/esm2022/component/date-picker/model/from-to.model.mjs +2 -0
  196. package/esm2022/component/date-picker/model/min-max-date.model.mjs +2 -0
  197. package/esm2022/component/date-picker/model/public-api.mjs +6 -0
  198. package/esm2022/component/date-picker/month-picker/month-picker.component.mjs +53 -0
  199. package/esm2022/component/date-picker/public-api.mjs +7 -0
  200. package/esm2022/component/date-picker/year-picker/scroll-to-selected-year.directive.mjs +27 -0
  201. package/esm2022/component/date-picker/year-picker/year-picker.component.mjs +53 -0
  202. package/esm2022/component/delimiter/delimiter/delimiter.component.mjs +63 -0
  203. package/{esm2020 → esm2022}/component/delimiter/delimiter.module.mjs +5 -5
  204. package/esm2022/component/divider/divider/divider.component.mjs +20 -0
  205. package/esm2022/component/divider/divider.module.mjs +20 -0
  206. package/esm2022/component/divider/public-api.mjs +3 -0
  207. package/esm2022/component/dropdown/dropdown/dropdown.component.mjs +36 -0
  208. package/esm2022/component/dropdown/dropdown-base.mjs +238 -0
  209. package/esm2022/component/dropdown/dropdown-content.directive.mjs +19 -0
  210. package/esm2022/component/dropdown/dropdown-head.directive.mjs +19 -0
  211. package/esm2022/component/dropdown/dropdown.directive.mjs +43 -0
  212. package/{esm2020 → esm2022}/component/dropdown/dropdown.module.mjs +11 -11
  213. package/{esm2020 → esm2022}/component/dynamic-component/dynamic-component.module.mjs +5 -5
  214. package/esm2022/component/dynamic-component/popup-content/popup-content.component.mjs +59 -0
  215. package/{esm2020 → esm2022}/component/expand-card/expand-card/expand-card.component.mjs +8 -8
  216. package/{esm2020 → esm2022}/component/expand-card/expand-card.module.mjs +15 -15
  217. package/{esm2020 → esm2022}/component/expand-card/expand-item/expand-item.component.mjs +6 -6
  218. package/esm2022/component/expand-panel/expand-panel/expand-panel.component.mjs +68 -0
  219. package/esm2022/component/expand-panel/expand-panel-content.directive.mjs +17 -0
  220. package/esm2022/component/expand-panel/expand-panel-head.directive.mjs +17 -0
  221. package/{esm2020 → esm2022}/component/expand-panel/expand-panel.module.mjs +17 -17
  222. package/{esm2020 → esm2022}/component/file-upload/file-item/file-item.component.mjs +4 -4
  223. package/esm2022/component/file-upload/file-upload-area/file-upload-area.component.mjs +87 -0
  224. package/{esm2020 → esm2022}/component/file-upload/file-upload.module.mjs +5 -5
  225. package/esm2022/component/filter/base/filter-base.mjs +13 -0
  226. package/{esm2020 → esm2022}/component/filter/base/filter-component-base.mjs +1 -1
  227. package/esm2022/component/filter/boolean-filter/boolean-filter.component.mjs +67 -0
  228. package/esm2022/component/filter/contarct/boolean-filter.mjs +8 -0
  229. package/esm2022/component/filter/contarct/date-filter-value.mjs +17 -0
  230. package/esm2022/component/filter/contarct/date-filter.mjs +11 -0
  231. package/esm2022/component/filter/contarct/filter-item.mjs +78 -0
  232. package/esm2022/component/filter/contarct/filter-state.mjs +145 -0
  233. package/{esm2020 → esm2022}/component/filter/contarct/i-filter.mjs +1 -1
  234. package/esm2022/component/filter/contarct/list-filter.mjs +13 -0
  235. package/esm2022/component/filter/contarct/numeric-filter-value.mjs +22 -0
  236. package/esm2022/component/filter/contarct/numeric-filter.mjs +10 -0
  237. package/esm2022/component/filter/contarct/sort-param.mjs +26 -0
  238. package/esm2022/component/filter/contarct/string-filter.mjs +13 -0
  239. package/esm2022/component/filter/date-filter/date-filter.component.mjs +67 -0
  240. package/esm2022/component/filter/filter-host/filter-host.component.mjs +85 -0
  241. package/{esm2020 → esm2022}/component/filter/filter.module.mjs +31 -31
  242. package/esm2022/component/filter/list-filter/list-filter.component.mjs +103 -0
  243. package/esm2022/component/filter/numeric-filter/numeric-filter.component.mjs +67 -0
  244. package/esm2022/component/filter/string-filter/string-filter.component.mjs +68 -0
  245. package/esm2022/component/icon/icon/icon.component.mjs +39 -0
  246. package/esm2022/component/icon/icon-file/icon-file.component.mjs +30 -0
  247. package/esm2022/component/icon/icon-file/icon-file.module.mjs +28 -0
  248. package/esm2022/component/icon/icon-sprite.directive.mjs +34 -0
  249. package/esm2022/component/icon/icon.module.mjs +33 -0
  250. package/esm2022/component/icon/icon.service.mjs +64 -0
  251. package/{esm2020 → esm2022}/component/icon/public-api.mjs +2 -1
  252. package/esm2022/component/input/color-input/color-input.component.mjs +75 -0
  253. package/{esm2020 → esm2022}/component/input/form-group-title/form-group-title.component.mjs +6 -7
  254. package/esm2022/component/input/input/input.component.mjs +41 -0
  255. package/esm2022/component/input/input.module.mjs +26 -0
  256. package/esm2022/component/input/text-field/text-field.component.mjs +102 -0
  257. package/esm2022/component/message/message/message.component.mjs +79 -0
  258. package/esm2022/component/message/message-host/message-host.component.mjs +91 -0
  259. package/{esm2020 → esm2022}/component/message/message.module.mjs +9 -9
  260. package/esm2022/component/message/message.service.mjs +37 -0
  261. package/esm2022/component/message/model/message.mjs +29 -0
  262. package/esm2022/component/modal/dialog/dialog.component.mjs +51 -0
  263. package/esm2022/component/modal/dialog.service.mjs +40 -0
  264. package/esm2022/component/modal/modal-container/modal-container.component.mjs +86 -0
  265. package/esm2022/component/modal/modal.module.mjs +50 -0
  266. package/esm2022/component/modal/modal.service.mjs +125 -0
  267. package/{esm2020 → esm2022}/component/modal/model/current-modal.mjs +2 -1
  268. package/esm2022/component/modal/model/modal-instance.mjs +37 -0
  269. package/esm2022/component/pager/model/pager-state.mjs +70 -0
  270. package/{esm2020 → esm2022}/component/pager/pager/pager.component.mjs +4 -4
  271. package/{esm2020 → esm2022}/component/pager/pager.module.mjs +7 -7
  272. package/esm2022/component/panel/panel/panel.component.mjs +50 -0
  273. package/{esm2020 → esm2022}/component/panel/panel.module.mjs +5 -5
  274. package/esm2022/component/progress-bar/progress-bar/progress-bar.component.mjs +139 -0
  275. package/{esm2020 → esm2022}/component/progress-bar/progress-bar.module.mjs +5 -5
  276. package/esm2022/component/property-grid/property-grid/property-grid-group/property-grid-group.component.mjs +45 -0
  277. package/esm2022/component/property-grid/property-grid/property-grid-item/property-grid-item.component.mjs +141 -0
  278. package/esm2022/component/property-grid/property-grid/property-grid-item-description.directive.mjs +21 -0
  279. package/esm2022/component/property-grid/property-grid/property-grid.component.mjs +105 -0
  280. package/esm2022/component/property-grid/property-grid.module.mjs +87 -0
  281. package/esm2022/component/public-api.mjs +68 -0
  282. package/esm2022/component/radio/radio/radio.component.mjs +250 -0
  283. package/esm2022/component/radio/radio-button/radio-button.component.mjs +69 -0
  284. package/{esm2020 → esm2022}/component/radio/radio.module.mjs +5 -5
  285. package/esm2022/component/resize-panel/resize-panel/resize-panel.component.mjs +176 -0
  286. package/{esm2020 → esm2022}/component/resize-panel/resize-panel.module.mjs +5 -5
  287. package/esm2022/component/select/select/select.component.mjs +284 -0
  288. package/esm2022/component/select/select-option.directive.mjs +17 -0
  289. package/esm2022/component/select/select-value.directive.mjs +17 -0
  290. package/{esm2020 → esm2022}/component/select/select.module.mjs +21 -21
  291. package/esm2022/component/sidebar/sidebar/sidebar.component.mjs +56 -0
  292. package/{esm2020 → esm2022}/component/sidebar/sidebar.module.mjs +9 -9
  293. package/esm2022/component/switch/switch/switch.component.mjs +67 -0
  294. package/esm2022/component/switch/switch-button/switch-button.component.mjs +52 -0
  295. package/{esm2020 → esm2022}/component/switch/switch.module.mjs +5 -5
  296. package/esm2022/component/switch/switch.service.mjs +22 -0
  297. package/esm2022/component/table/base/cell-component-base.mjs +108 -0
  298. package/{esm2020 → esm2022}/component/table/base/head-cell-component-base.mjs +4 -4
  299. package/esm2022/component/table/cell/cell.component.mjs +38 -0
  300. package/esm2022/component/table/cell-host/cell-host.component.mjs +56 -0
  301. package/esm2022/component/table/contract/column-reorder-event.mjs +9 -0
  302. package/esm2022/component/table/contract/column-resize-event.mjs +9 -0
  303. package/esm2022/component/table/contract/sort-event.mjs +9 -0
  304. package/esm2022/component/table/contract/table-column-store.mjs +17 -0
  305. package/esm2022/component/table/contract/table-column.mjs +112 -0
  306. package/esm2022/component/table/default/boolean-cell/boolean-cell.component.mjs +44 -0
  307. package/esm2022/component/table/default/date-cell/date-cell.component.mjs +46 -0
  308. package/esm2022/component/table/default/date-time-cell/date-time-cell.component.mjs +45 -0
  309. package/esm2022/component/table/default/default-head-cell/default-head-cell.component.mjs +51 -0
  310. package/esm2022/component/table/default/list-cell/list-cell.component.mjs +71 -0
  311. package/esm2022/component/table/default/numeric-cell/numeric-cell.component.mjs +53 -0
  312. package/esm2022/component/table/default/string-cell/string-cell.component.mjs +53 -0
  313. package/esm2022/component/table/head-cell/head-cell.component.mjs +207 -0
  314. package/esm2022/component/table/head-cell-dropdown/head-cell-dropdown.component.mjs +59 -0
  315. package/esm2022/component/table/head-cell-host/head-cell-host.component.mjs +66 -0
  316. package/esm2022/component/table/selection-cell/selection-cell.component.mjs +49 -0
  317. package/esm2022/component/table/selection-head-cell/selection-head-cell.component.mjs +47 -0
  318. package/esm2022/component/table/service/table.service.mjs +672 -0
  319. package/esm2022/component/table/table/table.component.mjs +491 -0
  320. package/esm2022/component/table/table-body/table-body.component.mjs +224 -0
  321. package/esm2022/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.mjs +66 -0
  322. package/esm2022/component/table/table-head/main-dropdown-tab/main-dropdown-tab.component.mjs +97 -0
  323. package/esm2022/component/table/table-head/table-head.component.mjs +85 -0
  324. package/esm2022/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.mjs +153 -0
  325. package/esm2022/component/table/table-head-group/table-head-group.component.mjs +82 -0
  326. package/{esm2020 → esm2022}/component/table/table.module.mjs +74 -74
  327. package/esm2022/component/tabs/tab/tab.component.mjs +46 -0
  328. package/esm2022/component/tabs/tab-content.directive.mjs +17 -0
  329. package/esm2022/component/tabs/tab-title.directive.mjs +17 -0
  330. package/esm2022/component/tabs/tabs/tabs.component.mjs +74 -0
  331. package/{esm2020 → esm2022}/component/tabs/tabs.module.mjs +11 -11
  332. package/esm2022/component/theme-switch/theme-switch/theme-switch.component.mjs +30 -0
  333. package/{esm2020 → esm2022}/component/theme-switch/theme-switch.module.mjs +9 -9
  334. package/esm2022/component/theme-switch/theme-switch.service.mjs +36 -0
  335. package/esm2022/component/toggle/toggle/toggle.component.mjs +89 -0
  336. package/{esm2020 → esm2022}/component/toggle/toggle.module.mjs +5 -5
  337. package/esm2022/component/toolbar/toolbar/toolbar.component.mjs +28 -0
  338. package/{esm2020 → esm2022}/component/toolbar/toolbar.module.mjs +5 -5
  339. package/esm2022/component/tree/tree/tree.component.mjs +150 -0
  340. package/esm2022/component/tree/tree-item/tree-item.component.mjs +90 -0
  341. package/esm2022/component/tree/tree-item-toggle/tree-item-toggle.component.mjs +32 -0
  342. package/{esm2020 → esm2022}/component/tree/tree.module.mjs +5 -5
  343. package/esm2022/component/tree/tree.service.mjs +42 -0
  344. package/esm2022/directive/auto-position/auto-position.directive.mjs +72 -0
  345. package/{esm2020 → esm2022}/directive/auto-position/auto-position.module.mjs +5 -5
  346. package/esm2022/directive/click-outside/click-outside.directive.mjs +67 -0
  347. package/{esm2020 → esm2022}/directive/click-outside/click-outside.module.mjs +5 -5
  348. package/esm2022/directive/context-menu/context-menu.directive.mjs +132 -0
  349. package/{esm2020 → esm2022}/directive/context-menu/context-menu.module.mjs +7 -7
  350. package/esm2022/directive/disable-control/disable-control.directive.mjs +30 -0
  351. package/{esm2020 → esm2022}/directive/disable-control/disable-control.module.mjs +5 -5
  352. package/esm2022/directive/drag-drop/drag-container.directive.mjs +101 -0
  353. package/{esm2020 → esm2022}/directive/drag-drop/drag-drop.module.mjs +11 -11
  354. package/esm2022/directive/drag-drop/drag-drop.service.mjs +152 -0
  355. package/{esm2020 → esm2022}/directive/drag-drop/drag-placeholder.directive.mjs +4 -4
  356. package/esm2022/directive/drag-drop/drag-preview.directive.mjs +17 -0
  357. package/esm2022/directive/drag-drop/drag.directive.mjs +143 -0
  358. package/esm2022/directive/drag-drop/model/drag-container-instance.mjs +11 -0
  359. package/esm2022/directive/drag-drop/model/drag-instance.mjs +9 -0
  360. package/esm2022/directive/drag-sort/drag-sort-container.directive.mjs +68 -0
  361. package/esm2022/directive/drag-sort/drag-sort-item.directive.mjs +121 -0
  362. package/{esm2020 → esm2022}/directive/drag-sort/drag-sort.module.mjs +5 -5
  363. package/esm2022/directive/dynamic-content-base.directive.mjs +91 -0
  364. package/esm2022/directive/highlight/highlight.directive.mjs +73 -0
  365. package/{esm2020 → esm2022}/directive/highlight/highlight.module.mjs +5 -5
  366. package/esm2022/directive/hint/hint.directive.mjs +118 -0
  367. package/{esm2020 → esm2022}/directive/hint/hint.module.mjs +7 -7
  368. package/esm2022/directive/let/let.directive.mjs +40 -0
  369. package/{esm2020 → esm2022}/directive/let/let.module.mjs +5 -5
  370. package/esm2022/directive/loader/loader.directive.mjs +93 -0
  371. package/{esm2020 → esm2022}/directive/loader/loader.module.mjs +5 -5
  372. package/esm2022/directive/no-autofill/no-autofill.directive.mjs +32 -0
  373. package/{esm2020 → esm2022}/directive/no-autofill/no-autofill.module.mjs +5 -5
  374. package/esm2022/directive/only-number/only-number.directive.mjs +200 -0
  375. package/{esm2020 → esm2022}/directive/only-number/only-number.module.mjs +5 -5
  376. package/esm2022/directive/resize-drag/resize-drag.directive.mjs +73 -0
  377. package/{esm2020 → esm2022}/directive/resize-drag/resize-drag.module.mjs +5 -5
  378. package/esm2022/directive/scroll-into-view/scroll-into-view.directive.mjs +43 -0
  379. package/{esm2020 → esm2022}/directive/scroll-into-view/scroll-into-view.module.mjs +5 -5
  380. package/esm2022/directive/scrollable/scrollable/scrollable.component.mjs +107 -0
  381. package/esm2022/directive/scrollable/scrollable.directive.mjs +17 -0
  382. package/{esm2020 → esm2022}/directive/scrollable/scrollable.module.mjs +9 -9
  383. package/esm2022/directive/teta-template/teta-template.directive.mjs +24 -0
  384. package/{esm2020 → esm2022}/directive/teta-template/teta-template.module.mjs +5 -5
  385. package/esm2022/directive/tooltip/tooltip.directive.mjs +88 -0
  386. package/{esm2020 → esm2022}/directive/tooltip/tooltip.module.mjs +5 -5
  387. package/esm2022/locale/en.mjs +62 -0
  388. package/esm2022/locale/ru.mjs +62 -0
  389. package/esm2022/locale/teta-config.service.mjs +28 -0
  390. package/{esm2020 → esm2022}/locale/teta-localisation.mjs +1 -1
  391. package/{esm2020 → esm2022}/pipe/date-pipe/teta-date-pipe.module.mjs +5 -5
  392. package/esm2022/pipe/date-pipe/teta-date.pipe.mjs +35 -0
  393. package/{esm2020 → esm2022}/pipe/number-pipe/number-pipe.module.mjs +5 -5
  394. package/{esm2020 → esm2022}/pipe/number-pipe/number.pipe.mjs +4 -4
  395. package/{esm2020 → esm2022}/util/forms-util.mjs +9 -9
  396. package/{fesm2020 → fesm2022}/tetacom-ng-components.mjs +7289 -6544
  397. package/fesm2022/tetacom-ng-components.mjs.map +1 -0
  398. package/locale/teta-localisation.d.ts +2 -0
  399. package/package.json +13 -14
  400. package/style/accordion.scss +28 -6
  401. package/style/assembly-library.scss +4 -1
  402. package/style/assembly-presets.scss +0 -1
  403. package/style/badge.scss +28 -0
  404. package/style/border.scss +2 -1
  405. package/style/bottombar.scss +5 -0
  406. package/style/button.scss +16 -13
  407. package/style/checkbox.scss +26 -13
  408. package/style/chips.scss +10 -10
  409. package/style/color.scss +1 -36
  410. package/style/datepicker.scss +139 -24
  411. package/style/divider.scss +15 -0
  412. package/style/drag.scss +1 -1
  413. package/style/dropdown.scss +6 -4
  414. package/style/hint.scss +5 -5
  415. package/style/icon.scss +2 -1
  416. package/style/input.scss +32 -23
  417. package/style/layout.scss +6 -2
  418. package/style/list.scss +11 -8
  419. package/style/loader.scss +2 -2
  420. package/style/message.scss +15 -7
  421. package/style/modal.scss +3 -2
  422. package/style/navigation.scss +4 -1
  423. package/style/presets/color-presets.scss +8 -160
  424. package/style/presets/font-presets.scss +26 -25
  425. package/style/presets/view-types.scss +17 -0
  426. package/style/progress.scss +3 -3
  427. package/style/radio.scss +21 -7
  428. package/style/reset.scss +1 -0
  429. package/style/resize-panel.scss +2 -2
  430. package/style/scroll.scss +3 -3
  431. package/style/select.scss +26 -21
  432. package/style/shadow.scss +0 -20
  433. package/style/sidebar.scss +1 -1
  434. package/style/skeleton.scss +1 -1
  435. package/style/switch.scss +15 -10
  436. package/style/table.scss +15 -15
  437. package/style/tabs.scss +11 -11
  438. package/style/tag.scss +37 -0
  439. package/style/toggle.scss +20 -18
  440. package/style/toolbar.scss +1 -1
  441. package/style/tooltip.scss +8 -6
  442. package/style/tree.scss +4 -4
  443. package/util/export-dom-image.d.ts +1 -1
  444. package/component/date-picker/day-select/day-select.component.d.ts +0 -51
  445. package/component/date-picker/month-select/month-select.component.d.ts +0 -40
  446. package/component/date-picker/service/picker-touch.service.d.ts +0 -12
  447. package/component/date-picker/time-part-control/time-part-control.component.d.ts +0 -26
  448. package/component/date-picker/util/date-picker-util.d.ts +0 -15
  449. package/component/date-picker/year-select/year-select.component.d.ts +0 -45
  450. package/esm2020/common/contract/teta-content-ref.mjs +0 -8
  451. package/esm2020/common/public-api.mjs +0 -5
  452. package/esm2020/common/service/click.service.mjs +0 -23
  453. package/esm2020/common/service/dynamic-component.service.mjs +0 -93
  454. package/esm2020/common/service/overlay-container.service.mjs +0 -41
  455. package/esm2020/component/accordion/accordion/accordion.component.mjs +0 -18
  456. package/esm2020/component/accordion/accordion-content.directive.mjs +0 -16
  457. package/esm2020/component/accordion/accordion-head/accordion-head.component.mjs +0 -52
  458. package/esm2020/component/accordion/accordion-item/accordion-item.component.mjs +0 -43
  459. package/esm2020/component/button/button/button.component.mjs +0 -40
  460. package/esm2020/component/chart-3d/chart3d/chart3d.component.mjs +0 -244
  461. package/esm2020/component/chart-3d/model/chart-3d-options.mjs +0 -7
  462. package/esm2020/component/chart-3d/model/series-3d.mjs +0 -7
  463. package/esm2020/component/checkbox/checkbox/checkbox.component.mjs +0 -134
  464. package/esm2020/component/date-picker/date-picker/date-picker.component.mjs +0 -289
  465. package/esm2020/component/date-picker/date-picker.module.mjs +0 -69
  466. package/esm2020/component/date-picker/day-select/day-select.component.mjs +0 -184
  467. package/esm2020/component/date-picker/model/date-period.mjs +0 -7
  468. package/esm2020/component/date-picker/model/day-model.mjs +0 -13
  469. package/esm2020/component/date-picker/month-picker/month-picker.component.mjs +0 -253
  470. package/esm2020/component/date-picker/month-select/month-select.component.mjs +0 -148
  471. package/esm2020/component/date-picker/public-api.mjs +0 -6
  472. package/esm2020/component/date-picker/service/picker-touch.service.mjs +0 -34
  473. package/esm2020/component/date-picker/time-part-control/time-part-control.component.mjs +0 -73
  474. package/esm2020/component/date-picker/util/date-picker-util.mjs +0 -142
  475. package/esm2020/component/date-picker/year-select/year-select.component.mjs +0 -189
  476. package/esm2020/component/delimiter/delimiter/delimiter.component.mjs +0 -63
  477. package/esm2020/component/dropdown/dropdown/dropdown.component.mjs +0 -30
  478. package/esm2020/component/dropdown/dropdown-base.mjs +0 -225
  479. package/esm2020/component/dropdown/dropdown-content.directive.mjs +0 -17
  480. package/esm2020/component/dropdown/dropdown-head.directive.mjs +0 -18
  481. package/esm2020/component/dropdown/dropdown.directive.mjs +0 -38
  482. package/esm2020/component/dynamic-component/popup-content/popup-content.component.mjs +0 -59
  483. package/esm2020/component/expand-panel/expand-panel/expand-panel.component.mjs +0 -65
  484. package/esm2020/component/expand-panel/expand-panel-content.directive.mjs +0 -16
  485. package/esm2020/component/expand-panel/expand-panel-head.directive.mjs +0 -16
  486. package/esm2020/component/file-upload/file-upload-area/file-upload-area.component.mjs +0 -82
  487. package/esm2020/component/filter/base/filter-base.mjs +0 -10
  488. package/esm2020/component/filter/boolean-filter/boolean-filter.component.mjs +0 -60
  489. package/esm2020/component/filter/contarct/boolean-filter.mjs +0 -10
  490. package/esm2020/component/filter/contarct/date-filter-value.mjs +0 -9
  491. package/esm2020/component/filter/contarct/date-filter.mjs +0 -11
  492. package/esm2020/component/filter/contarct/filter-item.mjs +0 -34
  493. package/esm2020/component/filter/contarct/filter-state.mjs +0 -145
  494. package/esm2020/component/filter/contarct/list-filter.mjs +0 -12
  495. package/esm2020/component/filter/contarct/numeric-filter-value.mjs +0 -10
  496. package/esm2020/component/filter/contarct/numeric-filter.mjs +0 -11
  497. package/esm2020/component/filter/contarct/sort-param.mjs +0 -14
  498. package/esm2020/component/filter/contarct/string-filter.mjs +0 -12
  499. package/esm2020/component/filter/date-filter/date-filter.component.mjs +0 -60
  500. package/esm2020/component/filter/filter-host/filter-host.component.mjs +0 -78
  501. package/esm2020/component/filter/list-filter/list-filter.component.mjs +0 -95
  502. package/esm2020/component/filter/numeric-filter/numeric-filter.component.mjs +0 -60
  503. package/esm2020/component/filter/string-filter/string-filter.component.mjs +0 -61
  504. package/esm2020/component/icon/icon/icon.component.mjs +0 -37
  505. package/esm2020/component/icon/icon-file/icon-file.component.mjs +0 -14
  506. package/esm2020/component/icon/icon-sprite.directive.mjs +0 -32
  507. package/esm2020/component/icon/icon.module.mjs +0 -38
  508. package/esm2020/component/icon/icon.service.mjs +0 -59
  509. package/esm2020/component/input/color-input/color-input.component.mjs +0 -73
  510. package/esm2020/component/input/input/input.component.mjs +0 -36
  511. package/esm2020/component/input/input.module.mjs +0 -26
  512. package/esm2020/component/input/text-field/text-field.component.mjs +0 -96
  513. package/esm2020/component/message/message/message.component.mjs +0 -74
  514. package/esm2020/component/message/message-host/message-host.component.mjs +0 -88
  515. package/esm2020/component/message/message.service.mjs +0 -35
  516. package/esm2020/component/message/model/message.mjs +0 -21
  517. package/esm2020/component/modal/dialog/dialog.component.mjs +0 -44
  518. package/esm2020/component/modal/dialog.service.mjs +0 -39
  519. package/esm2020/component/modal/modal-container/modal-container.component.mjs +0 -84
  520. package/esm2020/component/modal/modal.module.mjs +0 -50
  521. package/esm2020/component/modal/modal.service.mjs +0 -121
  522. package/esm2020/component/modal/model/modal-instance.mjs +0 -34
  523. package/esm2020/component/pager/model/pager-state.mjs +0 -50
  524. package/esm2020/component/panel/panel/panel.component.mjs +0 -51
  525. package/esm2020/component/progress-bar/progress-bar/progress-bar.component.mjs +0 -131
  526. package/esm2020/component/property-grid/property-grid/property-grid-group/property-grid-group.component.mjs +0 -38
  527. package/esm2020/component/property-grid/property-grid/property-grid-item/property-grid-item.component.mjs +0 -130
  528. package/esm2020/component/property-grid/property-grid/property-grid-item-description.directive.mjs +0 -19
  529. package/esm2020/component/property-grid/property-grid/property-grid.component.mjs +0 -97
  530. package/esm2020/component/property-grid/property-grid.module.mjs +0 -87
  531. package/esm2020/component/public-api.mjs +0 -65
  532. package/esm2020/component/radio/radio/radio.component.mjs +0 -245
  533. package/esm2020/component/radio/radio-button/radio-button.component.mjs +0 -63
  534. package/esm2020/component/resize-panel/resize-panel/resize-panel.component.mjs +0 -168
  535. package/esm2020/component/select/select/select.component.mjs +0 -260
  536. package/esm2020/component/select/select-option.directive.mjs +0 -16
  537. package/esm2020/component/select/select-value.directive.mjs +0 -16
  538. package/esm2020/component/sidebar/sidebar/sidebar.component.mjs +0 -54
  539. package/esm2020/component/switch/switch/switch.component.mjs +0 -52
  540. package/esm2020/component/switch/switch-button/switch-button.component.mjs +0 -47
  541. package/esm2020/component/switch/switch.service.mjs +0 -21
  542. package/esm2020/component/table/base/cell-component-base.mjs +0 -97
  543. package/esm2020/component/table/cell/cell.component.mjs +0 -33
  544. package/esm2020/component/table/cell-host/cell-host.component.mjs +0 -50
  545. package/esm2020/component/table/contract/column-reorder-event.mjs +0 -7
  546. package/esm2020/component/table/contract/column-resize-event.mjs +0 -7
  547. package/esm2020/component/table/contract/sort-event.mjs +0 -7
  548. package/esm2020/component/table/contract/table-column-store.mjs +0 -12
  549. package/esm2020/component/table/contract/table-column.mjs +0 -38
  550. package/esm2020/component/table/default/boolean-cell/boolean-cell.component.mjs +0 -45
  551. package/esm2020/component/table/default/date-cell/date-cell.component.mjs +0 -47
  552. package/esm2020/component/table/default/date-time-cell/date-time-cell.component.mjs +0 -46
  553. package/esm2020/component/table/default/default-head-cell/default-head-cell.component.mjs +0 -47
  554. package/esm2020/component/table/default/list-cell/list-cell.component.mjs +0 -76
  555. package/esm2020/component/table/default/numeric-cell/numeric-cell.component.mjs +0 -55
  556. package/esm2020/component/table/default/string-cell/string-cell.component.mjs +0 -54
  557. package/esm2020/component/table/head-cell/head-cell.component.mjs +0 -189
  558. package/esm2020/component/table/head-cell-dropdown/head-cell-dropdown.component.mjs +0 -50
  559. package/esm2020/component/table/head-cell-host/head-cell-host.component.mjs +0 -60
  560. package/esm2020/component/table/selection-cell/selection-cell.component.mjs +0 -46
  561. package/esm2020/component/table/selection-head-cell/selection-head-cell.component.mjs +0 -45
  562. package/esm2020/component/table/service/table.service.mjs +0 -648
  563. package/esm2020/component/table/table/table.component.mjs +0 -472
  564. package/esm2020/component/table/table-body/table-body.component.mjs +0 -203
  565. package/esm2020/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.mjs +0 -55
  566. package/esm2020/component/table/table-head/main-dropdown-tab/main-dropdown-tab.component.mjs +0 -86
  567. package/esm2020/component/table/table-head/table-head.component.mjs +0 -77
  568. package/esm2020/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.mjs +0 -141
  569. package/esm2020/component/table/table-head-group/table-head-group.component.mjs +0 -76
  570. package/esm2020/component/tabs/tab/tab.component.mjs +0 -42
  571. package/esm2020/component/tabs/tab-content.directive.mjs +0 -16
  572. package/esm2020/component/tabs/tab-title.directive.mjs +0 -16
  573. package/esm2020/component/tabs/tabs/tabs.component.mjs +0 -70
  574. package/esm2020/component/theme-switch/theme-switch/theme-switch.component.mjs +0 -28
  575. package/esm2020/component/theme-switch/theme-switch.service.mjs +0 -34
  576. package/esm2020/component/toggle/toggle/toggle.component.mjs +0 -79
  577. package/esm2020/component/toolbar/toolbar/toolbar.component.mjs +0 -26
  578. package/esm2020/component/tree/tree/tree.component.mjs +0 -138
  579. package/esm2020/component/tree/tree-item/tree-item.component.mjs +0 -85
  580. package/esm2020/component/tree/tree-item-toggle/tree-item-toggle.component.mjs +0 -28
  581. package/esm2020/component/tree/tree.service.mjs +0 -40
  582. package/esm2020/directive/auto-position/auto-position.directive.mjs +0 -69
  583. package/esm2020/directive/click-outside/click-outside.directive.mjs +0 -65
  584. package/esm2020/directive/context-menu/context-menu.directive.mjs +0 -120
  585. package/esm2020/directive/disable-control/disable-control.directive.mjs +0 -29
  586. package/esm2020/directive/drag-drop/drag-container.directive.mjs +0 -92
  587. package/esm2020/directive/drag-drop/drag-drop.service.mjs +0 -142
  588. package/esm2020/directive/drag-drop/drag-preview.directive.mjs +0 -16
  589. package/esm2020/directive/drag-drop/drag.directive.mjs +0 -135
  590. package/esm2020/directive/drag-drop/model/drag-container-instance.mjs +0 -8
  591. package/esm2020/directive/drag-drop/model/drag-instance.mjs +0 -7
  592. package/esm2020/directive/drag-sort/drag-sort-container.directive.mjs +0 -64
  593. package/esm2020/directive/drag-sort/drag-sort-item.directive.mjs +0 -115
  594. package/esm2020/directive/dynamic-content-base.directive.mjs +0 -80
  595. package/esm2020/directive/highlight/highlight.directive.mjs +0 -72
  596. package/esm2020/directive/hint/hint.directive.mjs +0 -103
  597. package/esm2020/directive/let/let.directive.mjs +0 -38
  598. package/esm2020/directive/loader/loader.directive.mjs +0 -85
  599. package/esm2020/directive/no-autofill/no-autofill.directive.mjs +0 -30
  600. package/esm2020/directive/only-number/only-number.directive.mjs +0 -198
  601. package/esm2020/directive/resize-drag/resize-drag.directive.mjs +0 -71
  602. package/esm2020/directive/scroll-into-view/scroll-into-view.directive.mjs +0 -40
  603. package/esm2020/directive/scrollable/scrollable/scrollable.component.mjs +0 -96
  604. package/esm2020/directive/scrollable/scrollable.directive.mjs +0 -19
  605. package/esm2020/directive/teta-template/teta-template.directive.mjs +0 -22
  606. package/esm2020/directive/tooltip/tooltip.directive.mjs +0 -76
  607. package/esm2020/locale/en.mjs +0 -60
  608. package/esm2020/locale/ru.mjs +0 -60
  609. package/esm2020/locale/teta-config.service.mjs +0 -28
  610. package/esm2020/pipe/date-pipe/teta-date.pipe.mjs +0 -34
  611. package/esm2020/pipe/prepend-zero/prepend-zero.module.mjs +0 -18
  612. package/esm2020/pipe/prepend-zero/prepend-zero.pipe.mjs +0 -21
  613. package/fesm2015/tetacom-ng-components.mjs +0 -13042
  614. package/fesm2015/tetacom-ng-components.mjs.map +0 -1
  615. package/fesm2020/tetacom-ng-components.mjs.map +0 -1
  616. package/pipe/prepend-zero/prepend-zero.module.d.ts +0 -8
  617. package/pipe/prepend-zero/prepend-zero.pipe.d.ts +0 -7
  618. package/style/presets/shadow-presets.scss +0 -16
  619. package/style/tokens/basedark.tokens.css +0 -77
  620. package/style/tokens/baselight.tokens.css +0 -61
  621. package/style/tokens/global.tokens.css +0 -235
  622. package/style/tokens/utility.tokens.css +0 -1119
  623. package/style/util/button-util.scss +0 -58
  624. /package/{esm2020 → esm2022}/common/contract/auto-close-ignore-case.mjs +0 -0
  625. /package/{esm2020 → esm2022}/common/contract/constructor-type.mjs +0 -0
  626. /package/{esm2020 → esm2022}/common/contract/dynamic-data.mjs +0 -0
  627. /package/{esm2020 → esm2022}/common/contract/i-dictionary.mjs +0 -0
  628. /package/{esm2020 → esm2022}/common/contract/i-id-name.mjs +0 -0
  629. /package/{esm2020 → esm2022}/common/contract/i-id.mjs +0 -0
  630. /package/{esm2020 → esm2022}/common/contract/i-rect.mjs +0 -0
  631. /package/{esm2020 → esm2022}/common/contract/i-tree-data.mjs +0 -0
  632. /package/{esm2020 → esm2022}/common/contract/public-api.mjs +0 -0
  633. /package/{esm2020 → esm2022}/common/enum/align.enum.mjs +0 -0
  634. /package/{esm2020 → esm2022}/common/enum/public-api.mjs +0 -0
  635. /package/{esm2020 → esm2022}/common/enum/teta-size.enum.mjs +0 -0
  636. /package/{esm2020 → esm2022}/common/enum/vertical-align.enum.mjs +0 -0
  637. /package/{esm2020 → esm2022}/common/service/public-api.mjs +0 -0
  638. /package/{esm2020 → esm2022}/common/util/array-util.mjs +0 -0
  639. /package/{esm2020 → esm2022}/common/util/dom-util.mjs +0 -0
  640. /package/{esm2020 → esm2022}/common/util/position-util.mjs +0 -0
  641. /package/{esm2020 → esm2022}/common/util/public-api.mjs +0 -0
  642. /package/{esm2020 → esm2022}/component/accordion/public-api.mjs +0 -0
  643. /package/{esm2020 → esm2022}/component/autocomplete/public-api.mjs +0 -0
  644. /package/{esm2020 → esm2022}/component/button/public-api.mjs +0 -0
  645. /package/{esm2020 → esm2022}/component/chart-3d/model/base-3d-point.mjs +0 -0
  646. /package/{esm2020 → esm2022}/component/chart-3d/model/public-api.mjs +0 -0
  647. /package/{esm2020 → esm2022}/component/chart-3d/public-api.mjs +0 -0
  648. /package/{esm2020 → esm2022}/component/checkbox/public-api.mjs +0 -0
  649. /package/{esm2020 → esm2022}/component/date-picker/model/date-picker-mode.enum.mjs +0 -0
  650. /package/{esm2020 → esm2022}/component/delimiter/public-api.mjs +0 -0
  651. /package/{esm2020 → esm2022}/component/dropdown/public-api.mjs +0 -0
  652. /package/{esm2020 → esm2022}/component/dynamic-component/public-api.mjs +0 -0
  653. /package/{esm2020 → esm2022}/component/expand-card/public-api.mjs +0 -0
  654. /package/{esm2020 → esm2022}/component/expand-panel/public-api.mjs +0 -0
  655. /package/{esm2020 → esm2022}/component/file-upload/public-api.mjs +0 -0
  656. /package/{esm2020 → esm2022}/component/filter/contarct/filter-component-map.mjs +0 -0
  657. /package/{esm2020 → esm2022}/component/filter/enum/filter-type.enum.mjs +0 -0
  658. /package/{esm2020 → esm2022}/component/filter/enum/list-filter-type.enum.mjs +0 -0
  659. /package/{esm2020 → esm2022}/component/filter/enum/string-filter-type.enum.mjs +0 -0
  660. /package/{esm2020 → esm2022}/component/filter/public-api.mjs +0 -0
  661. /package/{esm2020 → esm2022}/component/input/public-api.mjs +0 -0
  662. /package/{esm2020 → esm2022}/component/message/public-api.mjs +0 -0
  663. /package/{esm2020 → esm2022}/component/modal/model/i-modal-config.mjs +0 -0
  664. /package/{esm2020 → esm2022}/component/modal/model/i-modal-result.mjs +0 -0
  665. /package/{esm2020 → esm2022}/component/modal/model/modal-close-reason.enum.mjs +0 -0
  666. /package/{esm2020 → esm2022}/component/modal/public-api.mjs +0 -0
  667. /package/{esm2020 → esm2022}/component/pager/public-api.mjs +0 -0
  668. /package/{esm2020 → esm2022}/component/pager/util/pager-util.mjs +0 -0
  669. /package/{esm2020 → esm2022}/component/panel/public-api.mjs +0 -0
  670. /package/{esm2020 → esm2022}/component/progress-bar/public-api.mjs +0 -0
  671. /package/{esm2020 → esm2022}/component/property-grid/public-api.mjs +0 -0
  672. /package/{esm2020 → esm2022}/component/radio/public-api.mjs +0 -0
  673. /package/{esm2020 → esm2022}/component/resize-panel/public-api.mjs +0 -0
  674. /package/{esm2020 → esm2022}/component/select/public-api.mjs +0 -0
  675. /package/{esm2020 → esm2022}/component/sidebar/public-api.mjs +0 -0
  676. /package/{esm2020 → esm2022}/component/sidebar/sidebar-position.enum.mjs +0 -0
  677. /package/{esm2020 → esm2022}/component/switch/public-api.mjs +0 -0
  678. /package/{esm2020 → esm2022}/component/table/base/detail-component-base.mjs +0 -0
  679. /package/{esm2020 → esm2022}/component/table/contract/cell-components-map.mjs +0 -0
  680. /package/{esm2020 → esm2022}/component/table/contract/head-dropdown-tab.mjs +0 -0
  681. /package/{esm2020 → esm2022}/component/table/contract/i-cell-coordinates.mjs +0 -0
  682. /package/{esm2020 → esm2022}/component/table/contract/i-cell-event.mjs +0 -0
  683. /package/{esm2020 → esm2022}/component/table/contract/i-cell-instance.mjs +0 -0
  684. /package/{esm2020 → esm2022}/component/table/contract/i-cell-value.mjs +0 -0
  685. /package/{esm2020 → esm2022}/component/table/contract/public-api.mjs +0 -0
  686. /package/{esm2020 → esm2022}/component/table/enum/aggregation-type.enum.mjs +0 -0
  687. /package/{esm2020 → esm2022}/component/table/enum/edit-event.enum.mjs +0 -0
  688. /package/{esm2020 → esm2022}/component/table/enum/edit-type.enum.mjs +0 -0
  689. /package/{esm2020 → esm2022}/component/table/enum/public-api.mjs +0 -0
  690. /package/{esm2020 → esm2022}/component/table/enum/select-type.enum.mjs +0 -0
  691. /package/{esm2020 → esm2022}/component/table/public-api.mjs +0 -0
  692. /package/{esm2020 → esm2022}/component/table/util/public-api.mjs +0 -0
  693. /package/{esm2020 → esm2022}/component/table/util/state-util.mjs +0 -0
  694. /package/{esm2020 → esm2022}/component/table/util/table-util.mjs +0 -0
  695. /package/{esm2020 → esm2022}/component/tabs/public-api.mjs +0 -0
  696. /package/{esm2020 → esm2022}/component/theme-switch/public-api.mjs +0 -0
  697. /package/{esm2020 → esm2022}/component/toggle/public-api.mjs +0 -0
  698. /package/{esm2020 → esm2022}/component/toolbar/public-api.mjs +0 -0
  699. /package/{esm2020 → esm2022}/component/tree/public-api.mjs +0 -0
  700. /package/{esm2020 → esm2022}/directive/auto-position/public-api.mjs +0 -0
  701. /package/{esm2020 → esm2022}/directive/click-outside/public-api.mjs +0 -0
  702. /package/{esm2020 → esm2022}/directive/context-menu/public-api.mjs +0 -0
  703. /package/{esm2020 → esm2022}/directive/disable-control/public-api.mjs +0 -0
  704. /package/{esm2020 → esm2022}/directive/drag-drop/model/drag-process.mjs +0 -0
  705. /package/{esm2020 → esm2022}/directive/drag-drop/model/drag-selection.mjs +0 -0
  706. /package/{esm2020 → esm2022}/directive/drag-drop/model/drop-event.mjs +0 -0
  707. /package/{esm2020 → esm2022}/directive/drag-drop/model/drop-target.mjs +0 -0
  708. /package/{esm2020 → esm2022}/directive/drag-drop/model/point.mjs +0 -0
  709. /package/{esm2020 → esm2022}/directive/drag-drop/model/public-api.mjs +0 -0
  710. /package/{esm2020 → esm2022}/directive/drag-drop/public-api.mjs +0 -0
  711. /package/{esm2020 → esm2022}/directive/drag-sort/drag-sort-event.mjs +0 -0
  712. /package/{esm2020 → esm2022}/directive/drag-sort/public-api.mjs +0 -0
  713. /package/{esm2020 → esm2022}/directive/highlight/public-api.mjs +0 -0
  714. /package/{esm2020 → esm2022}/directive/hint/public-api.mjs +0 -0
  715. /package/{esm2020 → esm2022}/directive/let/public-api.mjs +0 -0
  716. /package/{esm2020 → esm2022}/directive/loader/public-api.mjs +0 -0
  717. /package/{esm2020 → esm2022}/directive/no-autofill/public-api.mjs +0 -0
  718. /package/{esm2020 → esm2022}/directive/only-number/public-api.mjs +0 -0
  719. /package/{esm2020 → esm2022}/directive/public-api.mjs +0 -0
  720. /package/{esm2020 → esm2022}/directive/resize-drag/public-api.mjs +0 -0
  721. /package/{esm2020 → esm2022}/directive/scroll-into-view/public-api.mjs +0 -0
  722. /package/{esm2020 → esm2022}/directive/scrollable/public-api.mjs +0 -0
  723. /package/{esm2020 → esm2022}/directive/teta-template/public-api.mjs +0 -0
  724. /package/{esm2020 → esm2022}/directive/tooltip/public-api.mjs +0 -0
  725. /package/{esm2020 → esm2022}/locale/public-api.mjs +0 -0
  726. /package/{esm2020 → esm2022}/observable/animation-frame.mjs +0 -0
  727. /package/{esm2020 → esm2022}/observable/public-api.mjs +0 -0
  728. /package/{esm2020 → esm2022}/observable/zoneObservable.mjs +0 -0
  729. /package/{esm2020 → esm2022}/pipe/date-pipe/public-api.mjs +0 -0
  730. /package/{esm2020 → esm2022}/pipe/number-pipe/public-api.mjs +0 -0
  731. /package/{esm2020 → esm2022}/pipe/public-api.mjs +0 -0
  732. /package/{esm2020 → esm2022}/pipe/util/number-helper.mjs +0 -0
  733. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  734. /package/{esm2020 → esm2022}/tetacom-ng-components.mjs +0 -0
  735. /package/{esm2020 → esm2022}/util/date-util.mjs +0 -0
  736. /package/{esm2020 → esm2022}/util/export-dom-image.mjs +0 -0
  737. /package/{esm2020 → esm2022}/util/public-api.mjs +0 -0
  738. /package/{esm2020 → esm2022}/util/string-util.mjs +0 -0
@@ -1,472 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild, } from '@angular/core';
2
- import { TableService } from '../service/table.service';
3
- import { filter, takeWhile } from 'rxjs/operators';
4
- import { EditType } from '../enum/edit-type.enum';
5
- import { EditEvent } from '../enum/edit-event.enum';
6
- import { SelectType } from '../enum/select-type.enum';
7
- import { FilterType } from '../../filter/enum/filter-type.enum';
8
- import { VerticalAlign } from '../../../common/enum/vertical-align.enum';
9
- import { Align } from '../../../common/enum/align.enum';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "../service/table.service";
12
- import * as i2 from "../../../directive/context-menu/context-menu.directive";
13
- import * as i3 from "../table-head/table-head.component";
14
- import * as i4 from "../table-body/table-body.component";
15
- export class TableComponent {
16
- constructor(_svc, _elementRef) {
17
- this._svc = _svc;
18
- this._elementRef = _elementRef;
19
- this.data = [];
20
- this.columns = [];
21
- this.selectType = SelectType.mouse;
22
- this.trackRow = (index, row) => {
23
- if (row['id']) {
24
- return row['id'];
25
- }
26
- return index;
27
- };
28
- this.trackColumns = (index, column) => {
29
- return column.name;
30
- };
31
- this.editType = EditType.cell;
32
- this.editEvent = EditEvent.doubleClick;
33
- this.showHeadCellMenu = true;
34
- this.contextMenuOpenChange = new EventEmitter();
35
- this.stateChange = new EventEmitter();
36
- this.bodyLeft = new EventEmitter();
37
- this.activeRowChange = new EventEmitter();
38
- this.selectedRowsChange = new EventEmitter();
39
- this.cellClick = new EventEmitter();
40
- this.cellDoubleClick = new EventEmitter();
41
- this.cellFocus = new EventEmitter();
42
- this.cellKeyDown = new EventEmitter();
43
- this.rowLeft = new EventEmitter();
44
- this.rowEditStart = new EventEmitter();
45
- this.rowEditEnd = new EventEmitter();
46
- this.cellEditStart = new EventEmitter();
47
- this.cellEditEnd = new EventEmitter();
48
- this.valueChange = new EventEmitter();
49
- this.tableService = new EventEmitter();
50
- this.tableClass = true;
51
- this.verticalAlign = VerticalAlign;
52
- this.align = Align;
53
- this._alive = true;
54
- this.onScroll = (event) => {
55
- this._headElement.scrollLeft = event.target.scrollLeft;
56
- };
57
- this._svc.state
58
- .pipe(takeWhile((_) => this._alive), filter((state) => state !== this._state))
59
- .subscribe((state) => this.stateChange.next(state));
60
- this._svc.editCellStart
61
- .pipe(takeWhile((_) => this._alive))
62
- .subscribe((item) => this.cellEditStart.emit(this._svc.getCellInstance(item)));
63
- this._svc.editCellStop
64
- .pipe(takeWhile((_) => this._alive))
65
- .subscribe((item) => this.cellEditEnd.emit(this._svc.getCellInstance(item)));
66
- this._svc.editRowStart
67
- .pipe(takeWhile((_) => this._alive))
68
- .subscribe((item) => this.rowEditStart.emit(this._svc.getCellInstance(item)));
69
- this._svc.editRowStop
70
- .pipe(takeWhile((_) => this._alive))
71
- .subscribe((item) => this.rowEditEnd.emit(this._svc.getRowByIndex(item?.row)));
72
- this._svc.selectedRows
73
- .pipe(takeWhile((_) => this._alive))
74
- .subscribe((items) => {
75
- this.selectedRowsList = items;
76
- this.selectedRowsChange.emit(items);
77
- });
78
- this._svc.activeRow
79
- .pipe(takeWhile((_) => this._alive))
80
- .subscribe((item) => {
81
- this.activeRow = item;
82
- this.activeRowChange.emit(item);
83
- });
84
- this._svc.valueChanged
85
- .pipe(takeWhile((_) => this._alive))
86
- .subscribe((coordinates) => {
87
- this.valueChange.emit(this._svc.getCellInstance(coordinates));
88
- });
89
- }
90
- set state(state) {
91
- this._state = state;
92
- }
93
- set scrollToIndex(index) {
94
- this._svc.scrollToIndex(index);
95
- }
96
- handleClickOutsideAnyRow(event) {
97
- const coordinates = this.getCoordinates(event);
98
- const row = this.getRow(event);
99
- const eventIsOnRow = this.eventIsOnRow(event);
100
- setTimeout(() => {
101
- if (coordinates) {
102
- this.cellClick.emit({
103
- ...this._svc.getCellInstance(coordinates),
104
- event
105
- });
106
- if (this.editEvent === EditEvent.click) {
107
- this.startEditRowOrCell(coordinates);
108
- }
109
- else {
110
- if (this._svc.currentEditCell && (coordinates.row !== this._svc.currentEditCell.row || coordinates.column !== this._svc.currentEditCell.column)) {
111
- this.startEditRowOrCell(null);
112
- }
113
- }
114
- }
115
- if (row) {
116
- if (event.ctrlKey) {
117
- this._svc.selectOrDeselectRow(row);
118
- }
119
- else if (event.shiftKey) {
120
- this._svc.selectRange(row);
121
- }
122
- else {
123
- this._svc.selectRows([row]);
124
- }
125
- }
126
- if (!eventIsOnRow && !event.defaultPrevented) {
127
- if (this.editType === EditType.row) {
128
- this._svc.startEditRow(null);
129
- }
130
- else {
131
- this._svc.startEditCell(null);
132
- }
133
- }
134
- });
135
- }
136
- focusIn(event) {
137
- const coordinates = this.getCoordinates(event);
138
- if (coordinates) {
139
- this.cellFocus.emit({
140
- ...this._svc.getCellInstance(coordinates),
141
- event
142
- });
143
- if (this.editEvent === EditEvent.focus) {
144
- this.startEditRowOrCell(coordinates);
145
- }
146
- }
147
- }
148
- dblclick(event) {
149
- const coordinates = this.getCoordinates(event);
150
- if (coordinates) {
151
- setTimeout(() => {
152
- this.cellDoubleClick.emit({
153
- ...this._svc.getCellInstance(coordinates),
154
- event
155
- });
156
- if (this.editEvent === EditEvent.doubleClick) {
157
- this.startEditRowOrCell(coordinates);
158
- }
159
- });
160
- }
161
- }
162
- keydown(event) {
163
- if (event.ctrlKey) {
164
- if (event.code === 'KeyA') {
165
- event.preventDefault();
166
- this._svc.selectAll();
167
- }
168
- return;
169
- }
170
- if (event.key === 'Escape') {
171
- this._svc.deselectAll();
172
- if (this.editType === EditType.row) {
173
- this._svc.startEditRow(null);
174
- }
175
- else {
176
- this._svc.startEditCell(null);
177
- }
178
- }
179
- const coordinates = this.getCoordinates(event);
180
- if (event.key === 'Enter') {
181
- if (this.editType === EditType.row) {
182
- this._svc.startEditRow(null);
183
- }
184
- else {
185
- if (this._svc.currentEditCell) {
186
- const target = this._svc.getNextRowCell(coordinates);
187
- if (target) {
188
- this.startEditRowOrCell({
189
- row: target.row,
190
- column: target.column,
191
- event: undefined
192
- });
193
- }
194
- else {
195
- this._svc.startEditCell(null);
196
- }
197
- }
198
- }
199
- }
200
- if (coordinates) {
201
- this.cellKeyDown.emit({
202
- ...this._svc.getCellInstance(coordinates),
203
- event
204
- });
205
- if (event.key && (event.key.length === 1 || event.key === 'Delete')) {
206
- const column = this._svc.getColumnByName(coordinates.column);
207
- if (column.filterType !== FilterType.number || isFinite(event.key)) {
208
- this.startEditRowOrCell({
209
- row: coordinates.row,
210
- column: coordinates.column,
211
- event: event
212
- });
213
- }
214
- }
215
- if (event.key === 'Tab' && this._svc.currentEditCell) {
216
- event.preventDefault();
217
- let target = this._svc.getNextEditableCell(coordinates);
218
- if (event.shiftKey) {
219
- target = this._svc.getPreviousEditableCell(coordinates);
220
- }
221
- if (target) {
222
- this.startEditRowOrCell({
223
- row: target.row,
224
- column: target.column,
225
- event: undefined
226
- });
227
- }
228
- }
229
- if (!this._svc.currentEditCell) {
230
- let target;
231
- if (event.key === 'ArrowRight') {
232
- target = this._svc.getNextCell(coordinates);
233
- }
234
- if (event.key === 'ArrowLeft') {
235
- target = this._svc.getPreviousCell(coordinates);
236
- }
237
- if (event.key === 'ArrowUp') {
238
- target = this._svc.getPreviousRowCell(coordinates);
239
- }
240
- if (event.key === 'ArrowDown') {
241
- target = this._svc.getNextRowCell(coordinates);
242
- }
243
- if (target) {
244
- event.preventDefault();
245
- const element = this.getCellElement(target);
246
- element?.focus();
247
- }
248
- }
249
- }
250
- }
251
- mousedown(event) {
252
- if (event.button === 2) {
253
- event.preventDefault();
254
- }
255
- }
256
- ngOnInit() {
257
- this._svc.restoreState();
258
- this._svc.restoreHiddenColumns();
259
- this.tableService.emit(this._svc);
260
- }
261
- ngAfterViewInit() {
262
- this._headElement =
263
- this._elementRef.nativeElement.querySelector('.table-head');
264
- }
265
- ngOnDestroy() {
266
- this._alive = false;
267
- }
268
- ngOnChanges(changes) {
269
- if (changes.hasOwnProperty('editType')) {
270
- this._svc.editType = this.editType;
271
- }
272
- if (changes.hasOwnProperty('selectType')) {
273
- this._svc.selectType = this.selectType;
274
- }
275
- if (changes.hasOwnProperty('selectedRows')) {
276
- this._svc.selectRows(this.selectedRows);
277
- }
278
- if (changes.hasOwnProperty('rowEditable')) {
279
- this._svc.rowEditable = this.rowEditable;
280
- }
281
- if (changes.hasOwnProperty('cookieName')) {
282
- this._svc.setCookieName(this.cookieName);
283
- }
284
- if (changes.hasOwnProperty('columns')) {
285
- if (this.columns !== null && this.columns !== undefined) {
286
- this._svc.setColumns(this.columns);
287
- }
288
- }
289
- if (changes.hasOwnProperty('data')) {
290
- this._svc.setData(this.data);
291
- this._svc.selectRows(this.data?.filter((row) => {
292
- return this.selectedRows?.some((selectedRow) => this.trackRow(this._svc.getRowIndex(selectedRow), selectedRow) === this.trackRow(this._svc.getRowIndex(row), row));
293
- }));
294
- }
295
- if (changes.hasOwnProperty('dict')) {
296
- this._svc.setDict(this.dict);
297
- this._svc.setFilterOptions(this.dict);
298
- }
299
- if (changes.hasOwnProperty('filterOptions')) {
300
- this._svc.setFilterOptions(this.filterOptions);
301
- }
302
- if (changes.hasOwnProperty('trackRow')) {
303
- this._svc.trackRow = this.trackRow;
304
- }
305
- }
306
- setContextMenuOpen(value) {
307
- this.contextMenuOpen = value;
308
- this.contextMenuOpenChange.emit(this.contextMenuOpen);
309
- }
310
- setContextMenuRow(event) {
311
- this.contextMenuRow = null;
312
- const rowElement = this._svc.getEventRow(event);
313
- if (rowElement) {
314
- const rowIndex = parseInt(rowElement.getAttribute('data-row'), 10);
315
- if (rowIndex >= 0) {
316
- this.contextMenuRow = this._svc.getRowByIndex(rowIndex);
317
- }
318
- }
319
- }
320
- startEditRowOrCell(coordinates) {
321
- if (this.editType === EditType.row) {
322
- this._svc.startEditRow(coordinates);
323
- }
324
- if (this.editType === EditType.cell) {
325
- this._svc.startEditCell(coordinates);
326
- }
327
- }
328
- getCellElement(coordinates) {
329
- return this._elementRef.nativeElement.querySelector(`teta-cell[data-row="${coordinates.row}"][data-column="${coordinates.column}"]`);
330
- }
331
- eventIsOnRow(event) {
332
- const row = event.composedPath().find((target) => {
333
- return target?.getAttribute && target?.getAttribute('data-row');
334
- });
335
- return row && this._elementRef.nativeElement.contains(row);
336
- }
337
- getCoordinates(event) {
338
- if (event.composedPath().indexOf(this._elementRef.nativeElement) < 0) {
339
- return null;
340
- }
341
- const cell = this._svc.getEventCell(event);
342
- if (cell) {
343
- const rowIndex = parseInt(cell.getAttribute('data-row'), 10);
344
- const columnName = cell.getAttribute('data-column');
345
- if (rowIndex >= 0 && columnName) {
346
- return {
347
- row: rowIndex,
348
- column: columnName,
349
- event,
350
- };
351
- }
352
- }
353
- return null;
354
- }
355
- getRow(event) {
356
- if (event.composedPath().indexOf(this._elementRef.nativeElement) < 0) {
357
- return null;
358
- }
359
- const rowElement = this._svc.getEventRow(event);
360
- if (rowElement) {
361
- const rowIndex = parseInt(rowElement.getAttribute('data-row'), 10);
362
- if (rowIndex >= 0) {
363
- return this._svc.getRowByIndex(rowIndex);
364
- }
365
- }
366
- return null;
367
- }
368
- }
369
- TableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TableComponent, deps: [{ token: i1.TableService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
370
- TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: TableComponent, selector: "teta-table", inputs: { data: "data", columns: "columns", dict: "dict", filterOptions: "filterOptions", state: "state", cookieName: "cookieName", virtual: "virtual", detailComponent: "detailComponent", activeRow: "activeRow", selectedRows: "selectedRows", selectType: "selectType", aggregate: "aggregate", trackRow: "trackRow", trackColumns: "trackColumns", editType: "editType", editEvent: "editEvent", rowEditable: "rowEditable", rowClass: "rowClass", scrollToIndex: "scrollToIndex", showHeadCellMenu: "showHeadCellMenu", contextMenu: "contextMenu", contextMenuOpen: "contextMenuOpen" }, outputs: { contextMenuOpenChange: "contextMenuOpenChange", stateChange: "stateChange", bodyLeft: "bodyLeft", activeRowChange: "activeRowChange", selectedRowsChange: "selectedRowsChange", cellClick: "cellClick", cellDoubleClick: "cellDoubleClick", cellFocus: "cellFocus", cellKeyDown: "cellKeyDown", rowLeft: "rowLeft", rowEditStart: "rowEditStart", rowEditEnd: "rowEditEnd", cellEditStart: "cellEditStart", cellEditEnd: "cellEditEnd", valueChange: "valueChange", tableService: "tableService" }, host: { listeners: { "document:click": "handleClickOutsideAnyRow($event)", "focusin": "focusIn($event)", "dblclick": "dblclick($event)", "keydown": "keydown($event)", "mousedown": "mousedown($event)" }, properties: { "class.table": "this.tableClass" } }, providers: [TableService], viewQueries: [{ propertyName: "menu", first: true, predicate: ["contextMenu"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"column column_auto\">\n <teta-table-head\n style=\"z-index: 1\"\n [selectType]=\"selectType\"\n [showHeadCellMenu]=\"showHeadCellMenu\"></teta-table-head>\n <div class=\"column column_auto position-relative\"\n style=\"z-index: 0\"\n [tetaContextMenu]=\"contextMenu\"\n [verticalAlign]=\"verticalAlign.auto\"\n [align]=\"align.auto\"\n [appendToBody]=\"true\"\n [data]=\"contextMenuRow\"\n [open]=\"contextMenuOpen\"\n (openChange)=\"setContextMenuOpen($event)\">\n <teta-table-body\n (contextmenu)=\"setContextMenuRow($event)\"\n (scroll)=\"onScroll($event)\"\n [aggregate]=\"aggregate\"\n [virtual]=\"virtual\"\n [activeRow]=\"activeRow\"\n [trackRow]=\"trackRow\"\n [trackColumns]=\"trackColumns\"\n [selectedRows]=\"selectedRowsList\"\n [additionalComponent]=\"detailComponent\"\n [selectType]=\"selectType\"\n [rowClass]=\"rowClass\">\n <ng-content></ng-content>\n </teta-table-body>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.ContextMenuDirective, selector: "[tetaContextMenu]", inputs: ["tetaContextMenu", "autoCloseIgnore"] }, { kind: "component", type: i3.TableHeadComponent, selector: "teta-table-head", inputs: ["selectType", "showHeadCellMenu"] }, { kind: "component", type: i4.TableBodyComponent, selector: "teta-table-body", inputs: ["virtual", "activeRow", "selectedRows", "additionalComponent", "aggregate", "selectType", "rowClass", "trackRow", "trackColumns"], outputs: ["scroll"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
371
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: TableComponent, decorators: [{
372
- type: Component,
373
- args: [{ selector: 'teta-table', changeDetection: ChangeDetectionStrategy.OnPush, providers: [TableService], template: "<div class=\"column column_auto\">\n <teta-table-head\n style=\"z-index: 1\"\n [selectType]=\"selectType\"\n [showHeadCellMenu]=\"showHeadCellMenu\"></teta-table-head>\n <div class=\"column column_auto position-relative\"\n style=\"z-index: 0\"\n [tetaContextMenu]=\"contextMenu\"\n [verticalAlign]=\"verticalAlign.auto\"\n [align]=\"align.auto\"\n [appendToBody]=\"true\"\n [data]=\"contextMenuRow\"\n [open]=\"contextMenuOpen\"\n (openChange)=\"setContextMenuOpen($event)\">\n <teta-table-body\n (contextmenu)=\"setContextMenuRow($event)\"\n (scroll)=\"onScroll($event)\"\n [aggregate]=\"aggregate\"\n [virtual]=\"virtual\"\n [activeRow]=\"activeRow\"\n [trackRow]=\"trackRow\"\n [trackColumns]=\"trackColumns\"\n [selectedRows]=\"selectedRowsList\"\n [additionalComponent]=\"detailComponent\"\n [selectType]=\"selectType\"\n [rowClass]=\"rowClass\">\n <ng-content></ng-content>\n </teta-table-body>\n </div>\n</div>\n" }]
374
- }], ctorParameters: function () { return [{ type: i1.TableService }, { type: i0.ElementRef }]; }, propDecorators: { data: [{
375
- type: Input
376
- }], columns: [{
377
- type: Input
378
- }], dict: [{
379
- type: Input
380
- }], filterOptions: [{
381
- type: Input
382
- }], state: [{
383
- type: Input
384
- }], cookieName: [{
385
- type: Input
386
- }], virtual: [{
387
- type: Input
388
- }], detailComponent: [{
389
- type: Input
390
- }], activeRow: [{
391
- type: Input
392
- }], selectedRows: [{
393
- type: Input
394
- }], selectType: [{
395
- type: Input
396
- }], aggregate: [{
397
- type: Input
398
- }], trackRow: [{
399
- type: Input
400
- }], trackColumns: [{
401
- type: Input
402
- }], editType: [{
403
- type: Input
404
- }], editEvent: [{
405
- type: Input
406
- }], rowEditable: [{
407
- type: Input
408
- }], rowClass: [{
409
- type: Input
410
- }], scrollToIndex: [{
411
- type: Input
412
- }], showHeadCellMenu: [{
413
- type: Input
414
- }], contextMenu: [{
415
- type: Input
416
- }], contextMenuOpen: [{
417
- type: Input
418
- }], contextMenuOpenChange: [{
419
- type: Output
420
- }], stateChange: [{
421
- type: Output
422
- }], bodyLeft: [{
423
- type: Output
424
- }], activeRowChange: [{
425
- type: Output
426
- }], selectedRowsChange: [{
427
- type: Output
428
- }], cellClick: [{
429
- type: Output
430
- }], cellDoubleClick: [{
431
- type: Output
432
- }], cellFocus: [{
433
- type: Output
434
- }], cellKeyDown: [{
435
- type: Output
436
- }], rowLeft: [{
437
- type: Output
438
- }], rowEditStart: [{
439
- type: Output
440
- }], rowEditEnd: [{
441
- type: Output
442
- }], cellEditStart: [{
443
- type: Output
444
- }], cellEditEnd: [{
445
- type: Output
446
- }], valueChange: [{
447
- type: Output
448
- }], tableService: [{
449
- type: Output
450
- }], menu: [{
451
- type: ViewChild,
452
- args: ['contextMenu', { static: true }]
453
- }], tableClass: [{
454
- type: HostBinding,
455
- args: ['class.table']
456
- }], handleClickOutsideAnyRow: [{
457
- type: HostListener,
458
- args: ['document:click', ['$event']]
459
- }], focusIn: [{
460
- type: HostListener,
461
- args: ['focusin', ['$event']]
462
- }], dblclick: [{
463
- type: HostListener,
464
- args: ['dblclick', ['$event']]
465
- }], keydown: [{
466
- type: HostListener,
467
- args: ['keydown', ['$event']]
468
- }], mousedown: [{
469
- type: HostListener,
470
- args: ['mousedown', ['$event']]
471
- }] } });
472
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC90YWJsZS90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYmxlL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBSU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQU10RCxPQUFPLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBSXBELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDdkUsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7QUFTdEQsTUFBTSxPQUFPLGNBQWM7SUFzRXpCLFlBQW9CLElBQXFCLEVBQVUsV0FBdUI7UUFBdEQsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQXBFakUsU0FBSSxHQUFRLEVBQUUsQ0FBQztRQUNmLFlBQU8sR0FBa0IsRUFBRSxDQUFDO1FBYzVCLGVBQVUsR0FBZSxVQUFVLENBQUMsS0FBSyxDQUFDO1FBRTFDLGFBQVEsR0FBbUMs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YW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGUsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RhYmxlU2VydmljZX0gZnJvbSAnLi4vc2VydmljZS90YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7VGFibGVDb2x1bW59IGZyb20gJy4uL2NvbnRyYWN0L3RhYmxlLWNvbHVtbic7XG5pbXBvcnQge0ZpbHRlclN0YXRlfSBmcm9tICcuLi8uLi9maWx0ZXIvY29udGFyY3QvZmlsdGVyLXN0YXRlJztcbmltcG9ydCB7RGV0YWlsQ29tcG9uZW50QmFzZX0gZnJvbSAnLi4vYmFzZS9kZXRhaWwtY29tcG9uZW50LWJhc2UnO1xuaW1wb3J0IHtJQ2VsbEV2ZW50fSBmcm9tICcuLi9jb250cmFjdC9pLWNlbGwtZXZlbnQnO1xuaW1wb3J0IHtJQ2VsbENvb3JkaW5hdGVzfSBmcm9tICcuLi9jb250cmFjdC9pLWNlbGwtY29vcmRpbmF0ZXMnO1xuaW1wb3J0IHtmaWx0ZXIsIHRha2VXaGlsZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtFZGl0VHlwZX0gZnJvbSAnLi4vZW51bS9lZGl0LXR5cGUuZW51bSc7XG5pbXBvcnQge0VkaXRFdmVudH0gZnJvbSAnLi4vZW51bS9lZGl0LWV2ZW50LmVudW0nO1xuaW1wb3J0IHtTZWxlY3RUeXBlfSBmcm9tICcuLi9lbnVtL3NlbGVjdC10eXBlLmVudW0nO1xuaW1wb3J0IHtJSWROYW1lfSBmcm9tICcuLi8uLi8uLi9jb21tb24vY29udHJhY3QvaS1pZC1uYW1lJztcbmltcG9ydCB7SURpY3Rpb25hcnl9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9jb250cmFjdC9pLWRpY3Rpb25hcnknO1xuaW1wb3J0IHtJQ2VsbEluc3RhbmNlLCBJQ2VsbEluc3RhbmNlRXZlbnR9IGZyb20gJy4uL2NvbnRyYWN0L2ktY2VsbC1pbnN0YW5jZSc7XG5pbXBvcnQge0ZpbHRlclR5cGV9IGZyb20gJy4uLy4uL2ZpbHRlci9lbnVtL2ZpbHRlci10eXBlLmVudW0nO1xuaW1wb3J0IHtWZXJ0aWNhbEFsaWdufSBmcm9tICcuLi8uLi8uLi9jb21tb24vZW51bS92ZXJ0aWNhbC1hbGlnbi5lbnVtJztcbmltcG9ydCB7QWxpZ259IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9lbnVtL2FsaWduLmVudW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0ZXRhLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1RhYmxlU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50PFQ+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGRhdGE6IFRbXSA9IFtdO1xuICBASW5wdXQoKSBjb2x1bW5zOiBUYWJsZUNvbHVtbltdID0gW107XG4gIEBJbnB1dCgpIGRpY3Q6IElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPjtcbiAgQElucHV0KCkgZmlsdGVyT3B0aW9uczogSURpY3Rpb25hcnk8SUlkTmFtZTxhbnk+W10+O1xuXG4gIEBJbnB1dCgpXG4gIHNldCBzdGF0ZShzdGF0ZTogRmlsdGVyU3RhdGUpIHtcbiAgICB0aGlzLl9zdGF0ZSA9IHN0YXRlO1xuICB9XG5cbiAgQElucHV0KCkgY29va2llTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSB2aXJ0dWFsOiBib29sZWFuO1xuICBASW5wdXQoKSBkZXRhaWxDb21wb25lbnQ6IFR5cGU8RGV0YWlsQ29tcG9uZW50QmFzZTxUPj47XG4gIEBJbnB1dCgpIGFjdGl2ZVJvdzogVDtcbiAgQElucHV0KCkgc2VsZWN0ZWRSb3dzOiBUW107XG4gIEBJbnB1dCgpIHNlbGVjdFR5cGU6IFNlbGVjdFR5cGUgPSBTZWxlY3RUeXBlLm1vdXNlO1xuICBASW5wdXQoKSBhZ2dyZWdhdGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHRyYWNrUm93OiAoaW5kZXg6IG51bWJlciwgcm93OiBUKSA9PiBhbnkgPSAoaW5kZXg6IG51bWJlciwgcm93OiBUKSA9PiB7XG4gICAgaWYgKHJvd1snaWQnXSkge1xuICAgICAgcmV0dXJuIHJvd1snaWQnXTtcbiAgICB9XG4gICAgcmV0dXJuIGluZGV4O1xuICB9O1xuICBASW5wdXQoKSB0cmFja0NvbHVtbnM6IChpbmRleDogbnVtYmVyLCBjb2x1bW46IFRhYmxlQ29sdW1uKSA9PiBhbnkgPSAoaW5kZXg6IG51bWJlciwgY29sdW1uOiBUYWJsZUNvbHVtbikgPT4ge1xuICAgIHJldHVybiBjb2x1bW4ubmFtZTtcbiAgfTtcbiAgQElucHV0KCkgZWRpdFR5cGU6IEVkaXRUeXBlID0gRWRpdFR5cGUuY2VsbDtcbiAgQElucHV0KCkgZWRpdEV2ZW50OiBFZGl0RXZlbnQgPSBFZGl0RXZlbnQuZG91YmxlQ2xpY2s7XG4gIEBJbnB1dCgpIHJvd0VkaXRhYmxlOiBib29sZWFuIHwgKChyb3c6IFQpID0+IGJvb2xlYW4pO1xuICBASW5wdXQoKSByb3dDbGFzczogKHJvdzogVCwgaW5kZXg/OiBudW1iZXIpID0+IHN0cmluZztcblxuICBASW5wdXQoKSBzZXQgc2Nyb2xsVG9JbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5fc3ZjLnNjcm9sbFRvSW5kZXgoaW5kZXgpO1xuICB9XG5cbiAgQElucHV0KCkgc2hvd0hlYWRDZWxsTWVudSA9IHRydWU7XG4gIEBJbnB1dCgpIGNvbnRleHRNZW51OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBjb250ZXh0TWVudU9wZW46IGJvb2xlYW47XG4gIEBPdXRwdXQoKSBjb250ZXh0TWVudU9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHN0YXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RmlsdGVyU3RhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJTdGF0ZT4oKTtcbiAgQE91dHB1dCgpIGJvZHlMZWZ0ID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuICBAT3V0cHV0KCkgYWN0aXZlUm93Q2hhbmdlOiBFdmVudEVtaXR0ZXI8VD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZFJvd3NDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUW10+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjZWxsQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPElDZWxsSW5zdGFuY2VFdmVudDxUPj4oKTtcbiAgQE91dHB1dCgpIGNlbGxEb3VibGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SUNlbGxJbnN0YW5jZUV2ZW50PFQ+PigpO1xuICBAT3V0cHV0KCkgY2VsbEZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxJQ2VsbEluc3RhbmNlRXZlbnQ8VD4+KCk7XG4gIEBPdXRwdXQoKSBjZWxsS2V5RG93biA9IG5ldyBFdmVudEVtaXR0ZXI8SUNlbGxJbnN0YW5jZUV2ZW50PFQ+PigpO1xuICBAT3V0cHV0KCkgcm93TGVmdCA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcbiAgQE91dHB1dCgpIHJvd0VkaXRTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8SUNlbGxJbnN0YW5jZTxUPj4oKTtcbiAgQE91dHB1dCgpIHJvd0VkaXRFbmQgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIEBPdXRwdXQoKSBjZWxsRWRpdFN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxJQ2VsbEluc3RhbmNlPFQ+PigpO1xuICBAT3V0cHV0KCkgY2VsbEVkaXRFbmQgPSBuZXcgRXZlbnRFbWl0dGVyPElDZWxsSW5zdGFuY2U8VD4+KCk7XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8SUNlbGxJbnN0YW5jZTxUPj4oKTtcbiAgQE91dHB1dCgpIHRhYmxlU2VydmljZSA9IG5ldyBFdmVudEVtaXR0ZXI8VGFibGVTZXJ2aWNlPFQ+PigpO1xuICBAVmlld0NoaWxkKCdjb250ZXh0TWVudScsIHtzdGF0aWM6IHRydWV9KSBtZW51OiBFbGVtZW50UmVmO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRhYmxlJykgcHJpdmF0ZSByZWFkb25seSB0YWJsZUNsYXNzID0gdHJ1ZTtcblxuICBzZWxlY3RlZFJvd3NMaXN0OiBUW107XG4gIGNvbnRleHRNZW51Um93OiBUO1xuICB2ZXJ0aWNhbEFsaWduID0gVmVydGljYWxBbGlnbjtcbiAgYWxpZ24gPSBBbGlnbjtcbiAgcHJpdmF0ZSBfYWxpdmUgPSB0cnVlO1xuICBwcml2YXRlIF9oZWFkRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX3N0YXRlOiBGaWx0ZXJTdGF0ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zdmM6IFRhYmxlU2VydmljZTxUPiwgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX3N2Yy5zdGF0ZVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpLFxuICAgICAgICBmaWx0ZXIoKHN0YXRlKSA9PiBzdGF0ZSAhPT0gdGhpcy5fc3RhdGUpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChzdGF0ZTogRmlsdGVyU3RhdGUpID0+IHRoaXMuc3RhdGVDaGFuZ2UubmV4dChzdGF0ZSkpO1xuXG4gICAgdGhpcy5fc3ZjLmVkaXRDZWxsU3RhcnRcbiAgICAgIC5waXBlKHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZSgoaXRlbTogSUNlbGxFdmVudCkgPT4gdGhpcy5jZWxsRWRpdFN0YXJ0LmVtaXQodGhpcy5fc3ZjLmdldENlbGxJbnN0YW5jZShpdGVtKSkpO1xuXG4gICAgdGhpcy5fc3ZjLmVkaXRDZWxsU3RvcFxuICAgICAgLnBpcGUodGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKChpdGVtOiBJQ2VsbENvb3JkaW5hdGVzKSA9PiB0aGlzLmNlbGxFZGl0RW5kLmVtaXQodGhpcy5fc3ZjLmdldENlbGxJbnN0YW5jZShpdGVtKSkpO1xuXG4gICAgdGhpcy5fc3ZjLmVkaXRSb3dTdGFydFxuICAgICAgLnBpcGUodGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKChpdGVtOiBJQ2VsbEV2ZW50KSA9PlxuICAgICAgICB0aGlzLnJvd0VkaXRTdGFydC5lbWl0KHRoaXMuX3N2Yy5nZXRDZWxsSW5zdGFuY2UoaXRlbSkpXG4gICAgICApO1xuXG4gICAgdGhpcy5fc3ZjLmVkaXRSb3dTdG9wXG4gICAgICAucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGl0ZW06IElDZWxsQ29vcmRpbmF0ZXMpID0+XG4gICAgICAgIHRoaXMucm93RWRpdEVuZC5lbWl0KHRoaXMuX3N2Yy5nZXRSb3dCeUluZGV4KGl0ZW0/LnJvdykpXG4gICAgICApO1xuXG4gICAgdGhpcy5fc3ZjLnNlbGVjdGVkUm93c1xuICAgICAgLnBpcGUodGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKChpdGVtczogVFtdKSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzTGlzdCA9IGl0ZW1zO1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm93c0NoYW5nZS5lbWl0KGl0ZW1zKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fc3ZjLmFjdGl2ZVJvd1xuICAgICAgLnBpcGUodGFrZVdoaWxlKChfKSA9PiB0aGlzLl9hbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKChpdGVtOiBUKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aXZlUm93ID0gaXRlbTtcbiAgICAgICAgdGhpcy5hY3RpdmVSb3dDaGFuZ2UuZW1pdChpdGVtKVxuICAgICAgfSk7XG5cbiAgICB0aGlzLl9zdmMudmFsdWVDaGFuZ2VkXG4gICAgICAucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNvb3JkaW5hdGVzOiBJQ2VsbENvb3JkaW5hdGVzKSA9PiB7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLl9zdmMuZ2V0Q2VsbEluc3RhbmNlKGNvb3JkaW5hdGVzKSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSkgaGFuZGxlQ2xpY2tPdXRzaWRlQW55Um93KFxuICAgIGV2ZW50OiBNb3VzZUV2ZW50XG4gICkge1xuICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gdGhpcy5nZXRDb29yZGluYXRlcyhldmVudCk7XG4gICAgY29uc3Qgcm93ID0gdGhpcy5nZXRSb3coZXZlbnQpO1xuICAgIGNvbnN0IGV2ZW50SXNPblJvdyA9IHRoaXMuZXZlbnRJc09uUm93KGV2ZW50KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChjb29yZGluYXRlcykge1xuICAgICAgICB0aGlzLmNlbGxDbGljay5lbWl0KHtcbiAgICAgICAgICAuLi50aGlzLl9zdmMuZ2V0Q2VsbEluc3RhbmNlKGNvb3JkaW5hdGVzKSxcbiAgICAgICAgICBldmVudFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuZWRpdEV2ZW50ID09PSBFZGl0RXZlbnQuY2xpY2spIHtcbiAgICAgICAgICB0aGlzLnN0YXJ0RWRpdFJvd09yQ2VsbChjb29yZGluYXRlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMuX3N2Yy5jdXJyZW50RWRpdENlbGwgJiYgKGNvb3JkaW5hdGVzLnJvdyAhPT0gdGhpcy5fc3ZjLmN1cnJlbnRFZGl0Q2VsbC5yb3cgfHwgY29vcmRpbmF0ZXMuY29sdW1uICE9PSB0aGlzLl9zdmMuY3VycmVudEVkaXRDZWxsLmNvbHVtbikpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRFZGl0Um93T3JDZWxsKG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJvdykge1xuICAgICAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgICAgIHRoaXMuX3N2Yy5zZWxlY3RPckRlc2VsZWN0Um93KHJvdyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICB0aGlzLl9zdmMuc2VsZWN0UmFuZ2Uocm93KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9zdmMuc2VsZWN0Um93cyhbcm93XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghZXZlbnRJc09uUm93ICYmICFldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIGlmICh0aGlzLmVkaXRUeXBlID09PSBFZGl0VHlwZS5yb3cpIHtcbiAgICAgICAgICB0aGlzLl9zdmMuc3RhcnRFZGl0Um93KG51bGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX3N2Yy5zdGFydEVkaXRDZWxsKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1c2luJywgWyckZXZlbnQnXSkgZm9jdXNJbihldmVudDogYW55KSB7XG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSB0aGlzLmdldENvb3JkaW5hdGVzKGV2ZW50KTtcbiAgICBpZiAoY29vcmRpbmF0ZXMpIHtcbiAgICAgIHRoaXMuY2VsbEZvY3VzLmVtaXQoe1xuICAgICAgICAuLi50aGlzLl9zdmMuZ2V0Q2VsbEluc3RhbmNlKGNvb3JkaW5hdGVzKSxcbiAgICAgICAgZXZlbnRcbiAgICAgIH0pO1xuICAgICAgaWYgKHRoaXMuZWRpdEV2ZW50ID09PSBFZGl0RXZlbnQuZm9jdXMpIHtcbiAgICAgICAgdGhpcy5zdGFydEVkaXRSb3dPckNlbGwoY29vcmRpbmF0ZXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RibGNsaWNrJywgWyckZXZlbnQnXSlcbiAgZGJsY2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCBjb29yZGluYXRlcyA9IHRoaXMuZ2V0Q29vcmRpbmF0ZXMoZXZlbnQpO1xuICAgIGlmIChjb29yZGluYXRlcykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2VsbERvdWJsZUNsaWNrLmVtaXQoe1xuICAgICAgICAgIC4uLnRoaXMuX3N2Yy5nZXRDZWxsSW5zdGFuY2UoY29vcmRpbmF0ZXMpLFxuICAgICAgICAgIGV2ZW50XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5lZGl0RXZlbnQgPT09IEVkaXRFdmVudC5kb3VibGVDbGljaykge1xuICAgICAgICAgIHRoaXMuc3RhcnRFZGl0Um93T3JDZWxsKGNvb3JkaW5hdGVzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuY3RybEtleSkge1xuICAgICAgaWYgKGV2ZW50LmNvZGUgPT09ICdLZXlBJykge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLl9zdmMuc2VsZWN0QWxsKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICB0aGlzLl9zdmMuZGVzZWxlY3RBbGwoKTtcbiAgICAgIGlmICh0aGlzLmVkaXRUeXBlID09PSBFZGl0VHlwZS5yb3cpIHtcbiAgICAgICAgdGhpcy5fc3ZjLnN0YXJ0RWRpdFJvdyhudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3N2Yy5zdGFydEVkaXRDZWxsKG51bGwpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBjb29yZGluYXRlcyA9IHRoaXMuZ2V0Q29vcmRpbmF0ZXMoZXZlbnQpO1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgIGlmICh0aGlzLmVkaXRUeXBlID09PSBFZGl0VHlwZS5yb3cpIHtcbiAgICAgICAgdGhpcy5fc3ZjLnN0YXJ0RWRpdFJvdyhudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLl9zdmMuY3VycmVudEVkaXRDZWxsKSB7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5fc3ZjLmdldE5leHRSb3dDZWxsKGNvb3JkaW5hdGVzKTtcbiAgICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0RWRpdFJvd09yQ2VsbCh7XG4gICAgICAgICAgICAgIHJvdzogdGFyZ2V0LnJvdyxcbiAgICAgICAgICAgICAgY29sdW1uOiB0YXJnZXQuY29sdW1uLFxuICAgICAgICAgICAgICBldmVudDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc3ZjLnN0YXJ0RWRpdENlbGwobnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjb29yZGluYXRlcykge1xuICAgICAgdGhpcy5jZWxsS2V5RG93bi5lbWl0KHtcbiAgICAgICAgLi4udGhpcy5fc3ZjLmdldENlbGxJbnN0YW5jZShjb29yZGluYXRlcyksXG4gICAgICAgIGV2ZW50XG4gICAgICB9KTtcbiAgICAgIGlmIChldmVudC5rZXkgJiYgKGV2ZW50LmtleS5sZW5ndGggPT09IDEgfHwgZXZlbnQua2V5ID09PSAnRGVsZXRlJykpIHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5fc3ZjLmdldENvbHVtbkJ5TmFtZShjb29yZGluYXRlcy5jb2x1bW4pO1xuICAgICAgICBpZiAoY29sdW1uLmZpbHRlclR5cGUgIT09IEZpbHRlclR5cGUubnVtYmVyIHx8IGlzRmluaXRlKGV2ZW50LmtleSBhcyBhbnkpKSB7XG4gICAgICAgICAgdGhpcy5zdGFydEVkaXRSb3dPckNlbGwoe1xuICAgICAgICAgICAgcm93OiBjb29yZGluYXRlcy5yb3csXG4gICAgICAgICAgICBjb2x1bW46IGNvb3JkaW5hdGVzLmNvbHVtbixcbiAgICAgICAgICAgIGV2ZW50OiBldmVudFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnVGFiJyAmJiB0aGlzLl9zdmMuY3VycmVudEVkaXRDZWxsKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGxldCB0YXJnZXQgPSB0aGlzLl9zdmMuZ2V0TmV4dEVkaXRhYmxlQ2VsbChjb29yZGluYXRlcyk7XG4gICAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgIHRhcmdldCA9IHRoaXMuX3N2Yy5nZXRQcmV2aW91c0VkaXRhYmxlQ2VsbChjb29yZGluYXRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgIHRoaXMuc3RhcnRFZGl0Um93T3JDZWxsKHtcbiAgICAgICAgICAgIHJvdzogdGFyZ2V0LnJvdyxcbiAgICAgICAgICAgIGNvbHVtbjogdGFyZ2V0LmNvbHVtbixcbiAgICAgICAgICAgIGV2ZW50OiB1bmRlZmluZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLl9zdmMuY3VycmVudEVkaXRDZWxsKSB7XG4gICAgICAgIGxldCB0YXJnZXQ7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgICAgIHRhcmdldCA9IHRoaXMuX3N2Yy5nZXROZXh0Q2VsbChjb29yZGluYXRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCcpIHtcbiAgICAgICAgICB0YXJnZXQgPSB0aGlzLl9zdmMuZ2V0UHJldmlvdXNDZWxsKGNvb3JkaW5hdGVzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgICAgICB0YXJnZXQgPSB0aGlzLl9zdmMuZ2V0UHJldmlvdXNSb3dDZWxsKGNvb3JkaW5hdGVzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgIHRhcmdldCA9IHRoaXMuX3N2Yy5nZXROZXh0Um93Q2VsbChjb29yZGluYXRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZ2V0Q2VsbEVsZW1lbnQodGFyZ2V0KTtcbiAgICAgICAgICBlbGVtZW50Py5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSkgbW91c2Vkb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmJ1dHRvbiA9PT0gMikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdmMucmVzdG9yZVN0YXRlKCk7XG4gICAgdGhpcy5fc3ZjLnJlc3RvcmVIaWRkZW5Db2x1bW5zKCk7XG4gICAgdGhpcy50YWJsZVNlcnZpY2UuZW1pdCh0aGlzLl9zdmMpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2hlYWRFbGVtZW50ID1cbiAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcudGFibGUtaGVhZCcpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnZWRpdFR5cGUnKSkge1xuICAgICAgdGhpcy5fc3ZjLmVkaXRUeXBlID0gdGhpcy5lZGl0VHlwZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ3NlbGVjdFR5cGUnKSkge1xuICAgICAgdGhpcy5fc3ZjLnNlbGVjdFR5cGUgPSB0aGlzLnNlbGVjdFR5cGU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdzZWxlY3RlZFJvd3MnKSkge1xuICAgICAgdGhpcy5fc3ZjLnNlbGVjdFJvd3ModGhpcy5zZWxlY3RlZFJvd3MpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgncm93RWRpdGFibGUnKSkge1xuICAgICAgdGhpcy5fc3ZjLnJvd0VkaXRhYmxlID0gdGhpcy5yb3dFZGl0YWJsZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2Nvb2tpZU5hbWUnKSkge1xuICAgICAgdGhpcy5fc3ZjLnNldENvb2tpZU5hbWUodGhpcy5jb29raWVOYW1lKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2NvbHVtbnMnKSkge1xuICAgICAgaWYgKHRoaXMuY29sdW1ucyAhPT0gbnVsbCAmJiB0aGlzLmNvbHVtbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9zdmMuc2V0Q29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnZGF0YScpKSB7XG4gICAgICB0aGlzLl9zdmMuc2V0RGF0YSh0aGlzLmRhdGEpO1xuICAgICAgdGhpcy5fc3ZjLnNlbGVjdFJvd3ModGhpcy5kYXRhPy5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFJvd3M/LnNvbWUoKHNlbGVjdGVkUm93KSA9PlxuICAgICAgICAgIHRoaXMudHJhY2tSb3codGhpcy5fc3ZjLmdldFJvd0luZGV4KHNlbGVjdGVkUm93KSwgc2VsZWN0ZWRSb3cpID09PSB0aGlzLnRyYWNrUm93KHRoaXMuX3N2Yy5nZXRSb3dJbmRleChyb3cpLCByb3cpKTtcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2RpY3QnKSkge1xuICAgICAgdGhpcy5fc3ZjLnNldERpY3QodGhpcy5kaWN0KTtcbiAgICAgIHRoaXMuX3N2Yy5zZXRGaWx0ZXJPcHRpb25zKHRoaXMuZGljdCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCdmaWx0ZXJPcHRpb25zJykpIHtcbiAgICAgIHRoaXMuX3N2Yy5zZXRGaWx0ZXJPcHRpb25zKHRoaXMuZmlsdGVyT3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KCd0cmFja1JvdycpKSB7XG4gICAgICB0aGlzLl9zdmMudHJhY2tSb3cgPSB0aGlzLnRyYWNrUm93O1xuICAgIH1cbiAgfVxuXG4gIHNldENvbnRleHRNZW51T3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuY29udGV4dE1lbnVPcGVuID0gdmFsdWU7XG4gICAgdGhpcy5jb250ZXh0TWVudU9wZW5DaGFuZ2UuZW1pdCh0aGlzLmNvbnRleHRNZW51T3Blbik7XG4gIH1cblxuICBzZXRDb250ZXh0TWVudVJvdyhldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuY29udGV4dE1lbnVSb3cgPSBudWxsO1xuICAgIGNvbnN0IHJvd0VsZW1lbnQgPSB0aGlzLl9zdmMuZ2V0RXZlbnRSb3coZXZlbnQpO1xuICAgIGlmIChyb3dFbGVtZW50KSB7XG4gICAgICBjb25zdCByb3dJbmRleCA9IHBhcnNlSW50KHJvd0VsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXJvdycpLCAxMCk7XG4gICAgICBpZiAocm93SW5kZXggPj0gMCkge1xuICAgICAgICB0aGlzLmNvbnRleHRNZW51Um93ID0gdGhpcy5fc3ZjLmdldFJvd0J5SW5kZXgocm93SW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRFZGl0Um93T3JDZWxsKGNvb3JkaW5hdGVzOiBJQ2VsbEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZWRpdFR5cGUgPT09IEVkaXRUeXBlLnJvdykge1xuICAgICAgdGhpcy5fc3ZjLnN0YXJ0RWRpdFJvdyhjb29yZGluYXRlcyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmVkaXRUeXBlID09PSBFZGl0VHlwZS5jZWxsKSB7XG4gICAgICB0aGlzLl9zdmMuc3RhcnRFZGl0Q2VsbChjb29yZGluYXRlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDZWxsRWxlbWVudChjb29yZGluYXRlczogSUNlbGxDb29yZGluYXRlcyk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgYHRldGEtY2VsbFtkYXRhLXJvdz1cIiR7Y29vcmRpbmF0ZXMucm93fVwiXVtkYXRhLWNvbHVtbj1cIiR7Y29vcmRpbmF0ZXMuY29sdW1ufVwiXWBcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBldmVudElzT25Sb3coZXZlbnQ6IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgcm93ID0gZXZlbnQuY29tcG9zZWRQYXRoKCkuZmluZCgodGFyZ2V0OiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgcmV0dXJuIHRhcmdldD8uZ2V0QXR0cmlidXRlICYmIHRhcmdldD8uZ2V0QXR0cmlidXRlKCdkYXRhLXJvdycpO1xuICAgIH0pO1xuICAgIHJldHVybiByb3cgJiYgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHJvdyk7XG4gIH1cblxuICBwcml2YXRlIGdldENvb3JkaW5hdGVzKGV2ZW50OiBFdmVudCk6IElDZWxsRXZlbnQgfCBudWxsIHtcbiAgICBpZiAoZXZlbnQuY29tcG9zZWRQYXRoKCkuaW5kZXhPZih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpIDwgMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGNlbGwgPSB0aGlzLl9zdmMuZ2V0RXZlbnRDZWxsKGV2ZW50KTtcbiAgICBpZiAoY2VsbCkge1xuICAgICAgY29uc3Qgcm93SW5kZXggPSBwYXJzZUludChjZWxsLmdldEF0dHJpYnV0ZSgnZGF0YS1yb3cnKSwgMTApO1xuICAgICAgY29uc3QgY29sdW1uTmFtZSA9IGNlbGwuZ2V0QXR0cmlidXRlKCdkYXRhLWNvbHVtbicpO1xuICAgICAgaWYgKHJvd0luZGV4ID49IDAgJiYgY29sdW1uTmFtZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJvdzogcm93SW5kZXgsXG4gICAgICAgICAgY29sdW1uOiBjb2x1bW5OYW1lLFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um93KGV2ZW50OiBFdmVudCk6IFQgfCBudWxsIHtcbiAgICBpZiAoZXZlbnQuY29tcG9zZWRQYXRoKCkuaW5kZXhPZih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpIDwgMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHJvd0VsZW1lbnQgPSB0aGlzLl9zdmMuZ2V0RXZlbnRSb3coZXZlbnQpO1xuICAgIGlmIChyb3dFbGVtZW50KSB7XG4gICAgICBjb25zdCByb3dJbmRleCA9IHBhcnNlSW50KHJvd0VsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXJvdycpLCAxMCk7XG4gICAgICBpZiAocm93SW5kZXggPj0gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3ZjLmdldFJvd0J5SW5kZXgocm93SW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIG9uU2Nyb2xsID0gKGV2ZW50KSA9PiB7XG4gICAgdGhpcy5faGVhZEVsZW1lbnQuc2Nyb2xsTGVmdCA9IGV2ZW50LnRhcmdldC5zY3JvbGxMZWZ0O1xuICB9O1xuXG4gIC8vIHByaXZhdGUgZ2V0U2VsZWN0ZWRUZXh0KCkge1xuICAvLyAgIGxldCB0ZXh0ID0gJyc7XG4gIC8vICAgaWYgKHR5cGVvZiB3aW5kb3cuZ2V0U2VsZWN0aW9uICE9ICd1bmRlZmluZWQnKSB7XG4gIC8vICAgICB0ZXh0ID0gd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCk7XG4gIC8vICAgfVxuICAvLyAgIHJldHVybiB0ZXh0O1xuICAvLyB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29sdW1uIGNvbHVtbl9hdXRvXCI+XG4gIDx0ZXRhLXRhYmxlLWhlYWRcbiAgICBzdHlsZT1cInotaW5kZXg6IDFcIlxuICAgIFtzZWxlY3RUeXBlXT1cInNlbGVjdFR5cGVcIlxuICAgIFtzaG93SGVhZENlbGxNZW51XT1cInNob3dIZWFkQ2VsbE1lbnVcIj48L3RldGEtdGFibGUtaGVhZD5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbiBjb2x1bW5fYXV0byBwb3NpdGlvbi1yZWxhdGl2ZVwiXG4gICAgICAgc3R5bGU9XCJ6LWluZGV4OiAwXCJcbiAgICAgICBbdGV0YUNvbnRleHRNZW51XT1cImNvbnRleHRNZW51XCJcbiAgICAgICBbdmVydGljYWxBbGlnbl09XCJ2ZXJ0aWNhbEFsaWduLmF1dG9cIlxuICAgICAgIFthbGlnbl09XCJhbGlnbi5hdXRvXCJcbiAgICAgICBbYXBwZW5kVG9Cb2R5XT1cInRydWVcIlxuICAgICAgIFtkYXRhXT1cImNvbnRleHRNZW51Um93XCJcbiAgICAgICBbb3Blbl09XCJjb250ZXh0TWVudU9wZW5cIlxuICAgICAgIChvcGVuQ2hhbmdlKT1cInNldENvbnRleHRNZW51T3BlbigkZXZlbnQpXCI+XG4gICAgPHRldGEtdGFibGUtYm9keVxuICAgICAgKGNvbnRleHRtZW51KT1cInNldENvbnRleHRNZW51Um93KCRldmVudClcIlxuICAgICAgKHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQpXCJcbiAgICAgIFthZ2dyZWdhdGVdPVwiYWdncmVnYXRlXCJcbiAgICAgIFt2aXJ0dWFsXT1cInZpcnR1YWxcIlxuICAgICAgW2FjdGl2ZVJvd109XCJhY3RpdmVSb3dcIlxuICAgICAgW3RyYWNrUm93XT1cInRyYWNrUm93XCJcbiAgICAgIFt0cmFja0NvbHVtbnNdPVwidHJhY2tDb2x1bW5zXCJcbiAgICAgIFtzZWxlY3RlZFJvd3NdPVwic2VsZWN0ZWRSb3dzTGlzdFwiXG4gICAgICBbYWRkaXRpb25hbENvbXBvbmVudF09XCJkZXRhaWxDb21wb25lbnRcIlxuICAgICAgW3NlbGVjdFR5cGVdPVwic2VsZWN0VHlwZVwiXG4gICAgICBbcm93Q2xhc3NdPVwicm93Q2xhc3NcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L3RldGEtdGFibGUtYm9keT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==