igniteui-angular 13.0.0 → 13.0.1

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 (289) hide show
  1. package/esm2020/lib/accordion/accordion.component.mjs +3 -3
  2. package/esm2020/lib/accordion/accordion.module.mjs +4 -4
  3. package/esm2020/lib/action-strip/action-strip.component.mjs +6 -6
  4. package/esm2020/lib/action-strip/action-strip.module.mjs +4 -4
  5. package/esm2020/lib/action-strip/grid-actions/grid-action-button.component.mjs +3 -3
  6. package/esm2020/lib/action-strip/grid-actions/grid-actions-base.directive.mjs +3 -3
  7. package/esm2020/lib/action-strip/grid-actions/grid-editing-actions.component.mjs +3 -3
  8. package/esm2020/lib/action-strip/grid-actions/grid-pinning-actions.component.mjs +3 -3
  9. package/esm2020/lib/avatar/avatar.component.mjs +7 -7
  10. package/esm2020/lib/badge/badge.component.mjs +7 -7
  11. package/esm2020/lib/banner/banner.component.mjs +7 -7
  12. package/esm2020/lib/banner/banner.directives.mjs +3 -3
  13. package/esm2020/lib/buttonGroup/buttonGroup.component.mjs +7 -7
  14. package/esm2020/lib/calendar/calendar-base.mjs +3 -3
  15. package/esm2020/lib/calendar/calendar.component.mjs +5 -5
  16. package/esm2020/lib/calendar/calendar.directives.mjs +15 -15
  17. package/esm2020/lib/calendar/calendar.module.mjs +4 -4
  18. package/esm2020/lib/calendar/days-view/day-item.component.mjs +3 -3
  19. package/esm2020/lib/calendar/days-view/days-view.component.mjs +3 -3
  20. package/esm2020/lib/calendar/days-view/daysview-navigation.service.mjs +3 -3
  21. package/esm2020/lib/calendar/month-picker/month-picker.component.mjs +3 -3
  22. package/esm2020/lib/calendar/month-picker-base.mjs +3 -3
  23. package/esm2020/lib/calendar/months-view/months-view.component.mjs +3 -3
  24. package/esm2020/lib/calendar/months-view.pipe.mjs +6 -6
  25. package/esm2020/lib/calendar/years-view/years-view.component.mjs +6 -6
  26. package/esm2020/lib/card/card.component.mjs +31 -31
  27. package/esm2020/lib/carousel/carousel.component.mjs +10 -10
  28. package/esm2020/lib/carousel/carousel.directives.mjs +9 -9
  29. package/esm2020/lib/carousel/slide.component.mjs +3 -3
  30. package/esm2020/lib/checkbox/checkbox.component.mjs +10 -10
  31. package/esm2020/lib/chips/chip.component.mjs +3 -3
  32. package/esm2020/lib/chips/chips-area.component.mjs +3 -3
  33. package/esm2020/lib/chips/chips.module.mjs +4 -4
  34. package/esm2020/lib/combo/combo-add-item.component.mjs +3 -3
  35. package/esm2020/lib/combo/combo-dropdown.component.mjs +3 -3
  36. package/esm2020/lib/combo/combo-item.component.mjs +3 -3
  37. package/esm2020/lib/combo/combo.api.mjs +3 -3
  38. package/esm2020/lib/combo/combo.common.mjs +3 -3
  39. package/esm2020/lib/combo/combo.component.mjs +7 -7
  40. package/esm2020/lib/combo/combo.directives.mjs +24 -24
  41. package/esm2020/lib/combo/combo.pipes.mjs +6 -6
  42. package/esm2020/lib/core/displayDensity.mjs +7 -7
  43. package/esm2020/lib/core/navigation/directives.mjs +10 -10
  44. package/esm2020/lib/core/navigation/nav.service.mjs +3 -3
  45. package/esm2020/lib/core/selection.mjs +3 -3
  46. package/esm2020/lib/core/touch.mjs +3 -3
  47. package/esm2020/lib/core/utils.mjs +3 -3
  48. package/esm2020/lib/date-common/calendar-container/calendar-container.component.mjs +7 -7
  49. package/esm2020/lib/date-common/picker-base.directive.mjs +3 -3
  50. package/esm2020/lib/date-common/picker-icons.common.mjs +13 -13
  51. package/esm2020/lib/date-picker/date-picker.component.mjs +3 -3
  52. package/esm2020/lib/date-picker/date-picker.module.mjs +4 -4
  53. package/esm2020/lib/date-range-picker/date-range-picker-inputs.common.mjs +15 -15
  54. package/esm2020/lib/date-range-picker/date-range-picker.component.mjs +3 -3
  55. package/esm2020/lib/date-range-picker/date-range-picker.module.mjs +4 -4
  56. package/esm2020/lib/dialog/dialog.component.mjs +7 -7
  57. package/esm2020/lib/dialog/dialog.directives.mjs +6 -6
  58. package/esm2020/lib/directives/autocomplete/autocomplete.directive.mjs +7 -7
  59. package/esm2020/lib/directives/button/button.directive.mjs +7 -7
  60. package/esm2020/lib/directives/date-time-editor/date-time-editor.directive.mjs +7 -7
  61. package/esm2020/lib/directives/divider/divider.directive.mjs +7 -7
  62. package/esm2020/lib/directives/drag-drop/drag-drop.directive.mjs +16 -16
  63. package/esm2020/lib/directives/filter/filter.directive.mjs +10 -10
  64. package/esm2020/lib/directives/focus/focus.directive.mjs +7 -7
  65. package/esm2020/lib/directives/focus-trap/focus-trap.directive.mjs +7 -7
  66. package/esm2020/lib/directives/for-of/base.helper.component.mjs +3 -3
  67. package/esm2020/lib/directives/for-of/display.container.mjs +3 -3
  68. package/esm2020/lib/directives/for-of/for_of.directive.mjs +10 -10
  69. package/esm2020/lib/directives/for-of/for_of.sync.service.mjs +6 -6
  70. package/esm2020/lib/directives/for-of/horizontal.virtual.helper.component.mjs +3 -3
  71. package/esm2020/lib/directives/for-of/virtual.helper.component.mjs +3 -3
  72. package/esm2020/lib/directives/hint/hint.directive.mjs +3 -3
  73. package/esm2020/lib/directives/input/input.directive.mjs +3 -3
  74. package/esm2020/lib/directives/label/label.directive.mjs +3 -3
  75. package/esm2020/lib/directives/layout/layout.directive.mjs +10 -10
  76. package/esm2020/lib/directives/mask/mask-parsing.service.mjs +3 -3
  77. package/esm2020/lib/directives/mask/mask.directive.mjs +7 -7
  78. package/esm2020/lib/directives/notification/notifications.directive.mjs +3 -3
  79. package/esm2020/lib/directives/prefix/prefix.directive.mjs +7 -7
  80. package/esm2020/lib/directives/radio/radio-group.directive.mjs +7 -7
  81. package/esm2020/lib/directives/ripple/ripple.directive.mjs +7 -7
  82. package/esm2020/lib/directives/scroll-inertia/scroll_inertia.directive.mjs +7 -7
  83. package/esm2020/lib/directives/suffix/suffix.directive.mjs +7 -7
  84. package/esm2020/lib/directives/template-outlet/template_outlet.directive.mjs +7 -7
  85. package/esm2020/lib/directives/text-highlight/text-highlight.directive.mjs +7 -7
  86. package/esm2020/lib/directives/text-selection/text-selection.directive.mjs +7 -7
  87. package/esm2020/lib/directives/toggle/toggle.directive.mjs +13 -13
  88. package/esm2020/lib/directives/tooltip/tooltip.directive.mjs +10 -10
  89. package/esm2020/lib/drop-down/drop-down-group.component.mjs +3 -3
  90. package/esm2020/lib/drop-down/drop-down-item.base.mjs +3 -3
  91. package/esm2020/lib/drop-down/drop-down-item.component.mjs +3 -3
  92. package/esm2020/lib/drop-down/drop-down-navigation.directive.mjs +3 -3
  93. package/esm2020/lib/drop-down/drop-down.base.mjs +3 -3
  94. package/esm2020/lib/drop-down/drop-down.component.mjs +4 -4
  95. package/esm2020/lib/drop-down/public_api.mjs +4 -4
  96. package/esm2020/lib/expansion-panel/expansion-panel-body.component.mjs +3 -3
  97. package/esm2020/lib/expansion-panel/expansion-panel-header.component.mjs +3 -3
  98. package/esm2020/lib/expansion-panel/expansion-panel.component.mjs +3 -3
  99. package/esm2020/lib/expansion-panel/expansion-panel.directives.mjs +9 -9
  100. package/esm2020/lib/expansion-panel/expansion-panel.module.mjs +4 -4
  101. package/esm2020/lib/expansion-panel/toggle-animation-component.mjs +3 -3
  102. package/esm2020/lib/grids/api.service.mjs +3 -3
  103. package/esm2020/lib/grids/cell.component.mjs +3 -3
  104. package/esm2020/lib/grids/column-actions/column-actions-base.directive.mjs +3 -3
  105. package/esm2020/lib/grids/column-actions/column-actions.component.mjs +12 -12
  106. package/esm2020/lib/grids/column-actions/column-actions.module.mjs +4 -4
  107. package/esm2020/lib/grids/column-actions/column-hiding.directive.mjs +3 -3
  108. package/esm2020/lib/grids/column-actions/column-pinning.directive.mjs +3 -3
  109. package/esm2020/lib/grids/columns/column-group.component.mjs +3 -3
  110. package/esm2020/lib/grids/columns/column-layout.component.mjs +3 -3
  111. package/esm2020/lib/grids/columns/column.component.mjs +3 -3
  112. package/esm2020/lib/grids/columns/column.module.mjs +4 -4
  113. package/esm2020/lib/grids/columns/templates.directive.mjs +18 -18
  114. package/esm2020/lib/grids/common/crud.service.mjs +3 -3
  115. package/esm2020/lib/grids/common/grid-pipes.module.mjs +4 -4
  116. package/esm2020/lib/grids/common/pipes.mjs +51 -51
  117. package/esm2020/lib/grids/common/shared.module.mjs +4 -4
  118. package/esm2020/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.mjs +3 -3
  119. package/esm2020/lib/grids/filtering/base/filtering.module.mjs +4 -4
  120. package/esm2020/lib/grids/filtering/base/grid-filtering-cell.component.mjs +3 -3
  121. package/esm2020/lib/grids/filtering/base/grid-filtering-row.component.mjs +3 -3
  122. package/esm2020/lib/grids/filtering/excel-style/base-filtering.component.mjs +4 -4
  123. package/esm2020/lib/grids/filtering/excel-style/excel-style-clear-filters.component.mjs +3 -3
  124. package/esm2020/lib/grids/filtering/excel-style/excel-style-conditional-filter.component.mjs +3 -3
  125. package/esm2020/lib/grids/filtering/excel-style/excel-style-custom-dialog.component.mjs +3 -3
  126. package/esm2020/lib/grids/filtering/excel-style/excel-style-date-expression.component.mjs +3 -3
  127. package/esm2020/lib/grids/filtering/excel-style/excel-style-default-expression.component.mjs +3 -3
  128. package/esm2020/lib/grids/filtering/excel-style/excel-style-header.component.mjs +3 -3
  129. package/esm2020/lib/grids/filtering/excel-style/excel-style-hiding.component.mjs +3 -3
  130. package/esm2020/lib/grids/filtering/excel-style/excel-style-moving.component.mjs +3 -3
  131. package/esm2020/lib/grids/filtering/excel-style/excel-style-pinning.component.mjs +3 -3
  132. package/esm2020/lib/grids/filtering/excel-style/excel-style-search.component.mjs +6 -6
  133. package/esm2020/lib/grids/filtering/excel-style/excel-style-selecting.component.mjs +3 -3
  134. package/esm2020/lib/grids/filtering/excel-style/excel-style-sorting.component.mjs +3 -3
  135. package/esm2020/lib/grids/filtering/excel-style/grid.excel-style-filtering.component.mjs +9 -9
  136. package/esm2020/lib/grids/filtering/excel-style/grid.excel-style-filtering.module.mjs +4 -4
  137. package/esm2020/lib/grids/filtering/grid-filtering.service.mjs +3 -3
  138. package/esm2020/lib/grids/grid/expandable-cell.component.mjs +3 -3
  139. package/esm2020/lib/grids/grid/grid-api.service.mjs +3 -3
  140. package/esm2020/lib/grids/grid/grid-row.component.mjs +3 -3
  141. package/esm2020/lib/grids/grid/grid.component.mjs +3 -3
  142. package/esm2020/lib/grids/grid/grid.details.pipe.mjs +3 -3
  143. package/esm2020/lib/grids/grid/grid.directives.mjs +33 -33
  144. package/esm2020/lib/grids/grid/grid.module.mjs +4 -4
  145. package/esm2020/lib/grids/grid/grid.pipes.mjs +12 -12
  146. package/esm2020/lib/grids/grid/grid.summary.pipe.mjs +3 -3
  147. package/esm2020/lib/grids/grid/groupby-row.component.mjs +3 -3
  148. package/esm2020/lib/grids/grid-base.directive.mjs +4 -4
  149. package/esm2020/lib/grids/grid-common.module.mjs +4 -4
  150. package/esm2020/lib/grids/grid-footer/grid-footer.component.mjs +3 -3
  151. package/esm2020/lib/grids/grid-mrl-navigation.service.mjs +3 -3
  152. package/esm2020/lib/grids/grid-navigation.service.mjs +3 -3
  153. package/esm2020/lib/grids/grid.common.mjs +3 -3
  154. package/esm2020/lib/grids/grid.rowEdit.directive.mjs +15 -15
  155. package/esm2020/lib/grids/grouping/grid-group-by-area.component.mjs +3 -3
  156. package/esm2020/lib/grids/grouping/group-by-area.directive.mjs +6 -6
  157. package/esm2020/lib/grids/grouping/tree-grid-group-by-area.component.mjs +3 -3
  158. package/esm2020/lib/grids/headers/grid-header-group.component.mjs +4 -4
  159. package/esm2020/lib/grids/headers/grid-header-row.component.mjs +3 -3
  160. package/esm2020/lib/grids/headers/grid-header.component.mjs +3 -3
  161. package/esm2020/lib/grids/headers/headers.module.mjs +4 -4
  162. package/esm2020/lib/grids/headers/pipes.mjs +9 -9
  163. package/esm2020/lib/grids/hierarchical-grid/hierarchical-cell.component.mjs +3 -3
  164. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid-api.service.mjs +3 -3
  165. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.mjs +3 -3
  166. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.mjs +3 -3
  167. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +6 -6
  168. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid.module.mjs +4 -4
  169. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid.pipes.mjs +6 -6
  170. package/esm2020/lib/grids/hierarchical-grid/hierarchical-row.component.mjs +4 -4
  171. package/esm2020/lib/grids/hierarchical-grid/row-island-api.service.mjs +3 -3
  172. package/esm2020/lib/grids/hierarchical-grid/row-island.component.mjs +3 -3
  173. package/esm2020/lib/grids/moving/moving.drag.directive.mjs +3 -3
  174. package/esm2020/lib/grids/moving/moving.drop.directive.mjs +3 -3
  175. package/esm2020/lib/grids/moving/moving.module.mjs +4 -4
  176. package/esm2020/lib/grids/moving/moving.service.mjs +3 -3
  177. package/esm2020/lib/grids/resizing/resize-handle.directive.mjs +3 -3
  178. package/esm2020/lib/grids/resizing/resize.module.mjs +4 -4
  179. package/esm2020/lib/grids/resizing/resizer.component.mjs +3 -3
  180. package/esm2020/lib/grids/resizing/resizer.directive.mjs +3 -3
  181. package/esm2020/lib/grids/resizing/resizing.service.mjs +3 -3
  182. package/esm2020/lib/grids/row-drag.directive.mjs +13 -13
  183. package/esm2020/lib/grids/row.directive.mjs +4 -4
  184. package/esm2020/lib/grids/selection/drag-select.directive.mjs +3 -3
  185. package/esm2020/lib/grids/selection/row-selectors.mjs +9 -9
  186. package/esm2020/lib/grids/selection/selection.module.mjs +4 -4
  187. package/esm2020/lib/grids/selection/selection.service.mjs +3 -3
  188. package/esm2020/lib/grids/state.directive.mjs +7 -7
  189. package/esm2020/lib/grids/summaries/grid-root-summary.pipe.mjs +3 -3
  190. package/esm2020/lib/grids/summaries/grid-summary.service.mjs +3 -3
  191. package/esm2020/lib/grids/summaries/summary-cell.component.mjs +3 -3
  192. package/esm2020/lib/grids/summaries/summary-row.component.mjs +3 -3
  193. package/esm2020/lib/grids/summaries/summary.module.mjs +4 -4
  194. package/esm2020/lib/grids/toolbar/common.mjs +15 -15
  195. package/esm2020/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.mjs +3 -3
  196. package/esm2020/lib/grids/toolbar/grid-toolbar-exporter.component.mjs +3 -3
  197. package/esm2020/lib/grids/toolbar/grid-toolbar-hiding.component.mjs +3 -3
  198. package/esm2020/lib/grids/toolbar/grid-toolbar-pinning.component.mjs +3 -3
  199. package/esm2020/lib/grids/toolbar/grid-toolbar.base.mjs +6 -6
  200. package/esm2020/lib/grids/toolbar/grid-toolbar.component.mjs +3 -3
  201. package/esm2020/lib/grids/toolbar/token.mjs +1 -1
  202. package/esm2020/lib/grids/toolbar/toolbar.module.mjs +4 -4
  203. package/esm2020/lib/grids/tree-grid/tree-cell.component.mjs +3 -3
  204. package/esm2020/lib/grids/tree-grid/tree-grid-api.service.mjs +3 -3
  205. package/esm2020/lib/grids/tree-grid/tree-grid-row.component.mjs +3 -3
  206. package/esm2020/lib/grids/tree-grid/tree-grid-selection.service.mjs +3 -3
  207. package/esm2020/lib/grids/tree-grid/tree-grid.component.mjs +3 -3
  208. package/esm2020/lib/grids/tree-grid/tree-grid.directives.mjs +3 -3
  209. package/esm2020/lib/grids/tree-grid/tree-grid.filtering.pipe.mjs +3 -3
  210. package/esm2020/lib/grids/tree-grid/tree-grid.grouping.pipe.mjs +3 -3
  211. package/esm2020/lib/grids/tree-grid/tree-grid.module.mjs +4 -4
  212. package/esm2020/lib/grids/tree-grid/tree-grid.pipes.mjs +21 -21
  213. package/esm2020/lib/grids/tree-grid/tree-grid.summary.pipe.mjs +3 -3
  214. package/esm2020/lib/icon/icon.component.mjs +3 -3
  215. package/esm2020/lib/icon/icon.service.mjs +13 -7
  216. package/esm2020/lib/icon/public_api.mjs +4 -4
  217. package/esm2020/lib/input-group/input-group.component.mjs +7 -7
  218. package/esm2020/lib/list/list-item.component.mjs +3 -3
  219. package/esm2020/lib/list/list.common.mjs +15 -15
  220. package/esm2020/lib/list/list.component.mjs +23 -23
  221. package/esm2020/lib/navbar/navbar.component.mjs +13 -13
  222. package/esm2020/lib/navigation-drawer/navigation-drawer.component.mjs +3 -3
  223. package/esm2020/lib/navigation-drawer/navigation-drawer.directives.mjs +9 -9
  224. package/esm2020/lib/navigation-drawer/navigation-drawer.module.mjs +4 -4
  225. package/esm2020/lib/paginator/paginator-interfaces.mjs +3 -3
  226. package/esm2020/lib/paginator/paginator.component.mjs +12 -12
  227. package/esm2020/lib/paginator/public_api.mjs +4 -4
  228. package/esm2020/lib/progressbar/progressbar.common.mjs +6 -6
  229. package/esm2020/lib/progressbar/progressbar.component.mjs +13 -13
  230. package/esm2020/lib/radio/radio.component.mjs +3 -3
  231. package/esm2020/lib/select/select-group.component.mjs +3 -3
  232. package/esm2020/lib/select/select-item.component.mjs +3 -3
  233. package/esm2020/lib/select/select-navigation.directive.mjs +3 -3
  234. package/esm2020/lib/select/select.component.mjs +14 -14
  235. package/esm2020/lib/select/select.module.mjs +4 -4
  236. package/esm2020/lib/services/csv/csv-exporter.mjs +3 -3
  237. package/esm2020/lib/services/direction/directionality.mjs +3 -3
  238. package/esm2020/lib/services/excel/excel-exporter.mjs +3 -3
  239. package/esm2020/lib/services/overlay/overlay.mjs +3 -3
  240. package/esm2020/lib/services/overlay/scroll/scroll-strategy.mjs +1 -1
  241. package/esm2020/lib/services/transaction/transaction-factory.service.mjs +6 -6
  242. package/esm2020/lib/simple-combo/simple-combo.component.mjs +14 -11
  243. package/esm2020/lib/slider/label/thumb-label.component.mjs +3 -3
  244. package/esm2020/lib/slider/slider.common.mjs +9 -9
  245. package/esm2020/lib/slider/slider.component.mjs +7 -7
  246. package/esm2020/lib/slider/thumb/thumb-slider.component.mjs +3 -3
  247. package/esm2020/lib/slider/ticks/tick.pipe.mjs +3 -3
  248. package/esm2020/lib/slider/ticks/ticks.component.mjs +3 -3
  249. package/esm2020/lib/snackbar/snackbar.component.mjs +7 -7
  250. package/esm2020/lib/splitter/splitter-pane/splitter-pane.component.mjs +3 -3
  251. package/esm2020/lib/splitter/splitter.component.mjs +6 -6
  252. package/esm2020/lib/splitter/splitter.module.mjs +4 -4
  253. package/esm2020/lib/stepper/step/step.component.mjs +5 -5
  254. package/esm2020/lib/stepper/stepper.component.mjs +7 -7
  255. package/esm2020/lib/stepper/stepper.directive.mjs +21 -21
  256. package/esm2020/lib/stepper/stepper.service.mjs +3 -3
  257. package/esm2020/lib/switch/switch.component.mjs +10 -10
  258. package/esm2020/lib/tabs/bottom-nav/bottom-nav-content.component.mjs +3 -3
  259. package/esm2020/lib/tabs/bottom-nav/bottom-nav-header.component.mjs +3 -3
  260. package/esm2020/lib/tabs/bottom-nav/bottom-nav-item.component.mjs +3 -3
  261. package/esm2020/lib/tabs/bottom-nav/bottom-nav.component.mjs +3 -3
  262. package/esm2020/lib/tabs/bottom-nav/bottom-nav.directives.mjs +6 -6
  263. package/esm2020/lib/tabs/bottom-nav/bottom-nav.module.mjs +4 -4
  264. package/esm2020/lib/tabs/tab-content.directive.mjs +3 -3
  265. package/esm2020/lib/tabs/tab-header.directive.mjs +3 -3
  266. package/esm2020/lib/tabs/tab-item.directive.mjs +3 -3
  267. package/esm2020/lib/tabs/tabs/tab-content.component.mjs +3 -3
  268. package/esm2020/lib/tabs/tabs/tab-header.component.mjs +3 -3
  269. package/esm2020/lib/tabs/tabs/tab-item.component.mjs +3 -3
  270. package/esm2020/lib/tabs/tabs/tabs.component.mjs +3 -3
  271. package/esm2020/lib/tabs/tabs/tabs.directives.mjs +6 -6
  272. package/esm2020/lib/tabs/tabs/tabs.module.mjs +4 -4
  273. package/esm2020/lib/tabs/tabs.directive.mjs +3 -3
  274. package/esm2020/lib/time-picker/time-picker.component.mjs +10 -10
  275. package/esm2020/lib/time-picker/time-picker.directives.mjs +12 -12
  276. package/esm2020/lib/time-picker/time-picker.pipes.mjs +6 -6
  277. package/esm2020/lib/toast/toast.component.mjs +7 -7
  278. package/esm2020/lib/tree/tree-navigation.service.mjs +3 -3
  279. package/esm2020/lib/tree/tree-node/tree-node.component.mjs +6 -6
  280. package/esm2020/lib/tree/tree-selection.service.mjs +3 -3
  281. package/esm2020/lib/tree/tree.component.mjs +13 -13
  282. package/esm2020/lib/tree/tree.service.mjs +3 -3
  283. package/fesm2015/igniteui-angular.mjs +1543 -1533
  284. package/fesm2015/igniteui-angular.mjs.map +1 -1
  285. package/fesm2020/igniteui-angular.mjs +1541 -1533
  286. package/fesm2020/igniteui-angular.mjs.map +1 -1
  287. package/lib/icon/icon.service.d.ts +4 -2
  288. package/package.json +1 -1
  289. package/schematics/tsconfig.tsbuildinfo +1 -1
