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
@@ -11,9 +11,9 @@ export class IgxExcelStyleSelectingComponent {
11
11
  this.esf = esf;
12
12
  }
13
13
  }
14
- IgxExcelStyleSelectingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxExcelStyleSelectingComponent, deps: [{ token: i1.BaseFilteringComponent }], target: i0.ɵɵFactoryTarget.Component });
15
- IgxExcelStyleSelectingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: IgxExcelStyleSelectingComponent, selector: "igx-excel-style-selecting", ngImport: i0, template: "<div *ngIf=\"esf.column\"\n [ngClass]=\"esf.column.selected ? 'igx-excel-filter__actions-selected' : 'igx-excel-filter__actions-select'\"\n tabindex=\"0\"\n (click)=\"esf.onSelect()\"\n role=\"button\"\n [attr.aria-pressed]=\"esf.column.selected\">\n <span>{{esf.grid.resourceStrings.igx_grid_excel_select }}</span>\n <igx-icon>done</igx-icon>\n</div>\n", components: [{ type: i2.IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxExcelStyleSelectingComponent, decorators: [{
14
+ IgxExcelStyleSelectingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxExcelStyleSelectingComponent, deps: [{ token: i1.BaseFilteringComponent }], target: i0.ɵɵFactoryTarget.Component });
15
+ IgxExcelStyleSelectingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: IgxExcelStyleSelectingComponent, selector: "igx-excel-style-selecting", ngImport: i0, template: "<div *ngIf=\"esf.column\"\n [ngClass]=\"esf.column.selected ? 'igx-excel-filter__actions-selected' : 'igx-excel-filter__actions-select'\"\n tabindex=\"0\"\n (click)=\"esf.onSelect()\"\n role=\"button\"\n [attr.aria-pressed]=\"esf.column.selected\">\n <span>{{esf.grid.resourceStrings.igx_grid_excel_select }}</span>\n <igx-icon>done</igx-icon>\n</div>\n", components: [{ type: i2.IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxExcelStyleSelectingComponent, decorators: [{
17
17
  type: Component,
18
18
  args: [{ selector: 'igx-excel-style-selecting', template: "<div *ngIf=\"esf.column\"\n [ngClass]=\"esf.column.selected ? 'igx-excel-filter__actions-selected' : 'igx-excel-filter__actions-select'\"\n tabindex=\"0\"\n (click)=\"esf.onSelect()\"\n role=\"button\"\n [attr.aria-pressed]=\"esf.column.selected\">\n <span>{{esf.grid.resourceStrings.igx_grid_excel_select }}</span>\n <igx-icon>done</igx-icon>\n</div>\n" }]
19
19
  }], ctorParameters: function () { return [{ type: i1.BaseFilteringComponent }]; } });
@@ -56,9 +56,9 @@ export class IgxExcelStyleSortingComponent {
56
56
  }
57
57
  }
58
58
  }