@@ -783,9 +783,9 @@ export class IgxGridCellComponent {
783
783
  return new IgxGridCell(this.grid, rowID, this.column.field);
784
784
  }
785
785
  }
786
- IgxGridCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridCellComponent, deps: [{ token: i1.IgxGridSelectionService }, { token: IGX_GRID_BASE }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i2.HammerGesturesManager }, { token: i3.PlatformUtil }], target: i0.ɵɵFactoryTarget.Component });
787
- IgxGridCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: IgxGridCellComponent, selector: "igx-grid-cell", inputs: { column: "column", intRow: "intRow", row: "row", rowData: "rowData", cellTemplate: "cellTemplate", pinnedIndicator: "pinnedIndicator", value: "value", formatter: "formatter", visibleColumnIndex: "visibleColumnIndex", cellSelectionMode: "cellSelectionMode", lastSearchInfo: "lastSearchInfo", lastPinned: "lastPinned", firstPinned: "firstPinned", editMode: "editMode", width: "width", active: "active", displayPinnedChip: "displayPinnedChip" }, host: { listeners: { "dblclick": "onDoubleClick($event)", "click": "onClick($event)", "contextmenu": "onContextMenu($event)" }, properties: { "class.igx-grid__td--new": "this.isEmptyAddRowCell", "attr.data-rowIndex": "this.rowIndex", "attr.data-visibleIndex": "this.visibleColumnIndex", "attr.id": "this.attrCellID", "attr.title": "this.title", "class.igx-grid__td--bool-true": "this.booleanClass", "class.igx-grid__td--pinned-last": "this.lastPinned", "class.igx-grid__td--pinned-first": "this.firstPinned", "class.igx-grid__td--editing": "this.editMode", "attr.role": "this.role", "attr.aria-readonly": "this.readonly", "class.igx-grid__td--active": "this.active", "attr.aria-selected": "this.ariaSelected", "class.igx-grid__td--selected": "this.selected", "class.igx-grid__td--column-selected": "this.columnSelected", "class.igx-grid__td--row-pinned-first": "this.displayPinnedChip" } }, providers: [HammerGesturesManager], viewQueries: [{ propertyName: "defaultCellTemplate", first: true, predicate: ["defaultCell"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultPinnedIndicator", first: true, predicate: ["defaultPinnedIndicator"], descendants: true, read: TemplateRef, static: true }, { propertyName: "inlineEditorTemplate", first: true, predicate: ["inlineEditor"], descendants: true, read: TemplateRef, static: true }, { propertyName: "addRowCellTemplate", first: true, predicate: ["addRowCell"], descendants: true, read: TemplateRef, static: true }, { propertyName: "highlight", first: true, predicate: IgxTextHighlightDirective, descendants: true, read: IgxTextHighlightDirective }], usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultPinnedIndicator>\n <igx-chip\n *ngIf=\"displayPinnedChip\"\n class=\"igx-grid__td--pinned-chip\"\n [disabled]=\"true\"\n [displayDensity]=\"'compact'\"\n >{{ grid.resourceStrings.igx_grid_pinned_row_indicator }}</igx-chip\n >\n</ng-template>\n<ng-template #defaultCell>\n <div *ngIf=\"column.dataType !== 'boolean' || (column.dataType === 'boolean' && this.formatter)\"\n igxTextHighlight\n class=\"igx-grid__td-text\"\n style=\"pointer-events: none;\"\n [cssClass]=\"highlightClass\"\n [activeCssClass]=\"activeHighlightClass\"\n [groupName]=\"gridID\"\n [value]=\"\n formatter\n ? (value | columnFormatter:formatter:rowData)\n : column.dataType === 'number'\n ? (value | number:column.pipeArgs.digitsInfo:grid.locale)\n : (column.dataType === 'date' || column.dataType === 'time' || column.dataType === 'dateTime')\n ? (value | date:column.pipeArgs.format:column.pipeArgs.timezone:grid.locale)\n : column.dataType === 'currency'\n ? (value | currency:currencyCode:column.pipeArgs.display:column.pipeArgs.digitsInfo:grid.locale)\n : column.dataType === 'percent'\n ? (value | percent:column.pipeArgs.digitsInfo:grid.locale)\n : value\n \"\n [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\"\n >{{\n formatter\n ? (value | columnFormatter:formatter:rowData)\n : column.dataType === \"number\"\n ? (value | number:column.pipeArgs.digitsInfo:grid.locale)\n : (column.dataType === 'date' || column.dataType === 'time' || column.dataType === 'dateTime')\n ? (value | date:column.pipeArgs.format:column.pipeArgs.timezone:grid.locale)\n : column.dataType === 'currency'\n ? (value | currency:currencyCode:column.pipeArgs.display:column.pipeArgs.digitsInfo:grid.locale)\n : column.dataType === 'percent'\n ? (value | percent:column.pipeArgs.digitsInfo:grid.locale)\n : value\n }}</div>\n <igx-icon\n *ngIf=\"column.dataType === 'boolean' && !this.formatter\"\n [ngClass]=\"{ 'igx-icon--success': value, 'igx-icon--error': !value }\"\n >{{ value ? \"check\" : \"close\" }}</igx-icon\n >\n</ng-template>\n<ng-template #addRowCell let-cell=\"cell\">\n <div *ngIf=\"column.dataType !== 'boolean' || (column.dataType === 'boolean' && this.formatter)\"\n igxTextHighlight class=\"igx-grid__td-text\" style=\"pointer-events: none\"\n [cssClass]=\"highlightClass\"\n [activeCssClass]=\"activeHighlightClass\"\n [groupName]=\"gridID\"\n [value]=\"formatter ? (value | columnFormatter:formatter:rowData) : column.dataType === 'number' ?\n (value | number:column.pipeArgs.digitsInfo:grid.locale) : (column.dataType === 'date' || column.dataType === 'time' || column.dataType === 'dateTime') ?\n (value | date:column.pipeArgs.format:column.pipeArgs.timezone:grid.locale) : column.dataType === 'currency' ?\n (value | currency:currencyCode:column.pipeArgs.display:column.pipeArgs.digitsInfo:grid.locale) : column.dataType === 'percent' ?\n (value | percent:column.pipeArgs.digitsInfo:grid.locale) : value\"\n [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\">{{\n !isEmptyAddRowCell ? value : (column.header || column.field)\n }}</div>\n</ng-template>\n<ng-template #inlineEditor let-cell=\"cell\">\n <ng-container *ngIf=\"column.dataType === 'string'\">\n <igx-input-group displayDensity=\"compact\">\n <input\n igxInput\n [(ngModel)]=\"editValue\"\n [igxFocus]=\"true\"\n />\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'number'\">\n <igx-input-group displayDensity=\"compact\">\n <input\n igxInput\n [(ngModel)]=\"editValue\"\n [igxFocus]=\"true\"\n [step]=\"step\"\n type=\"number\"\n />\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'boolean'\">\n <igx-checkbox\n [checked]=\"editValue\"\n (change)=\"editValue = $event.checked\"\n [igxFocus]=\"true\"\n [disableRipple]=\"true\"\n ></igx-checkbox>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'date'\">\n <igx-date-picker\n [style.width.%]=\"100\"\n [outlet]=\"grid.outlet\"\n mode=\"dropdown\"\n [locale]=\"grid.locale\"\n [(value)]=\"editValue\"\n [igxFocus]=\"true\"\n >\n </igx-date-picker>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'time'\">\n <igx-time-picker\n [style.width.%]=\"100\"\n [outlet]=\"grid.outlet\"\n mode=\"dropdown\"\n [locale]=\"grid.locale\"\n [inputFormat]=\"column.defaultTimeFormat\"\n [(value)]=\"editValue\"\n [igxFocus]=\"true\"\n >\n </igx-time-picker>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'dateTime'\">\n <igx-input-group>\n <input type=\"text\" igxInput [igxDateTimeEditor]=\"column.defaultDateTimeFormat\" [(ngModel)]=\"editValue\" [igxFocus]=\"true\"/>\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'currency'\">\n <igx-input-group displayDensity=\"compact\">\n <igx-prefix *ngIf=\"grid.currencyPositionLeft\">{{ currencyCodeSymbol }}</igx-prefix>\n <input\n igxInput\n [(ngModel)]=\"editValue\"\n [igxFocus]=\"true\"\n [step]=\"step\"\n type=\"number\"\n />\n <igx-suffix *ngIf=\"!grid.currencyPositionLeft\" >{{ currencyCodeSymbol }}</igx-suffix>\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'percent'\">\n <igx-input-group displayDensity=\"compact\">\n <input\n igxInput\n [(ngModel)]=\"editValue\"\n [igxFocus]=\"true\"\n [step]=\"step\"\n type=\"number\"\n />\n <igx-suffix> {{ editValue | percent:column.pipeArgs.digitsInfo:grid.locale }} </igx-suffix>\n </igx-input-group>\n </ng-container>\n</ng-template>\n<ng-container *ngTemplateOutlet=\"pinnedIndicatorTemplate; context: context\">\n</ng-container>\n<ng-container *ngTemplateOutlet=\"template; context: context\"></ng-container>\n", components: [{ type: i4.IgxChipComponent, selector: "igx-chip", inputs: ["id", "tabIndex", "data", "draggable", "animateOnRelease", "hideBaseOnDrag", "removable", "removeIcon", "selectable", "selectIcon", "class", "disabled", "selected", "color", "resourceStrings"], outputs: ["selectedChange", "moveStart", "moveEnd", "remove", "chipClick", "selectedChanging", "selectedChanged", "keyDown", "dragEnter"] }, { type: i5.IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }, { type: i6.IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { type: i7.IgxCheckboxComponent, selector: "igx-checkbox", inputs: ["id", "labelId", "value", "name", "tabindex", "labelPosition", "disableRipple", "required", "aria-labelledby", "aria-label", "indeterminate", "checked", "disabled", "readonly", "disableTransitions"], outputs: ["change"] }, { type: i8.IgxDatePickerComponent, selector: "igx-date-picker", inputs: ["weekStart", "hideOutsideDays", "displayMonthsCount", "showWeekNumbers", "formatter", "headerOrientation", "todayButtonLabel", "cancelButtonLabel", "spinLoop", "spinDelta", "outlet", "id", "formatViews", "disabledDates", "specialDates", "calendarFormat", "value", "minValue", "maxValue", "resourceStrings", "readOnly"], outputs: ["valueChange", "validationFailed"] }, { type: i9.IgxTimePickerComponent, selector: "igx-time-picker", inputs: ["id", "displayFormat", "inputFormat", "mode", "minValue", "maxValue", "spinLoop", "formatter", "headerOrientation", "readOnly", "value", "resourceStrings", "okButtonLabel", "cancelButtonLabel", "itemsDelta"], outputs: ["selected", "valueChange", "validationFailed"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.IgxTextHighlightDirective, selector: "[igxTextHighlight]", inputs: ["cssClass", "activeCssClass", "containerClass", "groupName", "value", "row", "column", "metadata"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i12.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i13.IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i12.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i14.IgxFocusDirective, selector: "[igxFocus]", inputs: ["igxFocus"], exportAs: ["igxFocus"] }, { type: i12.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i15.IgxDateTimeEditorDirective, selector: "[igxDateTimeEditor]", inputs: ["locale", "minValue", "maxValue", "spinLoop", "displayFormat", "igxDateTimeEditor", "value", "spinDelta"], outputs: ["valueChange", "validationFailed"], exportAs: ["igxDateTimeEditor"] }, { type: i16.IgxPrefixDirective, selector: "igx-prefix,[igxPrefix]" }, { type: i17.IgxSuffixDirective, selector: "igx-suffix,[igxSuffix]" }, { type: i10.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "columnFormatter": i18.IgxColumnFormatterPipe, "number": i10.DecimalPipe, "date": i10.DatePipe, "currency": i10.CurrencyPipe, "percent": i10.PercentPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
788
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridCellComponent, decorators: [{
786
+ IgxGridCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridCellComponent, deps: [{ token: i1.IgxGridSelectionService }, { token: IGX_GRID_BASE }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i2.HammerGesturesManager }, { token: i3.PlatformUtil }], target: i0.ɵɵFactoryTarget.Component });
787
+ IgxGridCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: IgxGridCellComponent, selector: "igx-grid-cell", inputs: { column: "column", intRow: "intRow", row: "row", rowData: "rowData", cellTemplate: "cellTemplate", pinnedIndicator: "pinnedIndicator", value: "value", formatter: "formatter", visibleColumnIndex: "visibleColumnIndex", cellSelectionMode: "cellSelectionMode", lastSearchInfo: "lastSearchInfo", lastPinned: "lastPinned", firstPinned: "firstPinned", editMode: "editMode", width: "width", active: "active", displayPinnedChip: "displayPinnedChip" }, host: { listeners: { "dblclick": "onDoubleClick($event)", "click": "onClick($event)", "contextmenu": "onContextMenu($event)" }, properties: { "class.igx-grid__td--new": "this.isEmptyAddRowCell", "attr.data-rowIndex": "this.rowIndex", "attr.data-visibleIndex": "this.visibleColumnIndex", "attr.id": "this.attrCellID", "attr.title": "this.title", "class.igx-grid__td--bool-true": "this.booleanClass", "class.igx-grid__td--pinned-last": "this.lastPinned", "class.igx-grid__td--pinned-first": "this.firstPinned", "class.igx-grid__td--editing": "this.editMode", "attr.role": "this.role", "attr.aria-readonly": "this.readonly", "class.igx-grid__td--active": "this.active", "attr.aria-selected": "this.ariaSelected", "class.igx-grid__td--selected": "this.selected", "class.igx-grid__td--column-selected": "this.columnSelected", "class.igx-grid__td--row-pinned-first": "this.displayPinnedChip" } }, providers: [HammerGesturesManager], viewQueries: [{ propertyName: "defaultCellTemplate", first: true, predicate: ["defaultCell"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultPinnedIndicator", first: true, predicate: ["defaultPinnedIndicator"], descendants: true, read: TemplateRef, static: true }, { propertyName: "inlineEditorTemplate", first: true, predicate: ["inlineEditor"], descendants: true, read: TemplateRef, static: true }, { propertyName: "addRowCellTemplate", first: true, predicate: ["addRowCell"], descendants: true, read: TemplateRef, static: true }, { propertyName: "highlight", first: true, predicate: IgxTextHighlightDirective, descendants: true, read: IgxTextHighlightDirective }], usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultPinnedIndicator>\n <igx-chip\n *ngIf=\"displayPinnedChip\"\n class=\"igx-grid__td--pinned-chip\"\n [disabled]=\"true\"\n [displayDensity]=\"'compact'\"\n >{{ grid.resourceStrings.igx_grid_pinned_row_indicator }}</igx-chip\n >\n</ng-template>\n<ng-template #defaultCell>\n <div *ngIf=\"column.dataType !== 'boolean' || (column.dataType === 'boolean' && this.formatter)\"\n igxTextHighlight\n class=\"igx-grid__td-text\"\n style=\"pointer-events: none;\"\n [cssClass]=\"highlightClass\"\n [activeCssClass]=\"activeHighlightClass\"\n [groupName]=\"gridID\"\n [value]=\"\n formatter\n ? (value | columnFormatter:formatter:rowData)\n : column.dataType === 'number'\n ? (value | number:column.pipeArgs.digitsInfo:grid.locale)\n : (column.dataType === 'date' || column.dataType === 'time' || column.dataType === 'dateTime')\n ? (value | date:column.pipeArgs.format:column.pipeArgs.timezone:grid.locale)\n : column.dataType === 'currency'\n ? (value | currency:currencyCode:column.pipeArgs.display:column.pipeArgs.digitsInfo:grid.locale)\n : column.dataType === 'percent'\n ? (value | percent:column.pipeArgs.digitsInfo:grid.locale)\n : value\n \"\n [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\"\n >{{\n formatter\n ? (value | columnFormatter:formatter:rowData)\n : column.dataType === \"number\"\n ? (value | number:column.pipeArgs.digitsInfo:grid.locale)\n : (column.dataType === 'date' || column.dataType === 'time' || column.dataType === 'dateTime')\n ? (value | date:column.pipeArgs.format:column.pipeArgs.timezone:grid.locale)\n : column.dataType === 'currency'\n ? (value | currency:currencyCode:column.pipeArgs.display:column.pipeArgs.digitsInfo:grid.locale)\n : column.dataType === 'percent'\n ? (value | percent:column.pipeArgs.digitsInfo:grid.locale)\n : value\n }}</div>\n <igx-icon\n *ngIf=\"column.dataType === 'boolean' && !this.formatter\"\n [ngClass]=\"{ 'igx-icon--success': value, 'igx-icon--error': !value }\"\n >{{ value ? \"check\" : \"close\" }}</igx-icon\n >\n</ng-template>\n<ng-template #addRowCell let-cell=\"cell\">\n <div *ngIf=\"column.dataType !== 'boolean' || (column.dataType === 'boolean' && this.formatter)\"\n igxTextHighlight class=\"igx-grid__td-text\" style=\"pointer-events: none\"\n [cssClass]=\"highlightClass\"\n [activeCssClass]=\"activeHighlightClass\"\n [groupName]=\"gridID\"\n [value]=\"formatter ? (value | columnFormatter:formatter:rowData) : column.dataType === 'number' ?\n (value | number:column.pipeArgs.digitsInfo:grid.locale) : (column.dataType === 'date' || column.dataType === 'time' || column.dataType === 'dateTime') ?\n (value | date:column.pipeArgs.format:column.pipeArgs.timezone:grid.locale) : column.dataType === 'currency' ?\n (value | currency:currencyCode:column.pipeArgs.display:column.pipeArgs.digitsInfo:grid.locale) : column.dataType === 'percent' ?\n (value | percent:column.pipeArgs.digitsInfo:grid.locale) : value\"\n [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\">{{\n !isEmptyAddRowCell ? value : (column.header || column.field)\n }}</div>\n</ng-template>\n<ng-template #inlineEditor let-cell=\"cell\">\n <ng-container *ngIf=\"column.dataType === 'string'\">\n <igx-input-group displayDensity=\"compact\">\n <input\n igxInput\n [(ngModel)]=\"editValue\"\n [igxFocus]=\"true\"\n />\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'number'\">\n <igx-input-group displayDensity=\"compact\">\n <input\n igxInput\n [(ngModel)]=\"editValue\"\n [igxFocus]=\"true\"\n [step]=\"step\"\n type=\"number\"\n />\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'boolean'\">\n <igx-checkbox\n [checked]=\"editValue\"\n (change)=\"editValue = $event.checked\"\n [igxFocus]=\"true\"\n [disableRipple]=\"true\"\n ></igx-checkbox>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'date'\">\n <igx-date-picker\n [style.width.%]=\"100\"\n [outlet]=\"grid.outlet\"\n mode=\"dropdown\"\n [locale]=\"grid.locale\"\n [(value)]=\"editValue\"\n [igxFocus]=\"true\"\n >\n </igx-date-picker>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'time'\">\n <igx-time-picker\n [style.width.%]=\"100\"\n [outlet]=\"grid.outlet\"\n mode=\"dropdown\"\n [locale]=\"grid.locale\"\n [inputFormat]=\"column.defaultTimeFormat\"\n [(value)]=\"editValue\"\n [igxFocus]=\"true\"\n >\n </igx-time-picker>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'dateTime'\">\n <igx-input-group>\n <input type=\"text\" igxInput [igxDateTimeEditor]=\"column.defaultDateTimeFormat\" [(ngModel)]=\"editValue\" [igxFocus]=\"true\"/>\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'currency'\">\n <igx-input-group displayDensity=\"compact\">\n <igx-prefix *ngIf=\"grid.currencyPositionLeft\">{{ currencyCodeSymbol }}</igx-prefix>\n <input\n igxInput\n [(ngModel)]=\"editValue\"\n [igxFocus]=\"true\"\n [step]=\"step\"\n type=\"number\"\n />\n <igx-suffix *ngIf=\"!grid.currencyPositionLeft\" >{{ currencyCodeSymbol }}</igx-suffix>\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'percent'\">\n <igx-input-group displayDensity=\"compact\">\n <input\n igxInput\n [(ngModel)]=\"editValue\"\n [igxFocus]=\"true\"\n [step]=\"step\"\n type=\"number\"\n />\n <igx-suffix> {{ editValue | percent:column.pipeArgs.digitsInfo:grid.locale }} </igx-suffix>\n </igx-input-group>\n </ng-container>\n</ng-template>\n<ng-container *ngTemplateOutlet=\"pinnedIndicatorTemplate; context: context\">\n</ng-container>\n<ng-container *ngTemplateOutlet=\"template; context: context\"></ng-container>\n", components: [{ type: i4.IgxChipComponent, selector: "igx-chip", inputs: ["id", "tabIndex", "data", "draggable", "animateOnRelease", "hideBaseOnDrag", "removable", "removeIcon", "selectable", "selectIcon", "class", "disabled", "selected", "color", "resourceStrings"], outputs: ["selectedChange", "moveStart", "moveEnd", "remove", "chipClick", "selectedChanging", "selectedChanged", "keyDown", "dragEnter"] }, { type: i5.IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }, { type: i6.IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { type: i7.IgxCheckboxComponent, selector: "igx-checkbox", inputs: ["id", "labelId", "value", "name", "tabindex", "labelPosition", "disableRipple", "required", "aria-labelledby", "aria-label", "indeterminate", "checked", "disabled", "readonly", "disableTransitions"], outputs: ["change"] }, { type: i8.IgxDatePickerComponent, selector: "igx-date-picker", inputs: ["weekStart", "hideOutsideDays", "displayMonthsCount", "showWeekNumbers", "formatter", "headerOrientation", "todayButtonLabel", "cancelButtonLabel", "spinLoop", "spinDelta", "outlet", "id", "formatViews", "disabledDates", "specialDates", "calendarFormat", "value", "minValue", "maxValue", "resourceStrings", "readOnly"], outputs: ["valueChange", "validationFailed"] }, { type: i9.IgxTimePickerComponent, selector: "igx-time-picker", inputs: ["id", "displayFormat", "inputFormat", "mode", "minValue", "maxValue", "spinLoop", "formatter", "headerOrientation", "readOnly", "value", "resourceStrings", "okButtonLabel", "cancelButtonLabel", "itemsDelta"], outputs: ["selected", "valueChange", "validationFailed"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.IgxTextHighlightDirective, selector: "[igxTextHighlight]", inputs: ["cssClass", "activeCssClass", "containerClass", "groupName", "value", "row", "column", "metadata"] }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i12.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i13.IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i12.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i14.IgxFocusDirective, selector: "[igxFocus]", inputs: ["igxFocus"], exportAs: ["igxFocus"] }, { type: i12.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i15.IgxDateTimeEditorDirective, selector: "[igxDateTimeEditor]", inputs: ["locale", "minValue", "maxValue", "spinLoop", "displayFormat", "igxDateTimeEditor", "value", "spinDelta"], outputs: ["valueChange", "validationFailed"], exportAs: ["igxDateTimeEditor"] }, { type: i16.IgxPrefixDirective, selector: "igx-prefix,[igxPrefix]" }, { type: i17.IgxSuffixDirective, selector: "igx-suffix,[igxSuffix]" }, { type: i10.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "columnFormatter": i18.IgxColumnFormatterPipe, "number": i10.DecimalPipe, "date": i10.DatePipe, "currency": i10.CurrencyPipe, "percent": i10.PercentPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
788
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridCellComponent, decorators: [{
789
789
  type: Component,
790
790
  args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-grid-cell', providers: [HammerGesturesManager], template: "<ng-template #defaultPinnedIndicator>\n <igx-chip\n *ngIf=\"displayPinnedChip\"\n class=\"igx-grid__td--pinned-chip\"\n [disabled]=\"true\"\n [displayDensity]=\"'compact'\"\n >{{ grid.resourceStrings.igx_grid_pinned_row_indicator }}</igx-chip\n >\n</ng-template>\n<ng-template #defaultCell>\n <div *ngIf=\"column.dataType !== 'boolean' || (column.dataType === 'boolean' && this.formatter)\"\n igxTextHighlight\n class=\"igx-grid__td-text\"\n style=\"pointer-events: none;\"\n [cssClass]=\"highlightClass\"\n [activeCssClass]=\"activeHighlightClass\"\n [groupName]=\"gridID\"\n [value]=\"\n formatter\n ? (value | columnFormatter:formatter:rowData)\n : column.dataType === 'number'\n ? (value | number:column.pipeArgs.digitsInfo:grid.locale)\n : (column.dataType === 'date' || column.dataType === 'time' || column.dataType === 'dateTime')\n ? (value | date:column.pipeArgs.format:column.pipeArgs.timezone:grid.locale)\n : column.dataType === 'currency'\n ? (value | currency:currencyCode:column.pipeArgs.display:column.pipeArgs.digitsInfo:grid.locale)\n : column.dataType === 'percent'\n ? (value | percent:column.pipeArgs.digitsInfo:grid.locale)\n : value\n \"\n [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\"\n >{{\n formatter\n ? (value | columnFormatter:formatter:rowData)\n : column.dataType === \"number\"\n ? (value | number:column.pipeArgs.digitsInfo:grid.locale)\n : (column.dataType === 'date' || column.dataType === 'time' || column.dataType === 'dateTime')\n ? (value | date:column.pipeArgs.format:column.pipeArgs.timezone:grid.locale)\n : column.dataType === 'currency'\n ? (value | currency:currencyCode:column.pipeArgs.display:column.pipeArgs.digitsInfo:grid.locale)\n : column.dataType === 'percent'\n ? (value | percent:column.pipeArgs.digitsInfo:grid.locale)\n : value\n }}</div>\n <igx-icon\n *ngIf=\"column.dataType === 'boolean' && !this.formatter\"\n [ngClass]=\"{ 'igx-icon--success': value, 'igx-icon--error': !value }\"\n >{{ value ? \"check\" : \"close\" }}</igx-icon\n >\n</ng-template>\n<ng-template #addRowCell let-cell=\"cell\">\n <div *ngIf=\"column.dataType !== 'boolean' || (column.dataType === 'boolean' && this.formatter)\"\n igxTextHighlight class=\"igx-grid__td-text\" style=\"pointer-events: none\"\n [cssClass]=\"highlightClass\"\n [activeCssClass]=\"activeHighlightClass\"\n [groupName]=\"gridID\"\n [value]=\"formatter ? (value | columnFormatter:formatter:rowData) : column.dataType === 'number' ?\n (value | number:column.pipeArgs.digitsInfo:grid.locale) : (column.dataType === 'date' || column.dataType === 'time' || column.dataType === 'dateTime') ?\n (value | date:column.pipeArgs.format:column.pipeArgs.timezone:grid.locale) : column.dataType === 'currency' ?\n (value | currency:currencyCode:column.pipeArgs.display:column.pipeArgs.digitsInfo:grid.locale) : column.dataType === 'percent' ?\n (value | percent:column.pipeArgs.digitsInfo:grid.locale) : value\"\n [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\">{{\n !isEmptyAddRowCell ? value : (column.header || column.field)\n }}</div>\n</ng-template>\n<ng-template #inlineEditor let-cell=\"cell\">\n <ng-container *ngIf=\"column.dataType === 'string'\">\n <igx-input-group displayDensity=\"compact\">\n <input\n igxInput\n [(ngModel)]=\"editValue\"\n [igxFocus]=\"true\"\n />\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'number'\">\n <igx-input-group displayDensity=\"compact\">\n <input\n igxInput\n [(ngModel)]=\"editValue\"\n [igxFocus]=\"true\"\n [step]=\"step\"\n type=\"number\"\n />\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'boolean'\">\n <igx-checkbox\n [checked]=\"editValue\"\n (change)=\"editValue = $event.checked\"\n [igxFocus]=\"true\"\n [disableRipple]=\"true\"\n ></igx-checkbox>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'date'\">\n <igx-date-picker\n [style.width.%]=\"100\"\n [outlet]=\"grid.outlet\"\n mode=\"dropdown\"\n [locale]=\"grid.locale\"\n [(value)]=\"editValue\"\n [igxFocus]=\"true\"\n >\n </igx-date-picker>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'time'\">\n <igx-time-picker\n [style.width.%]=\"100\"\n [outlet]=\"grid.outlet\"\n mode=\"dropdown\"\n [locale]=\"grid.locale\"\n [inputFormat]=\"column.defaultTimeFormat\"\n [(value)]=\"editValue\"\n [igxFocus]=\"true\"\n >\n </igx-time-picker>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'dateTime'\">\n <igx-input-group>\n <input type=\"text\" igxInput [igxDateTimeEditor]=\"column.defaultDateTimeFormat\" [(ngModel)]=\"editValue\" [igxFocus]=\"true\"/>\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'currency'\">\n <igx-input-group displayDensity=\"compact\">\n <igx-prefix *ngIf=\"grid.currencyPositionLeft\">{{ currencyCodeSymbol }}</igx-prefix>\n <input\n igxInput\n [(ngModel)]=\"editValue\"\n [igxFocus]=\"true\"\n [step]=\"step\"\n type=\"number\"\n />\n <igx-suffix *ngIf=\"!grid.currencyPositionLeft\" >{{ currencyCodeSymbol }}</igx-suffix>\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'percent'\">\n <igx-input-group displayDensity=\"compact\">\n <input\n igxInput\n [(ngModel)]=\"editValue\"\n [igxFocus]=\"true\"\n [step]=\"step\"\n type=\"number\"\n />\n <igx-suffix> {{ editValue | percent:column.pipeArgs.digitsInfo:grid.locale }} </igx-suffix>\n </igx-input-group>\n </ng-container>\n</ng-template>\n<ng-container *ngTemplateOutlet=\"pinnedIndicatorTemplate; context: context\">\n</ng-container>\n<ng-container *ngTemplateOutlet=\"template; context: context\"></ng-container>\n" }]
791
791
  }], ctorParameters: function () { return [{ type: i1.IgxGridSelectionService }, { type: undefined, decorators: [{
@@ -2,9 +2,9 @@ import { Directive } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class IgxColumnActionsBaseDirective {
4
4
  }
5
- IgxColumnActionsBaseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnActionsBaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
- IgxColumnActionsBaseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: IgxColumnActionsBaseDirective, ngImport: i0 });
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnActionsBaseDirective, decorators: [{
5
+ IgxColumnActionsBaseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnActionsBaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
+ IgxColumnActionsBaseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: IgxColumnActionsBaseDirective, ngImport: i0 });
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnActionsBaseDirective, decorators: [{
8
8
  type: Directive
9
9
  }] });
10
10
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWFjdGlvbnMtYmFzZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvY29sdW1uLWFjdGlvbnMvY29sdW1uLWFjdGlvbnMtYmFzZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJMUMsTUFBTSxPQUFnQiw2QkFBNkI7OzBIQUE3Qiw2QkFBNkI7OEdBQTdCLDZCQUE2QjsyRkFBN0IsNkJBQTZCO2tCQURsRCxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2x1bW5UeXBlIH0gZnJvbSAnLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSWd4Q29sdW1uQWN0aW9uc0Jhc2VEaXJlY3RpdmUge1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGFjdGlvbkVuYWJsZWRDb2x1bW5zRmlsdGVyOiAoXG4gICAgICAgIHZhbHVlOiBDb2x1bW5UeXBlLFxuICAgICAgICBpbmRleDogbnVtYmVyLFxuICAgICAgICBhcnJheTogQ29sdW1uVHlwZVtdXG4gICAgKSA9PiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0IGNoZWNrQWxsTGFiZWwoKTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0IHVuY2hlY2tBbGxMYWJlbCgpOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgY29sdW1uQ2hlY2tlZChjb2x1bW46IENvbHVtblR5cGUpOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGFic3RyYWN0IHRvZ2dsZUNvbHVtbihjb2x1bW46IENvbHVtblR5cGUpOiB2b2lkO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGFic3RyYWN0IHVuY2hlY2tBbGwoKTogdm9pZDtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBhYnN0cmFjdCBjaGVja0FsbCgpOiB2b2lkO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGFic3RyYWN0IGdldCBhbGxDaGVja2VkKCk6IGJvb2xlYW47XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0IGFsbFVuY2hlY2tlZCgpOiBib29sZWFuO1xufVxuIl19
@@ -309,9 +309,9 @@ export class IgxColumnActionsComponent {
309
309
  this.columnToggled.emit({ column: column, checked: this.actionsDirective.columnChecked(column) });
310
310
  }
311
311
  }
312
- IgxColumnActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnActionsComponent, deps: [{ token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component });
313
- IgxColumnActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: IgxColumnActionsComponent, selector: "igx-column-actions", inputs: { grid: "grid", indentation: "indentation", columnsAreaMaxHeight: "columnsAreaMaxHeight", hideFilter: "hideFilter", title: "title", filterColumnsPrompt: "filterColumnsPrompt", filterCriteria: "filterCriteria", columnDisplayOrder: "columnDisplayOrder", uncheckAllText: "uncheckAllText", checkAllText: "checkAllText", id: "id" }, outputs: { columnToggled: "columnToggled" }, host: { properties: { "attr.class": "this.cssClass", "attr.id": "this.id" } }, viewQueries: [{ propertyName: "columnItems", predicate: IgxCheckboxComponent, descendants: true }], ngImport: i0, template: "<div class=\"igx-column-actions__header\">\n <h4 [attr.id]='titleID' class=\"igx-column-actions__header-title\" *ngIf=\"title\">{{ title }}</h4>\n\n <igx-input-group class=\"igx-column-actions__header-input\" *ngIf=\"!hideFilter\">\n <input igxInput\n type=\"text\"\n [attr.aria-describedby]='titleID'\n [(ngModel)]=\"filterCriteria\"\n [placeholder]=\"filterColumnsPrompt\"\n autocomplete=\"off\" />\n </igx-input-group>\n</div>\n\n<div class=\"igx-column-actions__columns\" tabindex=\"0\"\n [style.max-height]=\"columnsAreaMaxHeight\">\n <igx-checkbox\n *ngFor=\"let column of $any(grid)?._columns\n | columnActionEnabled:actionsDirective.actionEnabledColumnsFilter:pipeTrigger\n | filterActionColumns:filterCriteria:pipeTrigger\n | sortActionColumns:columnDisplayOrder:pipeTrigger;\"\n class=\"igx-column-actions__columns-item\"\n [readonly]=\"true\"\n (click)=\"toggleColumn(column)\"\n [checked]=\"actionsDirective.columnChecked(column)\"\n [style.margin-left.px]=\"column.level * indentation\">\n {{ column.header || column.field }}\n </igx-checkbox>\n</div>\n\n<div class=\"igx-column-actions__buttons\">\n <button igxButton igxRipple (click)=\"uncheckAllColumns()\" [disabled]=\"uncheckAllDisabled\">{{ uncheckAllText }}</button>\n <button igxButton igxRipple (click)=\"checkAllColumns()\" [disabled]=\"checkAllDisabled\">{{ checkAllText }}</button>\n</div>\n", components: [{ type: i0.forwardRef(function () { return i1.IgxInputGroupComponent; }), selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { type: i0.forwardRef(function () { return i2.IgxCheckboxComponent; }), selector: "igx-checkbox", inputs: ["id", "labelId", "value", "name", "tabindex", "labelPosition", "disableRipple", "required", "aria-labelledby", "aria-label", "indeterminate", "checked", "disabled", "readonly", "disableTransitions"], outputs: ["change"] }], directives: [{ type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i4.DefaultValueAccessor; }), selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i0.forwardRef(function () { return i5.IgxInputDirective; }), selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { type: i0.forwardRef(function () { return i4.NgControlStatus; }), selector: "[formControlName],[ngModel],[formControl]" }, { type: i0.forwardRef(function () { return i4.NgModel; }), selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i0.forwardRef(function () { return i3.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i0.forwardRef(function () { return i6.IgxButtonDirective; }), selector: "[igxButton]", inputs: ["selected", "igxButton", "igxButtonColor", "igxButtonBackground", "igxLabel", "disabled"], outputs: ["buttonClick", "buttonSelected"] }, { type: i0.forwardRef(function () { return i7.IgxRippleDirective; }), selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }], pipes: { "sortActionColumns": i0.forwardRef(function () { return IgxSortActionColumnsPipe; }), "filterActionColumns": i0.forwardRef(function () { return IgxFilterActionColumnsPipe; }), "columnActionEnabled": i0.forwardRef(function () { return IgxColumnActionEnabledPipe; }) } });
314
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnActionsComponent, decorators: [{
312
+ IgxColumnActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnActionsComponent, deps: [{ token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component });
313
+ IgxColumnActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: IgxColumnActionsComponent, selector: "igx-column-actions", inputs: { grid: "grid", indentation: "indentation", columnsAreaMaxHeight: "columnsAreaMaxHeight", hideFilter: "hideFilter", title: "title", filterColumnsPrompt: "filterColumnsPrompt", filterCriteria: "filterCriteria", columnDisplayOrder: "columnDisplayOrder", uncheckAllText: "uncheckAllText", checkAllText: "checkAllText", id: "id" }, outputs: { columnToggled: "columnToggled" }, host: { properties: { "attr.class": "this.cssClass", "attr.id": "this.id" } }, viewQueries: [{ propertyName: "columnItems", predicate: IgxCheckboxComponent, descendants: true }], ngImport: i0, template: "<div class=\"igx-column-actions__header\">\n <h4 [attr.id]='titleID' class=\"igx-column-actions__header-title\" *ngIf=\"title\">{{ title }}</h4>\n\n <igx-input-group class=\"igx-column-actions__header-input\" *ngIf=\"!hideFilter\">\n <input igxInput\n type=\"text\"\n [attr.aria-describedby]='titleID'\n [(ngModel)]=\"filterCriteria\"\n [placeholder]=\"filterColumnsPrompt\"\n autocomplete=\"off\" />\n </igx-input-group>\n</div>\n\n<div class=\"igx-column-actions__columns\" tabindex=\"0\"\n [style.max-height]=\"columnsAreaMaxHeight\">\n <igx-checkbox\n *ngFor=\"let column of $any(grid)?._columns\n | columnActionEnabled:actionsDirective.actionEnabledColumnsFilter:pipeTrigger\n | filterActionColumns:filterCriteria:pipeTrigger\n | sortActionColumns:columnDisplayOrder:pipeTrigger;\"\n class=\"igx-column-actions__columns-item\"\n [readonly]=\"true\"\n (click)=\"toggleColumn(column)\"\n [checked]=\"actionsDirective.columnChecked(column)\"\n [style.margin-left.px]=\"column.level * indentation\">\n {{ column.header || column.field }}\n </igx-checkbox>\n</div>\n\n<div class=\"igx-column-actions__buttons\">\n <button igxButton igxRipple (click)=\"uncheckAllColumns()\" [disabled]=\"uncheckAllDisabled\">{{ uncheckAllText }}</button>\n <button igxButton igxRipple (click)=\"checkAllColumns()\" [disabled]=\"checkAllDisabled\">{{ checkAllText }}</button>\n</div>\n", components: [{ type: i0.forwardRef(function () { return i1.IgxInputGroupComponent; }), selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { type: i0.forwardRef(function () { return i2.IgxCheckboxComponent; }), selector: "igx-checkbox", inputs: ["id", "labelId", "value", "name", "tabindex", "labelPosition", "disableRipple", "required", "aria-labelledby", "aria-label", "indeterminate", "checked", "disabled", "readonly", "disableTransitions"], outputs: ["change"] }], directives: [{ type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i4.DefaultValueAccessor; }), selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i0.forwardRef(function () { return i5.IgxInputDirective; }), selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { type: i0.forwardRef(function () { return i4.NgControlStatus; }), selector: "[formControlName],[ngModel],[formControl]" }, { type: i0.forwardRef(function () { return i4.NgModel; }), selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i0.forwardRef(function () { return i3.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i0.forwardRef(function () { return i6.IgxButtonDirective; }), selector: "[igxButton]", inputs: ["selected", "igxButton", "igxButtonColor", "igxButtonBackground", "igxLabel", "disabled"], outputs: ["buttonClick", "buttonSelected"] }, { type: i0.forwardRef(function () { return i7.IgxRippleDirective; }), selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }], pipes: { "sortActionColumns": i0.forwardRef(function () { return IgxSortActionColumnsPipe; }), "filterActionColumns": i0.forwardRef(function () { return IgxFilterActionColumnsPipe; }), "columnActionEnabled": i0.forwardRef(function () { return IgxColumnActionEnabledPipe; }) } });
314
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnActionsComponent, decorators: [{
315
315
  type: Component,
316
316
  args: [{ selector: 'igx-column-actions', template: "<div class=\"igx-column-actions__header\">\n <h4 [attr.id]='titleID' class=\"igx-column-actions__header-title\" *ngIf=\"title\">{{ title }}</h4>\n\n <igx-input-group class=\"igx-column-actions__header-input\" *ngIf=\"!hideFilter\">\n <input igxInput\n type=\"text\"\n [attr.aria-describedby]='titleID'\n [(ngModel)]=\"filterCriteria\"\n [placeholder]=\"filterColumnsPrompt\"\n autocomplete=\"off\" />\n </igx-input-group>\n</div>\n\n<div class=\"igx-column-actions__columns\" tabindex=\"0\"\n [style.max-height]=\"columnsAreaMaxHeight\">\n <igx-checkbox\n *ngFor=\"let column of $any(grid)?._columns\n | columnActionEnabled:actionsDirective.actionEnabledColumnsFilter:pipeTrigger\n | filterActionColumns:filterCriteria:pipeTrigger\n | sortActionColumns:columnDisplayOrder:pipeTrigger;\"\n class=\"igx-column-actions__columns-item\"\n [readonly]=\"true\"\n (click)=\"toggleColumn(column)\"\n [checked]=\"actionsDirective.columnChecked(column)\"\n [style.margin-left.px]=\"column.level * indentation\">\n {{ column.header || column.field }}\n </igx-checkbox>\n</div>\n\n<div class=\"igx-column-actions__buttons\">\n <button igxButton igxRipple (click)=\"uncheckAllColumns()\" [disabled]=\"uncheckAllDisabled\">{{ uncheckAllText }}</button>\n <button igxButton igxRipple (click)=\"checkAllColumns()\" [disabled]=\"checkAllDisabled\">{{ checkAllText }}</button>\n</div>\n" }]
317
317
  }], ctorParameters: function () { return [{ type: i0.IterableDiffers }]; }, propDecorators: { grid: [{
@@ -368,9 +368,9 @@ export class IgxColumnActionEnabledPipe {
368
368
  return copy;
369
369
  }
370
370
  }
371
- IgxColumnActionEnabledPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnActionEnabledPipe, deps: [{ token: IgxColumnActionsComponent }], target: i0.ɵɵFactoryTarget.Pipe });
372
- IgxColumnActionEnabledPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnActionEnabledPipe, name: "columnActionEnabled" });
373
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnActionEnabledPipe, decorators: [{
371
+ IgxColumnActionEnabledPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnActionEnabledPipe, deps: [{ token: IgxColumnActionsComponent }], target: i0.ɵɵFactoryTarget.Pipe });
372
+ IgxColumnActionEnabledPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnActionEnabledPipe, name: "columnActionEnabled" });
373
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnActionEnabledPipe, decorators: [{
374
374
  type: Pipe,
375
375
  args: [{ name: 'columnActionEnabled' }]
376
376
  }], ctorParameters: function () { return [{ type: IgxColumnActionsComponent, decorators: [{
@@ -402,9 +402,9 @@ export class IgxFilterActionColumnsPipe {
402
402
  return copy;
403
403
  }
404
404
  }
405
- IgxFilterActionColumnsPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxFilterActionColumnsPipe, deps: [{ token: IgxColumnActionsComponent }], target: i0.ɵɵFactoryTarget.Pipe });
406
- IgxFilterActionColumnsPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxFilterActionColumnsPipe, name: "filterActionColumns" });
407
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxFilterActionColumnsPipe, decorators: [{
405
+ IgxFilterActionColumnsPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxFilterActionColumnsPipe, deps: [{ token: IgxColumnActionsComponent }], target: i0.ɵɵFactoryTarget.Pipe });
406
+ IgxFilterActionColumnsPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxFilterActionColumnsPipe, name: "filterActionColumns" });
407
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxFilterActionColumnsPipe, decorators: [{
408
408
  type: Pipe,
409
409
  args: [{ name: 'filterActionColumns' }]
410
410
  }], ctorParameters: function () { return [{ type: IgxColumnActionsComponent, decorators: [{
@@ -419,9 +419,9 @@ export class IgxSortActionColumnsPipe {
419
419
  return collection;
420
420
  }
421
421
  }
422
- IgxSortActionColumnsPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxSortActionColumnsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
423
- IgxSortActionColumnsPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxSortActionColumnsPipe, name: "sortActionColumns" });
424
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxSortActionColumnsPipe, decorators: [{
422
+ IgxSortActionColumnsPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxSortActionColumnsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
423
+ IgxSortActionColumnsPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxSortActionColumnsPipe, name: "sortActionColumns" });
424
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxSortActionColumnsPipe, decorators: [{
425
425
  type: Pipe,
426
426
  args: [{ name: 'sortActionColumns' }]
427
427
  }] });
@@ -10,8 +10,8 @@ export * from './column-hiding.directive';
10
10
  export * from './column-pinning.directive';
11
11
  export class IgxColumnActionsModule {
12
12
  }
13
- IgxColumnActionsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnActionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
- IgxColumnActionsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnActionsModule, declarations: [IgxColumnHidingDirective,
13
+ IgxColumnActionsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnActionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ IgxColumnActionsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnActionsModule, declarations: [IgxColumnHidingDirective,
15
15
  IgxColumnPinningDirective,
16
16
  IgxColumnActionsComponent,
17
17
  IgxColumnActionEnabledPipe,
@@ -23,11 +23,11 @@ IgxColumnActionsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
23
23
  IgxColumnActionEnabledPipe,
24
24
  IgxFilterActionColumnsPipe,
25
25
  IgxSortActionColumnsPipe] });
26
- IgxColumnActionsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnActionsModule, imports: [[
26
+ IgxColumnActionsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnActionsModule, imports: [[
27
27
  IgxGridSharedModules,
28
28
  IgxGridPipesModule
29
29
  ]] });
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnActionsModule, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnActionsModule, decorators: [{
31
31
  type: NgModule,
32
32
  args: [{
33
33
  declarations: [
@@ -56,9 +56,9 @@ export class IgxColumnHidingDirective extends IgxColumnActionsBaseDirective {
56
56
  return this.columnActions.filteredColumns.every(col => this.columnChecked(col));
57
57
  }
58
58
  }
59
- IgxColumnHidingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnHidingDirective, deps: [{ token: IgxColumnActionsComponent }], target: i0.ɵɵFactoryTarget.Directive });
60
- IgxColumnHidingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: IgxColumnHidingDirective, selector: "[igxColumnHiding]", usesInheritance: true, ngImport: i0 });
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnHidingDirective, decorators: [{
59
+ IgxColumnHidingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnHidingDirective, deps: [{ token: IgxColumnActionsComponent }], target: i0.ɵɵFactoryTarget.Directive });
60
+ IgxColumnHidingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: IgxColumnHidingDirective, selector: "[igxColumnHiding]", usesInheritance: true, ngImport: i0 });
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnHidingDirective, decorators: [{
62
62
  type: Directive,
63
63
  args: [{ selector: '[igxColumnHiding]' }]
64
64
  }], ctorParameters: function () { return [{ type: i1.IgxColumnActionsComponent, decorators: [{
@@ -56,9 +56,9 @@ export class IgxColumnPinningDirective extends IgxColumnActionsBaseDirective {
56
56
  return !this.columnActions.filteredColumns.some(col => this.columnChecked(col));
57
57
  }
58
58
  }
59
- IgxColumnPinningDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnPinningDirective, deps: [{ token: IgxColumnActionsComponent }], target: i0.ɵɵFactoryTarget.Directive });
60
- IgxColumnPinningDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: IgxColumnPinningDirective, selector: "[igxColumnPinning]", usesInheritance: true, ngImport: i0 });
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnPinningDirective, decorators: [{
59
+ IgxColumnPinningDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnPinningDirective, deps: [{ token: IgxColumnActionsComponent }], target: i0.ɵɵFactoryTarget.Directive });
60
+ IgxColumnPinningDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: IgxColumnPinningDirective, selector: "[igxColumnPinning]", usesInheritance: true, ngImport: i0 });
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnPinningDirective, decorators: [{
62
62
  type: Directive,
63
63
  args: [{ selector: '[igxColumnPinning]' }]
64
64
  }], ctorParameters: function () { return [{ type: i1.IgxColumnActionsComponent, decorators: [{
@@ -340,9 +340,9 @@ export class IgxColumnGroupComponent extends IgxColumnComponent {
340
340
  return li - fi + 1;
341
341
  }
342
342
  }
343
- IgxColumnGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
344
- IgxColumnGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: IgxColumnGroupComponent, selector: "igx-column-group", inputs: { collapsible: "collapsible", expanded: "expanded", summaries: "summaries", searchable: "searchable", filters: "filters", collapsibleIndicatorTemplate: "collapsibleIndicatorTemplate", hidden: "hidden" }, outputs: { hiddenChange: "hiddenChange" }, providers: [{ provide: IgxColumnComponent, useExisting: forwardRef(() => IgxColumnGroupComponent) }], queries: [{ propertyName: "children", predicate: IgxColumnComponent, read: IgxColumnComponent }], usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
345
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnGroupComponent, decorators: [{
343
+ IgxColumnGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
344
+ IgxColumnGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: IgxColumnGroupComponent, selector: "igx-column-group", inputs: { collapsible: "collapsible", expanded: "expanded", summaries: "summaries", searchable: "searchable", filters: "filters", collapsibleIndicatorTemplate: "collapsibleIndicatorTemplate", hidden: "hidden" }, outputs: { hiddenChange: "hiddenChange" }, providers: [{ provide: IgxColumnComponent, useExisting: forwardRef(() => IgxColumnGroupComponent) }], queries: [{ propertyName: "children", predicate: IgxColumnComponent, read: IgxColumnComponent }], usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
345
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnGroupComponent, decorators: [{
346
346
  type: Component,
347
347
  args: [{
348
348
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -147,9 +147,9 @@ export class IgxColumnLayoutComponent extends IgxColumnGroupComponent {
147
147
  });
148
148
  }
149
149
  }
150
- IgxColumnLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnLayoutComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
151
- IgxColumnLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: IgxColumnLayoutComponent, selector: "igx-column-layout", inputs: { hidden: "hidden" }, providers: [{ provide: IgxColumnComponent, useExisting: forwardRef(() => IgxColumnLayoutComponent) }], usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
152
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnLayoutComponent, decorators: [{
150
+ IgxColumnLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnLayoutComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
151
+ IgxColumnLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: IgxColumnLayoutComponent, selector: "igx-column-layout", inputs: { hidden: "hidden" }, providers: [{ provide: IgxColumnComponent, useExisting: forwardRef(() => IgxColumnLayoutComponent) }], usesInheritance: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
152
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnLayoutComponent, decorators: [{
153
153
  type: Component,
154
154
  args: [{
155
155
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -1886,8 +1886,8 @@ export class IgxColumnComponent {
1886
1886
  }
1887
1887
  }
1888
1888
  }
1889
- IgxColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnComponent, deps: [{ token: IGX_GRID_BASE }, { token: i0.ChangeDetectorRef }, { token: i1.PlatformUtil }], target: i0.ɵɵFactoryTarget.Component });
1890
- IgxColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: IgxColumnComponent, selector: "igx-column", inputs: { field: "field", header: "header", title: "title", sortable: "sortable", selectable: "selectable", groupable: "groupable", editable: "editable", filterable: "filterable", resizable: "resizable", autosizeHeader: "autosizeHeader", hasSummary: "hasSummary", hidden: "hidden", disableHiding: "disableHiding", disablePinning: "disablePinning", movable: "movable", width: "width", maxWidth: "maxWidth", headerClasses: "headerClasses", headerStyles: "headerStyles", headerGroupClasses: "headerGroupClasses", headerGroupStyles: "headerGroupStyles", cellClasses: "cellClasses", cellStyles: "cellStyles", formatter: "formatter", summaryFormatter: "summaryFormatter", filteringIgnoreCase: "filteringIgnoreCase", sortingIgnoreCase: "sortingIgnoreCase", searchable: "searchable", dataType: "dataType", collapsibleIndicatorTemplate: "collapsibleIndicatorTemplate", rowEnd: "rowEnd", colEnd: "colEnd", rowStart: "rowStart", colStart: "colStart", additionalTemplateContext: "additionalTemplateContext", minWidth: "minWidth", pinned: "pinned", summaries: "summaries", filters: "filters", sortStrategy: "sortStrategy", groupingComparer: "groupingComparer", bodyTemplate: ["cellTemplate", "bodyTemplate"], headerTemplate: "headerTemplate", inlineEditorTemplate: ["cellEditorTemplate", "inlineEditorTemplate"], filterCellTemplate: "filterCellTemplate", visibleWhenCollapsed: "visibleWhenCollapsed", pipeArgs: "pipeArgs" }, outputs: { hiddenChange: "hiddenChange", expandedChange: "expandedChange", collapsibleChange: "collapsibleChange", visibleWhenCollapsedChange: "visibleWhenCollapsedChange", columnChange: "columnChange", widthChange: "widthChange", pinnedChange: "pinnedChange" }, queries: [{ propertyName: "filterCellTemplateDirective", first: true, predicate: IgxFilterCellTemplateDirective, descendants: true, read: IgxFilterCellTemplateDirective }, { propertyName: "cellTemplate", first: true, predicate: IgxCellTemplateDirective, descendants: true, read: IgxCellTemplateDirective }, { propertyName: "editorTemplate", first: true, predicate: IgxCellEditorTemplateDirective, descendants: true, read: IgxCellEditorTemplateDirective }, { propertyName: "collapseIndicatorTemplate", first: true, predicate: IgxCollapsibleIndicatorTemplateDirective, descendants: true, read: IgxCollapsibleIndicatorTemplateDirective }, { propertyName: "headTemplate", predicate: IgxCellHeaderTemplateDirective, read: IgxCellHeaderTemplateDirective }], ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1889
+ IgxColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnComponent, deps: [{ token: IGX_GRID_BASE }, { token: i0.ChangeDetectorRef }, { token: i1.PlatformUtil }], target: i0.ɵɵFactoryTarget.Component });
1890
+ IgxColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: IgxColumnComponent, selector: "igx-column", inputs: { field: "field", header: "header", title: "title", sortable: "sortable", selectable: "selectable", groupable: "groupable", editable: "editable", filterable: "filterable", resizable: "resizable", autosizeHeader: "autosizeHeader", hasSummary: "hasSummary", hidden: "hidden", disableHiding: "disableHiding", disablePinning: "disablePinning", movable: "movable", width: "width", maxWidth: "maxWidth", headerClasses: "headerClasses", headerStyles: "headerStyles", headerGroupClasses: "headerGroupClasses", headerGroupStyles: "headerGroupStyles", cellClasses: "cellClasses", cellStyles: "cellStyles", formatter: "formatter", summaryFormatter: "summaryFormatter", filteringIgnoreCase: "filteringIgnoreCase", sortingIgnoreCase: "sortingIgnoreCase", searchable: "searchable", dataType: "dataType", collapsibleIndicatorTemplate: "collapsibleIndicatorTemplate", rowEnd: "rowEnd", colEnd: "colEnd", rowStart: "rowStart", colStart: "colStart", additionalTemplateContext: "additionalTemplateContext", minWidth: "minWidth", pinned: "pinned", summaries: "summaries", filters: "filters", sortStrategy: "sortStrategy", groupingComparer: "groupingComparer", bodyTemplate: ["cellTemplate", "bodyTemplate"], headerTemplate: "headerTemplate", inlineEditorTemplate: ["cellEditorTemplate", "inlineEditorTemplate"], filterCellTemplate: "filterCellTemplate", visibleWhenCollapsed: "visibleWhenCollapsed", pipeArgs: "pipeArgs" }, outputs: { hiddenChange: "hiddenChange", expandedChange: "expandedChange", collapsibleChange: "collapsibleChange", visibleWhenCollapsedChange: "visibleWhenCollapsedChange", columnChange: "columnChange", widthChange: "widthChange", pinnedChange: "pinnedChange" }, queries: [{ propertyName: "filterCellTemplateDirective", first: true, predicate: IgxFilterCellTemplateDirective, descendants: true, read: IgxFilterCellTemplateDirective }, { propertyName: "cellTemplate", first: true, predicate: IgxCellTemplateDirective, descendants: true, read: IgxCellTemplateDirective }, { propertyName: "editorTemplate", first: true, predicate: IgxCellEditorTemplateDirective, descendants: true, read: IgxCellEditorTemplateDirective }, { propertyName: "collapseIndicatorTemplate", first: true, predicate: IgxCollapsibleIndicatorTemplateDirective, descendants: true, read: IgxCollapsibleIndicatorTemplateDirective }, { propertyName: "headTemplate", predicate: IgxCellHeaderTemplateDirective, read: IgxCellHeaderTemplateDirective }], ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1891
1891
  __decorate([
1892
1892
  notifyChanges(),
1893
1893
  WatchColumnChanges()
@@ -2022,7 +2022,7 @@ __decorate([
2022
2022
  notifyChanges(),
2023
2023
  WatchColumnChanges()
2024
2024
  ], IgxColumnComponent.prototype, "pipeArgs", null);
2025
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxColumnComponent, decorators: [{
2025
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxColumnComponent, decorators: [{
2026
2026
  type: Component,
2027
2027
  args: [{
2028
2028
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -6,8 +6,8 @@ import { IgxCellEditorTemplateDirective, IgxCellFooterTemplateDirective, IgxCell
6
6
  import * as i0 from "@angular/core";
7
7
  export class IgxGridColumnModule {
8
8
  }
9
- IgxGridColumnModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridColumnModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- IgxGridColumnModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridColumnModule, declarations: [IgxFilterCellTemplateDirective,
9
+ IgxGridColumnModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridColumnModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ IgxGridColumnModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridColumnModule, declarations: [IgxFilterCellTemplateDirective,
11
11
  IgxCellTemplateDirective,
12
12
  IgxCellHeaderTemplateDirective,
13
13
  IgxCellFooterTemplateDirective,
@@ -24,8 +24,8 @@ IgxGridColumnModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", ver
24
24
  IgxColumnComponent,
25
25
  IgxColumnGroupComponent,
26
26
  IgxColumnLayoutComponent] });
27
- IgxGridColumnModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridColumnModule });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridColumnModule, decorators: [{
27
+ IgxGridColumnModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridColumnModule });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridColumnModule, decorators: [{
29
29
  type: NgModule,
30
30
  args: [{
31
31
  declarations: [
@@ -5,9 +5,9 @@ export class IgxFilterCellTemplateDirective {
5
5
  this.template = template;
6
6
  }
7
7
  }
8
- IgxFilterCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxFilterCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
9
- IgxFilterCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: IgxFilterCellTemplateDirective, selector: "[igxFilterCellTemplate]", ngImport: i0 });
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxFilterCellTemplateDirective, decorators: [{
8
+ IgxFilterCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxFilterCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
9
+ IgxFilterCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: IgxFilterCellTemplateDirective, selector: "[igxFilterCellTemplate]", ngImport: i0 });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxFilterCellTemplateDirective, decorators: [{
11
11
  type: Directive,
12
12
  args: [{
13
13
  selector: '[igxFilterCellTemplate]'
@@ -18,9 +18,9 @@ export class IgxCellTemplateDirective {
18
18
  this.template = template;
19
19
  }
20
20
  }
21
- IgxCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
22
- IgxCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: IgxCellTemplateDirective, selector: "[igxCell]", ngImport: i0 });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxCellTemplateDirective, decorators: [{
21
+ IgxCellTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxCellTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
22
+ IgxCellTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: IgxCellTemplateDirective, selector: "[igxCell]", ngImport: i0 });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxCellTemplateDirective, decorators: [{
24
24
  type: Directive,
25
25
  args: [{
26
26
  selector: '[igxCell]'
@@ -31,9 +31,9 @@ export class IgxCellHeaderTemplateDirective {
31
31
  this.template = template;
32
32
  }
33
33
  }
34
- IgxCellHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxCellHeaderTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
35
- IgxCellHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: IgxCellHeaderTemplateDirective, selector: "[igxHeader]", ngImport: i0 });
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxCellHeaderTemplateDirective, decorators: [{
34
+ IgxCellHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxCellHeaderTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
35
+ IgxCellHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: IgxCellHeaderTemplateDirective, selector: "[igxHeader]", ngImport: i0 });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxCellHeaderTemplateDirective, decorators: [{
37
37
  type: Directive,
38
38
  args: [{
39
39
  selector: '[igxHeader]'
@@ -47,9 +47,9 @@ export class IgxCellFooterTemplateDirective {
47
47
  this.template = template;
48
48
  }
49
49
  }
50
- IgxCellFooterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxCellFooterTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
51
- IgxCellFooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: IgxCellFooterTemplateDirective, selector: "[igxFooter]", ngImport: i0 });
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxCellFooterTemplateDirective, decorators: [{
50
+ IgxCellFooterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxCellFooterTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
51
+ IgxCellFooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: IgxCellFooterTemplateDirective, selector: "[igxFooter]", ngImport: i0 });
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxCellFooterTemplateDirective, decorators: [{
53
53
  type: Directive,
54
54
  args: [{
55
55
  selector: '[igxFooter]'
@@ -60,9 +60,9 @@ export class IgxCellEditorTemplateDirective {
60
60
  this.template = template;
61
61
  }
62
62
  }
63
- IgxCellEditorTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxCellEditorTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
64
- IgxCellEditorTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: IgxCellEditorTemplateDirective, selector: "[igxCellEditor]", ngImport: i0 });
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxCellEditorTemplateDirective, decorators: [{
63
+ IgxCellEditorTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxCellEditorTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
64
+ IgxCellEditorTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: IgxCellEditorTemplateDirective, selector: "[igxCellEditor]", ngImport: i0 });
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxCellEditorTemplateDirective, decorators: [{
66
66
  type: Directive,
67
67
  args: [{
68
68
  selector: '[igxCellEditor]'
@@ -73,9 +73,9 @@ export class IgxCollapsibleIndicatorTemplateDirective {
73
73
  this.template = template;
74
74
  }
75
75
  }
76
- IgxCollapsibleIndicatorTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxCollapsibleIndicatorTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
77
- IgxCollapsibleIndicatorTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: IgxCollapsibleIndicatorTemplateDirective, selector: "[igxCollapsibleIndicator]", ngImport: i0 });
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxCollapsibleIndicatorTemplateDirective, decorators: [{
76
+ IgxCollapsibleIndicatorTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxCollapsibleIndicatorTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
77
+ IgxCollapsibleIndicatorTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: IgxCollapsibleIndicatorTemplateDirective, selector: "[igxCollapsibleIndicator]", ngImport: i0 });
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxCollapsibleIndicatorTemplateDirective, decorators: [{
79
79
  type: Directive,
80
80
  args: [{
81
81
  selector: '[igxCollapsibleIndicator]'
@@ -545,9 +545,9 @@ export class IgxGridCRUDService extends IgxRowAddCrudState {
545
545
  return false;
546
546
  }
547
547
  }
548
- IgxGridCRUDService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridCRUDService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
549
- IgxGridCRUDService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridCRUDService });
550
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridCRUDService, decorators: [{
548
+ IgxGridCRUDService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridCRUDService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
549
+ IgxGridCRUDService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridCRUDService });
550
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridCRUDService, decorators: [{
551
551
  type: Injectable
552
552
  }] });
553
553
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2NvbW1vbi9jcnVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRTNDLE1BQU0sT0FBTyxVQUFVO0lBS25CLFlBQW1CLEVBQU8sRUFBUyxLQUFhLEVBQVMsSUFBUyxFQUFTLElBQWM7UUFBdEUsT0FBRSxHQUFGLEVBQUUsQ0FBSztRQUFTLFVBQUssR0FBTCxLQUFLLENBQVE7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFLO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBVTtJQUFJLENBQUM7SUFFdkYsbUJBQW1CLENBQUMsZUFBZSxHQUFHLElBQUksRUFBRSxLQUFhO1FBQzVELE1BQU0sSUFBSSxHQUF1QjtZQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDZCxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDbEIsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ25CLE1BQU0sRUFBRSxLQUFLO1lBQ2IsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsS0FBSztTQUNSLENBQUM7UUFDRixJQUFJLGVBQWUsRUFBRTtZQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztTQUM3QztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSx1QkFB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VSxFQUFFO1lBQ3JCLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUM7WUFDaEMsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUNyRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7U0FDbkQ7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOzsrR0FuSVEsa0JBQWtCO21IQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSUdyaWRFZGl0RG9uZUV2ZW50QXJncywgSUdyaWRFZGl0RXZlbnRBcmdzLCBJUm93RGF0YUV2ZW50QXJncyB9IGZyb20gJy4uL2NvbW1vbi9ldmVudHMnO1xuaW1wb3J0IHsgR3JpZFR5cGUsIFJvd1R5cGUgfSBmcm9tICcuL2dyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIElneEVkaXRSb3cge1xuICAgIHB1YmxpYyB0cmFuc2FjdGlvblN0YXRlOiBhbnk7XG4gICAgcHVibGljIHN0YXRlOiBhbnk7XG4gICAgcHVibGljIG5ld0RhdGE6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBpZDogYW55LCBwdWJsaWMgaW5kZXg6IG51bWJlciwgcHVibGljIGRhdGE6IGFueSwgcHVibGljIGdyaWQ6IEdyaWRUeXBlKSB7IH1cblxuICAgIHB1YmxpYyBjcmVhdGVFZGl0RXZlbnRBcmdzKGluY2x1ZGVOZXdWYWx1ZSA9IHRydWUsIGV2ZW50PzogRXZlbnQpOiBJR3JpZEVkaXRFdmVudEFyZ3Mge1xuICAgICAgICBjb25zdCBhcmdzOiBJR3JpZEVkaXRFdmVudEFyZ3MgPSB7XG4gICAgICAgICAgICByb3dJRDogdGhpcy5pZCxcbiAgICAgICAgICAgIHJvd0RhdGE6IHRoaXMuZGF0YSxcbiAgICAgICAgICAgIG9sZFZhbHVlOiB0aGlzLmRhdGEsXG4gICAgICAgICAgICBjYW5jZWw6IGZhbHNlLFxuICAgICAgICAgICAgb3duZXI6IHRoaXMuZ3JpZCxcbiAgICAgICAgICAgIGlzQWRkUm93OiBmYWxzZSxcbiAgICAgICAgICAgIGV2ZW50XG4gICAgICAgIH07XG4gICAgICAgIGlmIChpbmNsdWRlTmV3VmFsdWUpIHtcbiAgICAgICAgICAgIGFyZ3MubmV3VmFsdWUgPSB0aGlzLm5ld0RhdGEgPz8gdGhpcy5kYXRhO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcmdzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVEb25lRWRpdEV2ZW50QXJncyhjYWNoZWRSb3dEYXRhOiBhbnksIGV2ZW50PzogRXZlbnQpOiBJR3JpZEVkaXREb25lRXZlbnRBcmdzIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSB0aGlzLmdyaWQudHJhbnNhY3Rpb25zLmVuYWJsZWQgP1xuICAgICAgICAgICAgdGhpcy5ncmlkLnRyYW5zYWN0aW9ucy5nZXRBZ2dyZWdhdGVkVmFsdWUodGhpcy5pZCwgdHJ1ZSkgOiB0aGlzLmdyaWQuZ3JpZEFQSS5nZXRSb3dEYXRhKHRoaXMuaWQpO1xuICAgICAgICBjb25zdCByb3dEYXRhID0gdXBkYXRlZERhdGEgPz8gdGhpcy5ncmlkLmdyaWRBUEkuZ2V0Um93RGF0YSh0aGlzLmlkKTtcbiAgICAgICAgY29uc3QgYXJnczogSUdyaWRFZGl0RG9uZUV2ZW50QXJncyA9IHtcbiAgICAgICAgICAgIHJvd0lEOiB0aGlzLmlkLFxuICAgICAgICAgICAgcm93RGF0YSxcbiAgICAgICAgICAgIG9sZFZhbHVlOiBjYWNoZWRSb3dEYXRhLFxuICAgICAgICAgICAgbmV3VmFsdWU6IHVwZGF0ZWREYXRhLFxuICAgICAgICAgICAgb3duZXI6IHRoaXMuZ3JpZCxcbiAgICAgICAgICAgIGlzQWRkUm93OiBmYWxzZSxcbiAgICAgICAgICAgIGV2ZW50XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJZ3hBZGRSb3cgZXh0ZW5kcyBJZ3hFZGl0Um93IHtcbiAgICBwdWJsaWMgaXNBZGRSb3cgPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGlkOiBhbnksXG4gICAgICAgIHB1YmxpYyBpbmRleDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgZGF0YTogYW55LFxuICAgICAgICBwdWJsaWMgcmVjb3JkUmVmOiBhbnksXG4gICAgICAgIHB1YmxpYyBncmlkOiBHcmlkVHlwZSkge1xuICAgICAgICBzdXBlcihpZCwgaW5kZXgsIGRhdGEsIGdyaWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVFZGl0RXZlbnRBcmdzKGluY2x1ZGVOZXdWYWx1ZSA9IHRydWUsIGV2ZW50PzogRXZlbnQpOiBJR3JpZEVkaXRFdmVudEFyZ3Mge1xuICAgICAgICBjb25zdCBhcmdzID0gc3VwZXIuY3JlYXRlRWRpdEV2ZW50QXJncyhpbmNsdWRlTmV3VmFsdWUsIGV2ZW50KTtcbiAgICAgICAgYXJncy5vbGRWYWx1ZSA9IG51bGw7XG4gICAgICAgIGFyZ3MuaXNBZGRSb3cgPSB0cnVlO1xuICAgICAgICByZXR1cm4gYXJncztcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRG9uZUVkaXRFdmVudEFyZ3MoY2FjaGVkUm93RGF0YTogYW55LCBldmVudD86IEV2ZW50KTogSUdyaWRFZGl0RG9uZUV2ZW50QXJncyB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSBzdXBlci5jcmVhdGVEb25lRWRpdEV2ZW50QXJncyhudWxsLCBldmVudCk7XG4gICAgICAgIGFyZ3MuaXNBZGRSb3cgPSB0cnVlO1xuICAgICAgICByZXR1cm4gYXJncztcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWd4QWRkUm93UGFyZW50IHtcbiAgICByb3dJRDogc3RyaW5nO1xuICAgIGluZGV4OiBudW1iZXI7XG4gICAgYXNDaGlsZDogYm9vbGVhbjtcbiAgICBpc1Bpbm5lZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIElneENlbGwge1xuICAgIHB1YmxpYyBwcmltYXJ5S2V5OiBhbnk7XG4gICAgcHVibGljIHN0YXRlOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGlkLFxuICAgICAgICBwdWJsaWMgcm93SW5kZXg6IG51bWJlcixcbiAgICAgICAgcHVibGljIGNvbHVtbixcbiAgICAgICAgcHVibGljIHZhbHVlOiBhbnksXG4gICAgICAgIHB1YmxpYyBlZGl0VmFsdWU6IGFueSxcbiAgICAgICAgcHVibGljIHJvd0RhdGE6IGFueSxcbiAgICAgICAgcHVibGljIGdyaWQ6IEdyaWRUeXBlKSB7IH1cblxuICAgIHB1YmxpYyBjYXN0VG9OdW1iZXIodmFsdWU6IGFueSk6IGFueSB7XG4gICAgICAgIGlmICh0aGlzLmNvbHVtbi5kYXRhVHlwZSA9PT0gJ251bWJlcicgJiYgIXRoaXMuY29sdW1uLmlubGluZUVkaXRvclRlbXBsYXRlKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gIWlzTmFOKHYpICYmIGlzRmluaXRlKHYpID8gdiA6IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVFZGl0RXZlbnRBcmdzKGluY2x1ZGVOZXdWYWx1ZSA9IHRydWUsIGV2ZW50PzogRXZlbnQpOiBJR3JpZEVkaXRFdmVudEFyZ3Mge1xuICAgICAgICBjb25zdCBhcmdzOiBJR3JpZEVkaXRFdmVudEFyZ3MgPSB7XG4gICAgICAgICAgICByb3dJRDogdGhpcy5pZC5yb3dJRCxcbiAgICAgICAgICAgIGNlbGxJRDogdGhpcy5pZCxcbiAgICAgICAgICAgIHJvd0RhdGE6IHRoaXMucm93RGF0YSxcbiAgICAgICAgICAgIG9sZFZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgY2FuY2VsOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW4sXG4gICAgICAgICAgICBvd25lcjogdGhpcy5ncmlkLFxuICAgICAgICAgICAgZXZlbnRcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGluY2x1ZGVOZXdWYWx1ZSkge1xuICAgICAgICAgICAgYXJncy5uZXdWYWx1ZSA9IHRoaXMuY2FzdFRvTnVtYmVyKHRoaXMuZWRpdFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJncztcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRG9uZUVkaXRFdmVudEFyZ3ModmFsdWU6IGFueSwgZXZlbnQ/OiBFdmVudCk6IElHcmlkRWRpdERvbmVFdmVudEFyZ3Mge1xuICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZW5hYmxlZCA/XG4gICAgICAgICAgICB0aGlzLmdyaWQudHJhbnNhY3Rpb25zLmdldEFnZ3JlZ2F0ZWRWYWx1ZSh0aGlzLmlkLnJvd0lELCB0cnVlKSA6IHRoaXMucm93RGF0YTtcbiAgICAgICAgY29uc3Qgcm93RGF0YSA9IHVwZGF0ZWREYXRhID09PSBudWxsID8gdGhpcy5ncmlkLmdyaWRBUEkuZ2V0Um93RGF0YSh0aGlzLmlkLnJvd0lEKSA6IHVwZGF0ZWREYXRhO1xuICAgICAgICBjb25zdCBhcmdzOiBJR3JpZEVkaXREb25lRXZlbnRBcmdzID0ge1xuICAgICAgICAgICAgcm93SUQ6IHRoaXMuaWQucm93SUQsXG4gICAgICAgICAgICBjZWxsSUQ6IHRoaXMuaWQsXG4gICAgICAgICAgICAvLyByb3dEYXRhIC0gc2hvdWxkIGJlIHRoZSB1cGRhdGVkL2NvbW1pdHRlZCByb3dEYXRhIC0gdGhpcyBlZmZlY3RpdmVseSBzaG91bGQgYmUgdGhlIG5ld1ZhbHVlXG4gICAgICAgICAgICAvLyB0aGUgb25seSBjYXNlIHdlIHVzZSB0aGlzLnJvd0RhdGEgZGlyZWN0bHksIGlzIHdoZW4gdGhlcmUgaXMgbm8gcm93RWRpdGluZyBvciB0cmFuc2FjdGlvbnMgZW5hYmxlZFxuICAgICAgICAgICAgcm93RGF0YSxcbiAgICAgICAgICAgIG9sZFZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgbmV3VmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgY29sdW1uOiB0aGlzLmNvbHVtbixcbiAgICAgICAgICAgIG93bmVyOiB0aGlzLmdyaWQsXG4gICAgICAgICAgICBldmVudFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gYXJncztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJZ3hDZWxsQ3J1ZFN0YXRlIHtcbiAgICBwdWJsaWMgZ3JpZDogR3JpZFR5cGU7XG4gICAgcHVibGljIGNlbGw6IElneENlbGwgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgcm93OiBJZ3hFZGl0Um93IHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIGlzSW5Db21wb3NpdGlvbk1vZGUgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBjcmVhdGVDZWxsKGNlbGwpOiBJZ3hDZWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2VsbCA9IG5ldyBJZ3hDZWxsKGNlbGwuY2VsbElEIHx8IGNlbGwuaWQsIGNlbGwucm93LmluZGV4LCBjZWxsLmNvbHVtbiwgY2VsbC52YWx1ZSwgY2VsbC52YWx1ZSxcbiAgICAgICAgICAgIGNlbGwucm93LmRhdGEsIGNlbGwuZ3JpZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZVJvdyhjZWxsOiBJZ3hDZWxsKTogSWd4RWRpdFJvdyB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdyA9IG5ldyBJZ3hFZGl0Um93KGNlbGwuaWQucm93SUQsIGNlbGwucm93SW5kZXgsIGNlbGwucm93RGF0YSwgY2VsbC5ncmlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2FtZVJvdyhyb3dJRCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3cgJiYgdGhpcy5yb3cuaWQgPT09IHJvd0lEO1xuICAgIH1cblxuICAgIHB1YmxpYyBzYW1lQ2VsbChjZWxsOiBJZ3hDZWxsKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAodGhpcy5jZWxsLmlkLnJvd0lEID09PSBjZWxsLmlkLnJvd0lEICYmXG4gICAgICAgICAgICB0aGlzLmNlbGwuaWQuY29sdW1uSUQgPT09IGNlbGwuaWQuY29sdW1uSUQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY2VsbEluRWRpdE1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuY2VsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYmVnaW5DZWxsRWRpdChldmVudD86IEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmNlbGwuY3JlYXRlRWRpdEV2ZW50QXJncyhmYWxzZSwgZXZlbnQpO1xuICAgICAgICB0aGlzLmdyaWQuY2VsbEVkaXRFbnRlci5lbWl0KGFyZ3MpO1xuXG4gICAgICAgIGlmIChhcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgdGhpcy5lbmRDZWxsRWRpdCgpO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgY2VsbEVkaXQoZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICBjb25zdCBhcmdzID0gdGhpcy5jZWxsLmNyZWF0ZUVkaXRFdmVudEFyZ3ModHJ1ZSwgZXZlbnQpO1xuICAgICAgICB0aGlzLmdyaWQuY2VsbEVkaXQuZW1pdChhcmdzKTtcbiAgICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZUNlbGwoZXhpdDogYm9vbGVhbiwgZXZlbnQ/OiBFdmVudCk6IElHcmlkRWRpdEV2ZW50QXJncyB7XG4gICAgICAgIGlmICghdGhpcy5jZWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZG9uZUFyZ3M7XG4gICAgICAgIGlmIChpc0VxdWFsKHRoaXMuY2VsbC52YWx1ZSwgdGhpcy5jZWxsLmVkaXRWYWx1ZSkpIHtcbiAgICAgICAgICAgIGRvbmVBcmdzID0gdGhpcy5leGl0Q2VsbEVkaXQoZXZlbnQpO1xuICAgICAgICAgICAgcmV0dXJuIGRvbmVBcmdzO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXJncyA9IHRoaXMuY2VsbEVkaXQoZXZlbnQpO1xuICAgICAgICBpZiAoYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmdzO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ncmlkLmdyaWRBUEkudXBkYXRlX2NlbGwodGhpcy5jZWxsKTtcblxuICAgICAgICBkb25lQXJncyA9IHRoaXMuY2VsbEVkaXREb25lKGV2ZW50LCBmYWxzZSk7XG4gICAgICAgIGlmIChleGl0KSB7XG4gICAgICAgICAgICBkb25lQXJncyA9IHRoaXMuZXhpdENlbGxFZGl0KGV2ZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IC4uLmFyZ3MsIC4uLmRvbmVBcmdzIH07XG4gICAgfVxuXG4gICAgcHVibGljIGNlbGxFZGl0RG9uZShldmVudCwgYWRkUm93OiBib29sZWFuKTogSUdyaWRFZGl0RG9uZUV2ZW50QXJncyB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5jZWxsLmNhc3RUb051bWJlcih0aGlzLmNlbGwuZWRpdFZhbHVlKTtcbiAgICAgICAgY29uc3QgZG9uZUFyZ3MgPSB0aGlzLmNlbGwuY3JlYXRlRG9uZUVkaXRFdmVudEFyZ3MobmV3VmFsdWUsIGV2ZW50KTtcbiAgICAgICAgdGhpcy5ncmlkLmNlbGxFZGl0RG9uZS5lbWl0KGRvbmVBcmdzKTtcbiAgICAgICAgaWYgKGFkZFJvdykge1xuICAgICAgICAgICAgZG9uZUFyZ3Mucm93RGF0YSA9IHRoaXMucm93LmRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRvbmVBcmdzO1xuICAgIH1cblxuICAgIC8qKiBFeGl0IGNlbGwgZWRpdCBtb2RlICovXG4gICAgcHVibGljIGV4aXRDZWxsRWRpdChldmVudD86IEV2ZW50KTogSUdyaWRFZGl0RG9uZUV2ZW50QXJncyB7XG4gICAgICAgIGlmICghdGhpcy5jZWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuY2VsbC5jYXN0VG9OdW1iZXIodGhpcy5jZWxsLmVkaXRWYWx1ZSk7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmNlbGw/LmNyZWF0ZURvbmVFZGl0RXZlbnRBcmdzKG5ld1ZhbHVlLCBldmVudCk7XG5cbiAgICAgICAgdGhpcy5jZWxsLnZhbHVlID0gbmV3VmFsdWU7XG5cbiAgICAgICAgdGhpcy5ncmlkLmNlbGxFZGl0RXhpdC5lbWl0KGFyZ3MpO1xuICAgICAgICB0aGlzLmVuZENlbGxFZGl0KCk7XG4gICAgICAgIHJldHVybiBhcmdzO1xuICAgIH1cblxuICAgIC8qKiBDbGVhcnMgY2VsbCBlZGl0aW5nIHN0YXRlICovXG4gICAgcHVibGljIGVuZENlbGxFZGl0KCkge1xuICAgICAgICB0aGlzLmNlbGwgPSBudWxsO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHRhcmdldGVkIGNlbGwgaXMgaW4gZWRpdCBtb2RlICovXG4gICAgcHVibGljIHRhcmdldEluRWRpdChyb3dJbmRleDogbnVtYmVyLCBjb2x1bW5JbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5jZWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5jZWxsLmNvbHVtbi5pbmRleCA9PT0gY29sdW1uSW5kZXggJiYgdGhpcy5jZWxsLnJvd0luZGV4ID09PSByb3dJbmRleDtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgSWd4Um93Q3J1ZFN0YXRlIGV4dGVuZHMgSWd4Q2VsbENydWRTdGF0ZSB7XG4gICAgcHVibGljIHJvdzogSWd4RWRpdFJvdyB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBjbG9zZVJvd0VkaXRpbmdPdmVybGF5ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIHByaXZhdGUgX3Jvd0VkaXRpbmdCbG9ja2VkID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgZ2V0IHByaW1hcnlLZXkoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5wcmltYXJ5S2V5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcm93SW5FZGl0TW9kZSgpOiBSb3dUeXBlIHtcbiAgICAgICAgY29uc3QgZWRpdFJvd1N0YXRlID0gdGhpcy5yb3c7XG4gICAgICAgIHJldHVybiBlZGl0Um93U3RhdGUgIT09IG51bGwgPyB0aGlzLmdyaWQucm93TGlzdC5maW5kKGUgPT4gZS5rZXkgPT09IGVkaXRSb3dTdGF0ZS5pZCkgOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcm93RWRpdGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5yb3dFZGl0YWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJvd0VkaXRpbmdCbG9ja2VkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93RWRpdGluZ0Jsb2NrZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCByb3dFZGl0aW5nQmxvY2tlZCh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcm93RWRpdGluZ0Jsb2NrZWQgPSB2YWw7XG4gICAgfVxuXG4gICAgLyoqIEVudGVycyByb3cgZWRpdCBtb2RlICovXG4gICAgcHVibGljIGJlZ2luUm93RWRpdChldmVudD86IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmdyaWQucm93RWRpdGFibGUgJiYgKHRoaXMuZ3JpZC5wcmltYXJ5S2V5ID09PSB1bmRlZmluZWQgfHwgdGhpcy5ncmlkLnByaW1hcnlLZXkgPT09IG51bGwpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1RoZSBncmlkIG11c3QgaGF2ZSBhIGBwcmltYXJ5S2V5YCBzcGVjaWZpZWQgd2hlbiB1c2luZyBgcm93RWRpdGFibGVgIScpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLnJvdyB8fCAhKHRoaXMucm93LmdldENsYXNzTmFtZSgpID09PSBJZ3hFZGl0Um93Lm5hbWUpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucm93KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVSb3codGhpcy5jZWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJvd0FyZ3MgPSB0aGlzLnJvdy5jcmVhdGVFZGl0RXZlbnRBcmdzKGZhbHNlLCBldmVudCk7XG5cbiAgICAgICAgICAgIHRoaXMuZ3JpZC5yb3dFZGl0RW50ZXIuZW1pdChyb3dBcmdzKTtcbiAgICAgICAgICAgIGlmIChyb3dBcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZW5kRWRpdE1vZGUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yb3cudHJhbnNhY3Rpb25TdGF0ZSA9IHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZ2V0QWdncmVnYXRlZFZhbHVlKHRoaXMucm93LmlkLCB0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuc3RhcnRQZW5kaW5nKCk7XG4gICAgICAgICAgICB0aGlzLmdyaWQub3BlblJvd092ZXJsYXkodGhpcy5yb3cuaWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJvd0VkaXQoZXZlbnQ6IEV2ZW50KTogSUdyaWRFZGl0RXZlbnRBcmdzIHtcbiAgICAgICAgY29uc3QgYXJncyA9IHRoaXMucm93LmNyZWF0ZUVkaXRFdmVudEFyZ3ModHJ1ZSwgZXZlbnQpO1xuICAgICAgICB0aGlzLmdyaWQucm93RWRpdC5lbWl0KGFyZ3MpO1xuICAgICAgICByZXR1cm4gYXJncztcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlUm93KGNvbW1pdDogYm9vbGVhbiwgZXZlbnQ/OiBFdmVudCk6IElHcmlkRWRpdEV2ZW50QXJncyB7XG4gICAgICAgIGlmICghdGhpcy5ncmlkLnJvd0VkaXRhYmxlIHx8XG4gICAgICAgICAgICB0aGlzLmdyaWQucm93RWRpdGluZ092ZXJsYXkgJiZcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5yb3dFZGl0aW5nT3ZlcmxheS5jb2xsYXBzZWQgfHwgIXRoaXMucm93KSB7XG4gICAgICAgICAgICByZXR1cm4ge30gYXMgSUdyaWRFZGl0RXZlbnRBcmdzO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGFyZ3M7XG4gICAgICAgIGlmIChjb21taXQpIHtcbiAgICAgICAgICAgIHRoaXMucm93Lm5ld0RhdGEgPSB0aGlzLmdyaWQudHJhbnNhY3Rpb25zLmdldEFnZ3JlZ2F0ZWRWYWx1ZSh0aGlzLnJvdy5pZCwgdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVJvd0VkaXREYXRhKHRoaXMucm93LCB0aGlzLnJvdy5uZXdEYXRhKTtcbiAgICAgICAgICAgIGFyZ3MgPSB0aGlzLnJvd0VkaXQoZXZlbnQpO1xuICAgICAgICAgICAgaWYgKGFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMucm93Lm5ld0RhdGE7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLnRyYW5zYWN0aW9ucy5jbGVhcih0aGlzLnJvdy5pZCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhcmdzID0gdGhpcy5lbmRSb3dUcmFuc2FjdGlvbihjb21taXQsIGV2ZW50KTtcblxuICAgICAgICByZXR1cm4gYXJncztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBlbmRSb3dUcmFuc2FjdGlvbihjb21taXQ6IGJvb2xlYW4sIGV2ZW50PzogRXZlbnQpOiBJR3JpZEVkaXRFdmVudEFyZ3Mge1xuICAgICAgICB0aGlzLnJvdy5uZXdEYXRhID0gdGhpcy5ncmlkLnRyYW5zYWN0aW9ucy5nZXRBZ2dyZWdhdGVkVmFsdWUodGhpcy5yb3cuaWQsIHRydWUpO1xuICAgICAgICBsZXQgcm93RWRpdEFyZ3MgPSB0aGlzLnJvdy5jcmVhdGVFZGl0RXZlbnRBcmdzKHRydWUsIGV2ZW50KTtcblxuICAgICAgICBsZXQgbm9uQ2FuY2VsYWJsZUFyZ3M7XG4gICAgICAgIGlmICghY29tbWl0KSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQudHJhbnNhY3Rpb25zLmVuZFBlbmRpbmcoZmFsc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucm93LmdldENsYXNzTmFtZSgpID09PSBJZ3hFZGl0Um93Lm5hbWUpIHtcbiAgICAgICAgICAgIHJvd0VkaXRBcmdzID0gdGhpcy5ncmlkLmdyaWRBUEkudXBkYXRlX3Jvdyh0aGlzLnJvdywgdGhpcy5yb3cubmV3RGF0YSwgZXZlbnQpO1xuICAgICAgICAgICAgbm9uQ2FuY2VsYWJsZUFyZ3MgPSB0aGlzLnJvd0VkaXREb25lKHJvd0VkaXRBcmdzLm9sZFZhbHVlLCBldmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByb3dBZGRBcmdzID0gdGhpcy5yb3cuY3JlYXRlRWRpdEV2ZW50QXJncyh0cnVlLCBldmVudCk7XG4gICAgICAgICAgICB0aGlzLmdyaWQucm93QWRkLmVtaXQocm93QWRkQXJncyk7XG4gICAgICAgICAgICBpZiAocm93QWRkQXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm93QWRkQXJncztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ncmlkLnRyYW5zYWN0aW9ucy5lbmRQZW5kaW5nKGZhbHNlKTtcblxuICAgICAgICAgICAgY29uc3QgcGFyZW50SWQgPSB0aGlzLmdldFBhcmVudFJvd0lkKCk7XG4gICAgICAgICAgICB0aGlzLmdyaWQuZ3JpZEFQSS5hZGRSb3dUb0RhdGEodGhpcy5yb3cubmV3RGF0YSA/PyB0aGlzLnJvdy5kYXRhLCBwYXJlbnRJZCk7XG4gICAgICAgICAgICB0aGlzLmdyaWQudHJpZ2dlclBpcGVzKCk7XG5cbiAgICAgICAgICAgIG5vbkNhbmNlbGFibGVBcmdzID0gdGhpcy5yb3dFZGl0RG9uZShudWxsLCBldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBub25DYW5jZWxhYmxlQXJncyA9IHRoaXMuZXhpdFJvd0VkaXQocm93RWRpdEFyZ3Mub2xkVmFsdWUsIGV2ZW50KTtcblxuICAgICAgICByZXR1cm4geyAuLi5ub25DYW5jZWxhYmxlQXJncywgLi4ucm93RWRpdEFyZ3MgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcm93RWRpdERvbmUoY2FjaGVkUm93RGF0YSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGRvbmVBcmdzID0gdGhpcy5yb3cuY3JlYXRlRG9uZUVkaXRFdmVudEFyZ3MoY2FjaGVkUm93RGF0YSwgZXZlbnQpO1xuICAgICAgICB0aGlzLmdyaWQucm93RWRpdERvbmUuZW1pdChkb25lQXJncyk7XG4gICAgICAgIHJldHVybiBkb25lQXJncztcbiAgICB9XG5cblxuICAgIC8qKiBFeGl0IHJvdyBlZGl0IG1vZGUgKi9cbiAgICBwdWJsaWMgZXhpdFJvd0VkaXQoY2FjaGVkUm93RGF0YSwgZXZlbnQ/OiBFdmVudCk6IElHcmlkRWRpdERvbmVFdmVudEFyZ3Mge1xuICAgICAgICBjb25zdCBub25DYW5jZWxhYmxlQXJncyA9IHRoaXMucm93LmNyZWF0ZURvbmVFZGl0RXZlbnRBcmdzKGNhY2hlZFJvd0RhdGEsIGV2ZW50KTtcbiAgICAgICAgdGhpcy5ncmlkLnJvd0VkaXRFeGl0LmVtaXQobm9uQ2FuY2VsYWJsZUFyZ3MpO1xuICAgICAgICB0aGlzLmdyaWQuY2xvc2VSb3dFZGl0aW5nT3ZlcmxheSgpO1xuXG4gICAgICAgIHRoaXMuZW5kUm93RWRpdCgpO1xuICAgICAgICByZXR1cm4gbm9uQ2FuY2VsYWJsZUFyZ3M7XG4gICAgfVxuXG4gICAgLyoqIENsZWFycyByb3cgZWRpdGluZyBzdGF0ZSAqL1xuICAgIHB1YmxpYyBlbmRSb3dFZGl0KCkge1xuICAgICAgICB0aGlzLnJvdyA9IG51bGw7XG4gICAgICAgIHRoaXMucm93RWRpdGluZ0Jsb2NrZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQ2xlYXJzIGNlbGwgYW5kIHJvdyBlZGl0aW5nIHN0YXRlIGFuZCBjbG9zZXMgcm93IGVkaXRpbmcgdGVtcGxhdGUgaWYgaXQgaXMgb3BlbiAqL1xuICAgIHB1YmxpYyBlbmRFZGl0TW9kZSgpIHtcbiAgICAgICAgdGhpcy5lbmRDZWxsRWRpdCgpO1xuICAgICAgICBpZiAodGhpcy5ncmlkLnJvd0VkaXRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmVuZFJvd0VkaXQoKTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5jbG9zZVJvd0VkaXRpbmdPdmVybGF5KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlUm93RWRpdERhdGEocm93OiBJZ3hFZGl0Um93LCB2YWx1ZT86IGFueSkge1xuICAgICAgICBjb25zdCBncmlkID0gdGhpcy5ncmlkO1xuXG4gICAgICAgIGNvbnN0IHJvd0luRWRpdE1vZGUgPSBncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2Uucm93O1xuICAgICAgICByb3cubmV3RGF0YSA9IHZhbHVlID8/IHJvd0luRWRpdE1vZGUudHJhbnNhY3Rpb25TdGF0ZTtcblxuXG4gICAgICAgIGlmIChyb3dJbkVkaXRNb2RlICYmIHJvdy5pZCA9PT0gcm93SW5FZGl0TW9kZS5pZCkge1xuICAgICAgICAgICAgcm93LmRhdGEgPSB7IC4uLnJvdy5kYXRhLCAuLi5yb3dJbkVkaXRNb2RlLnRyYW5zYWN0aW9uU3RhdGUgfTtcbiAgICAgICAgICAgIC8vIFRPRE86IFdvcmthcm91bmQgZm9yIHVwZGF0aW5nIGEgcm93IGluIGVkaXQgbW9kZSB0aHJvdWdoIHRoZSBBUElcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdyaWQudHJhbnNhY3Rpb25zLmVuYWJsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gZ3JpZC50cmFuc2FjdGlvbnMuZ2V0U3RhdGUocm93LmlkKTtcbiAgICAgICAgICAgIHJvdy5kYXRhID0gc3RhdGUgPyBPYmplY3QuYXNzaWduKHt9LCByb3cuZGF0YSwgc3RhdGUudmFsdWUpIDogcm93LmRhdGE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0UGFyZW50Um93SWQoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIElneFJvd0FkZENydWRTdGF0ZSBleHRlbmRzIElneFJvd0NydWRTdGF0ZSB7XG4gICAgcHVibGljIGFkZFJvd1BhcmVudDogSWd4QWRkUm93UGFyZW50ID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZUFkZFJvdyhwYXJlbnRSb3c6IFJvd1R5cGUsIGFzQ2hpbGQ/OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlQWRkUm93UGFyZW50KHBhcmVudFJvdywgYXNDaGlsZCk7XG5cbiAgICAgICAgY29uc3QgbmV3UmVjID0gdGhpcy5ncmlkLmdldEVtcHR5UmVjb3JkT2JqZWN0Rm9yKHBhcmVudFJvdyk7XG4gICAgICAgIGNvbnN0IGFkZFJvd0luZGV4ID0gdGhpcy5hZGRSb3dQYXJlbnQuaW5kZXggKyAxO1xuICAgICAgICByZXR1cm4gdGhpcy5yb3cgPSBuZXcgSWd4QWRkUm93KG5ld1JlYy5yb3dJRCwgYWRkUm93SW5kZXgsIG5ld1JlYy5kYXRhLCBuZXdSZWMucmVjb3JkUmVmLCB0aGlzLmdyaWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZUFkZFJvd1BhcmVudChyb3c6IFJvd1R5cGUsIG5ld1Jvd0FzQ2hpbGQ/OiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IHJvd0luZGV4ID0gcm93ID8gcm93LmluZGV4IDogLTE7XG4gICAgICAgIGNvbnN0IHJvd0lkID0gcm93ID8gcm93LmtleSA6IChyb3dJbmRleCA+PSAwID8gdGhpcy5ncmlkLnJvd0xpc3QubGFzdC5rZXkgOiBudWxsKTtcblxuICAgICAgICBjb25zdCBpc0luUGlubmVkQXJlYSA9IHRoaXMuZ3JpZC5pc1JlY29yZFBpbm5lZEJ5Vmlld0luZGV4KHJvd0luZGV4KTtcbiAgICAgICAgY29uc3QgcGluSW5kZXggPSB0aGlzLmdyaWQucGlubmVkUmVjb3Jkcy5maW5kSW5kZXgoeCA9PiB4W3RoaXMucHJpbWFyeUtleV0gPT09IHJvd0lkKTtcbiAgICAgICAgY29uc3QgdW5waW5JbmRleCA9IHRoaXMuZ3JpZC5nZXRVbnBpbm5lZEluZGV4QnlJZChyb3dJZCk7XG4gICAgICAgIHRoaXMuYWRkUm93UGFyZW50ID0ge1xuICAgICAgICAgICAgcm93SUQ6IHJvd0lkLFxuICAgICAgICAgICAgaW5kZXg6IGlzSW5QaW5uZWRBcmVhID8gcGluSW5kZXggOiB1bnBpbkluZGV4LFxuICAgICAgICAgICAgYXNDaGlsZDogbmV3Um93QXNDaGlsZCxcbiAgICAgICAgICAgIGlzUGlubmVkOiBpc0luUGlubmVkQXJlYVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGVuZFJvd1RyYW5zYWN0aW9uKGNvbW1pdDogYm9vbGVhbiwgZXZlbnQ/OiBFdmVudCk6IElHcmlkRWRpdEV2ZW50QXJncyB7XG4gICAgICAgIGlmICh0aGlzLnJvdyAmJiB0aGlzLnJvdy5nZXRDbGFzc05hbWUoKSA9PT0gSWd4QWRkUm93Lm5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5yb3dBZGRlZC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoYWRkUm93QXJnczogSVJvd0RhdGFFdmVudEFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dEYXRhID0gYWRkUm93QXJncy5kYXRhO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBpbm5lZEluZGV4ID0gdGhpcy5ncmlkLnBpbm5lZFJlY29yZHMuZmluZEluZGV4KHggPT4geFt0aGlzLnByaW1hcnlLZXldID09PSByb3dEYXRhW3RoaXMucHJpbWFyeUtleV0pO1xuICAgICAgICAgICAgICAgIC8vIEEgY2hlY2sgd2hldGhlciB0aGUgcm93IGlzIGluIHRoZSBjdXJyZW50IHZpZXdcbiAgICAgICAgICAgICAgICBjb25zdCB2aWV3SW5kZXggPSBwaW5uZWRJbmRleCAhPT0gLTEgPyBwaW5uZWRJbmRleCA6IHRoaXMuX2ZpbmRSZWNvcmRJbmRleEluVmlldyhyb3dEYXRhKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhSW5kZXggPSB0aGlzLmdyaWQuZmlsdGVyZWRTb3J0ZWREYXRhLmZpbmRJbmRleChkYXRhID0+IGRhdGFbdGhpcy5wcmltYXJ5S2V5XSA9PT0gcm93RGF0YVt0aGlzLnByaW1hcnlLZXldKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0luVmlldyA9IHZpZXdJbmRleCAhPT0gLTEgJiYgIXRoaXMuZ3JpZC5uYXZpZ2F0aW9uLnNob3VsZFBlcmZvcm1WZXJ0aWNhbFNjcm9sbCh2aWV3SW5kZXgsIDApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNob3dJbmRleCA9IGlzSW5WaWV3ID8gLTEgOiBkYXRhSW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLnNob3dTbmFja2JhckZvcihzaG93SW5kZXgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcmdzID0gc3VwZXIuZW5kUm93VHJhbnNhY3Rpb24oY29tbWl0LCBldmVudCk7XG4gICAgICAgIGlmIChhcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVuZEFkZFJvdygpO1xuICAgICAgICBpZiAoY29tbWl0KSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQucm93QWRkZWROb3RpZmllci5uZXh0KHsgZGF0YTogYXJncy5uZXdWYWx1ZSB9KTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5yb3dBZGRlZC5lbWl0KHsgZGF0YTogYXJncy5uZXdWYWx1ZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhcmdzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGVuZEFkZFJvdygpIHtcbiAgICAgICAgdGhpcy5hZGRSb3dQYXJlbnQgPSBudWxsO1xuICAgICAgICB0aGlzLmdyaWQudHJpZ2dlclBpcGVzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqIFRPRE86IGNvbnNpZGVyIGNoYW5naW5nIG1vZGlmaWVyXG4gICAgICovXG4gICAgcHVibGljIF9maW5kUmVjb3JkSW5kZXhJblZpZXcocmVjKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuZGF0YVZpZXcuZmluZEluZGV4KGRhdGEgPT4gZGF0YVt0aGlzLnByaW1hcnlLZXldID09PSByZWNbdGhpcy5wcmltYXJ5S2V5XSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFBhcmVudFJvd0lkKCkge1xuICAgICAgICBpZiAodGhpcy5hZGRSb3dQYXJlbnQuYXNDaGlsZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkUm93UGFyZW50LmFzQ2hpbGQgPyB0aGlzLmFkZFJvd1BhcmVudC5yb3dJRCA6IHVuZGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFkZFJvd1BhcmVudC5yb3dJRCAhPT0gbnVsbCAmJiB0aGlzLmFkZFJvd1BhcmVudC5yb3dJRCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBzcGF3bmVkRm9yUmVjb3JkID0gdGhpcy5ncmlkLmdyaWRBUEkuZ2V0X3JlY19ieV9pZCh0aGlzLmFkZFJvd1BhcmVudC5yb3dJRCk7XG4gICAgICAgICAgICByZXR1cm4gc3Bhd25lZEZvclJlY29yZD8ucGFyZW50Py5yb3dJRDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIElneEdyaWRDUlVEU2VydmljZSBleHRlbmRzIElneFJvd0FkZENydWRTdGF0ZSB7XG5cbiAgICBwdWJsaWMgZW50ZXJFZGl0TW9kZShjZWxsLCBldmVudD86IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzSW5Db21wb3NpdGlvbk1vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNlbGxJbkVkaXRNb2RlKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBjYXNlIHNvbGVseSBmb3IgZjIvZW50ZXIgbmF2IHRoYXQgdXNlcyBlbnRlckVkaXRNb2RlIGFzIHRvZ2dsZS4gUmVmYWN0b3IuXG4gICAgICAgICAgICBjb25zdCBjYW5jZWxlZCA9IHRoaXMuZW5kRWRpdCh0cnVlLCBldmVudCk7XG5cbiAgICAgICAgICAgIGlmICghY2FuY2VsZWQgfHwgIXRoaXMuY2VsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC50Ym9keS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIHRoaXMuY3JlYXRlQ2VsbChjZWxsKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvd0VkaXRpbmcpIHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPIHJvd0RhdGFcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yb3cgJiYgIXRoaXMuc2FtZVJvdyh0aGlzLmNlbGw/LmlkPy5yb3dJRCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dFZGl0aW5nQmxvY2tlZCA9IHRoaXMuZW5kRWRpdCh0cnVlLCBldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJvd0VkaXRpbmdCbG9ja2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIGVudGVycyBoZXJlLCBAZW5kRWRpdCBjbGVhcnMgdGhlIG5ldyByZWZlcmVuY2Ugb2YgdGhlIGNlbGwgZWRpdC5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVDZWxsKGNlbGwpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd0VkaXRpbmdCbG9ja2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW5kUm93RWRpdCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGNhbmNlbGVkID0gdGhpcy5iZWdpblJvd0VkaXQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIGlmICghY2FuY2VsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbkNlbGxFZGl0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWdpbkNlbGxFZGl0KGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVudGVycyBhZGQgcm93IG1vZGUgYnkgY3JlYXRpbmcgdGVtcG9yYXJ5IGR1bW15IHNvIHRoZSB1c2VyIGNhbiBmaWxsIGluIG5ldyByb3cgY2VsbHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyZW50Um93IFBhcmVudCByb3cgYWZ0ZXIgd2hpY2ggdGhlIEFkZCBSb3cgVUkgd2lsbCBiZSByZW5kZXJlZC5cbiAgICAgKiAgICAgICAgICAgICAgICAgIElmIGBudWxsYCB3aWxsIHNob3cgaXQgYXQgdGhlIGJvdHRvbSBhZnRlciBhbGwgcm93cyAob3IgdG9wIGlmIHRoZXJlIGFyZSBub3Qgcm93cykuXG4gICAgICogQHBhcmFtIGFzQ2hpbGQgU3BlY2lmaWVzIGlmIHRoZSBuZXcgcm93IHNob3VsZCBiZSBhZGRlZCBhcyBhIGNoaWxkIHRvIGEgdHJlZSByb3cuXG4gICAgICogQHBhcmFtIGV2ZW50IEJhc2UgZXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGFkZCByb3cgbW9kZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZW50ZXJBZGRSb3dNb2RlKHBhcmVudFJvdzogUm93VHlwZSwgYXNDaGlsZD86IGJvb2xlYW4sIGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvd0VkaXRpbmcgJiYgKHRoaXMuZ3JpZC5wcmltYXJ5S2V5ID09PSB1bmRlZmluZWQgfHwgdGhpcy5ncmlkLnByaW1hcnlLZXkgPT09IG51bGwpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1RoZSBncmlkIG11c3QgdXNlIHJvdyBlZGl0IG1vZGUgdG8gcGVyZm9ybSByb3cgYWRkaW5nISBQbGVhc2Ugc2V0IHJvd0VkaXRhYmxlIHRvIHRydWUuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbmRFZGl0KHRydWUsIGV2ZW50KTtcblxuICAgICAgICBpZiAocGFyZW50Um93ICE9IG51bGwgJiYgdGhpcy5ncmlkLmV4cGFuc2lvblN0YXRlcy5nZXQocGFyZW50Um93LmtleSkpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5jb2xsYXBzZVJvdyhwYXJlbnRSb3cua2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3JlYXRlQWRkUm93KHBhcmVudFJvdywgYXNDaGlsZCk7XG5cbiAgICAgICAgdGhpcy5ncmlkLnRyYW5zYWN0aW9ucy5zdGFydFBlbmRpbmcoKTtcbiAgICAgICAgaWYgKHRoaXMuYWRkUm93UGFyZW50LmlzUGlubmVkKSB7XG4gICAgICAgICAgICAvLyBJZiBwYXJlbnQgaXMgcGlubmVkLCBhZGQgdGhlIG5ldyByb3cgdG8gcGlubmVkIHJlY29yZHNcbiAgICAgICAgICAgICh0aGlzLmdyaWQgYXMgYW55KS5fcGlubmVkUmVjb3JkSURzLnNwbGljZSh0aGlzLnJvdy5pbmRleCwgMCwgdGhpcy5yb3cuaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ncmlkLnRyaWdnZXJQaXBlcygpO1xuICAgICAgICB0aGlzLmdyaWQubm90aWZ5Q2hhbmdlcyh0cnVlKTtcblxuICAgICAgICB0aGlzLmdyaWQubmF2aWdhdGVUbyh0aGlzLnJvdy5pbmRleCwgLTEpO1xuICAgICAgICAvLyB3aGVuIHNlbGVjdGluZyB0aGUgZHVtbXkgcm93IHdlIG5lZWQgdG8gYWRqdXN0IGZvciB0b3AgcGlubmVkIHJvd3NcbiAgICAgICAgY29uc3QgaW5kZXhBZGp1c3QgPSB0aGlzLmdyaWQuaXNSb3dQaW5uaW5nVG9Ub3AgJiYgIXRoaXMuYWRkUm93UGFyZW50LmlzUGlubmVkID8gdGhpcy5ncmlkLnBpbm5lZFJvd3MubGVuZ3RoIDogMDtcblxuICAgICAgICAvLyBUT0RPOiBUeXBlIHRoaXMgd2l0aG91dCBzaG92aW5nIGEgYnVuY2ggb2YgaW50ZXJuYWwgcHJvcGVydGllcyBpbiB0aGUgcm93IHR5cGVcbiAgICAgICAgY29uc3QgZHVtbXlSb3cgPSB0aGlzLmdyaWQuZ3JpZEFQSS5nZXRfcm93X2J5X2luZGV4KHRoaXMucm93LmluZGV4ICsgaW5kZXhBZGp1c3QpIGFzIGFueTtcbiAgICAgICAgZHVtbXlSb3cudHJpZ2dlckFkZEFuaW1hdGlvbigpO1xuICAgICAgICBkdW1teVJvdy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBkdW1teVJvdy5hZGRBbmltYXRpb25FbmQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2VsbCA9IGR1bW15Um93LmNlbGxzLmZpbmQoYyA9PiBjLmVkaXRhYmxlKTtcbiAgICAgICAgICAgIGlmIChjZWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLmdyaWRBUEkudXBkYXRlX2NlbGwodGhpcy5jZWxsKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVudGVyRWRpdE1vZGUoY2VsbCwgZXZlbnQpO1xuICAgICAgICAgICAgICAgIGNlbGwuYWN0aXZhdGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluaXNoZXMgdGhlIHJvdyB0cmFuc2FjdGlvbnMgb24gdGhlIGN1cnJlbnQgcm93LlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBJZiBgY29tbWl0ID09PSB0cnVlYCwgcGFzc2VzIHRoZW0gZnJvbSB0aGUgcGVuZGluZyBzdGF0ZSB0byB0aGUgZGF0YSAob3IgdHJhbnNhY3Rpb24gc2VydmljZSlcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIGlneEJ1dHRvbiAoY2xpY2spPVwiZ3JpZC5lbmRFZGl0KHRydWUpXCI+Q29tbWl0IFJvdzwvYnV0dG9uPlxuICAgICAqIGBgYFxuICAgICAqIEBwYXJhbSBjb21taXRcbiAgICAgKi9cbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgdGhlIHNhbWUgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1ldGhvZCB3aXRob3V0IGV2dCBlbWlzc2lvbi5cbiAgICBwdWJsaWMgZW5kRWRpdChjb21taXQgPSB0cnVlLCBldmVudD86IEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5yb3cgJiYgIXRoaXMuY2VsbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGFyZ3M7XG4gICAgICAgIGlmIChjb21taXQpIHtcbiAgICAgICAgICAgIGFyZ3MgPSB0aGlzLnVwZGF0ZUNlbGwodHJ1ZSwgZXZlbnQpO1xuICAgICAgICAgICAgaWYgKGFyZ3MgJiYgYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJncy5jYW5jZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmV4aXRDZWxsRWRpdChldmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICBhcmdzID0gdGhpcy51cGRhdGVSb3coY29tbWl0LCBldmVudCk7XG4gICAgICAgIHRoaXMucm93RWRpdGluZ0Jsb2NrZWQgPSBhcmdzLmNhbmNlbDtcbiAgICAgICAgaWYgKGFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFjdGl2ZUNlbGwgPSB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5hY3RpdmVFbGVtZW50O1xuICAgICAgICBpZiAoZXZlbnQgJiYgYWN0aXZlQ2VsbCkge1xuICAgICAgICAgICAgY29uc3Qgcm93SW5kZXggPSBhY3RpdmVDZWxsLnJvdztcbiAgICAgICAgICAgIGNvbnN0IHZpc2libGVDb2xJbmRleCA9IGFjdGl2ZUNlbGwubGF5b3V0ID8gYWN0aXZlQ2VsbC5sYXlvdXQuY29sdW1uVmlzaWJsZUluZGV4IDogYWN0aXZlQ2VsbC5jb2x1bW47XG4gICAgICAgICAgICB0aGlzLmdyaWQubmF2aWdhdGVUbyhyb3dJbmRleCwgdmlzaWJsZUNvbEluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4iXX0=