59
- IgxExcelStyleSortingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxExcelStyleSortingComponent, deps: [{ token: i1.BaseFilteringComponent }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
60
- IgxExcelStyleSortingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: IgxExcelStyleSortingComponent, selector: "igx-excel-style-sorting", host: { properties: { "class.igx-excel-filter__sort": "this.defaultClass" } }, viewQueries: [{ propertyName: "sortButtonGroup", first: true, predicate: ["sortButtonGroup"], descendants: true, read: IgxButtonGroupComponent }], ngImport: i0, template: "<ng-container *ngIf=\"esf.column\">\n<header>\n {{ esf.grid.resourceStrings.igx_grid_excel_filter_sorting_header }}\n</header>\n<igx-buttongroup #sortButtonGroup [multiSelection]=\"false\">\n <button igxButton\n [displayDensity]=\"esf.grid.displayDensity\"\n [attr.data-togglable]=\"true\"\n (click)=\"onSortButtonClicked(1)\"\n >\n <igx-icon>arrow_upwards</igx-icon>\n <span>\n {{ esf.grid.displayDensity==='compact'?\n esf.grid.resourceStrings.igx_grid_excel_filter_sorting_asc_short:\n esf.grid.resourceStrings.igx_grid_excel_filter_sorting_asc }}\n </span>\n </button>\n\n <button igxButton\n [displayDensity]=\"esf.grid.displayDensity\"\n [attr.data-togglable]=\"true\"\n (click)=\"onSortButtonClicked(2)\"\n >\n <igx-icon>arrow_downwards</igx-icon>\n <span>\n {{ esf.grid.displayDensity==='compact'?\n esf.grid.resourceStrings.igx_grid_excel_filter_sorting_desc_short:\n esf.grid.resourceStrings.igx_grid_excel_filter_sorting_desc\n }}\n </span>\n </button>\n</igx-buttongroup>\n</ng-container>\n", components: [{ type: i2.IgxButtonGroupComponent, selector: "igx-buttongroup", inputs: ["id", "itemContentCssClass", "multiSelection", "values", "disabled", "alignment"], outputs: ["selected", "deselected"] }, { type: i3.IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxButtonColor", "igxButtonBackground", "igxLabel", "disabled"], outputs: ["buttonClick", "buttonSelected"] }] });
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxExcelStyleSortingComponent, decorators: [{
59
+ IgxExcelStyleSortingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxExcelStyleSortingComponent, deps: [{ token: i1.BaseFilteringComponent }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
60
+ IgxExcelStyleSortingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: IgxExcelStyleSortingComponent, selector: "igx-excel-style-sorting", host: { properties: { "class.igx-excel-filter__sort": "this.defaultClass" } }, viewQueries: [{ propertyName: "sortButtonGroup", first: true, predicate: ["sortButtonGroup"], descendants: true, read: IgxButtonGroupComponent }], ngImport: i0, template: "<ng-container *ngIf=\"esf.column\">\n<header>\n {{ esf.grid.resourceStrings.igx_grid_excel_filter_sorting_header }}\n</header>\n<igx-buttongroup #sortButtonGroup [multiSelection]=\"false\">\n <button igxButton\n [displayDensity]=\"esf.grid.displayDensity\"\n [attr.data-togglable]=\"true\"\n (click)=\"onSortButtonClicked(1)\"\n >\n <igx-icon>arrow_upwards</igx-icon>\n <span>\n {{ esf.grid.displayDensity==='compact'?\n esf.grid.resourceStrings.igx_grid_excel_filter_sorting_asc_short:\n esf.grid.resourceStrings.igx_grid_excel_filter_sorting_asc }}\n </span>\n </button>\n\n <button igxButton\n [displayDensity]=\"esf.grid.displayDensity\"\n [attr.data-togglable]=\"true\"\n (click)=\"onSortButtonClicked(2)\"\n >\n <igx-icon>arrow_downwards</igx-icon>\n <span>\n {{ esf.grid.displayDensity==='compact'?\n esf.grid.resourceStrings.igx_grid_excel_filter_sorting_desc_short:\n esf.grid.resourceStrings.igx_grid_excel_filter_sorting_desc\n }}\n </span>\n </button>\n</igx-buttongroup>\n</ng-container>\n", components: [{ type: i2.IgxButtonGroupComponent, selector: "igx-buttongroup", inputs: ["id", "itemContentCssClass", "multiSelection", "values", "disabled", "alignment"], outputs: ["selected", "deselected"] }, { type: i3.IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxButtonColor", "igxButtonBackground", "igxLabel", "disabled"], outputs: ["buttonClick", "buttonSelected"] }] });
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxExcelStyleSortingComponent, decorators: [{
62
62
  type: Component,
63
63
  args: [{ selector: 'igx-excel-style-sorting', template: "<ng-container *ngIf=\"esf.column\">\n<header>\n {{ esf.grid.resourceStrings.igx_grid_excel_filter_sorting_header }}\n</header>\n<igx-buttongroup #sortButtonGroup [multiSelection]=\"false\">\n <button igxButton\n [displayDensity]=\"esf.grid.displayDensity\"\n [attr.data-togglable]=\"true\"\n (click)=\"onSortButtonClicked(1)\"\n >\n <igx-icon>arrow_upwards</igx-icon>\n <span>\n {{ esf.grid.displayDensity==='compact'?\n esf.grid.resourceStrings.igx_grid_excel_filter_sorting_asc_short:\n esf.grid.resourceStrings.igx_grid_excel_filter_sorting_asc }}\n </span>\n </button>\n\n <button igxButton\n [displayDensity]=\"esf.grid.displayDensity\"\n [attr.data-togglable]=\"true\"\n (click)=\"onSortButtonClicked(2)\"\n >\n <igx-icon>arrow_downwards</igx-icon>\n <span>\n {{ esf.grid.displayDensity==='compact'?\n esf.grid.resourceStrings.igx_grid_excel_filter_sorting_desc_short:\n esf.grid.resourceStrings.igx_grid_excel_filter_sorting_desc\n }}\n </span>\n </button>\n</igx-buttongroup>\n</ng-container>\n" }]
64
64
  }], ctorParameters: function () { return [{ type: i1.BaseFilteringComponent }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { defaultClass: [{
@@ -25,9 +25,9 @@ import * as i10 from "./excel-style-search.component";
25
25
  import * as i11 from "@angular/common";
26
26
  export class IgxExcelStyleColumnOperationsTemplateDirective {
27
27
  }
28
- IgxExcelStyleColumnOperationsTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxExcelStyleColumnOperationsTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
29
- IgxExcelStyleColumnOperationsTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: IgxExcelStyleColumnOperationsTemplateDirective, selector: "igx-excel-style-column-operations,[igxExcelStyleColumnOperations]", ngImport: i0 });
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxExcelStyleColumnOperationsTemplateDirective, decorators: [{
28
+ IgxExcelStyleColumnOperationsTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxExcelStyleColumnOperationsTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
29
+ IgxExcelStyleColumnOperationsTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: IgxExcelStyleColumnOperationsTemplateDirective, selector: "igx-excel-style-column-operations,[igxExcelStyleColumnOperations]", ngImport: i0 });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxExcelStyleColumnOperationsTemplateDirective, decorators: [{
31
31
  type: Directive,
32
32
  args: [{
33
33
  selector: 'igx-excel-style-column-operations,[igxExcelStyleColumnOperations]'
@@ -35,9 +35,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImpor
35
35
  }] });
36
36
  export class IgxExcelStyleFilterOperationsTemplateDirective {
37
37
  }
38
- IgxExcelStyleFilterOperationsTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxExcelStyleFilterOperationsTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
39
- IgxExcelStyleFilterOperationsTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: IgxExcelStyleFilterOperationsTemplateDirective, selector: "igx-excel-style-filter-operations,[igxExcelStyleFilterOperations]", ngImport: i0 });
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxExcelStyleFilterOperationsTemplateDirective, decorators: [{
38
+ IgxExcelStyleFilterOperationsTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxExcelStyleFilterOperationsTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
39
+ IgxExcelStyleFilterOperationsTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.2", type: IgxExcelStyleFilterOperationsTemplateDirective, selector: "igx-excel-style-filter-operations,[igxExcelStyleFilterOperations]", ngImport: i0 });
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxExcelStyleFilterOperationsTemplateDirective, decorators: [{
41
41
  type: Directive,
42
42
  args: [{
43
43
  selector: 'igx-excel-style-filter-operations,[igxExcelStyleFilterOperations]'
@@ -651,9 +651,9 @@ export class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent
651
651
  return value;
652
652
  }
653
653
  }
654
- IgxGridExcelStyleFilteringComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridExcelStyleFilteringComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.PlatformUtil }, { token: IGX_GRID_BASE, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component });
655
- IgxGridExcelStyleFilteringComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: IgxGridExcelStyleFilteringComponent, selector: "igx-grid-excel-style-filtering", inputs: { column: "column", minHeight: "minHeight", maxHeight: "maxHeight" }, outputs: { loadingStart: "loadingStart", loadingEnd: "loadingEnd", initialized: "initialized", sortingChanged: "sortingChanged", columnChange: "columnChange", listDataLoaded: "listDataLoaded" }, host: { properties: { "class.igx-excel-filter": "this.defaultClass", "class.igx-excel-filter--inline": "this.inline", "style.max-height": "this.maxHeight" } }, providers: [{ provide: BaseFilteringComponent, useExisting: forwardRef(() => IgxGridExcelStyleFilteringComponent) }], queries: [{ propertyName: "excelColumnOperationsDirective", first: true, predicate: IgxExcelStyleColumnOperationsTemplateDirective, descendants: true, read: IgxExcelStyleColumnOperationsTemplateDirective }, { propertyName: "excelFilterOperationsDirective", first: true, predicate: IgxExcelStyleFilterOperationsTemplateDirective, descendants: true, read: IgxExcelStyleFilterOperationsTemplateDirective }], viewQueries: [{ propertyName: "mainDropdown", first: true, predicate: ["mainDropdown"], descendants: true, read: ElementRef }, { propertyName: "defaultExcelColumnOperations", first: true, predicate: ["defaultExcelColumnOperations"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultExcelFilterOperations", first: true, predicate: ["defaultExcelFilterOperations"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #defaultExcelColumnOperations>\n <igx-excel-style-header\n [showHiding]=\"displayDensity !== 'comfortable' && !column?.disableHiding\"\n [showPinning]=\"displayDensity !== 'comfortable' && !column?.disablePinning\"\n [showSelecting]=\"displayDensity !== 'comfortable' && columnSelectable()\"\n >\n </igx-excel-style-header>\n\n <igx-excel-style-sorting *ngIf=\"column?.sortable\">\n </igx-excel-style-sorting>\n\n <igx-excel-style-moving *ngIf=\"column?.movable\">\n </igx-excel-style-moving>\n\n <igx-excel-style-pinning *ngIf=\"!column?.disablePinning && displayDensity==='comfortable'\">\n </igx-excel-style-pinning>\n\n <igx-excel-style-hiding *ngIf=\"!column?.disableHiding && displayDensity==='comfortable'\">\n </igx-excel-style-hiding>\n\n <igx-excel-style-selecting *ngIf=\"columnSelectable() && displayDensity==='comfortable'\">\n </igx-excel-style-selecting>\n</ng-template>\n\n<ng-template #defaultExcelFilterOperations>\n <igx-excel-style-clear-filters>\n </igx-excel-style-clear-filters>\n\n <igx-excel-style-conditional-filter>\n </igx-excel-style-conditional-filter>\n\n <igx-excel-style-search>\n </igx-excel-style-search>\n</ng-template>\n\n<article #mainDropdown\n class=\"igx-excel-filter__menu\"\n [ngClass]=\"{\n 'igx-excel-filter__menu--cosy': displayDensity === 'cosy',\n 'igx-excel-filter__menu--compact': displayDensity === 'compact'\n }\"\n [id]=\"overlayComponentId\"\n (keydown)=\"onKeyDown($event)\"\n [style.min-height]=\"minHeight\"\n [style.max-height]=\"maxHeight\"\n role=\"menu\">\n\n <ng-container *ngIf=\"this.excelColumnOperationsDirective; else defaultExcelColumnOperations\">\n <ng-content select=\"igx-excel-style-column-operations,[igxExcelStyleColumnOperations]\">\n </ng-content>\n </ng-container>\n\n <ng-container *ngIf=\"this.excelFilterOperationsDirective; else defaultExcelFilterOperations\">\n <ng-content select=\"igx-excel-style-filter-operations,[igxExcelStyleFilterOperations]\">\n </ng-content>\n </ng-container>\n</article>\n", components: [{ type: i2.IgxExcelStyleHeaderComponent, selector: "igx-excel-style-header", inputs: ["showPinning", "showSelecting", "showHiding"] }, { type: i3.IgxExcelStyleSortingComponent, selector: "igx-excel-style-sorting" }, { type: i4.IgxExcelStyleMovingComponent, selector: "igx-excel-style-moving" }, { type: i5.IgxExcelStylePinningComponent, selector: "igx-excel-style-pinning" }, { type: i6.IgxExcelStyleHidingComponent, selector: "igx-excel-style-hiding" }, { type: i7.IgxExcelStyleSelectingComponent, selector: "igx-excel-style-selecting" }, { type: i8.IgxExcelStyleClearFiltersComponent, selector: "igx-excel-style-clear-filters" }, { type: i9.IgxExcelStyleConditionalFilterComponent, selector: "igx-excel-style-conditional-filter" }, { type: i10.IgxExcelStyleSearchComponent, selector: "igx-excel-style-search" }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
656
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridExcelStyleFilteringComponent, decorators: [{
654
+ IgxGridExcelStyleFilteringComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridExcelStyleFilteringComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.PlatformUtil }, { token: IGX_GRID_BASE, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component });
655
+ IgxGridExcelStyleFilteringComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: IgxGridExcelStyleFilteringComponent, selector: "igx-grid-excel-style-filtering", inputs: { column: "column", minHeight: "minHeight", maxHeight: "maxHeight" }, outputs: { loadingStart: "loadingStart", loadingEnd: "loadingEnd", initialized: "initialized", sortingChanged: "sortingChanged", columnChange: "columnChange", listDataLoaded: "listDataLoaded" }, host: { properties: { "class.igx-excel-filter": "this.defaultClass", "class.igx-excel-filter--inline": "this.inline", "style.max-height": "this.maxHeight" } }, providers: [{ provide: BaseFilteringComponent, useExisting: forwardRef(() => IgxGridExcelStyleFilteringComponent) }], queries: [{ propertyName: "excelColumnOperationsDirective", first: true, predicate: IgxExcelStyleColumnOperationsTemplateDirective, descendants: true, read: IgxExcelStyleColumnOperationsTemplateDirective }, { propertyName: "excelFilterOperationsDirective", first: true, predicate: IgxExcelStyleFilterOperationsTemplateDirective, descendants: true, read: IgxExcelStyleFilterOperationsTemplateDirective }], viewQueries: [{ propertyName: "mainDropdown", first: true, predicate: ["mainDropdown"], descendants: true, read: ElementRef }, { propertyName: "defaultExcelColumnOperations", first: true, predicate: ["defaultExcelColumnOperations"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultExcelFilterOperations", first: true, predicate: ["defaultExcelFilterOperations"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #defaultExcelColumnOperations>\n <igx-excel-style-header\n [showHiding]=\"displayDensity !== 'comfortable' && !column?.disableHiding\"\n [showPinning]=\"displayDensity !== 'comfortable' && !column?.disablePinning\"\n [showSelecting]=\"displayDensity !== 'comfortable' && columnSelectable()\"\n >\n </igx-excel-style-header>\n\n <igx-excel-style-sorting *ngIf=\"column?.sortable\">\n </igx-excel-style-sorting>\n\n <igx-excel-style-moving *ngIf=\"column?.movable\">\n </igx-excel-style-moving>\n\n <igx-excel-style-pinning *ngIf=\"!column?.disablePinning && displayDensity==='comfortable'\">\n </igx-excel-style-pinning>\n\n <igx-excel-style-hiding *ngIf=\"!column?.disableHiding && displayDensity==='comfortable'\">\n </igx-excel-style-hiding>\n\n <igx-excel-style-selecting *ngIf=\"columnSelectable() && displayDensity==='comfortable'\">\n </igx-excel-style-selecting>\n</ng-template>\n\n<ng-template #defaultExcelFilterOperations>\n <igx-excel-style-clear-filters>\n </igx-excel-style-clear-filters>\n\n <igx-excel-style-conditional-filter>\n </igx-excel-style-conditional-filter>\n\n <igx-excel-style-search>\n </igx-excel-style-search>\n</ng-template>\n\n<article #mainDropdown\n class=\"igx-excel-filter__menu\"\n [ngClass]=\"{\n 'igx-excel-filter__menu--cosy': displayDensity === 'cosy',\n 'igx-excel-filter__menu--compact': displayDensity === 'compact'\n }\"\n [id]=\"overlayComponentId\"\n (keydown)=\"onKeyDown($event)\"\n [style.min-height]=\"minHeight\"\n [style.max-height]=\"maxHeight\"\n role=\"menu\">\n\n <ng-container *ngIf=\"this.excelColumnOperationsDirective; else defaultExcelColumnOperations\">\n <ng-content select=\"igx-excel-style-column-operations,[igxExcelStyleColumnOperations]\">\n </ng-content>\n </ng-container>\n\n <ng-container *ngIf=\"this.excelFilterOperationsDirective; else defaultExcelFilterOperations\">\n <ng-content select=\"igx-excel-style-filter-operations,[igxExcelStyleFilterOperations]\">\n </ng-content>\n </ng-container>\n</article>\n", components: [{ type: i2.IgxExcelStyleHeaderComponent, selector: "igx-excel-style-header", inputs: ["showPinning", "showSelecting", "showHiding"] }, { type: i3.IgxExcelStyleSortingComponent, selector: "igx-excel-style-sorting" }, { type: i4.IgxExcelStyleMovingComponent, selector: "igx-excel-style-moving" }, { type: i5.IgxExcelStylePinningComponent, selector: "igx-excel-style-pinning" }, { type: i6.IgxExcelStyleHidingComponent, selector: "igx-excel-style-hiding" }, { type: i7.IgxExcelStyleSelectingComponent, selector: "igx-excel-style-selecting" }, { type: i8.IgxExcelStyleClearFiltersComponent, selector: "igx-excel-style-clear-filters" }, { type: i9.IgxExcelStyleConditionalFilterComponent, selector: "igx-excel-style-conditional-filter" }, { type: i10.IgxExcelStyleSearchComponent, selector: "igx-excel-style-search" }], directives: [{ type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
656
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridExcelStyleFilteringComponent, decorators: [{
657
657
  type: Component,
658
658
  args: [{ changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: BaseFilteringComponent, useExisting: forwardRef(() => IgxGridExcelStyleFilteringComponent) }], selector: 'igx-grid-excel-style-filtering', template: "<ng-template #defaultExcelColumnOperations>\n <igx-excel-style-header\n [showHiding]=\"displayDensity !== 'comfortable' && !column?.disableHiding\"\n [showPinning]=\"displayDensity !== 'comfortable' && !column?.disablePinning\"\n [showSelecting]=\"displayDensity !== 'comfortable' && columnSelectable()\"\n >\n </igx-excel-style-header>\n\n <igx-excel-style-sorting *ngIf=\"column?.sortable\">\n </igx-excel-style-sorting>\n\n <igx-excel-style-moving *ngIf=\"column?.movable\">\n </igx-excel-style-moving>\n\n <igx-excel-style-pinning *ngIf=\"!column?.disablePinning && displayDensity==='comfortable'\">\n </igx-excel-style-pinning>\n\n <igx-excel-style-hiding *ngIf=\"!column?.disableHiding && displayDensity==='comfortable'\">\n </igx-excel-style-hiding>\n\n <igx-excel-style-selecting *ngIf=\"columnSelectable() && displayDensity==='comfortable'\">\n </igx-excel-style-selecting>\n</ng-template>\n\n<ng-template #defaultExcelFilterOperations>\n <igx-excel-style-clear-filters>\n </igx-excel-style-clear-filters>\n\n <igx-excel-style-conditional-filter>\n </igx-excel-style-conditional-filter>\n\n <igx-excel-style-search>\n </igx-excel-style-search>\n</ng-template>\n\n<article #mainDropdown\n class=\"igx-excel-filter__menu\"\n [ngClass]=\"{\n 'igx-excel-filter__menu--cosy': displayDensity === 'cosy',\n 'igx-excel-filter__menu--compact': displayDensity === 'compact'\n }\"\n [id]=\"overlayComponentId\"\n (keydown)=\"onKeyDown($event)\"\n [style.min-height]=\"minHeight\"\n [style.max-height]=\"maxHeight\"\n role=\"menu\">\n\n <ng-container *ngIf=\"this.excelColumnOperationsDirective; else defaultExcelColumnOperations\">\n <ng-content select=\"igx-excel-style-column-operations,[igxExcelStyleColumnOperations]\">\n </ng-content>\n </ng-container>\n\n <ng-container *ngIf=\"this.excelFilterOperationsDirective; else defaultExcelFilterOperations\">\n <ng-content select=\"igx-excel-style-filter-operations,[igxExcelStyleFilterOperations]\">\n </ng-content>\n </ng-container>\n</article>\n" }]
659
659
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.PlatformUtil }, { type: undefined, decorators: [{
@@ -40,8 +40,8 @@ import * as i0 from "@angular/core";
40
40
  */
41
41
  export class IgxGridExcelStyleFilteringModule {
42
42
  }
43
- IgxGridExcelStyleFilteringModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridExcelStyleFilteringModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
44
- IgxGridExcelStyleFilteringModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridExcelStyleFilteringModule, declarations: [IgxGridExcelStyleFilteringComponent,
43
+ IgxGridExcelStyleFilteringModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridExcelStyleFilteringModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
44
+ IgxGridExcelStyleFilteringModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridExcelStyleFilteringModule, declarations: [IgxGridExcelStyleFilteringComponent,
45
45
  IgxExcelStyleHeaderComponent,
46
46
  IgxExcelStyleSortingComponent,
47
47
  IgxExcelStylePinningComponent,
@@ -90,7 +90,7 @@ IgxGridExcelStyleFilteringModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion:
90
90
  IgxExcelStyleMovingComponent,
91
91
  IgxExcelStyleSearchComponent,
92
92
  IgxExcelStyleHeaderComponent] });
93
- IgxGridExcelStyleFilteringModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridExcelStyleFilteringModule, providers: [
93
+ IgxGridExcelStyleFilteringModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridExcelStyleFilteringModule, providers: [
94
94
  IgxSelectionAPIService
95
95
  ], imports: [[
96
96
  CommonModule,
@@ -114,7 +114,7 @@ IgxGridExcelStyleFilteringModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion:
114
114
  IgxFocusModule,
115
115
  IgxDateTimeEditorModule
116
116
  ]] });
117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridExcelStyleFilteringModule, decorators: [{
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridExcelStyleFilteringModule, decorators: [{
118
118
  type: NgModule,
119
119
  args: [{
120
120
  declarations: [
@@ -507,9 +507,9 @@ export class IgxFilteringService {
507
507
  return count;
508
508
  }
509
509
  }
510
- IgxFilteringService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxFilteringService, deps: [{ token: i1.IgxIconService }, { token: i2.IgxOverlayService }], target: i0.ɵɵFactoryTarget.Injectable });
511
- IgxFilteringService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxFilteringService });
512
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxFilteringService, decorators: [{
510
+ IgxFilteringService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxFilteringService, deps: [{ token: i1.IgxIconService }, { token: i2.IgxOverlayService }], target: i0.ɵɵFactoryTarget.Injectable });
511
+ IgxFilteringService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxFilteringService });
512
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxFilteringService, decorators: [{
513
513
  type: Injectable
514
514
  }], ctorParameters: function () { return [{ type: i1.IgxIconService }, { type: i2.IgxOverlayService }]; } });
515
515
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1maWx0ZXJpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9maWx0ZXJpbmcvZ3JpZC1maWx0ZXJpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxHQUViLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx3QkFBd0IsRUFBNkIsTUFBTSxrREFBa0QsQ0FBQztBQUN2SCxPQUFPLEVBQXdCLGNBQWMsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzVHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlsRCxPQUFPLEVBQW1CLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUVoRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRSxPQUFPLEVBQWdCLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7O0FBRXpGOztHQUVHO0FBRUgsTUFBTSxPQUFPLG1CQUFtQjtJQTJCNUIsWUFDWSxXQUEyQixFQUMzQixlQUFrQztRQURsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0Isb0JBQWUs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O2FBQzNEO1NBQ0o7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOztnSEF6a0JRLG1CQUFtQjtvSEFBbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEluamVjdGFibGUsXG4gICAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSwgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctZXhwcmVzc2lvbnMtdHJlZSc7XG5pbXBvcnQgeyBJRmlsdGVyaW5nRXhwcmVzc2lvbiwgRmlsdGVyaW5nTG9naWMgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZmlsdGVyaW5nLWV4cHJlc3Npb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCwgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJRm9yT2ZTdGF0ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZm9yLW9mL2Zvcl9vZi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSUZpbHRlcmluZ09wZXJhdGlvbiB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctY29uZGl0aW9uJztcbmltcG9ydCB7IElDb2x1bW5SZXNpemVFdmVudEFyZ3MsIElGaWx0ZXJpbmdFdmVudEFyZ3MgfSBmcm9tICcuLi9jb21tb24vZXZlbnRzJztcbmltcG9ydCB7IE92ZXJsYXlTZXR0aW5ncywgVmVydGljYWxBbGlnbm1lbnQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vdmVybGF5L3V0aWxpdGllcyc7XG5pbXBvcnQgeyBJZ3hPdmVybGF5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL292ZXJsYXkvb3ZlcmxheSc7XG5pbXBvcnQgeyB1c2VBbmltYXRpb24gfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IGZhZGVJbiB9IGZyb20gJy4uLy4uL2FuaW1hdGlvbnMvbWFpbic7XG5pbXBvcnQgeyBBYnNvbHV0ZVNjcm9sbFN0cmF0ZWd5IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3ZlcmxheS9zY3JvbGwvYWJzb2x1dGUtc2Nyb2xsLXN0cmF0ZWd5JztcbmltcG9ydCB7IElneEljb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaWNvbi9pY29uLnNlcnZpY2UnO1xuaW1wb3J0IHsgZWRpdG9yLCBwaW5MZWZ0LCB1bnBpbkxlZnQgfSBmcm9tICdAaWduaXRldWkvbWF0ZXJpYWwtaWNvbnMtZXh0ZW5kZWQnO1xuaW1wb3J0IHsgRXhwcmVzc2lvblVJLCBnZW5lcmF0ZUV4cHJlc3Npb25zTGlzdCB9IGZyb20gJy4vZXhjZWwtc3R5bGUvY29tbW9uJztcbmltcG9ydCB7IENvbHVtblR5cGUsIEdyaWRUeXBlIH0gZnJvbSAnLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEV4Y2VsU3R5bGVQb3NpdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9leGNlbC1zdHlsZS9leGNlbC1zdHlsZS1wb3NpdGlvbi1zdHJhdGVneSc7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSWd4RmlsdGVyaW5nU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgcHVibGljIGlzRmlsdGVyUm93VmlzaWJsZSA9IGZhbHNlO1xuICAgIHB1YmxpYyBmaWx0ZXJlZENvbHVtbjogQ29sdW1uVHlwZSA9IG51bGw7XG4gICAgcHVibGljIHNlbGVjdGVkRXhwcmVzc2lvbjogSUZpbHRlcmluZ0V4cHJlc3Npb24gPSBudWxsO1xuICAgIHB1YmxpYyBjb2x1bW5Ub01vcmVJY29uSGlkZGVuID0gbmV3IE1hcDxzdHJpbmcsIGJvb2xlYW4+KCk7XG4gICAgcHVibGljIGFjdGl2ZUZpbHRlckNlbGwgPSAwO1xuICAgIHB1YmxpYyBncmlkOiBHcmlkVHlwZTtcblxuICAgIHByaXZhdGUgY29sdW1uc1dpdGhDb21wbGV4RmlsdGVyID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSBhcmVFdmVudHNTdWJzY3JpYmVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSBpc0ZpbHRlcmluZyA9IGZhbHNlO1xuICAgIHByaXZhdGUgY29sdW1uVG9FeHByZXNzaW9uc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBFeHByZXNzaW9uVUlbXT4oKTtcbiAgICBwcml2YXRlIGNvbHVtblN0YXJ0SW5kZXggPSAtMTtcbiAgICBwcml2YXRlIF9maWx0ZXJNZW51T3ZlcmxheVNldHRpbmdzOiBPdmVybGF5U2V0dGluZ3MgPSB7XG4gICAgICAgIGNsb3NlT25Fc2NhcGU6IHRydWUsXG4gICAgICAgIGNsb3NlT25PdXRzaWRlQ2xpY2s6IHRydWUsXG4gICAgICAgIG1vZGFsOiBmYWxzZSxcbiAgICAgICAgcG9zaXRpb25TdHJhdGVneTogbmV3IEV4Y2VsU3R5bGVQb3NpdGlvblN0cmF0ZWd5KHtcbiAgICAgICAgICAgIHZlcnRpY2FsU3RhcnRQb2ludDogVmVydGljYWxBbGlnbm1lbnQuQm90dG9tLFxuICAgICAgICAgICAgb3BlbkFuaW1hdGlvbjogdXNlQW5pbWF0aW9uKGZhZGVJbiwgeyBwYXJhbXM6IHsgZHVyYXRpb246ICcyNTBtcycgfX0pLFxuICAgICAgICAgICAgY2xvc2VBbmltYXRpb246IG51bGxcbiAgICAgICAgfSksXG4gICAgICAgIHNjcm9sbFN0cmF0ZWd5OiBuZXcgQWJzb2x1dGVTY3JvbGxTdHJhdGVneSgpXG4gICAgfTtcbiAgICBwcml2YXRlIGxhc3RBY3RpdmVOb2RlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaWNvblNlcnZpY2U6IElneEljb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9vdmVybGF5U2VydmljZTogSWd4T3ZlcmxheVNlcnZpY2UsXG4gICAgKSB7IH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZUZpbHRlckRyb3Bkb3duKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjb2x1bW46IENvbHVtblR5cGUpIHtcblxuICAgICAgICBjb25zdCBmaWx0ZXJJY29uID0gY29sdW1uLmZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSA/ICdpZ3gtZXhjZWwtZmlsdGVyX19pY29uLS1maWx0ZXJlZCcgOiAnaWd4LWV4Y2VsLWZpbHRlcl9faWNvbic7XG4gICAgICAgIGNvbnN0IGZpbHRlckljb25UYXJnZXQgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke2ZpbHRlckljb259YCkgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgY29uc3QgeyBpZCwgcmVmIH0gPSB0aGlzLmdyaWQuY3JlYXRlRmlsdGVyRHJvcGRvd24oY29sdW1uLCB7XG4gICAgICAgICAgICAuLi50aGlzLl9maWx0ZXJNZW51T3ZlcmxheVNldHRpbmdzLFxuICAgICAgICAgICAgLi4ueyB0YXJnZXQ6IGZpbHRlckljb25UYXJnZXQgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9vdmVybGF5U2VydmljZS5vcGVuaW5nXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaXJzdChvdmVybGF5ID0+IG92ZXJsYXkuaWQgPT09IGlkKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5sYXN0QWN0aXZlTm9kZSA9IHRoaXMuZ3JpZC5uYXZpZ2F0aW9uLmFjdGl2ZU5vZGUpO1xuXG4gICAgICAgIHRoaXMuX292ZXJsYXlTZXJ2aWNlLmNsb3NlZFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlyc3Qob3ZlcmxheSA9PiBvdmVybGF5LmlkID09PSBpZCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vdmVybGF5U2VydmljZS5kZXRhY2goaWQpO1xuICAgICAgICAgICAgICAgIHJlZj8uZGVzdHJveSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5uYXZpZ2F0aW9uLmFjdGl2ZU5vZGUgPSB0aGlzLmxhc3RBY3RpdmVOb2RlO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC50aGVhZFJvdy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmdyaWQuY29sdW1uUGlubmVkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHJlZj8uZGVzdHJveSgpKTtcbiAgICAgICAgdGhpcy5fb3ZlcmxheVNlcnZpY2Uuc2hvdyhpZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3Vic2NyaWJlIHRvIGdyaWQncyBldmVudHMuXG4gICAgICovXG4gICAgcHVibGljIHN1YnNjcmliZVRvRXZlbnRzKCkge1xuICAgICAgICBpZiAoIXRoaXMuYXJlRXZlbnRzU3Vic2NyaWJlZCkge1xuICAgICAgICAgICAgdGhpcy5hcmVFdmVudHNTdWJzY3JpYmVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5ncmlkLmNvbHVtblJlc2l6ZWQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnRBcmdzOiBJQ29sdW1uUmVzaXplRXZlbnRBcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJpbmdDZWxsKGV2ZW50QXJncy5jb2x1bW4pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZ3JpZC5wYXJlbnRWaXJ0RGlyLmNodW5rTG9hZC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldmVudEFyZ3M6IElGb3JPZlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50QXJncy5zdGFydEluZGV4ICE9PSB0aGlzLmNvbHVtblN0YXJ0SW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5TdGFydEluZGV4ID0gZXZlbnRBcmdzLnN0YXJ0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5maWx0ZXJDZWxsTGlzdC5mb3JFYWNoKChmaWx0ZXJDZWxsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJDZWxsLnVwZGF0ZUZpbHRlckNlbGxBcmVhKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmdyaWQuY29sdW1uTW92aW5nRW5kLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5maWx0ZXJDZWxsTGlzdC5mb3JFYWNoKChmaWx0ZXJDZWxsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckNlbGwudXBkYXRlRmlsdGVyQ2VsbEFyZWEoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2UgZmlsdGVyaW5nIHJvdyBpZiBhIGNvbHVtbiBpcyBoaWRkZW4uXG4gICAgICovXG4gICAgcHVibGljIGhpZGVGaWx0ZXJpbmdSb3dPbkNvbHVtblZpc2liaWxpdHlDaGFuZ2UoY29sOiBDb2x1bW5UeXBlKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlcmluZ1JvdyA9IHRoaXMuZ3JpZC5maWx0ZXJpbmdSb3c7XG5cbiAgICAgICAgaWYgKGZpbHRlcmluZ1JvdyAmJiBmaWx0ZXJpbmdSb3cuY29sdW1uICYmIGZpbHRlcmluZ1Jvdy5jb2x1bW4gPT09IGNvbCkge1xuICAgICAgICAgICAgZmlsdGVyaW5nUm93LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnRlcm5hbCBtZXRob2QgdG8gY3JlYXRlIGV4cHJlc3Npb25zVHJlZSBhbmQgZmlsdGVyIGdyaWQgdXNlZCBpbiBib3RoIGZpbHRlciBtb2Rlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZmlsdGVySW50ZXJuYWwoZmllbGQ6IHN0cmluZywgZXhwcmVzc2lvbnM6IEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB8IEFycmF5PEV4cHJlc3Npb25VST4gPSBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNGaWx0ZXJpbmcgPSB0cnVlO1xuXG4gICAgICAgIGxldCBleHByZXNzaW9uc1RyZWU7XG4gICAgICAgIGlmIChleHByZXNzaW9ucyBpbnN0YW5jZW9mIEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSkge1xuICAgICAgICAgICAgZXhwcmVzc2lvbnNUcmVlID0gZXhwcmVzc2lvbnM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBleHByZXNzaW9uc1RyZWUgPSB0aGlzLmNyZWF0ZVNpbXBsZUZpbHRlcmluZ1RyZWUoZmllbGQsIGV4cHJlc3Npb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChleHByZXNzaW9uc1RyZWUuZmlsdGVyaW5nT3BlcmFuZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyRmlsdGVyKGZpZWxkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyKGZpZWxkLCBudWxsLCBleHByZXNzaW9uc1RyZWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0ZpbHRlcmluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGUgZmlsdGVyaW5nIG9uIHRoZSBncmlkLlxuICAgICAqL1xuICAgIHB1YmxpYyBmaWx0ZXIoZmllbGQ6IHN0cmluZywgdmFsdWU6IGFueSwgY29uZGl0aW9uT3JFeHByZXNzaW9uVHJlZT86IElGaWx0ZXJpbmdPcGVyYXRpb24gfCBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLFxuICAgICAgICBpZ25vcmVDYXNlPzogYm9vbGVhbikge1xuXG4gICAgICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdyaWQ7XG5cbiAgICAgICAgY29uc3QgY29sID0gZ3JpZC5nZXRDb2x1bW5CeU5hbWUoZmllbGQpO1xuICAgICAgICBjb25zdCBmaWx0ZXJpbmdJZ25vcmVDYXNlID0gaWdub3JlQ2FzZSB8fCAoY29sID8gY29sLmZpbHRlcmluZ0lnbm9yZUNhc2UgOiBmYWxzZSk7XG5cbiAgICAgICAgY29uc3QgZmlsdGVyaW5nVHJlZSA9IGdyaWQuZmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlO1xuICAgICAgICBjb25zdCBjb2x1bW5GaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgPSBncmlkLmZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZS5maW5kKGZpZWxkKSBhcyBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlO1xuICAgICAgICBjb25kaXRpb25PckV4cHJlc3Npb25UcmVlID0gY29uZGl0aW9uT3JFeHByZXNzaW9uVHJlZSA/PyBjb2x1bW5GaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWU7XG4gICAgICAgIGNvbnN0IGZpZWxkRmlsdGVySW5kZXggPSBmaWx0ZXJpbmdUcmVlLmZpbmRJbmRleChmaWVsZCk7XG4gICAgICAgIGlmIChmaWVsZEZpbHRlckluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIGZpbHRlcmluZ1RyZWUuZmlsdGVyaW5nT3BlcmFuZHMuc3BsaWNlKGZpZWxkRmlsdGVySW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0ZpbHRlcmluZ1RyZWU6IEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSA9XG4gICAgICAgICAgICB0aGlzLnByZXBhcmVfZmlsdGVyaW5nX2V4cHJlc3Npb24oZmlsdGVyaW5nVHJlZSwgZmllbGQsIHZhbHVlLCBjb25kaXRpb25PckV4cHJlc3Npb25UcmVlLFxuICAgICAgICAgICAgICAgIGZpbHRlcmluZ0lnbm9yZUNhc2UsIGZpZWxkRmlsdGVySW5kZXgsIHRydWUpO1xuXG4gICAgICAgIGNvbnN0IGV2ZW50QXJnczogSUZpbHRlcmluZ0V2ZW50QXJncyA9IHtcbiAgICAgICAgICAgIG93bmVyOiBncmlkLFxuICAgICAgICAgICAgZmlsdGVyaW5nRXhwcmVzc2lvbnM6IG5ld0ZpbHRlcmluZ1RyZWUuZmluZChmaWVsZCkgYXMgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLCBjYW5jZWw6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZ3JpZC5maWx0ZXJpbmcuZW1pdChldmVudEFyZ3MpO1xuXG4gICAgICAgIGlmIChldmVudEFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29uZGl0aW9uT3JFeHByZXNzaW9uVHJlZSkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJfaW50ZXJuYWwoZmllbGQsIHZhbHVlLCBjb25kaXRpb25PckV4cHJlc3Npb25UcmVlLCBmaWx0ZXJpbmdJZ25vcmVDYXNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb25zVHJlZUZvckNvbHVtbiA9IHRoaXMuZ3JpZC5maWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUuZmluZChmaWVsZCk7XG4gICAgICAgICAgICBpZiAoIWV4cHJlc3Npb25zVHJlZUZvckNvbHVtbikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb25kaXRpb24gb3IgRXhwcmVzc2lvbiBUcmVlIScpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChleHByZXNzaW9uc1RyZWVGb3JDb2x1bW4gaW5zdGFuY2VvZiBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcl9pbnRlcm5hbChmaWVsZCwgdmFsdWUsIGV4cHJlc3Npb25zVHJlZUZvckNvbHVtbiwgZmlsdGVyaW5nSWdub3JlQ2FzZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb25Gb3JDb2x1bW4gPSBleHByZXNzaW9uc1RyZWVGb3JDb2x1bW4gYXMgSUZpbHRlcmluZ0V4cHJlc3Npb247XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJfaW50ZXJuYWwoZmllbGQsIHZhbHVlLCBleHByZXNzaW9uRm9yQ29sdW1uLmNvbmRpdGlvbiwgZmlsdGVyaW5nSWdub3JlQ2FzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9uZUV2ZW50QXJncyA9IHRoaXMuZ3JpZC5maWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUuZmluZChmaWVsZCkgYXMgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlO1xuICAgICAgICAvLyBXYWl0IGZvciB0aGUgY2hhbmdlIGRldGVjdGlvbiB0byB1cGRhdGUgZmlsdGVyZWQgZGF0YSB0aHJvdWdoIHRoZSBwaXBlcyBhbmQgdGhlbiBlbWl0IHRoZSBldmVudC5cbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHRoaXMuZ3JpZC5maWx0ZXJpbmdEb25lLmVtaXQoZG9uZUV2ZW50QXJncykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaWx0ZXJfZ2xvYmFsKHRlcm0sIGNvbmRpdGlvbiwgaWdub3JlQ2FzZSkge1xuICAgICAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZ3JpZCA9IHRoaXMuZ3JpZDtcbiAgICAgICAgY29uc3QgZmlsdGVyaW5nVHJlZSA9IGdyaWQuZmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlO1xuICAgICAgICBncmlkLmNydWRTZXJ2aWNlLmVuZEVkaXQoZmFsc2UpO1xuICAgICAgICBpZiAoZ3JpZC5wYWdpbmF0b3IpIHtcbiAgICAgICAgICAgIGdyaWQucGFnaW5hdG9yLnBhZ2UgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgZmlsdGVyaW5nVHJlZS5maWx0ZXJpbmdPcGVyYW5kcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBncmlkLmNvbHVtbkxpc3QpIHtcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZV9maWx0ZXJpbmdfZXhwcmVzc2lvbihmaWx0ZXJpbmdUcmVlLCBjb2x1bW4uZmllbGQsIHRlcm0sXG4gICAgICAgICAgICAgICAgY29uZGl0aW9uLCBpZ25vcmVDYXNlIHx8IGNvbHVtbi5maWx0ZXJpbmdJZ25vcmVDYXNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGdyaWQuZmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlID0gZmlsdGVyaW5nVHJlZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGVhcnMgdGhlIGZpbHRlciBvZiBhIGdpdmVuIGNvbHVtbiBpZiBuYW1lIGlzIHByb3ZpZGVkLiBPdGhlcndpc2UgY2xlYXJzIHRoZSBmaWx0ZXJzIG9mIGFsbCBjb2x1bW5zLlxuICAgICAqL1xuICAgIHB1YmxpYyBjbGVhckZpbHRlcihmaWVsZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5ncmlkLmdldENvbHVtbkJ5TmFtZShmaWVsZCk7XG4gICAgICAgICAgICBpZiAoIWNvbHVtbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVtcHR5RmlsdGVyID0gbmV3IEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZShudWxsLCBmaWVsZCk7XG4gICAgICAgIGNvbnN0IG9uRmlsdGVyaW5nRXZlbnRBcmdzOiBJRmlsdGVyaW5nRXZlbnRBcmdzID0ge1xuICAgICAgICAgICAgb3duZXI6IHRoaXMuZ3JpZCxcbiAgICAgICAgICAgIGZpbHRlcmluZ0V4cHJlc3Npb25zOiBlbXB0eUZpbHRlcixcbiAgICAgICAgICAgIGNhbmNlbDogZmFsc2VcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmdyaWQuZmlsdGVyaW5nLmVtaXQob25GaWx0ZXJpbmdFdmVudEFyZ3MpO1xuXG4gICAgICAgIGlmIChvbkZpbHRlcmluZ0V2ZW50QXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNGaWx0ZXJpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmNsZWFyX2ZpbHRlcihmaWVsZCk7XG5cbiAgICAgICAgLy8gV2FpdCBmb3IgdGhlIGNoYW5nZSBkZXRlY3Rpb24gdG8gdXBkYXRlIGZpbHRlcmVkIGRhdGEgdGhyb3VnaCB0aGUgcGlwZXMgYW5kIHRoZW4gZW1pdCB0aGUgZXZlbnQuXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB0aGlzLmdyaWQuZmlsdGVyaW5nRG9uZS5lbWl0KGVtcHR5RmlsdGVyKSk7XG5cbiAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICBjb25zdCBleHByZXNzaW9ucyA9IHRoaXMuZ2V0RXhwcmVzc2lvbnMoZmllbGQpO1xuICAgICAgICAgICAgZXhwcmVzc2lvbnMubGVuZ3RoID0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5jb2x1bW5MaXN0LmZvckVhY2goYyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbnMgPSB0aGlzLmdldEV4cHJlc3Npb25zKGMuZmllbGQpO1xuICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zLmxlbmd0aCA9IDA7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNGaWx0ZXJpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJfZmlsdGVyKGZpZWxkTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdyaWQ7XG4gICAgICAgIGdyaWQuY3J1ZFNlcnZpY2UuZW5kRWRpdChmYWxzZSk7XG4gICAgICAgIGNvbnN0IGZpbHRlcmluZ1N0YXRlID0gZ3JpZC5maWx0ZXJpbmdFeHByZXNzaW9uc1RyZWU7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gZmlsdGVyaW5nU3RhdGUuZmluZEluZGV4KGZpZWxkTmFtZSk7XG5cbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIGZpbHRlcmluZ1N0YXRlLmZpbHRlcmluZ09wZXJhbmRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWZpZWxkTmFtZSkge1xuICAgICAgICAgICAgZmlsdGVyaW5nU3RhdGUuZmlsdGVyaW5nT3BlcmFuZHMgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGdyaWQuZmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlID0gZmlsdGVyaW5nU3RhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmlsdGVycyBhbGwgdGhlIGBJZ3hDb2x1bW5Db21wb25lbnRgIGluIHRoZSBgSWd4R3JpZENvbXBvbmVudGAgd2l0aCB0aGUgc2FtZSBjb25kaXRpb24uXG4gICAgICovXG4gICAgcHVibGljIGZpbHRlckdsb2JhbCh2YWx1ZTogYW55LCBjb25kaXRpb24sIGlnbm9yZUNhc2U/KSB7XG4gICAgICAgIGlmICghY29uZGl0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBncmlkID0gdGhpcy5ncmlkO1xuICAgICAgICBjb25zdCBmaWx0ZXJpbmdUcmVlID0gZ3JpZC5maWx0ZXJpbmdFeHByZXNzaW9uc1RyZWU7XG4gICAgICAgIGNvbnN0IG5ld0ZpbHRlcmluZ1RyZWUgPSBuZXcgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKGZpbHRlcmluZ1RyZWUub3BlcmF0b3IsIGZpbHRlcmluZ1RyZWUuZmllbGROYW1lKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBncmlkLmNvbHVtbkxpc3QpIHtcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZV9maWx0ZXJpbmdfZXhwcmVzc2lvbihuZXdGaWx0ZXJpbmdUcmVlLCBjb2x1bW4uZmllbGQsIHZhbHVlLCBjb25kaXRpb24sXG4gICAgICAgICAgICAgICAgaWdub3JlQ2FzZSB8fCBjb2x1bW4uZmlsdGVyaW5nSWdub3JlQ2FzZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBldmVudEFyZ3M6IElGaWx0ZXJpbmdFdmVudEFyZ3MgPSB7IG93bmVyOiBncmlkLCBmaWx0ZXJpbmdFeHByZXNzaW9uczogbmV3RmlsdGVyaW5nVHJlZSwgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICBncmlkLmZpbHRlcmluZy5lbWl0KGV2ZW50QXJncyk7XG4gICAgICAgIGlmIChldmVudEFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuZW5kRWRpdChmYWxzZSk7XG4gICAgICAgIGlmIChncmlkLnBhZ2luYXRvcikge1xuICAgICAgICAgICAgZ3JpZC5wYWdpbmF0b3IucGFnZSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgZ3JpZC5maWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgPSBuZXdGaWx0ZXJpbmdUcmVlO1xuXG4gICAgICAgIC8vIFdhaXQgZm9yIHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIHRvIHVwZGF0ZSBmaWx0ZXJlZCBkYXRhIHRocm91Z2ggdGhlIHBpcGVzIGFuZCB0aGVuIGVtaXQgdGhlIGV2ZW50LlxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdGhpcy5ncmlkLmZpbHRlcmluZ0RvbmUuZW1pdCh0aGlzLmdyaWQuZmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXIgZmlsdGVyaW5nIFNWRyBpY29ucyBpbiB0aGUgaWNvbiBzZXJ2aWNlLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWdpc3RlclNWR0ljb25zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlZGl0b3JJY29ucyA9IGVkaXRvciBhcyBhbnlbXTtcbiAgICAgICAgZWRpdG9ySWNvbnMuZm9yRWFjaChpY29uID0+IHRoaXMuaWNvblNlcnZpY2UuYWRkU3ZnSWNvbkZyb21UZXh0KGljb24ubmFtZSwgaWNvbi52YWx1ZSwgJ2lteC1pY29ucycpKTtcbiAgICAgICAgdGhpcy5pY29uU2VydmljZS5hZGRTdmdJY29uRnJvbVRleHQocGluTGVmdC5uYW1lLCBwaW5MZWZ0LnZhbHVlLCAnaW14LWljb25zJyk7XG4gICAgICAgIHRoaXMuaWNvblNlcnZpY2UuYWRkU3ZnSWNvbkZyb21UZXh0KHVucGluTGVmdC5uYW1lLCB1bnBpbkxlZnQudmFsdWUsICdpbXgtaWNvbnMnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBFeHByZXNzaW9uVUkgYXJyYXkgZm9yIGEgZ2l2ZW4gY29sdW1uLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRFeHByZXNzaW9ucyhjb2x1bW5JZDogc3RyaW5nKTogRXhwcmVzc2lvblVJW10ge1xuICAgICAgICBpZiAoIXRoaXMuY29sdW1uVG9FeHByZXNzaW9uc01hcC5oYXMoY29sdW1uSWQpKSB7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdyaWQuY29sdW1uTGlzdC5maW5kKChjb2wpID0+IGNvbC5maWVsZCA9PT0gY29sdW1uSWQpO1xuICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvblVJcyA9IG5ldyBBcnJheTxFeHByZXNzaW9uVUk+KCk7XG4gICAgICAgICAgICBpZiAoY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUV4cHJlc3Npb25zTGlzdChjb2x1bW4uZmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLCB0aGlzLmdyaWQuZmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLm9wZXJhdG9yLCBleHByZXNzaW9uVUlzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtblRvRXhwcmVzc2lvbnNNYXAuc2V0KGNvbHVtbklkLCBleHByZXNzaW9uVUlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBleHByZXNzaW9uVUlzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uVG9FeHByZXNzaW9uc01hcC5nZXQoY29sdW1uSWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlY3JlYXRlcyBhbGwgRXhwcmVzc2lvblVJcyBmb3IgYWxsIGNvbHVtbnMuIEV4ZWN1dGVkIGFmdGVyIGZpbHRlcmluZyB0byByZWZyZXNoIHRoZSBjYWNoZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVmcmVzaEV4cHJlc3Npb25zKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNGaWx0ZXJpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuY29sdW1uc1dpdGhDb21wbGV4RmlsdGVyLmNsZWFyKCk7XG5cbiAgICAgICAgICAgIHRoaXMuY29sdW1uVG9FeHByZXNzaW9uc01hcC5mb3JFYWNoKCh2YWx1ZTogRXhwcmVzc2lvblVJW10sIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5ncmlkLmNvbHVtbkxpc3QuZmluZCgoY29sKSA9PiBjb2wuZmllbGQgPT09IGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtbikge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZS5sZW5ndGggPSAwO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFeHByZXNzaW9uc0xpc3QoY29sdW1uLmZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSwgdGhpcy5ncmlkLmZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZS5vcGVyYXRvciwgdmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzQ29tcGxleCA9IHRoaXMuaXNGaWx0ZXJpbmdUcmVlQ29tcGxleChjb2x1bW4uZmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQ29tcGxleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5zV2l0aENvbXBsZXhGaWx0ZXIuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlcmluZ0NlbGwoY29sdW1uKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtblRvRXhwcmVzc2lvbnNNYXAuZGVsZXRlKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgYW4gRXhwcmVzc2lvblVJIGZvciBhIGdpdmVuIGNvbHVtbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlRXhwcmVzc2lvbihjb2x1bW5JZDogc3RyaW5nLCBpbmRleFRvUmVtb3ZlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbnNMaXN0ID0gdGhpcy5nZXRFeHByZXNzaW9ucyhjb2x1bW5JZCk7XG5cbiAgICAgICAgaWYgKGluZGV4VG9SZW1vdmUgPT09IDAgJiYgZXhwcmVzc2lvbnNMaXN0Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGV4cHJlc3Npb25zTGlzdFsxXS5iZWZvcmVPcGVyYXRvciA9IG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXhUb1JlbW92ZSA9PT0gZXhwcmVzc2lvbnNMaXN0Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGV4cHJlc3Npb25zTGlzdFtpbmRleFRvUmVtb3ZlIC0gMV0uYWZ0ZXJPcGVyYXRvciA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBleHByZXNzaW9uc0xpc3RbaW5kZXhUb1JlbW92ZSAtIDFdLmFmdGVyT3BlcmF0b3IgPSBleHByZXNzaW9uc0xpc3RbaW5kZXhUb1JlbW92ZSArIDFdLmJlZm9yZU9wZXJhdG9yO1xuICAgICAgICAgICAgZXhwcmVzc2lvbnNMaXN0WzBdLmJlZm9yZU9wZXJhdG9yID0gbnVsbDtcbiAgICAgICAgICAgIGV4cHJlc3Npb25zTGlzdFtleHByZXNzaW9uc0xpc3QubGVuZ3RoIC0gMV0uYWZ0ZXJPcGVyYXRvciA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBleHByZXNzaW9uc0xpc3Quc3BsaWNlKGluZGV4VG9SZW1vdmUsIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlIGZpbHRlcmluZyB0cmVlIGZvciBhIGdpdmVuIGNvbHVtbiBmcm9tIGV4aXN0aW5nIEV4cHJlc3Npb25VSXMuXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZVNpbXBsZUZpbHRlcmluZ1RyZWUoY29sdW1uSWQ6IHN0cmluZywgZXhwcmVzc2lvblVJTGlzdCA9IG51bGwpOiBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUge1xuICAgICAgICBjb25zdCBleHByZXNzaW9uc0xpc3QgPSBleHByZXNzaW9uVUlMaXN0ID8gZXhwcmVzc2lvblVJTGlzdCA6IHRoaXMuZ2V0RXhwcmVzc2lvbnMoY29sdW1uSWQpO1xuICAgICAgICBjb25zdCBleHByZXNzaW9uc1RyZWUgPSBuZXcgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKEZpbHRlcmluZ0xvZ2ljLk9yLCBjb2x1bW5JZCk7XG4gICAgICAgIGxldCBjdXJyQW5kQnJhbmNoOiBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWU7XG5cbiAgICAgICAgZm9yIChjb25zdCBjdXJyRXhwcmVzc2lvblVJIG9mIGV4cHJlc3Npb25zTGlzdCkge1xuICAgICAgICAgICAgaWYgKCFjdXJyRXhwcmVzc2lvblVJLmV4cHJlc3Npb24uY29uZGl0aW9uLmlzVW5hcnkgJiYgY3VyckV4cHJlc3Npb25VSS5leHByZXNzaW9uLnNlYXJjaFZhbCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChjdXJyRXhwcmVzc2lvblVJLmFmdGVyT3BlcmF0b3IgPT09IEZpbHRlcmluZ0xvZ2ljLkFuZCAmJiAhY3VyckFuZEJyYW5jaCkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyQW5kQnJhbmNoID0gbmV3IEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZShGaWx0ZXJpbmdMb2dpYy5BbmQsIGNvbHVtbklkKTtcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbnNUcmVlLmZpbHRlcmluZ09wZXJhbmRzLnB1c2goY3VyckFuZEJyYW5jaCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoKGN1cnJFeHByZXNzaW9uVUkuYmVmb3JlT3BlcmF0b3IgPT09IHVuZGVmaW5lZCB8fCBjdXJyRXhwcmVzc2lvblVJLmJlZm9yZU9wZXJhdG9yID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgY3VyckV4cHJlc3Npb25VSS5iZWZvcmVPcGVyYXRvciA9PT0gRmlsdGVyaW5nTG9naWMuT3IpICYmXG4gICAgICAgICAgICAgICAgY3VyckV4cHJlc3Npb25VSS5hZnRlck9wZXJhdG9yID09PSBGaWx0ZXJpbmdMb2dpYy5BbmQpIHtcblxuICAgICAgICAgICAgICAgIGN1cnJBbmRCcmFuY2ggPSBuZXcgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKEZpbHRlcmluZ0xvZ2ljLkFuZCwgY29sdW1uSWQpO1xuICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zVHJlZS5maWx0ZXJpbmdPcGVyYW5kcy5wdXNoKGN1cnJBbmRCcmFuY2gpO1xuICAgICAgICAgICAgICAgIGN1cnJBbmRCcmFuY2guZmlsdGVyaW5nT3BlcmFuZHMucHVzaChjdXJyRXhwcmVzc2lvblVJLmV4cHJlc3Npb24pO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJFeHByZXNzaW9uVUkuYmVmb3JlT3BlcmF0b3IgPT09IEZpbHRlcmluZ0xvZ2ljLkFuZCkge1xuICAgICAgICAgICAgICAgIGN1cnJBbmRCcmFuY2guZmlsdGVyaW5nT3BlcmFuZHMucHVzaChjdXJyRXhwcmVzc2lvblVJLmV4cHJlc3Npb24pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uc1RyZWUuZmlsdGVyaW5nT3BlcmFuZHMucHVzaChjdXJyRXhwcmVzc2lvblVJLmV4cHJlc3Npb24pO1xuICAgICAgICAgICAgICAgIGN1cnJBbmRCcmFuY2ggPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGV4cHJlc3Npb25zVHJlZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgYSBjb21wbGV4IGZpbHRlciBpcyBhcHBsaWVkIHRvIGEgZ2l2ZW4gY29sdW1uLlxuICAgICAqL1xuICAgIHB1YmxpYyBpc0ZpbHRlckNvbXBsZXgoY29sdW1uSWQ6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5jb2x1bW5zV2l0aENvbXBsZXhGaWx0ZXIuaGFzKGNvbHVtbklkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdyaWQuY29sdW1uTGlzdC5maW5kKChjb2wpID0+IGNvbC5maWVsZCA9PT0gY29sdW1uSWQpO1xuICAgICAgICBjb25zdCBpc0NvbXBsZXggPSBjb2x1bW4gJiYgdGhpcy5pc0ZpbHRlcmluZ1RyZWVDb21wbGV4KGNvbHVtbi5maWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpO1xuICAgICAgICBpZiAoaXNDb21wbGV4KSB7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbnNXaXRoQ29tcGxleEZpbHRlci5hZGQoY29sdW1uSWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzQ29tcGxleDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIEZpbHRlcmluZ0xvZ2ljIG9wZXJhdG9yLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRPcGVyYXRvckFzU3RyaW5nKG9wZXJhdG9yOiBGaWx0ZXJpbmdMb2dpYyk6IGFueSB7XG4gICAgICAgIGlmIChvcGVyYXRvciA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5yZXNvdXJjZVN0cmluZ3MuaWd4X2dyaWRfZmlsdGVyX29wZXJhdG9yX2FuZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdyaWQucmVzb3VyY2VTdHJpbmdzLmlneF9ncmlkX2ZpbHRlcl9vcGVyYXRvcl9vcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlIHRoZSBsYWJlbCBvZiBhIGNoaXAgZnJvbSBhIGdpdmVuIGZpbHRlcmluZyBleHByZXNzaW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDaGlwTGFiZWwoZXhwcmVzc2lvbjogSUZpbHRlcmluZ0V4cHJlc3Npb24pOiBhbnkge1xuICAgICAgICBpZiAoZXhwcmVzc2lvbi5jb25kaXRpb24uaXNVbmFyeSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5yZXNvdXJjZVN0cmluZ3NbYGlneF9ncmlkX2ZpbHRlcl8ke2V4cHJlc3Npb24uY29uZGl0aW9uLm5hbWV9YF0gfHwgZXhwcmVzc2lvbi5jb25kaXRpb24ubmFtZTtcbiAgICAgICAgfSBlbHNlIGlmIChleHByZXNzaW9uLnNlYXJjaFZhbCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZ3JpZC5nZXRDb2x1bW5CeU5hbWUoZXhwcmVzc2lvbi5maWVsZE5hbWUpO1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gY29sdW1uLmZvcm1hdHRlcjtcbiAgICAgICAgICAgIGlmIChmb3JtYXR0ZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVyKGV4cHJlc3Npb24uc2VhcmNoVmFsLCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcGlwZUFyZ3MgPSBjb2x1bW4ucGlwZUFyZ3M7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0RGF0ZShleHByZXNzaW9uLnNlYXJjaFZhbCwgcGlwZUFyZ3MuZm9ybWF0LCB0aGlzLmdyaWQubG9jYWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBleHByZXNzaW9uLnNlYXJjaFZhbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIGNvbnRlbnQgb2YgYSBmaWx0ZXJDZWxsLlxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVGaWx0ZXJpbmdDZWxsKGNvbHVtbjogQ29sdW1uVHlwZSkge1xuICAgICAgICBjb25zdCBmaWx0ZXJDZWxsID0gY29sdW1uLmZpbHRlckNlbGw7XG4gICAgICAgIGlmIChmaWx0ZXJDZWxsKSB7XG4gICAgICAgICAgICBmaWx0ZXJDZWxsLnVwZGF0ZUZpbHRlckNlbGxBcmVhKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2VuZXJhdGVFeHByZXNzaW9uc0xpc3QoZXhwcmVzc2lvbnM6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgfCBJRmlsdGVyaW5nRXhwcmVzc2lvbixcbiAgICAgICAgb3BlcmF0b3I6IEZpbHRlcmluZ0xvZ2ljLFxuICAgICAgICBleHByZXNzaW9uc1VJczogRXhwcmVzc2lvblVJW10pOiB2b2lkIHtcbiAgICAgICAgZ2VuZXJhdGVFeHByZXNzaW9uc0xpc3QoZXhwcmVzc2lvbnMsIG9wZXJhdG9yLCBleHByZXNzaW9uc1VJcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlRW1wdHkoZXhwcmVzc2lvblRyZWU6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZS5lbXB0eShleHByZXNzaW9uVHJlZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBleHByIG9mIGV4cHJlc3Npb25UcmVlLmZpbHRlcmluZ09wZXJhbmRzKSB7XG4gICAgICAgICAgICBpZiAoKGV4cHIgaW5zdGFuY2VvZiBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwclRyZWUgPSBleHByIGFzIEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTtcbiAgICAgICAgICAgICAgICBpZiAoZXhwclRyZWUuZmlsdGVyaW5nT3BlcmFuZHMgJiYgZXhwclRyZWUuZmlsdGVyaW5nT3BlcmFuZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbHRlcl9pbnRlcm5hbChmaWVsZE5hbWU6IHN0cmluZywgdGVybSwgY29uZGl0aW9uT3JFeHByZXNzaW9uc1RyZWU6IElGaWx0ZXJpbmdPcGVyYXRpb24gfCBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLFxuICAgICAgICBpZ25vcmVDYXNlOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdyaWQ7XG4gICAgICAgIGNvbnN0IGZpbHRlcmluZ1RyZWUgPSBncmlkLmZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTtcbiAgICAgICAgdGhpcy5ncmlkLmNydWRTZXJ2aWNlLmVuZEVkaXQoZmFsc2UpO1xuXG4gICAgICAgIGlmIChncmlkLnBhZ2luYXRvcikge1xuICAgICAgICAgICAgZ3JpZC5wYWdpbmF0b3IucGFnZSA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWVsZEZpbHRlckluZGV4ID0gZmlsdGVyaW5nVHJlZS5maW5kSW5kZXgoZmllbGROYW1lKTtcbiAgICAgICAgaWYgKGZpZWxkRmlsdGVySW5kZXggPiAtMSkge1xuICAgICAgICAgICAgZmlsdGVyaW5nVHJlZS5maWx0ZXJpbmdPcGVyYW5kcy5zcGxpY2UoZmllbGRGaWx0ZXJJbmRleCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByZXBhcmVfZmlsdGVyaW5nX2V4cHJlc3Npb24oZmlsdGVyaW5nVHJlZSwgZmllbGROYW1lLCB0ZXJtLCBjb25kaXRpb25PckV4cHJlc3Npb25zVHJlZSwgaWdub3JlQ2FzZSwgZmllbGRGaWx0ZXJJbmRleCk7XG4gICAgICAgIGdyaWQuZmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlID0gZmlsdGVyaW5nVHJlZTtcbiAgICB9XG5cbiAgICAvKiogTW9kaWZpZXMgdGhlIGZpbHRlcmluZ1N0YXRlIG9iamVjdCB0byBjb250YWluIHRoZSBuZXdseSBhZGRlZCBmaXRlcmluZyBjb25kaXRpb25zL2V4cHJlc3Npb25zLlxuICAgICAqIElmIGNyZWF0ZU5ld1RyZWUgaXMgdHJ1ZSwgZmlsdGVyaW5nU3RhdGUgd2lsbCBub3QgYmUgbW9kaWZpZWQgKGJlY2F1c2UgaXQgZGlyZWN0bHkgYWZmZWN0cyB0aGUgZ3JpZC5maWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpLFxuICAgICAqIGJ1dCBhIG5ldyBvYmplY3QgaXMgY3JlYXRlZCBhbmQgcmV0dXJuZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcmVwYXJlX2ZpbHRlcmluZ19leHByZXNzaW9uKFxuICAgICAgICBmaWx0ZXJpbmdTdGF0ZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSxcbiAgICAgICAgZmllbGROYW1lOiBzdHJpbmcsXG4gICAgICAgIHNlYXJjaFZhbCxcbiAgICAgICAgY29uZGl0aW9uT3JFeHByZXNzaW9uc1RyZWU6IElGaWx0ZXJpbmdPcGVyYXRpb24gfCBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLFxuICAgICAgICBpZ25vcmVDYXNlOiBib29sZWFuLFxuICAgICAgICBpbnNlcnRBdEluZGV4ID0gLTEsXG4gICAgICAgIGNyZWF0ZU5ld1RyZWUgPSBmYWxzZSk6IEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB7XG5cbiAgICAgICAgY29uc3Qgb2xkRXhwcmVzc2lvbnNUcmVlSW5kZXggPSBmaWx0ZXJpbmdTdGF0ZS5maW5kSW5kZXgoZmllbGROYW1lKTtcbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbnNUcmVlID0gY29uZGl0aW9uT3JFeHByZXNzaW9uc1RyZWUgaW5zdGFuY2VvZiBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgP1xuICAgICAgICAgICAgY29uZGl0aW9uT3JFeHByZXNzaW9uc1RyZWUgYXMgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSA6IG51bGw7XG4gICAgICAgIGNvbnN0IGNvbmRpdGlvbiA9IGNvbmRpdGlvbk9yRXhwcmVzc2lvbnNUcmVlIGluc3RhbmNlb2YgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlID9cbiAgICAgICAgICAgIG51bGwgOiBjb25kaXRpb25PckV4cHJlc3Npb25zVHJlZSBhcyBJRmlsdGVyaW5nT3BlcmF0aW9uO1xuICAgICAgICBjb25zdCBuZXdFeHByZXNzaW9uOiBJRmlsdGVyaW5nRXhwcmVzc2lvbiA9IHsgZmllbGROYW1lLCBzZWFyY2hWYWwsIGNvbmRpdGlvbiwgaWdub3JlQ2FzZSB9O1xuXG4gICAgICAgIGNvbnN0IG5ld0V4cHJlc3Npb25zVHJlZTogRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlID0gY3JlYXRlTmV3VHJlZSA/XG4gICAgICAgICAgICBuZXcgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKGZpbHRlcmluZ1N0YXRlLm9wZXJhdG9yLCBmaWx0ZXJpbmdTdGF0ZS5maWVsZE5hbWUpIDogZmlsdGVyaW5nU3RhdGUgYXMgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlO1xuXG4gICAgICAgIGlmIChvbGRFeHByZXNzaW9uc1RyZWVJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIC8vIG5vIGV4cHJlc3Npb25zIHRyZWUgZm91bmQgZm9yIHRoaXMgZmllbGRcbiAgICAgICAgICAgIGlmIChleHByZXNzaW9uc1RyZWUpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0QXRJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0V4cHJlc3Npb25zVHJlZS5maWx0ZXJpbmdPcGVyYW5kcy5zcGxpY2UoaW5zZXJ0QXRJbmRleCwgMCwgZXhwcmVzc2lvbnNUcmVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuZXdFeHByZXNzaW9uc1RyZWUuZmlsdGVyaW5nT3BlcmFuZHMucHVzaChleHByZXNzaW9uc1RyZWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZGl0aW9uKSB7XG4gICAgICAgICAgICAgICAgLy8gY3JlYXRlIGV4cHJlc3Npb25zIHRyZWUgZm9yIHRoaXMgZmllbGQgYW5kIGFkZCB0aGUgbmV3IGV4cHJlc3Npb24gdG8gaXRcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdFeHByVHJlZTogRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlID0gbmV3IEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZShmaWx0ZXJpbmdTdGF0ZS5vcGVyYXRvciwgZmllbGROYW1lKTtcbiAgICAgICAgICAgICAgICBuZXdFeHByVHJlZS5maWx0ZXJpbmdPcGVyYW5kcy5wdXNoKG5ld0V4cHJlc3Npb24pO1xuICAgICAgICAgICAgICAgIG5ld0V4cHJlc3Npb25zVHJlZS5maWx0ZXJpbmdPcGVyYW5kcy5wdXNoKG5ld0V4cHJUcmVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXdFeHByZXNzaW9uc1RyZWU7XG4gICAgfVxuXG5cbiAgICBwcml2YXRlIGlzRmlsdGVyaW5nVHJlZUNvbXBsZXgoZXhwcmVzc2lvbnM6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgfCBJRmlsdGVyaW5nRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWV4cHJlc3Npb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXhwcmVzc2lvbnMgaW5zdGFuY2VvZiBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4cHJlc3Npb25zVHJlZSA9IGV4cHJlc3Npb25zIGFzIEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTtcbiAgICAgICAgICAgIGlmIChleHByZXNzaW9uc1RyZWUub3BlcmF0b3IgPT09IEZpbHRlcmluZ0xvZ2ljLk9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYW5kT3BlcmF0b3JzQ291bnQgPSB0aGlzLmdldENoaWxkQW5kT3BlcmF0b3JzQ291bnQoZXhwcmVzc2lvbnNUcmVlKTtcblxuICAgICAgICAgICAgICAgIC8vIGhhdmluZyBtb3JlIHRoYXQgJ0FuZCcgYW5kIG9wZXJhdG9yIGluIHRoZSBzdWItdHJlZSBtZWFucyB0aGF0IHRoZSBmaWx0ZXIgY291bGQgbm90IGJlIHJlcHJlc2VudGVkIHdpdGhvdXQgcGFyZW50aGVzZXMuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFuZE9wZXJhdG9yc0NvdW50ID4gMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGlzQ29tcGxleCA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yIChjb25zdCBvcGVyYW5kIG9mIGV4cHJlc3Npb25zVHJlZS5maWx0ZXJpbmdPcGVyYW5kcykge1xuICAgICAgICAgICAgICAgIGlzQ29tcGxleCA9IGlzQ29tcGxleCB8fCB0aGlzLmlzRmlsdGVyaW5nVHJlZUNvbXBsZXgob3BlcmFuZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBpc0NvbXBsZXg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDaGlsZEFuZE9wZXJhdG9yc0NvdW50KGV4cHJlc3Npb25zOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgICAgbGV0IG9wZXJhbmQ7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXhwcmVzc2lvbnMuZmlsdGVyaW5nT3BlcmFuZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG9wZXJhbmQgPSBleHByZXNzaW9uc1tpXTtcbiAgICAgICAgICAgIGlmIChvcGVyYW5kIGluc3RhbmNlb2YgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQub3BlcmF0b3IgPT09IEZpbHRlcmluZ0xvZ2ljLkFuZCkge1xuICAgICAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvdW50ID0gY291bnQgKyB0aGlzLmdldENoaWxkQW5kT3BlcmF0b3JzQ291bnQob3BlcmFuZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgfVxufVxuIl19
@@ -78,9 +78,9 @@ export class IgxGridExpandableCellComponent extends IgxGridCellComponent {
78
78
  return !this.editMode && (!this.intRow.pinned || isGhost);
79
79
  }
80
80
  }
81
- IgxGridExpandableCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridExpandableCellComponent, deps: [{ token: i1.IgxGridSelectionService }, { token: IGX_GRID_BASE }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i2.HammerGesturesManager }, { token: DOCUMENT }, { token: i3.PlatformUtil }], target: i0.ɵɵFactoryTarget.Component });
82
- IgxGridExpandableCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0", type: IgxGridExpandableCellComponent, selector: "igx-expandable-grid-cell", inputs: { expanded: "expanded" }, providers: [HammerGesturesManager], viewQueries: [{ propertyName: "indicator", first: true, predicate: ["indicator"], descendants: true, read: ElementRef }, { propertyName: "indentationDiv", first: true, predicate: ["indentationDiv"], descendants: true, read: ElementRef }, { propertyName: "defaultExpandedTemplate", first: true, predicate: ["defaultExpandedTemplate"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultCollapsedTemplate", first: true, predicate: ["defaultCollapsedTemplate"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #defaultPinnedIndicator>\n <igx-chip *ngIf=\"displayPinnedChip\" class=\"igx-grid__td--pinned-chip\" [disabled]=\"true\" [displayDensity]=\"'compact'\">{{ grid.resourceStrings.igx_grid_pinned_row_indicator }}</igx-chip>\n</ng-template>\n<ng-template #defaultCell>\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)\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 [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\">{{ 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}}</div>\n\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 value ? 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 igxInput [(ngModel)]=\"editValue\" [igxFocus]=\"true\">\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'number'\">\n <igx-input-group displayDensity=\"compact\">\n <input igxInput [(ngModel)]=\"editValue\" [igxFocus]=\"true\" [step]=\"step\" type=\"number\">\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'boolean'\">\n <igx-checkbox (change)=\"editValue = $event.checked\" [value]=\"editValue\" [checked]=\"editValue\" [disableRipple]=\"true\"></igx-checkbox>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'date'\">\n <igx-date-picker [style.width.%]=\"100\" [outlet]=\"grid.outlet\" mode=\"dropdown\"\n [locale]=\"grid.locale\" [(value)]=\"editValue\" [igxFocus]=\"true\">\n </igx-date-picker>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'time'\">\n <igx-time-picker [style.width.%]=\"100\" [outlet]=\"grid.outlet\"\n mode=\"dropdown\" [inputFormat]=\"column.defaultTimeFormat\" [(ngModel)]=\"editValue\" [igxFocus]=\"true\">\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 igxInput [(ngModel)]=\"editValue\"\n [igxFocus]=\"true\" [step]=\"step\" type=\"number\"/>\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 igxInput [(ngModel)]=\"editValue\" [step]=\"step\"\n [igxFocus]=\"true\" type=\"number\"/>\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 *ngIf=\"showExpanderIndicator\">\n <div #indicator\n class=\"igx-grid__tree-grouping-indicator\"\n (click)=\"toggle($event)\" (focus)=\"onIndicatorFocus()\">\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: { $implicit: this }\">\n </ng-container>\n </div>\n</ng-container>\n<ng-container *ngTemplateOutlet=\"pinnedIndicatorTemplate; context: context\">\n</ng-container>\n<ng-container *ngTemplateOutlet=\"template; context: context\">\n</ng-container>\n<ng-template #defaultExpandedTemplate>\n <igx-icon>expand_more</igx-icon>\n</ng-template>\n<ng-template #defaultCollapsedTemplate>\n <igx-icon>chevron_right</igx-icon>\n</ng-template>\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 });
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridExpandableCellComponent, decorators: [{
81
+ IgxGridExpandableCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridExpandableCellComponent, deps: [{ token: i1.IgxGridSelectionService }, { token: IGX_GRID_BASE }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i2.HammerGesturesManager }, { token: DOCUMENT }, { token: i3.PlatformUtil }], target: i0.ɵɵFactoryTarget.Component });
82
+ IgxGridExpandableCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: IgxGridExpandableCellComponent, selector: "igx-expandable-grid-cell", inputs: { expanded: "expanded" }, providers: [HammerGesturesManager], viewQueries: [{ propertyName: "indicator", first: true, predicate: ["indicator"], descendants: true, read: ElementRef }, { propertyName: "indentationDiv", first: true, predicate: ["indentationDiv"], descendants: true, read: ElementRef }, { propertyName: "defaultExpandedTemplate", first: true, predicate: ["defaultExpandedTemplate"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultCollapsedTemplate", first: true, predicate: ["defaultCollapsedTemplate"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #defaultPinnedIndicator>\n <igx-chip *ngIf=\"displayPinnedChip\" class=\"igx-grid__td--pinned-chip\" [disabled]=\"true\" [displayDensity]=\"'compact'\">{{ grid.resourceStrings.igx_grid_pinned_row_indicator }}</igx-chip>\n</ng-template>\n<ng-template #defaultCell>\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)\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 [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\">{{ 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}}</div>\n\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 value ? 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 igxInput [(ngModel)]=\"editValue\" [igxFocus]=\"true\">\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'number'\">\n <igx-input-group displayDensity=\"compact\">\n <input igxInput [(ngModel)]=\"editValue\" [igxFocus]=\"true\" [step]=\"step\" type=\"number\">\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'boolean'\">\n <igx-checkbox (change)=\"editValue = $event.checked\" [value]=\"editValue\" [checked]=\"editValue\" [disableRipple]=\"true\"></igx-checkbox>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'date'\">\n <igx-date-picker [style.width.%]=\"100\" [outlet]=\"grid.outlet\" mode=\"dropdown\"\n [locale]=\"grid.locale\" [(value)]=\"editValue\" [igxFocus]=\"true\">\n </igx-date-picker>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'time'\">\n <igx-time-picker [style.width.%]=\"100\" [outlet]=\"grid.outlet\"\n mode=\"dropdown\" [inputFormat]=\"column.defaultTimeFormat\" [(ngModel)]=\"editValue\" [igxFocus]=\"true\">\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 igxInput [(ngModel)]=\"editValue\"\n [igxFocus]=\"true\" [step]=\"step\" type=\"number\"/>\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 igxInput [(ngModel)]=\"editValue\" [step]=\"step\"\n [igxFocus]=\"true\" type=\"number\"/>\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 *ngIf=\"showExpanderIndicator\">\n <div #indicator\n class=\"igx-grid__tree-grouping-indicator\"\n (click)=\"toggle($event)\" (focus)=\"onIndicatorFocus()\">\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: { $implicit: this }\">\n </ng-container>\n </div>\n</ng-container>\n<ng-container *ngTemplateOutlet=\"pinnedIndicatorTemplate; context: context\">\n</ng-container>\n<ng-container *ngTemplateOutlet=\"template; context: context\">\n</ng-container>\n<ng-template #defaultExpandedTemplate>\n <igx-icon>expand_more</igx-icon>\n</ng-template>\n<ng-template #defaultCollapsedTemplate>\n <igx-icon>chevron_right</igx-icon>\n</ng-template>\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 });
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridExpandableCellComponent, decorators: [{
84
84
  type: Component,
85
85
  args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-expandable-grid-cell', providers: [HammerGesturesManager], template: "<ng-template #defaultPinnedIndicator>\n <igx-chip *ngIf=\"displayPinnedChip\" class=\"igx-grid__td--pinned-chip\" [disabled]=\"true\" [displayDensity]=\"'compact'\">{{ grid.resourceStrings.igx_grid_pinned_row_indicator }}</igx-chip>\n</ng-template>\n<ng-template #defaultCell>\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)\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 [row]=\"rowData\"\n [column]=\"this.column.field\"\n [containerClass]=\"'igx-grid__td-text'\"\n [metadata]=\"searchMetadata\">{{ 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}}</div>\n\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 value ? 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 igxInput [(ngModel)]=\"editValue\" [igxFocus]=\"true\">\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'number'\">\n <igx-input-group displayDensity=\"compact\">\n <input igxInput [(ngModel)]=\"editValue\" [igxFocus]=\"true\" [step]=\"step\" type=\"number\">\n </igx-input-group>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'boolean'\">\n <igx-checkbox (change)=\"editValue = $event.checked\" [value]=\"editValue\" [checked]=\"editValue\" [disableRipple]=\"true\"></igx-checkbox>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'date'\">\n <igx-date-picker [style.width.%]=\"100\" [outlet]=\"grid.outlet\" mode=\"dropdown\"\n [locale]=\"grid.locale\" [(value)]=\"editValue\" [igxFocus]=\"true\">\n </igx-date-picker>\n </ng-container>\n <ng-container *ngIf=\"column.dataType === 'time'\">\n <igx-time-picker [style.width.%]=\"100\" [outlet]=\"grid.outlet\"\n mode=\"dropdown\" [inputFormat]=\"column.defaultTimeFormat\" [(ngModel)]=\"editValue\" [igxFocus]=\"true\">\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 igxInput [(ngModel)]=\"editValue\"\n [igxFocus]=\"true\" [step]=\"step\" type=\"number\"/>\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 igxInput [(ngModel)]=\"editValue\" [step]=\"step\"\n [igxFocus]=\"true\" type=\"number\"/>\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 *ngIf=\"showExpanderIndicator\">\n <div #indicator\n class=\"igx-grid__tree-grouping-indicator\"\n (click)=\"toggle($event)\" (focus)=\"onIndicatorFocus()\">\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: { $implicit: this }\">\n </ng-container>\n </div>\n</ng-container>\n<ng-container *ngTemplateOutlet=\"pinnedIndicatorTemplate; context: context\">\n</ng-container>\n<ng-container *ngTemplateOutlet=\"template; context: context\">\n</ng-container>\n<ng-template #defaultExpandedTemplate>\n <igx-icon>expand_more</igx-icon>\n</ng-template>\n<ng-template #defaultCollapsedTemplate>\n <igx-icon>chevron_right</igx-icon>\n</ng-template>\n" }]
86
86
  }], ctorParameters: function () { return [{ type: i1.IgxGridSelectionService }, { type: undefined, decorators: [{
@@ -154,9 +154,9 @@ export class IgxGridAPIService extends GridBaseAPIService {
154
154
  }
155
155
  }
156
156
  }
157
- IgxGridAPIService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridAPIService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
158
- IgxGridAPIService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridAPIService });
159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: IgxGridAPIService, decorators: [{
157
+ IgxGridAPIService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridAPIService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
158
+ IgxGridAPIService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridAPIService });
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: IgxGridAPIService, decorators: [{
160
160
  type: Injectable
161
161
  }] });
162
162
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9ncmlkL2dyaWQtYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkzQyxNQUFNLE9BQU8saUJBQWtCLFNBQVEsa0JBQTRCO0lBRXhELE9BQU8sQ0FBQyxVQUErQjtRQUMxQyxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsYUFBYSxDQUFDO1FBQzlDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxXQUFrQztRQUN0RCxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFOUQsS0FBSyxNQUFNLElBQUksSUFBSSxXQUFXLEVB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LENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUM7UUFDcEYsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDZCxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0wsQ0FBQzs7OEdBcEtRLGlCQUFpQjtrSEFBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmlkQmFzZUFQSVNlcnZpY2UgfSBmcm9tICcuLi9hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBJR3JvdXBCeVJlY29yZCB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9ncm91cGJ5LXJlY29yZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUdyb3VwQnlFeHBhbmRTdGF0ZSB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9ncm91cGJ5LWV4cGFuZC1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRGF0YVV0aWwgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZGF0YS11dGlsJztcbmltcG9ydCB7IGNsb25lQXJyYXkgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IElHcm91cGluZ0V4cHJlc3Npb24gfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZ3JvdXBpbmctZXhwcmVzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JpZFNlcnZpY2VUeXBlLCBHcmlkVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkQVBJU2VydmljZSBleHRlbmRzIEdyaWRCYXNlQVBJU2VydmljZTxHcmlkVHlwZT4gaW1wbGVtZW50cyBHcmlkU2VydmljZVR5cGUge1xuXG4gICAgcHVibGljIGdyb3VwQnkoZXhwcmVzc2lvbjogSUdyb3VwaW5nRXhwcmVzc2lvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBncm91cGluZ1N0YXRlID0gY2xvbmVBcnJheSh0aGlzLmdyaWQuZ3JvdXBpbmdFeHByZXNzaW9ucyk7XG4gICAgICAgIGNvbnN0IHNvcnRpbmdTdGF0ZSA9IGNsb25lQXJyYXkodGhpcy5ncmlkLnNvcnRpbmdFeHByZXNzaW9ucyk7XG4gICAgICAgIHRoaXMucHJlcGFyZV9zb3J0aW5nX2V4cHJlc3Npb24oW3NvcnRpbmdTdGF0ZSwgZ3JvdXBpbmdTdGF0ZV0sIGV4cHJlc3Npb24pO1xuICAgICAgICB0aGlzLmdyaWQuZ3JvdXBpbmdFeHByZXNzaW9ucyA9IGdyb3VwaW5nU3RhdGU7XG4gICAgICAgIHRoaXMuYXJyYW5nZV9zb3J0aW5nX2V4cHJlc3Npb25zKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdyb3VwQnlfbXVsdGlwbGUoZXhwcmVzc2lvbnM6IElHcm91cGluZ0V4cHJlc3Npb25bXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBncm91cGluZ1N0YXRlID0gY2xvbmVBcnJheSh0aGlzLmdyaWQuZ3JvdXBpbmdFeHByZXNzaW9ucyk7XG4gICAgICAgIGNvbnN0IHNvcnRpbmdTdGF0ZSA9IGNsb25lQXJyYXkodGhpcy5ncmlkLnNvcnRpbmdFeHByZXNzaW9ucyk7XG5cbiAgICAgICAgZm9yIChjb25zdCBlYWNoIG9mIGV4cHJlc3Npb25zKSB7XG4gICAgICAgICAgICB0aGlzLnByZXBhcmVfc29ydGluZ19leHByZXNzaW9uKFtzb3J0aW5nU3RhdGUsIGdyb3VwaW5nU3RhdGVdLCBlYWNoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ3JpZC5ncm91cGluZ0V4cHJlc3Npb25zID0gZ3JvdXBpbmdTdGF0ZTtcbiAgICAgICAgdGhpcy5hcnJhbmdlX3NvcnRpbmdfZXhwcmVzc2lvbnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJfZ3JvdXBieShuYW1lPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPikge1xuICAgICAgICBjb25zdCBncm91cGluZ1N0YXRlID0gY2xvbmVBcnJheSh0aGlzLmdyaWQuZ3JvdXBpbmdFeHByZXNzaW9ucyk7XG4gICAgICAgIGNvbnN0IHNvcnRpbmdTdGF0ZSA9IGNsb25lQXJyYXkodGhpcy5ncmlkLnNvcnRpbmdFeHByZXNzaW9ucyk7XG5cbiAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5hbWVzID0gdHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnID8gW25hbWVdIDogbmFtZTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwZWRDb2xzID0gZ3JvdXBpbmdTdGF0ZS5maWx0ZXIoKHN0YXRlKSA9PiBuYW1lcy5pbmRleE9mKHN0YXRlLmZpZWxkTmFtZSkgPCAwKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NvcnRpbmdFeHByID0gc29ydGluZ1N0YXRlLmZpbHRlcigoc3RhdGUpID0+IG5hbWVzLmluZGV4T2Yoc3RhdGUuZmllbGROYW1lKSA8IDApO1xuICAgICAgICAgICAgdGhpcy5ncmlkLmdyb3VwaW5nRXhwcmVzc2lvbnMgPSBncm91cGVkQ29scztcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5zb3J0aW5nRXhwcmVzc2lvbnMgPSBuZXdTb3J0aW5nRXhwcjtcbiAgICAgICAgICAgIG5hbWVzLmZvckVhY2goKGNvbE5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBnckV4cHJJbmRleCA9IGdyb3VwaW5nU3RhdGUuZmluZEluZGV4KChleHApID0+IGV4cC5maWVsZE5hbWUgPT09IGNvbE5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdycEV4cGFuZFN0YXRlID0gdGhpcy5ncmlkLmdyb3VwaW5nRXhwYW5zaW9uU3RhdGU7XG4gICAgICAgICAgICAgICAgLyogcmVtb3ZlIGV4cGFuc2lvbiBzdGF0ZXMgcmVsYXRlZCB0byB0aGUgY2xlYXJlZCBncm91cFxuICAgICAgICAgICAgICAgICAgIGFuZCBhbGwgd2l0aCBkZWVwZXIgaGllcmFyY2h5IHRoYW4gdGhlIGNsZWFyZWQgZ3JvdXAgKi9cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdFeHBhbmRTdGF0ZSA9IGdycEV4cGFuZFN0YXRlLmZpbHRlcigodmFsKSA9PiB2YWwuaGllcmFyY2h5ICYmIHZhbC5oaWVyYXJjaHkubGVuZ3RoIDw9IGdyRXhwckluZGV4KTtcbiAgICAgICAgICAgICAgICAvKiBEbyBub3Qgc2V0IHRoZSBuZXcgaW5zdGFuY2UgcHJvZHVjZWQgYnkgZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgIHdoZW4gdGhlcmUgYXJlIG5vIGRpZmZlcmVuY2VzIGJldHdlZW4gZXhwYW5zaW9uIHN0YXRlcyAqL1xuICAgICAgICAgICAgICAgIGlmIChuZXdFeHBhbmRTdGF0ZS5sZW5ndGggIT09IGdycEV4cGFuZFN0YXRlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWQuZ3JvdXBpbmdFeHBhbnNpb25TdGF0ZSA9IG5ld0V4cGFuZFN0YXRlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gY2xlYXIgYWxsXG4gICAgICAgICAgICB0aGlzLmdyaWQuZ3JvdXBpbmdFeHByZXNzaW9ucyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5ncmlkLmdyb3VwaW5nRXhwYW5zaW9uU3RhdGUgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZ3JFeHByIG9mIGdyb3VwaW5nU3RhdGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzb3J0RXhwckluZGV4ID0gc29ydGluZ1N0YXRlLmZpbmRJbmRleCgoZXhwKSA9PiBleHAuZmllbGROYW1lID09PSBnckV4cHIuZmllbGROYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoc29ydEV4cHJJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHNvcnRpbmdTdGF0ZS5zcGxpY2Uoc29ydEV4cHJJbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5ncmlkLnNvcnRpbmdFeHByZXNzaW9ucyA9IHNvcnRpbmdTdGF0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBncm91cEJ5X2dldF9leHBhbmRlZF9mb3JfZ3JvdXAoZ3JvdXBSb3c6IElHcm91cEJ5UmVjb3JkKTogSUdyb3VwQnlFeHBhbmRTdGF0ZSB7XG4gICAgICAgIGNvbnN0IGdyU3RhdGUgPSB0aGlzLmdyaWQuZ3JvdXBpbmdFeHBhbnNpb25TdGF0ZTtcbiAgICAgICAgY29uc3QgaGllcmFyY2h5ID0gRGF0YVV0aWwuZ2V0SGllcmFyY2h5KGdyb3VwUm93KTtcbiAgICAgICAgcmV0dXJuIGdyU3RhdGUuZmluZCgoc3RhdGUpID0+XG4gICAgICAgICAgICBEYXRhVXRpbC5pc0hpZXJhcmNoeU1hdGNoKHN0YXRlLmhpZXJhcmNoeSB8fCBbeyBmaWVsZE5hbWU6IGdyb3VwUm93LmV4cHJlc3Npb24uZmllbGROYW1lLCB2YWx1ZTogZ3JvdXBSb3cudmFsdWUgfV0sIGhpZXJhcmNoeSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBncm91cEJ5X2lzX3Jvd19pbl9ncm91cChncm91cFJvdzogSUdyb3VwQnlSZWNvcmQsIHJvd0lEKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdyaWQ7XG4gICAgICAgIGxldCByb3dJbkdyb3VwID0gZmFsc2U7XG4gICAgICAgIGdyb3VwUm93LnJlY29yZHMuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICAgICAgaWYgKGdyaWQucHJpbWFyeUtleSA/IHJvd1tncmlkLnByaW1hcnlLZXldID09PSByb3dJRCA6IHJvdyA9PT0gcm93SUQpIHtcbiAgICAgICAgICAgICAgICByb3dJbkdyb3VwID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByb3dJbkdyb3VwO1xuICAgIH1cblxuICAgIHB1YmxpYyBncm91cEJ5X3RvZ2dsZV9ncm91cChncm91cFJvdzogSUdyb3VwQnlSZWNvcmQpIHtcbiAgICAgICAgY29uc3QgZ3JpZCA9IHRoaXMuZ3JpZDtcbiAgICAgICAgaWYgKGdyaWQuZ3JpZEFQSS5jcnVkU2VydmljZS5jZWxsSW5FZGl0TW9kZSkge1xuICAgICAgICAgICAgdGhpcy5jcnVkU2VydmljZS5lbmRFZGl0KGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV4cGFuc2lvblN0YXRlID0gZ3JpZC5ncm91cGluZ0V4cGFuc2lvblN0YXRlO1xuICAgICAgICBjb25zdCBzdGF0ZTogSUdyb3VwQnlFeHBhbmRTdGF0ZSA9IHRoaXMuZ3JvdXBCeV9nZXRfZXhwYW5kZWRfZm9yX2dyb3VwKGdyb3VwUm93KTtcbiAgICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgICAgICBzdGF0ZS5leHBhbmRlZCA9ICFzdGF0ZS5leHBhbmRlZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGV4cGFuc2lvblN0YXRlLnB1c2goe1xuICAgICAgICAgICAgICAgIGV4cGFuZGVkOiAhZ3JpZC5ncm91cHNFeHBhbmRlZCxcbiAgICAgICAgICAgICAgICBoaWVyYXJjaHk6IERhdGFVdGlsLmdldEhpZXJhcmNoeShncm91cFJvdylcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JpZC5ncm91cGluZ0V4cGFuc2lvblN0YXRlID0gWy4uLmV4cGFuc2lvblN0YXRlXTtcbiAgICAgICAgaWYgKGdyaWQucm93RWRpdGFibGUpIHtcbiAgICAgICAgICAgIGdyaWQucmVwb3NpdGlvblJvd0VkaXRpbmdPdmVybGF5KGdyaWQuZ3JpZEFQSS5jcnVkU2VydmljZS5yb3dJbkVkaXRNb2RlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgc2V0X2dyb3Vwcm93X2V4cGFuc2lvbl9zdGF0ZShncm91cFJvdzogSUdyb3VwQnlSZWNvcmQsIHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLmdyaWQuaXNFeHBhbmRlZEdyb3VwKGdyb3VwUm93KSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBCeV90b2dnbGVfZ3JvdXAoZ3JvdXBSb3cpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdyb3VwQnlfZnVsbHlfZXhwYW5kX2dyb3VwKGdyb3VwUm93OiBJR3JvdXBCeVJlY29yZCkge1xuICAgICAgICBjb25zdCBzdGF0ZTogSUdyb3VwQnlFeHBhbmRTdGF0ZSA9IHRoaXMuZ3JvdXBCeV9nZXRfZXhwYW5kZWRfZm9yX2dyb3VwKGdyb3VwUm93KTtcbiAgICAgICAgY29uc3QgZXhwYW5kZWQgPSBzdGF0ZSA/IHN0YXRlLmV4cGFuZGVkIDogdGhpcy5ncmlkLmdyb3Vwc0V4cGFuZGVkO1xuICAgICAgICBpZiAoIWV4cGFuZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmdyb3VwQnlfdG9nZ2xlX2dyb3VwKGdyb3VwUm93KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZ3JvdXBSb3cuZ3JvdXBQYXJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBCeV9mdWxseV9leHBhbmRfZ3JvdXAoZ3JvdXBSb3cuZ3JvdXBQYXJlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdyb3VwQnlfc2VsZWN0X2FsbF9yb3dzX2luX2dyb3VwKGdyb3VwUm93OiBJR3JvdXBCeVJlY29yZCwgY2xlYXJQcmV2U2VsZWN0aW9uOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZ3JpZC5zZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdFJvd3NXaXRoTm9FdmVudCh0aGlzLmdyaWQucHJpbWFyeUtleSA/XG4gICAgICAgICAgICBncm91cFJvdy5yZWNvcmRzLm1hcCh4ID0+IHhbdGhpcy5ncmlkLnByaW1hcnlLZXldKSA6IGdyb3VwUm93LnJlY29yZHMsIGNsZWFyUHJldlNlbGVjdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIGdyb3VwQnlfZGVzZWxlY3RfYWxsX3Jvd3NfaW5fZ3JvdXAoZ3JvdXBSb3c6IElHcm91cEJ5UmVjb3JkKSB7XG4gICAgICAgIHRoaXMuZ3JpZC5zZWxlY3Rpb25TZXJ2aWNlLmRlc2VsZWN0Um93c1dpdGhOb0V2ZW50KHRoaXMuZ3JpZC5wcmltYXJ5S2V5ID9cbiAgICAgICAgICAgIGdyb3VwUm93LnJlY29yZHMubWFwKHggPT4geFt0aGlzLmdyaWQucHJpbWFyeUtleV0pIDogZ3JvdXBSb3cucmVjb3Jkcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFycmFuZ2Vfc29ydGluZ19leHByZXNzaW9ucygpIHtcbiAgICAgICAgY29uc3QgZ3JvdXBpbmdTdGF0ZSA9IHRoaXMuZ3JpZC5ncm91cGluZ0V4cHJlc3Npb25zO1xuICAgICAgICB0aGlzLmdyaWQuc29ydGluZ0V4cHJlc3Npb25zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwRXhwckEgPSBncm91cGluZ1N0YXRlLmZpbmQoKGV4cHIpID0+IGV4cHIuZmllbGROYW1lID09PSBhLmZpZWxkTmFtZSk7XG4gICAgICAgICAgICBjb25zdCBncm91cEV4cHJCID0gZ3JvdXBpbmdTdGF0ZS5maW5kKChleHByKSA9PiBleHByLmZpZWxkTmFtZSA9PT0gYi5maWVsZE5hbWUpO1xuICAgICAgICAgICAgaWYgKGdyb3VwRXhwckEgJiYgZ3JvdXBFeHByQikge1xuICAgICAgICAgICAgICAgIHJldHVybiBncm91cGluZ1N0YXRlLmluZGV4T2YoZ3JvdXBFeHByQSkgPiBncm91cGluZ1N0YXRlLmluZGV4T2YoZ3JvdXBFeHByQikgPyAxIDogLTE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGdyb3VwRXhwckEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGdyb3VwRXhwckIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRfZ3JvdXBCeV9yZWNvcmRfaWQoZ1JvdzogSUdyb3VwQnlSZWNvcmQpOiBzdHJpbmcge1xuICAgICAgICBsZXQgcmVjb3JkSWQgPSAneyAnO1xuICAgICAgICBjb25zdCBoaWVycmFyY2h5ID0gRGF0YVV0aWwuZ2V0SGllcmFyY2h5KGdSb3cpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGllcnJhcmNoeS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBCeUtleSA9IGhpZXJyYXJjaHlbaV07XG4gICAgICAgICAgICByZWNvcmRJZCArPSBgJyR7Z3JvdXBCeUtleS5maWVsZE5hbWV9JzogJyR7Z3JvdXBCeUtleS52YWx1ZX0nYDtcblxuICAgICAgICAgICAgaWYgKGkgPCBoaWVycmFyY2h5Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICByZWNvcmRJZCArPSAnLCAnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlY29yZElkICs9ICcgfSc7XG5cbiAgICAgICAgcmV0dXJuIHJlY29yZElkO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVfZ3JvdXBpbmdfZXhwcmVzc2lvbihmaWVsZE5hbWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBncm91cGluZ0V4cHJlc3Npb25zID0gdGhpcy5ncmlkLmdyb3VwaW5nRXhwcmVzc2lvbnM7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gZ3JvdXBpbmdFeHByZXNzaW9ucy5maW5kSW5kZXgoKGV4cHIpID0+IGV4cHIuZmllbGROYW1lID09PSBmaWVsZE5hbWUpO1xuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBncm91cGluZ0V4cHJlc3Npb25zLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=