igniteui-angular 13.0.0-alpha.1 → 13.0.0-alpha.2

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 (307) 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 +3 -3
  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.component.mjs +7 -7
  39. package/esm2020/lib/combo/combo.directives.mjs +24 -24
  40. package/esm2020/lib/combo/combo.pipes.mjs +6 -6
  41. package/esm2020/lib/core/displayDensity.mjs +7 -7
  42. package/esm2020/lib/core/navigation/directives.mjs +10 -10
  43. package/esm2020/lib/core/navigation/nav.service.mjs +3 -3
  44. package/esm2020/lib/core/selection.mjs +3 -3
  45. package/esm2020/lib/core/touch.mjs +3 -3
  46. package/esm2020/lib/core/utils.mjs +3 -3
  47. package/esm2020/lib/data-operations/data-util.mjs +3 -5
  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/for-of/base.helper.component.mjs +3 -3
  66. package/esm2020/lib/directives/for-of/display.container.mjs +3 -3
  67. package/esm2020/lib/directives/for-of/for_of.directive.mjs +10 -10
  68. package/esm2020/lib/directives/for-of/for_of.sync.service.mjs +6 -6
  69. package/esm2020/lib/directives/for-of/horizontal.virtual.helper.component.mjs +3 -3
  70. package/esm2020/lib/directives/for-of/virtual.helper.component.mjs +3 -3
  71. package/esm2020/lib/directives/hint/hint.directive.mjs +3 -3
  72. package/esm2020/lib/directives/input/input.directive.mjs +3 -3
  73. package/esm2020/lib/directives/label/label.directive.mjs +3 -3
  74. package/esm2020/lib/directives/layout/layout.directive.mjs +10 -10
  75. package/esm2020/lib/directives/mask/mask-parsing.service.mjs +3 -3
  76. package/esm2020/lib/directives/mask/mask.directive.mjs +7 -7
  77. package/esm2020/lib/directives/notification/notifications.directive.mjs +3 -3
  78. package/esm2020/lib/directives/prefix/prefix.directive.mjs +7 -7
  79. package/esm2020/lib/directives/radio/radio-group.directive.mjs +7 -7
  80. package/esm2020/lib/directives/ripple/ripple.directive.mjs +7 -7
  81. package/esm2020/lib/directives/scroll-inertia/scroll_inertia.directive.mjs +7 -7
  82. package/esm2020/lib/directives/suffix/suffix.directive.mjs +7 -7
  83. package/esm2020/lib/directives/template-outlet/template_outlet.directive.mjs +7 -7
  84. package/esm2020/lib/directives/text-highlight/text-highlight.directive.mjs +7 -7
  85. package/esm2020/lib/directives/text-selection/text-selection.directive.mjs +7 -7
  86. package/esm2020/lib/directives/toggle/toggle.directive.mjs +13 -13
  87. package/esm2020/lib/directives/tooltip/tooltip.directive.mjs +10 -10
  88. package/esm2020/lib/drop-down/drop-down-group.component.mjs +3 -3
  89. package/esm2020/lib/drop-down/drop-down-item.base.mjs +3 -3
  90. package/esm2020/lib/drop-down/drop-down-item.component.mjs +3 -3
  91. package/esm2020/lib/drop-down/drop-down-navigation.directive.mjs +3 -3
  92. package/esm2020/lib/drop-down/drop-down.base.mjs +3 -3
  93. package/esm2020/lib/drop-down/drop-down.component.mjs +3 -3
  94. package/esm2020/lib/drop-down/public_api.mjs +4 -4
  95. package/esm2020/lib/expansion-panel/expansion-panel-body.component.mjs +3 -3
  96. package/esm2020/lib/expansion-panel/expansion-panel-header.component.mjs +3 -3
  97. package/esm2020/lib/expansion-panel/expansion-panel.component.mjs +3 -3
  98. package/esm2020/lib/expansion-panel/expansion-panel.directives.mjs +9 -9
  99. package/esm2020/lib/expansion-panel/expansion-panel.module.mjs +4 -4
  100. package/esm2020/lib/expansion-panel/toggle-animation-component.mjs +3 -3
  101. package/esm2020/lib/grids/api.service.mjs +3 -3
  102. package/esm2020/lib/grids/cell.component.mjs +3 -3
  103. package/esm2020/lib/grids/column-actions/column-actions-base.directive.mjs +3 -3
  104. package/esm2020/lib/grids/column-actions/column-actions.component.mjs +12 -12
  105. package/esm2020/lib/grids/column-actions/column-actions.module.mjs +4 -4
  106. package/esm2020/lib/grids/column-actions/column-hiding.directive.mjs +3 -3
  107. package/esm2020/lib/grids/column-actions/column-pinning.directive.mjs +3 -3
  108. package/esm2020/lib/grids/columns/column-group.component.mjs +3 -3
  109. package/esm2020/lib/grids/columns/column-layout.component.mjs +3 -3
  110. package/esm2020/lib/grids/columns/column.component.mjs +3 -3
  111. package/esm2020/lib/grids/columns/column.module.mjs +4 -4
  112. package/esm2020/lib/grids/columns/templates.directive.mjs +18 -18
  113. package/esm2020/lib/grids/common/crud.service.mjs +3 -3
  114. package/esm2020/lib/grids/common/grid-pipes.module.mjs +4 -4
  115. package/esm2020/lib/grids/common/grid.interface.mjs +1 -1
  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/common/strategy.mjs +11 -1
  119. package/esm2020/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.mjs +4 -4
  120. package/esm2020/lib/grids/filtering/base/filtering.module.mjs +4 -4
  121. package/esm2020/lib/grids/filtering/base/grid-filtering-cell.component.mjs +3 -3
  122. package/esm2020/lib/grids/filtering/base/grid-filtering-row.component.mjs +3 -3
  123. package/esm2020/lib/grids/filtering/excel-style/base-filtering.component.mjs +3 -3
  124. package/esm2020/lib/grids/filtering/excel-style/excel-style-clear-filters.component.mjs +3 -3
  125. package/esm2020/lib/grids/filtering/excel-style/excel-style-conditional-filter.component.mjs +3 -3
  126. package/esm2020/lib/grids/filtering/excel-style/excel-style-custom-dialog.component.mjs +3 -3
  127. package/esm2020/lib/grids/filtering/excel-style/excel-style-date-expression.component.mjs +3 -3
  128. package/esm2020/lib/grids/filtering/excel-style/excel-style-default-expression.component.mjs +3 -3
  129. package/esm2020/lib/grids/filtering/excel-style/excel-style-header.component.mjs +3 -3
  130. package/esm2020/lib/grids/filtering/excel-style/excel-style-hiding.component.mjs +3 -3
  131. package/esm2020/lib/grids/filtering/excel-style/excel-style-moving.component.mjs +3 -3
  132. package/esm2020/lib/grids/filtering/excel-style/excel-style-pinning.component.mjs +3 -3
  133. package/esm2020/lib/grids/filtering/excel-style/excel-style-search.component.mjs +6 -6
  134. package/esm2020/lib/grids/filtering/excel-style/excel-style-selecting.component.mjs +3 -3
  135. package/esm2020/lib/grids/filtering/excel-style/excel-style-sorting.component.mjs +3 -3
  136. package/esm2020/lib/grids/filtering/excel-style/grid.excel-style-filtering.component.mjs +9 -9
  137. package/esm2020/lib/grids/filtering/excel-style/grid.excel-style-filtering.module.mjs +4 -4
  138. package/esm2020/lib/grids/filtering/grid-filtering.service.mjs +3 -3
  139. package/esm2020/lib/grids/grid/expandable-cell.component.mjs +3 -3
  140. package/esm2020/lib/grids/grid/grid-api.service.mjs +3 -3
  141. package/esm2020/lib/grids/grid/grid-row.component.mjs +3 -3
  142. package/esm2020/lib/grids/grid/grid.component.mjs +24 -6
  143. package/esm2020/lib/grids/grid/grid.details.pipe.mjs +3 -3
  144. package/esm2020/lib/grids/grid/grid.directives.mjs +24 -24
  145. package/esm2020/lib/grids/grid/grid.module.mjs +4 -4
  146. package/esm2020/lib/grids/grid/grid.pipes.mjs +15 -15
  147. package/esm2020/lib/grids/grid/grid.summary.pipe.mjs +3 -3
  148. package/esm2020/lib/grids/grid/groupby-row.component.mjs +3 -3
  149. package/esm2020/lib/grids/grid-base.directive.mjs +4 -4
  150. package/esm2020/lib/grids/grid-common.module.mjs +4 -4
  151. package/esm2020/lib/grids/grid-footer/grid-footer.component.mjs +3 -3
  152. package/esm2020/lib/grids/grid-mrl-navigation.service.mjs +3 -3
  153. package/esm2020/lib/grids/grid-navigation.service.mjs +3 -3
  154. package/esm2020/lib/grids/grid.common.mjs +3 -3
  155. package/esm2020/lib/grids/grid.rowEdit.directive.mjs +15 -15
  156. package/esm2020/lib/grids/grouping/grid-group-by-area.component.mjs +3 -3
  157. package/esm2020/lib/grids/grouping/group-by-area.directive.mjs +6 -6
  158. package/esm2020/lib/grids/grouping/tree-grid-group-by-area.component.mjs +3 -3
  159. package/esm2020/lib/grids/headers/grid-header-group.component.mjs +3 -3
  160. package/esm2020/lib/grids/headers/grid-header-row.component.mjs +4 -4
  161. package/esm2020/lib/grids/headers/grid-header.component.mjs +3 -3
  162. package/esm2020/lib/grids/headers/headers.module.mjs +4 -4
  163. package/esm2020/lib/grids/headers/pipes.mjs +9 -9
  164. package/esm2020/lib/grids/hierarchical-grid/hierarchical-cell.component.mjs +3 -3
  165. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid-api.service.mjs +3 -3
  166. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.mjs +3 -3
  167. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.mjs +3 -3
  168. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +7 -7
  169. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid.module.mjs +4 -4
  170. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid.pipes.mjs +6 -6
  171. package/esm2020/lib/grids/hierarchical-grid/hierarchical-row.component.mjs +3 -3
  172. package/esm2020/lib/grids/hierarchical-grid/row-island-api.service.mjs +3 -3
  173. package/esm2020/lib/grids/hierarchical-grid/row-island.component.mjs +3 -3
  174. package/esm2020/lib/grids/moving/moving.drag.directive.mjs +3 -3
  175. package/esm2020/lib/grids/moving/moving.drop.directive.mjs +3 -3
  176. package/esm2020/lib/grids/moving/moving.module.mjs +4 -4
  177. package/esm2020/lib/grids/moving/moving.service.mjs +3 -3
  178. package/esm2020/lib/grids/public_api.mjs +2 -1
  179. package/esm2020/lib/grids/resizing/resize-handle.directive.mjs +3 -3
  180. package/esm2020/lib/grids/resizing/resize.module.mjs +4 -4
  181. package/esm2020/lib/grids/resizing/resizer.component.mjs +3 -3
  182. package/esm2020/lib/grids/resizing/resizer.directive.mjs +3 -3
  183. package/esm2020/lib/grids/resizing/resizing.service.mjs +3 -3
  184. package/esm2020/lib/grids/row-drag.directive.mjs +13 -13
  185. package/esm2020/lib/grids/row.directive.mjs +3 -3
  186. package/esm2020/lib/grids/selection/drag-select.directive.mjs +3 -3
  187. package/esm2020/lib/grids/selection/row-selectors.mjs +9 -9
  188. package/esm2020/lib/grids/selection/selection.module.mjs +4 -4
  189. package/esm2020/lib/grids/selection/selection.service.mjs +3 -3
  190. package/esm2020/lib/grids/state.directive.mjs +7 -7
  191. package/esm2020/lib/grids/summaries/grid-root-summary.pipe.mjs +3 -3
  192. package/esm2020/lib/grids/summaries/grid-summary.service.mjs +3 -3
  193. package/esm2020/lib/grids/summaries/summary-cell.component.mjs +3 -3
  194. package/esm2020/lib/grids/summaries/summary-row.component.mjs +3 -3
  195. package/esm2020/lib/grids/summaries/summary.module.mjs +4 -4
  196. package/esm2020/lib/grids/toolbar/common.mjs +15 -15
  197. package/esm2020/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.mjs +3 -3
  198. package/esm2020/lib/grids/toolbar/grid-toolbar-exporter.component.mjs +3 -3
  199. package/esm2020/lib/grids/toolbar/grid-toolbar-hiding.component.mjs +3 -3
  200. package/esm2020/lib/grids/toolbar/grid-toolbar-pinning.component.mjs +3 -3
  201. package/esm2020/lib/grids/toolbar/grid-toolbar.base.mjs +6 -6
  202. package/esm2020/lib/grids/toolbar/grid-toolbar.component.mjs +3 -3
  203. package/esm2020/lib/grids/toolbar/toolbar.module.mjs +4 -4
  204. package/esm2020/lib/grids/tree-grid/tree-cell.component.mjs +3 -3
  205. package/esm2020/lib/grids/tree-grid/tree-grid-api.service.mjs +3 -3
  206. package/esm2020/lib/grids/tree-grid/tree-grid-row.component.mjs +3 -3
  207. package/esm2020/lib/grids/tree-grid/tree-grid-selection.service.mjs +3 -3
  208. package/esm2020/lib/grids/tree-grid/tree-grid.component.mjs +3 -3
  209. package/esm2020/lib/grids/tree-grid/tree-grid.directives.mjs +3 -3
  210. package/esm2020/lib/grids/tree-grid/tree-grid.filtering.pipe.mjs +3 -3
  211. package/esm2020/lib/grids/tree-grid/tree-grid.grouping.pipe.mjs +3 -3
  212. package/esm2020/lib/grids/tree-grid/tree-grid.module.mjs +4 -4
  213. package/esm2020/lib/grids/tree-grid/tree-grid.pipes.mjs +21 -21
  214. package/esm2020/lib/grids/tree-grid/tree-grid.summary.pipe.mjs +3 -3
  215. package/esm2020/lib/icon/icon.component.mjs +3 -3
  216. package/esm2020/lib/icon/icon.service.mjs +3 -3
  217. package/esm2020/lib/icon/public_api.mjs +4 -4
  218. package/esm2020/lib/input-group/input-group.component.mjs +7 -7
  219. package/esm2020/lib/list/list-item.component.mjs +3 -3
  220. package/esm2020/lib/list/list.common.mjs +15 -15
  221. package/esm2020/lib/list/list.component.mjs +22 -22
  222. package/esm2020/lib/navbar/navbar.component.mjs +13 -13
  223. package/esm2020/lib/navigation-drawer/navigation-drawer.component.mjs +3 -3
  224. package/esm2020/lib/navigation-drawer/navigation-drawer.directives.mjs +9 -9
  225. package/esm2020/lib/navigation-drawer/navigation-drawer.module.mjs +4 -4
  226. package/esm2020/lib/paginator/paginator-interfaces.mjs +3 -3
  227. package/esm2020/lib/paginator/paginator.component.mjs +12 -12
  228. package/esm2020/lib/paginator/public_api.mjs +4 -4
  229. package/esm2020/lib/progressbar/progressbar.common.mjs +6 -6
  230. package/esm2020/lib/progressbar/progressbar.component.mjs +13 -13
  231. package/esm2020/lib/radio/radio.component.mjs +3 -3
  232. package/esm2020/lib/select/select-group.component.mjs +3 -3
  233. package/esm2020/lib/select/select-item.component.mjs +3 -3
  234. package/esm2020/lib/select/select-navigation.directive.mjs +3 -3
  235. package/esm2020/lib/select/select.component.mjs +12 -12
  236. package/esm2020/lib/select/select.module.mjs +4 -4
  237. package/esm2020/lib/services/csv/csv-exporter.mjs +3 -3
  238. package/esm2020/lib/services/direction/directionality.mjs +3 -3
  239. package/esm2020/lib/services/excel/excel-exporter.mjs +3 -3
  240. package/esm2020/lib/services/exporter-common/base-export-service.mjs +2 -2
  241. package/esm2020/lib/services/overlay/overlay.mjs +3 -3
  242. package/esm2020/lib/services/transaction/transaction-factory.service.mjs +6 -6
  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 +3 -3
  254. package/esm2020/lib/stepper/stepper.common.mjs +1 -1
  255. package/esm2020/lib/stepper/stepper.component.mjs +7 -7
  256. package/esm2020/lib/stepper/stepper.directive.mjs +21 -21
  257. package/esm2020/lib/stepper/stepper.service.mjs +3 -3
  258. package/esm2020/lib/switch/switch.component.mjs +10 -10
  259. package/esm2020/lib/tabs/bottom-nav/bottom-nav-content.component.mjs +3 -3
  260. package/esm2020/lib/tabs/bottom-nav/bottom-nav-header.component.mjs +3 -3
  261. package/esm2020/lib/tabs/bottom-nav/bottom-nav-item.component.mjs +3 -3
  262. package/esm2020/lib/tabs/bottom-nav/bottom-nav.component.mjs +3 -3
  263. package/esm2020/lib/tabs/bottom-nav/bottom-nav.directives.mjs +6 -6
  264. package/esm2020/lib/tabs/bottom-nav/bottom-nav.module.mjs +4 -4
  265. package/esm2020/lib/tabs/tab-content.directive.mjs +3 -3
  266. package/esm2020/lib/tabs/tab-header.directive.mjs +3 -3
  267. package/esm2020/lib/tabs/tab-item.directive.mjs +3 -3
  268. package/esm2020/lib/tabs/tabs/tab-content.component.mjs +3 -3
  269. package/esm2020/lib/tabs/tabs/tab-header.component.mjs +3 -3
  270. package/esm2020/lib/tabs/tabs/tab-item.component.mjs +3 -3
  271. package/esm2020/lib/tabs/tabs/tabs.component.mjs +3 -3
  272. package/esm2020/lib/tabs/tabs/tabs.directives.mjs +6 -6
  273. package/esm2020/lib/tabs/tabs/tabs.module.mjs +4 -4
  274. package/esm2020/lib/tabs/tabs.directive.mjs +3 -3
  275. package/esm2020/lib/time-picker/time-picker.component.mjs +7 -7
  276. package/esm2020/lib/time-picker/time-picker.directives.mjs +12 -12
  277. package/esm2020/lib/time-picker/time-picker.pipes.mjs +6 -6
  278. package/esm2020/lib/toast/toast.component.mjs +53 -28
  279. package/esm2020/lib/tree/tree-navigation.service.mjs +3 -3
  280. package/esm2020/lib/tree/tree-node/tree-node.component.mjs +6 -6
  281. package/esm2020/lib/tree/tree-selection.service.mjs +3 -3
  282. package/esm2020/lib/tree/tree.component.mjs +13 -13
  283. package/esm2020/lib/tree/tree.service.mjs +3 -3
  284. package/esm2020/public_api.mjs +1 -2
  285. package/fesm2015/igniteui-angular.mjs +1778 -1739
  286. package/fesm2015/igniteui-angular.mjs.map +1 -1
  287. package/fesm2020/igniteui-angular.mjs +1778 -1739
  288. package/fesm2020/igniteui-angular.mjs.map +1 -1
  289. package/lib/data-operations/data-util.d.ts +2 -2
  290. package/lib/grids/common/grid.interface.d.ts +2 -1
  291. package/lib/grids/common/strategy.d.ts +6 -0
  292. package/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.d.ts +2 -1
  293. package/lib/grids/grid/grid.component.d.ts +18 -1
  294. package/lib/grids/grid/grid.pipes.d.ts +2 -2
  295. package/lib/grids/grid-base.directive.d.ts +4 -2
  296. package/lib/grids/headers/grid-header-row.component.d.ts +4 -2
  297. package/lib/grids/hierarchical-grid/hierarchical-grid.component.d.ts +2 -1
  298. package/lib/grids/public_api.d.ts +1 -0
  299. package/lib/stepper/stepper.common.d.ts +12 -12
  300. package/lib/toast/toast.component.d.ts +8 -4
  301. package/migrations/update-13_0_0/index.js +47 -0
  302. package/package.json +5 -5
  303. package/public_api.d.ts +0 -1
  304. package/schematics/tsconfig.tsbuildinfo +1 -1
  305. package/src/lib/grids/README.md +1 -0
  306. package/esm2020/lib/data-operations/grouping-strategy.mjs +0 -12
  307. package/lib/data-operations/grouping-strategy.d.ts +0 -6
@@ -26,9 +26,9 @@ export class IgxGridCellStyleClassesPipe {
26
26
  return result.join(' ');
27
27
  }
28
28
  }
29
- IgxGridCellStyleClassesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridCellStyleClassesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
30
- IgxGridCellStyleClassesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridCellStyleClassesPipe, name: "igxCellStyleClasses" });
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridCellStyleClassesPipe, decorators: [{
29
+ IgxGridCellStyleClassesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridCellStyleClassesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
30
+ IgxGridCellStyleClassesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridCellStyleClassesPipe, name: "igxCellStyleClasses" });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridCellStyleClassesPipe, decorators: [{
32
32
  type: Pipe,
33
33
  args: [{ name: 'igxCellStyleClasses' }]
34
34
  }] });
@@ -49,9 +49,9 @@ export class IgxGridCellStylesPipe {
49
49
  return css;
50
50
  }
51
51
  }
52
- IgxGridCellStylesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridCellStylesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
53
- IgxGridCellStylesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridCellStylesPipe, name: "igxCellStyles" });
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridCellStylesPipe, decorators: [{
52
+ IgxGridCellStylesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridCellStylesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
53
+ IgxGridCellStylesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridCellStylesPipe, name: "igxCellStyles" });
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridCellStylesPipe, decorators: [{
55
55
  type: Pipe,
56
56
  args: [{
57
57
  name: 'igxCellStyles'
@@ -95,9 +95,9 @@ export class IgxGridRowClassesPipe {
95
95
  return result;
96
96
  }
97
97
  }
98
- IgxGridRowClassesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridRowClassesPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe });
99
- IgxGridRowClassesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridRowClassesPipe, name: "igxGridRowClasses" });
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridRowClassesPipe, decorators: [{
98
+ IgxGridRowClassesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridRowClassesPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe });
99
+ IgxGridRowClassesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridRowClassesPipe, name: "igxGridRowClasses" });
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridRowClassesPipe, decorators: [{
101
101
  type: Pipe,
102
102
  args: [{ name: 'igxGridRowClasses' }]
103
103
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -125,9 +125,9 @@ export class IgxGridRowStylesPipe {
125
125
  return css;
126
126
  }
127
127
  }
128
- IgxGridRowStylesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridRowStylesPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe });
129
- IgxGridRowStylesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridRowStylesPipe, name: "igxGridRowStyles" });
130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridRowStylesPipe, decorators: [{
128
+ IgxGridRowStylesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridRowStylesPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe });
129
+ IgxGridRowStylesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridRowStylesPipe, name: "igxGridRowStyles" });
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridRowStylesPipe, decorators: [{
131
131
  type: Pipe,
132
132
  args: [{ name: 'igxGridRowStyles' }]
133
133
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -143,9 +143,9 @@ export class IgxGridNotGroupedPipe {
143
143
  return value.filter(item => !item.columnGroup);
144
144
  }
145
145
  }
146
- IgxGridNotGroupedPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridNotGroupedPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
147
- IgxGridNotGroupedPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridNotGroupedPipe, name: "igxNotGrouped" });
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridNotGroupedPipe, decorators: [{
146
+ IgxGridNotGroupedPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridNotGroupedPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
147
+ IgxGridNotGroupedPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridNotGroupedPipe, name: "igxNotGrouped" });
148
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridNotGroupedPipe, decorators: [{
149
149
  type: Pipe,
150
150
  args: [{
151
151
  name: 'igxNotGrouped'
@@ -160,9 +160,9 @@ export class IgxGridTopLevelColumns {
160
160
  return value.filter(item => item.level === 0);
161
161
  }
162
162
  }
163
- IgxGridTopLevelColumns.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridTopLevelColumns, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
164
- IgxGridTopLevelColumns.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridTopLevelColumns, name: "igxTopLevel" });
165
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridTopLevelColumns, decorators: [{
163
+ IgxGridTopLevelColumns.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridTopLevelColumns, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
164
+ IgxGridTopLevelColumns.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridTopLevelColumns, name: "igxTopLevel" });
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridTopLevelColumns, decorators: [{
166
166
  type: Pipe,
167
167
  args: [{
168
168
  name: 'igxTopLevel'
@@ -177,9 +177,9 @@ export class IgxGridFilterConditionPipe {
177
177
  return value.split(/(?=[A-Z])/).join(' ');
178
178
  }
179
179
  }
180
- IgxGridFilterConditionPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridFilterConditionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
181
- IgxGridFilterConditionPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridFilterConditionPipe, name: "filterCondition" });
182
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridFilterConditionPipe, decorators: [{
180
+ IgxGridFilterConditionPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridFilterConditionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
181
+ IgxGridFilterConditionPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridFilterConditionPipe, name: "filterCondition" });
182
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridFilterConditionPipe, decorators: [{
183
183
  type: Pipe,
184
184
  args: [{
185
185
  name: 'filterCondition',
@@ -202,9 +202,9 @@ export class IgxGridTransactionPipe {
202
202
  return collection;
203
203
  }
204
204
  }
205
- IgxGridTransactionPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridTransactionPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe });
206
- IgxGridTransactionPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridTransactionPipe, name: "gridTransaction" });
207
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridTransactionPipe, decorators: [{
205
+ IgxGridTransactionPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridTransactionPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe });
206
+ IgxGridTransactionPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridTransactionPipe, name: "gridTransaction" });
207
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridTransactionPipe, decorators: [{
208
208
  type: Pipe,
209
209
  args: [{ name: 'gridTransaction' }]
210
210
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -220,9 +220,9 @@ export class IgxGridPaginatorOptionsPipe {
220
220
  return Array.from(new Set([...values])).sort((a, b) => a - b);
221
221
  }
222
222
  }
223
- IgxGridPaginatorOptionsPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridPaginatorOptionsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
224
- IgxGridPaginatorOptionsPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridPaginatorOptionsPipe, name: "paginatorOptions" });
225
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridPaginatorOptionsPipe, decorators: [{
223
+ IgxGridPaginatorOptionsPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridPaginatorOptionsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
224
+ IgxGridPaginatorOptionsPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridPaginatorOptionsPipe, name: "paginatorOptions" });
225
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridPaginatorOptionsPipe, decorators: [{
226
226
  type: Pipe,
227
227
  args: [{ name: 'paginatorOptions' }]
228
228
  }] });
@@ -238,9 +238,9 @@ export class IgxHasVisibleColumnsPipe {
238
238
  return hasVisibleColumns ? values : [];
239
239
  }
240
240
  }
241
- IgxHasVisibleColumnsPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxHasVisibleColumnsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
242
- IgxHasVisibleColumnsPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxHasVisibleColumnsPipe, name: "visibleColumns" });
243
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxHasVisibleColumnsPipe, decorators: [{
241
+ IgxHasVisibleColumnsPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxHasVisibleColumnsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
242
+ IgxHasVisibleColumnsPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxHasVisibleColumnsPipe, name: "visibleColumns" });
243
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxHasVisibleColumnsPipe, decorators: [{
244
244
  type: Pipe,
245
245
  args: [{ name: 'visibleColumns' }]
246
246
  }] });
@@ -266,9 +266,9 @@ export class IgxGridRowPinningPipe {
266
266
  this.grid.isRecordPinned(rec) ? { recordRef: rec, ghostRecord: true } : rec);
267
267
  }
268
268
  }
269
- IgxGridRowPinningPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridRowPinningPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe });
270
- IgxGridRowPinningPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridRowPinningPipe, name: "gridRowPinning" });
271
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridRowPinningPipe, decorators: [{
269
+ IgxGridRowPinningPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridRowPinningPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe });
270
+ IgxGridRowPinningPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridRowPinningPipe, name: "gridRowPinning" });
271
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridRowPinningPipe, decorators: [{
272
272
  type: Pipe,
273
273
  args: [{ name: 'gridRowPinning' }]
274
274
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -280,9 +280,9 @@ export class IgxGridDataMapperPipe {
280
280
  return isNestedPath ? resolveNestedPath(data, field) : val;
281
281
  }
282
282
  }
283
- IgxGridDataMapperPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridDataMapperPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
284
- IgxGridDataMapperPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridDataMapperPipe, name: "dataMapper" });
285
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridDataMapperPipe, decorators: [{
283
+ IgxGridDataMapperPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridDataMapperPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
284
+ IgxGridDataMapperPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridDataMapperPipe, name: "dataMapper" });
285
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridDataMapperPipe, decorators: [{
286
286
  type: Pipe,
287
287
  args: [{ name: 'dataMapper' }]
288
288
  }] });
@@ -291,9 +291,9 @@ export class IgxStringReplacePipe {
291
291
  return value.replace(search, replacement);
292
292
  }
293
293
  }
294
- IgxStringReplacePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxStringReplacePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
295
- IgxStringReplacePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxStringReplacePipe, name: "igxStringReplace" });
296
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxStringReplacePipe, decorators: [{
294
+ IgxStringReplacePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxStringReplacePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
295
+ IgxStringReplacePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxStringReplacePipe, name: "igxStringReplace" });
296
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxStringReplacePipe, decorators: [{
297
297
  type: Pipe,
298
298
  args: [{ name: 'igxStringReplace' }]
299
299
  }] });
@@ -313,9 +313,9 @@ export class IgxGridTransactionStatePipe {
313
313
  }
314
314
  }
315
315
  }
316
- IgxGridTransactionStatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridTransactionStatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
317
- IgxGridTransactionStatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridTransactionStatePipe, name: "transactionState" });
318
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridTransactionStatePipe, decorators: [{
316
+ IgxGridTransactionStatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridTransactionStatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
317
+ IgxGridTransactionStatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridTransactionStatePipe, name: "transactionState" });
318
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridTransactionStatePipe, decorators: [{
319
319
  type: Pipe,
320
320
  args: [{ name: 'transactionState' }]
321
321
  }] });
@@ -324,9 +324,9 @@ export class IgxColumnFormatterPipe {
324
324
  return formatter(value, rowData);
325
325
  }
326
326
  }
327
- IgxColumnFormatterPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxColumnFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
328
- IgxColumnFormatterPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxColumnFormatterPipe, name: "columnFormatter" });
329
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxColumnFormatterPipe, decorators: [{
327
+ IgxColumnFormatterPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxColumnFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
328
+ IgxColumnFormatterPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxColumnFormatterPipe, name: "columnFormatter" });
329
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxColumnFormatterPipe, decorators: [{
330
330
  type: Pipe,
331
331
  args: [{ name: 'columnFormatter' }]
332
332
  }] });
@@ -335,9 +335,9 @@ export class IgxSummaryFormatterPipe {
335
335
  return summaryFormatter(summaryResult, summaryOperand);
336
336
  }
337
337
  }
338
- IgxSummaryFormatterPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxSummaryFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
339
- IgxSummaryFormatterPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxSummaryFormatterPipe, name: "summaryFormatter" });
340
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxSummaryFormatterPipe, decorators: [{
338
+ IgxSummaryFormatterPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxSummaryFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
339
+ IgxSummaryFormatterPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxSummaryFormatterPipe, name: "summaryFormatter" });
340
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxSummaryFormatterPipe, decorators: [{
341
341
  type: Pipe,
342
342
  args: [{ name: 'summaryFormatter' }]
343
343
  }] });
@@ -356,9 +356,9 @@ export class IgxGridAddRowPipe {
356
356
  return copy;
357
357
  }
358
358
  }
359
- IgxGridAddRowPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridAddRowPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe });
360
- IgxGridAddRowPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridAddRowPipe, name: "gridAddRow" });
361
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridAddRowPipe, decorators: [{
359
+ IgxGridAddRowPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridAddRowPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe });
360
+ IgxGridAddRowPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridAddRowPipe, name: "gridAddRow" });
361
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridAddRowPipe, decorators: [{
362
362
  type: Pipe,
363
363
  args: [{ name: 'gridAddRow' }]
364
364
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
@@ -27,8 +27,8 @@ import { IgxDateTimeEditorModule } from '../../directives/date-time-editor/date-
27
27
  import * as i0 from "@angular/core";
28
28
  export class IgxGridSharedModules {
29
29
  }
30
- IgxGridSharedModules.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridSharedModules, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
31
- IgxGridSharedModules.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridSharedModules, imports: [CommonModule,
30
+ IgxGridSharedModules.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridSharedModules, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
31
+ IgxGridSharedModules.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridSharedModules, imports: [CommonModule,
32
32
  FormsModule,
33
33
  IgxButtonModule,
34
34
  IgxDatePickerModule,
@@ -77,7 +77,7 @@ IgxGridSharedModules.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", ve
77
77
  IgxSnackbarModule,
78
78
  IgxTimePickerModule,
79
79
  IgxDateTimeEditorModule] });
80
- IgxGridSharedModules.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridSharedModules, imports: [[
80
+ IgxGridSharedModules.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridSharedModules, imports: [[
81
81
  CommonModule,
82
82
  FormsModule,
83
83
  IgxButtonModule,
@@ -128,7 +128,7 @@ IgxGridSharedModules.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ve
128
128
  IgxSnackbarModule,
129
129
  IgxTimePickerModule,
130
130
  IgxDateTimeEditorModule] });
131
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.2", ngImport: i0, type: IgxGridSharedModules, decorators: [{
131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: IgxGridSharedModules, decorators: [{
132
132
  type: NgModule,
133
133
  args: [{
134
134
  imports: [
@@ -126,6 +126,16 @@ export class IgxSorting {
126
126
  return data;
127
127
  }
128
128
  }
129
+ export class IgxGrouping extends IgxSorting {
130
+ groupBy(data, state, grid, groupsRecords, fullResult = { data: [], metadata: [] }) {
131
+ const metadata = [];
132
+ const grouping = this.groupDataRecursive(data, state, 0, null, metadata, grid, groupsRecords, fullResult);
133
+ return {
134
+ data: grouping,
135
+ metadata
136
+ };
137
+ }
138
+ }
129
139
  export class NoopSortingStrategy {
130
140
  constructor() { }
131
141
  static instance() {
@@ -141,4 +151,4 @@ export class IgxDataRecordSorting extends IgxSorting {
141
151
  return super.getFieldValue(obj.data, key, isDate, isTime);
142
152
  }
143
153
  }
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvY29tbW9uL3N0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFNNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxzQkFBc0IsRUFBc0IsTUFBTSx3Q0FBd0MsQ0FBQztBQUdwRyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUM7QUFDekIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDO0FBQ3pCLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQztBQU1sQyxNQUFNLE9BQU8sVUFBVTtJQUNaLElBQUksQ0FBQyxJQUFXLEVBQUUsV0FBaUMsRUFBRSxJQUFlO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFUyxrQkFBa0IsQ0FDeEIsSUFBVyxFQUNYLEtBQXFCLEVBQ3JCLEtBQWEsRUFDYixNQUFzQixFQUN0QixRQUEwQixFQUMxQixPQUFpQixJQUFJLEVBQ3JCLGdCQUF1QixFQUFFLEVBQ3pCLGFBQTZCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO1FBRXZELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDdEMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLEdBQUcsSUFB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LElBQUksU0FBUyxHQUFHLENBQUMsRUFBRTtnQkFDZixNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsZUFBZSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNuRjtZQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUM1QixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMzQjtZQUNELENBQUMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1NBQ3RCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLG1CQUFtQjtJQUc1QixnQkFBd0IsQ0FBQztJQUVsQixNQUFNLENBQUMsUUFBUTtRQUNsQixPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTSxJQUFJLENBQUMsSUFBVztRQUNuQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOztBQVZjLDZCQUFTLEdBQXdCLElBQUksQ0FBQztBQWF6RCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsVUFBVTtJQUV0QyxhQUFhLENBQUMsR0FBUSxFQUFFLEdBQVcsRUFBRSxTQUFrQixLQUFLLEVBQUUsU0FBa0IsS0FBSztRQUMzRixPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsb25lQXJyYXksIHBhcnNlRGF0ZSwgcmVzb2x2ZU5lc3RlZFBhdGggfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IElHcm91cEJ5RXhwYW5kU3RhdGUgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZ3JvdXBieS1leHBhbmQtc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IElHcm91cEJ5UmVjb3JkIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwYnktcmVjb3JkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJR3JvdXBpbmdTdGF0ZSB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9ncm91cGJ5LXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJR3JvdXBpbmdFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwaW5nLWV4cHJlc3Npb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IElHcm91cEJ5UmVzdWx0IH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwaW5nLXJlc3VsdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZ2V0SGllcmFyY2h5LCBpc0hpZXJhcmNoeU1hdGNoIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL29wZXJhdGlvbnMnO1xuaW1wb3J0IHsgRGVmYXVsdFNvcnRpbmdTdHJhdGVneSwgSVNvcnRpbmdFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL3NvcnRpbmctc3RyYXRlZ3knO1xuaW1wb3J0IHsgR3JpZFR5cGUgfSBmcm9tICcuL2dyaWQuaW50ZXJmYWNlJztcblxuY29uc3QgREFURV9UWVBFID0gJ2RhdGUnO1xuY29uc3QgVElNRV9UWVBFID0gJ3RpbWUnO1xuY29uc3QgREFURV9USU1FX1RZUEUgPSAnZGF0ZVRpbWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkU29ydGluZ1N0cmF0ZWd5IHtcbiAgICBzb3J0KGRhdGE6IGFueVtdLCBleHByZXNzaW9uczogSVNvcnRpbmdFeHByZXNzaW9uW10sIGdyaWQ/OiBHcmlkVHlwZSk6IGFueVtdO1xufVxuXG5leHBvcnQgY2xhc3MgSWd4U29ydGluZyBpbXBsZW1lbnRzIElHcmlkU29ydGluZ1N0cmF0ZWd5IHtcbiAgICBwdWJsaWMgc29ydChkYXRhOiBhbnlbXSwgZXhwcmVzc2lvbnM6IElTb3J0aW5nRXhwcmVzc2lvbltdLCBncmlkPzogR3JpZFR5cGUpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvcnREYXRhUmVjdXJzaXZlKGRhdGEsIGV4cHJlc3Npb25zLCAwLCBncmlkKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ3JvdXBEYXRhUmVjdXJzaXZlKFxuICAgICAgICBkYXRhOiBhbnlbXSxcbiAgICAgICAgc3RhdGU6IElHcm91cGluZ1N0YXRlLFxuICAgICAgICBsZXZlbDogbnVtYmVyLFxuICAgICAgICBwYXJlbnQ6IElHcm91cEJ5UmVjb3JkLFxuICAgICAgICBtZXRhZGF0YTogSUdyb3VwQnlSZWNvcmRbXSxcbiAgICAgICAgZ3JpZDogR3JpZFR5cGUgPSBudWxsLFxuICAgICAgICBncm91cHNSZWNvcmRzOiBhbnlbXSA9IFtdLFxuICAgICAgICBmdWxsUmVzdWx0OiBJR3JvdXBCeVJlc3VsdCA9IHsgZGF0YTogW10sIG1ldGFkYXRhOiBbXSB9XG4gICAgKTogYW55W10ge1xuICAgICAgICBjb25zdCBleHByZXNzaW9ucyA9IHN0YXRlLmV4cHJlc3Npb25zO1xuICAgICAgICBjb25zdCBleHBhbnNpb24gPSBzdGF0ZS5leHBhbnNpb247XG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgICAgICB3aGlsZSAoaSA8IGRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW4gPSBncmlkID8gZ3JpZC5nZXRDb2x1bW5CeU5hbWUoZXhwcmVzc2lvbnNbbGV2ZWxdLmZpZWxkTmFtZSkgOiBudWxsO1xuICAgICAgICAgICAgY29uc3QgaXNEYXRlID0gY29sdW1uPy5kYXRhVHlwZSA9PT0gREFURV9UWVBFIHx8IGNvbHVtbj8uZGF0YVR5cGUgPT09IERBVEVfVElNRV9UWVBFO1xuICAgICAgICAgICAgY29uc3QgaXNUaW1lID0gY29sdW1uPy5kYXRhVHlwZSA9PT0gVElNRV9UWVBFO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdyb3VwZWRSZWNvcmRzQnlFeHByZXNzaW9uKGRhdGEsIGksIGV4cHJlc3Npb25zW2xldmVsXSwgaXNEYXRlKTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwUm93OiBJR3JvdXBCeVJlY29yZCA9IHtcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBleHByZXNzaW9uc1tsZXZlbF0sXG4gICAgICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICAgICAgcmVjb3JkczogY2xvbmVBcnJheShncm91cCksXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuZ2V0RmllbGRWYWx1ZShncm91cFswXSwgZXhwcmVzc2lvbnNbbGV2ZWxdLmZpZWxkTmFtZSwgaXNEYXRlLCBpc1RpbWUpLFxuICAgICAgICAgICAgICAgIGdyb3VwUGFyZW50OiBwYXJlbnQsXG4gICAgICAgICAgICAgICAgZ3JvdXBzOiBbXSxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGdyaWQgPyBncmlkLnJlbmRlcmVkUm93SGVpZ2h0IDogbnVsbCxcbiAgICAgICAgICAgICAgICBjb2x1bW5cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICAgICAgcGFyZW50Lmdyb3Vwcy5wdXNoKGdyb3VwUm93KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBzUmVjb3Jkcy5wdXNoKGdyb3VwUm93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGhpZXJhcmNoeSA9IGdldEhpZXJhcmNoeShncm91cFJvdyk7XG4gICAgICAgICAgICBjb25zdCBleHBhbmRTdGF0ZTogSUdyb3VwQnlFeHBhbmRTdGF0ZSA9IGV4cGFuc2lvbi5maW5kKChzKSA9PlxuICAgICAgICAgICAgICAgIGlzSGllcmFyY2h5TWF0Y2gocy5oaWVyYXJjaHkgfHwgW3sgZmllbGROYW1lOiBncm91cFJvdy5leHByZXNzaW9uLmZpZWxkTmFtZSwgdmFsdWU6IGdyb3VwUm93LnZhbHVlIH1dLCBoaWVyYXJjaHkpKTtcbiAgICAgICAgICAgIGNvbnN0IGV4cGFuZGVkID0gZXhwYW5kU3RhdGUgPyBleHBhbmRTdGF0ZS5leHBhbmRlZCA6IHN0YXRlLmRlZmF1bHRFeHBhbmRlZDtcbiAgICAgICAgICAgIGxldCByZWN1cnNpdmVSZXN1bHQ7XG4gICAgICAgICAgICByZXN1bHQucHVzaChncm91cFJvdyk7XG4gICAgICAgICAgICBtZXRhZGF0YS5wdXNoKG51bGwpO1xuICAgICAgICAgICAgZnVsbFJlc3VsdC5kYXRhLnB1c2goZ3JvdXBSb3cpO1xuICAgICAgICAgICAgZnVsbFJlc3VsdC5tZXRhZGF0YS5wdXNoKG51bGwpO1xuICAgICAgICAgICAgaWYgKGxldmVsIDwgZXhwcmVzc2lvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZVJlc3VsdCA9IHRoaXMuZ3JvdXBEYXRhUmVjdXJzaXZlKGdyb3VwLCBzdGF0ZSwgbGV2ZWwgKyAxLCBncm91cFJvdyxcbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQgPyBtZXRhZGF0YSA6IFtdLCBncmlkLCBncm91cHNSZWNvcmRzLCBmdWxsUmVzdWx0KTtcbiAgICAgICAgICAgICAgICBpZiAoZXhwYW5kZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChyZWN1cnNpdmVSZXN1bHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBncm91cEl0ZW0gb2YgZ3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgZnVsbFJlc3VsdC5tZXRhZGF0YS5wdXNoKGdyb3VwUm93KTtcbiAgICAgICAgICAgICAgICAgICAgZnVsbFJlc3VsdC5kYXRhLnB1c2goZ3JvdXBJdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLnB1c2goLi4uZnVsbFJlc3VsdC5tZXRhZGF0YS5zbGljZShmdWxsUmVzdWx0Lm1ldGFkYXRhLmxlbmd0aCAtIGdyb3VwLmxlbmd0aCkpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi5mdWxsUmVzdWx0LmRhdGEuc2xpY2UoZnVsbFJlc3VsdC5kYXRhLmxlbmd0aCAtIGdyb3VwLmxlbmd0aCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGkgKz0gZ3JvdXAubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZpZWxkVmFsdWU8VD4ob2JqOiBULCBrZXk6IHN0cmluZywgaXNEYXRlOiBib29sZWFuID0gZmFsc2UsIGlzVGltZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIGxldCByZXNvbHZlZFZhbHVlID0gcmVzb2x2ZU5lc3RlZFBhdGgob2JqLCBrZXkpO1xuICAgICAgICBpZiAoaXNEYXRlIHx8IGlzVGltZSkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IHBhcnNlRGF0ZShyZXNvbHZlZFZhbHVlKTtcbiAgICAgICAgICAgIHJlc29sdmVkVmFsdWUgPSBpc1RpbWUgJiYgZGF0ZSA/XG4gICAgICAgICAgICAgICAgbmV3IERhdGUoKS5zZXRIb3VycyhkYXRlLmdldEhvdXJzKCksIGRhdGUuZ2V0TWludXRlcygpLCBkYXRlLmdldFNlY29uZHMoKSwgZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSkgOiBkYXRlO1xuXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc29sdmVkVmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBncm91cGVkUmVjb3Jkc0J5RXhwcmVzc2lvbjxUPihcbiAgICAgICAgZGF0YTogVFtdLFxuICAgICAgICBpbmRleDogbnVtYmVyLFxuICAgICAgICBleHByZXNzaW9uOiBJR3JvdXBpbmdFeHByZXNzaW9uLFxuICAgICAgICBpc0RhdGU6IGJvb2xlYW4gPSBmYWxzZVxuICAgICk6IFRbXSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICBjb25zdCBrZXkgPSBleHByZXNzaW9uLmZpZWxkTmFtZTtcbiAgICAgICAgY29uc3QgbGVuID0gZGF0YS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGdyb3VwdmFsID0gdGhpcy5nZXRGaWVsZFZhbHVlKGRhdGFbaW5kZXhdLCBrZXksIGlzRGF0ZSk7XG4gICAgICAgIHJlcy5wdXNoKGRhdGFbaW5kZXhdKTtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgY29uc3QgY29tcGFyZXIgPSBleHByZXNzaW9uLmdyb3VwaW5nQ29tcGFyZXIgfHwgRGVmYXVsdFNvcnRpbmdTdHJhdGVneS5pbnN0YW5jZSgpLmNvbXBhcmVWYWx1ZXM7XG4gICAgICAgIGZvciAobGV0IGkgPSBpbmRleDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoY29tcGFyZXIodGhpcy5nZXRGaWVsZFZhbHVlKGRhdGFbaV0sIGtleSwgaXNEYXRlKSwgZ3JvdXB2YWwpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goZGF0YVtpXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0RGF0YVJlY3Vyc2l2ZTxUPihcbiAgICAgICAgZGF0YTogVFtdLFxuICAgICAgICBleHByZXNzaW9uczogSVNvcnRpbmdFeHByZXNzaW9uW10sXG4gICAgICAgIGV4cHJlc3Npb25JbmRleDogbnVtYmVyID0gMCxcbiAgICAgICAgZ3JpZDogR3JpZFR5cGVcbiAgICApOiBUW10ge1xuICAgICAgICBsZXQgaTogbnVtYmVyO1xuICAgICAgICBsZXQgajogbnVtYmVyO1xuICAgICAgICBsZXQgZ2JEYXRhOiBUW107XG4gICAgICAgIGxldCBnYkRhdGFMZW46IG51bWJlcjtcbiAgICAgICAgY29uc3QgZXhwcnNMZW4gPSBleHByZXNzaW9ucy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGRhdGFMZW4gPSBkYXRhLmxlbmd0aDtcblxuICAgICAgICBleHByZXNzaW9uSW5kZXggPSBleHByZXNzaW9uSW5kZXggfHwgMDtcbiAgICAgICAgaWYgKGV4cHJlc3Npb25JbmRleCA+PSBleHByc0xlbiB8fCBkYXRhTGVuIDw9IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4cHIgPSBleHByZXNzaW9uc1tleHByZXNzaW9uSW5kZXhdO1xuICAgICAgICBpZiAoIWV4cHIuc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGV4cHIuc3RyYXRlZ3kgPSBEZWZhdWx0U29ydGluZ1N0cmF0ZWd5Lmluc3RhbmNlKCkgYXMgYW55O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IGdyaWQ/LmdldENvbHVtbkJ5TmFtZShleHByLmZpZWxkTmFtZSk7XG4gICAgICAgIGNvbnN0IGlzRGF0ZSA9IGNvbHVtbj8uZGF0YVR5cGUgPT09IERBVEVfVFlQRSB8fCBjb2x1bW4/LmRhdGFUeXBlID09PSBEQVRFX1RJTUVfVFlQRTtcbiAgICAgICAgY29uc3QgaXNUaW1lID0gY29sdW1uPy5kYXRhVHlwZSA9PT0gVElNRV9UWVBFO1xuICAgICAgICBkYXRhID0gZXhwci5zdHJhdGVneS5zb3J0KGRhdGEsIGV4cHIuZmllbGROYW1lLCBleHByLmRpciwgZXhwci5pZ25vcmVDYXNlLCB0aGlzLmdldEZpZWxkVmFsdWUsIGlzRGF0ZSwgaXNUaW1lKTtcbiAgICAgICAgaWYgKGV4cHJlc3Npb25JbmRleCA9PT0gZXhwcnNMZW4gLSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpbiBjYXNlIG9mIG11bHRpcGxlIHNvcnRpbmdcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGRhdGFMZW47IGkrKykge1xuICAgICAgICAgICAgZ2JEYXRhID0gdGhpcy5ncm91cGVkUmVjb3Jkc0J5RXhwcmVzc2lvbihkYXRhLCBpLCBleHByLCBpc0RhdGUpO1xuICAgICAgICAgICAgZ2JEYXRhTGVuID0gZ2JEYXRhLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChnYkRhdGFMZW4gPiAxKSB7XG4gICAgICAgICAgICAgICAgZ2JEYXRhID0gdGhpcy5zb3J0RGF0YVJlY3Vyc2l2ZShnYkRhdGEsIGV4cHJlc3Npb25zLCBleHByZXNzaW9uSW5kZXggKyAxLCBncmlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBnYkRhdGFMZW47IGorKykge1xuICAgICAgICAgICAgICAgIGRhdGFbaSArIGpdID0gZ2JEYXRhW2pdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaSArPSBnYkRhdGFMZW4gLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vb3BTb3J0aW5nU3RyYXRlZ3kgaW1wbGVtZW50cyBJR3JpZFNvcnRpbmdTdHJhdGVneSB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBOb29wU29ydGluZ1N0cmF0ZWd5ID0gbnVsbDtcblxuICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7IH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaW5zdGFuY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZSB8fCAodGhpcy5faW5zdGFuY2UgPSBuZXcgTm9vcFNvcnRpbmdTdHJhdGVneSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc29ydChkYXRhOiBhbnlbXSk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSWd4RGF0YVJlY29yZFNvcnRpbmcgZXh0ZW5kcyBJZ3hTb3J0aW5nIHtcblxuICAgIHByb3RlY3RlZCBnZXRGaWVsZFZhbHVlKG9iajogYW55LCBrZXk6IHN0cmluZywgaXNEYXRlOiBib29sZWFuID0gZmFsc2UsIGlzVGltZTogYm9vbGVhbiA9IGZhbHNlKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldEZpZWxkVmFsdWUob2JqLmRhdGEsIGtleSwgaXNEYXRlLCBpc1RpbWUpO1xuICAgIH1cbn1cbiJdfQ==
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvY29tbW9uL3N0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFNNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxzQkFBc0IsRUFBc0IsTUFBTSx3Q0FBd0MsQ0FBQztBQUdwRyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUM7QUFDekIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDO0FBQ3pCLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQztBQVVsQyxNQUFNLE9BQU8sVUFBVTtJQUNaLElBQUksQ0FBQyxJQUFXLEVBQUUsV0FBaUMsRUFBRSxJQUFlO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFUyxrQkFBa0IsQ0FDeEIsSUFBVyxFQUNYLEtBQXFCLEVBQ3JCLEtBQWEsRUFDYixNQUFzQixFQUN0QixRQUEwQixFQUMxQixPQUFpQixJQUFJLEVBQ3JCLGdCQUF1QixFQUFFLEVBQ3pCLGFBQTZCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO1FBRXZELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDdEMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLEdBQUcsSUFB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QztJQUNoQixDQUFDOztBQVZjLDZCQUFTLEdBQXdCLElBQUksQ0FBQztBQWF6RCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsVUFBVTtJQUV0QyxhQUFhLENBQUMsR0FBUSxFQUFFLEdBQVcsRUFBRSxTQUFrQixLQUFLLEVBQUUsU0FBa0IsS0FBSztRQUMzRixPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsb25lQXJyYXksIHBhcnNlRGF0ZSwgcmVzb2x2ZU5lc3RlZFBhdGggfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IElHcm91cEJ5RXhwYW5kU3RhdGUgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZ3JvdXBieS1leHBhbmQtc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IElHcm91cEJ5UmVjb3JkIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwYnktcmVjb3JkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJR3JvdXBpbmdTdGF0ZSB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9ncm91cGJ5LXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJR3JvdXBpbmdFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwaW5nLWV4cHJlc3Npb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IElHcm91cEJ5UmVzdWx0IH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwaW5nLXJlc3VsdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZ2V0SGllcmFyY2h5LCBpc0hpZXJhcmNoeU1hdGNoIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL29wZXJhdGlvbnMnO1xuaW1wb3J0IHsgRGVmYXVsdFNvcnRpbmdTdHJhdGVneSwgSVNvcnRpbmdFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL3NvcnRpbmctc3RyYXRlZ3knO1xuaW1wb3J0IHsgR3JpZFR5cGUgfSBmcm9tICcuL2dyaWQuaW50ZXJmYWNlJztcblxuY29uc3QgREFURV9UWVBFID0gJ2RhdGUnO1xuY29uc3QgVElNRV9UWVBFID0gJ3RpbWUnO1xuY29uc3QgREFURV9USU1FX1RZUEUgPSAnZGF0ZVRpbWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkU29ydGluZ1N0cmF0ZWd5IHtcbiAgICBzb3J0KGRhdGE6IGFueVtdLCBleHByZXNzaW9uczogSVNvcnRpbmdFeHByZXNzaW9uW10sIGdyaWQ/OiBHcmlkVHlwZSk6IGFueVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHcmlkR3JvdXBpbmdTdHJhdGVneSBleHRlbmRzIElHcmlkU29ydGluZ1N0cmF0ZWd5IHtcbiAgICBncm91cEJ5KGRhdGE6IGFueVtdLCBzdGF0ZTogSUdyb3VwaW5nU3RhdGUsIGdyaWQ/OiBhbnksIGdyb3Vwc1JlY29yZHM/OiBhbnlbXSwgZnVsbFJlc3VsdD86IElHcm91cEJ5UmVzdWx0KTogSUdyb3VwQnlSZXN1bHQ7XG59XG5cbmV4cG9ydCBjbGFzcyBJZ3hTb3J0aW5nIGltcGxlbWVudHMgSUdyaWRTb3J0aW5nU3RyYXRlZ3kge1xuICAgIHB1YmxpYyBzb3J0KGRhdGE6IGFueVtdLCBleHByZXNzaW9uczogSVNvcnRpbmdFeHByZXNzaW9uW10sIGdyaWQ/OiBHcmlkVHlwZSk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc29ydERhdGFSZWN1cnNpdmUoZGF0YSwgZXhwcmVzc2lvbnMsIDAsIGdyaWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBncm91cERhdGFSZWN1cnNpdmUoXG4gICAgICAgIGRhdGE6IGFueVtdLFxuICAgICAgICBzdGF0ZTogSUdyb3VwaW5nU3RhdGUsXG4gICAgICAgIGxldmVsOiBudW1iZXIsXG4gICAgICAgIHBhcmVudDogSUdyb3VwQnlSZWNvcmQsXG4gICAgICAgIG1ldGFkYXRhOiBJR3JvdXBCeVJlY29yZFtdLFxuICAgICAgICBncmlkOiBHcmlkVHlwZSA9IG51bGwsXG4gICAgICAgIGdyb3Vwc1JlY29yZHM6IGFueVtdID0gW10sXG4gICAgICAgIGZ1bGxSZXN1bHQ6IElHcm91cEJ5UmVzdWx0ID0geyBkYXRhOiBbXSwgbWV0YWRhdGE6IFtdIH1cbiAgICApOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb25zID0gc3RhdGUuZXhwcmVzc2lvbnM7XG4gICAgICAgIGNvbnN0IGV4cGFuc2lvbiA9IHN0YXRlLmV4cGFuc2lvbjtcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgICAgIHdoaWxlIChpIDwgZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IGdyaWQgPyBncmlkLmdldENvbHVtbkJ5TmFtZShleHByZXNzaW9uc1tsZXZlbF0uZmllbGROYW1lKSA6IG51bGw7XG4gICAgICAgICAgICBjb25zdCBpc0RhdGUgPSBjb2x1bW4/LmRhdGFUeXBlID09PSBEQVRFX1RZUEUgfHwgY29sdW1uPy5kYXRhVHlwZSA9PT0gREFURV9USU1FX1RZUEU7XG4gICAgICAgICAgICBjb25zdCBpc1RpbWUgPSBjb2x1bW4/LmRhdGFUeXBlID09PSBUSU1FX1RZUEU7XG4gICAgICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZ3JvdXBlZFJlY29yZHNCeUV4cHJlc3Npb24oZGF0YSwgaSwgZXhwcmVzc2lvbnNbbGV2ZWxdLCBpc0RhdGUpO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBSb3c6IElHcm91cEJ5UmVjb3JkID0ge1xuICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IGV4cHJlc3Npb25zW2xldmVsXSxcbiAgICAgICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgICAgICByZWNvcmRzOiBjbG9uZUFycmF5KGdyb3VwKSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5nZXRGaWVsZFZhbHVlKGdyb3VwWzBdLCBleHByZXNzaW9uc1tsZXZlbF0uZmllbGROYW1lLCBpc0RhdGUsIGlzVGltZSksXG4gICAgICAgICAgICAgICAgZ3JvdXBQYXJlbnQ6IHBhcmVudCxcbiAgICAgICAgICAgICAgICBncm91cHM6IFtdLFxuICAgICAgICAgICAgICAgIGhlaWdodDogZ3JpZCA/IGdyaWQucmVuZGVyZWRSb3dIZWlnaHQgOiBudWxsLFxuICAgICAgICAgICAgICAgIGNvbHVtblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQuZ3JvdXBzLnB1c2goZ3JvdXBSb3cpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBncm91cHNSZWNvcmRzLnB1c2goZ3JvdXBSb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaGllcmFyY2h5ID0gZ2V0SGllcmFyY2h5KGdyb3VwUm93KTtcbiAgICAgICAgICAgIGNvbnN0IGV4cGFuZFN0YXRlOiBJR3JvdXBCeUV4cGFuZFN0YXRlID0gZXhwYW5zaW9uLmZpbmQoKHMpID0+XG4gICAgICAgICAgICAgICAgaXNIaWVyYXJjaHlNYXRjaChzLmhpZXJhcmNoeSB8fCBbeyBmaWVsZE5hbWU6IGdyb3VwUm93LmV4cHJlc3Npb24uZmllbGROYW1lLCB2YWx1ZTogZ3JvdXBSb3cudmFsdWUgfV0sIGhpZXJhcmNoeSkpO1xuICAgICAgICAgICAgY29uc3QgZXhwYW5kZWQgPSBleHBhbmRTdGF0ZSA/IGV4cGFuZFN0YXRlLmV4cGFuZGVkIDogc3RhdGUuZGVmYXVsdEV4cGFuZGVkO1xuICAgICAgICAgICAgbGV0IHJlY3Vyc2l2ZVJlc3VsdDtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGdyb3VwUm93KTtcbiAgICAgICAgICAgIG1ldGFkYXRhLnB1c2gobnVsbCk7XG4gICAgICAgICAgICBmdWxsUmVzdWx0LmRhdGEucHVzaChncm91cFJvdyk7XG4gICAgICAgICAgICBmdWxsUmVzdWx0Lm1ldGFkYXRhLnB1c2gobnVsbCk7XG4gICAgICAgICAgICBpZiAobGV2ZWwgPCBleHByZXNzaW9ucy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgcmVjdXJzaXZlUmVzdWx0ID0gdGhpcy5ncm91cERhdGFSZWN1cnNpdmUoZ3JvdXAsIHN0YXRlLCBsZXZlbCArIDEsIGdyb3VwUm93LFxuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZCA/IG1ldGFkYXRhIDogW10sIGdyaWQsIGdyb3Vwc1JlY29yZHMsIGZ1bGxSZXN1bHQpO1xuICAgICAgICAgICAgICAgIGlmIChleHBhbmRlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHJlY3Vyc2l2ZVJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGdyb3VwSXRlbSBvZiBncm91cCkge1xuICAgICAgICAgICAgICAgICAgICBmdWxsUmVzdWx0Lm1ldGFkYXRhLnB1c2goZ3JvdXBSb3cpO1xuICAgICAgICAgICAgICAgICAgICBmdWxsUmVzdWx0LmRhdGEucHVzaChncm91cEl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXhwYW5kZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEucHVzaCguLi5mdWxsUmVzdWx0Lm1ldGFkYXRhLnNsaWNlKGZ1bGxSZXN1bHQubWV0YWRhdGEubGVuZ3RoIC0gZ3JvdXAubGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLmZ1bGxSZXN1bHQuZGF0YS5zbGljZShmdWxsUmVzdWx0LmRhdGEubGVuZ3RoIC0gZ3JvdXAubGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaSArPSBncm91cC5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RmllbGRWYWx1ZTxUPihvYmo6IFQsIGtleTogc3RyaW5nLCBpc0RhdGU6IGJvb2xlYW4gPSBmYWxzZSwgaXNUaW1lOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgbGV0IHJlc29sdmVkVmFsdWUgPSByZXNvbHZlTmVzdGVkUGF0aChvYmosIGtleSk7XG4gICAgICAgIGlmIChpc0RhdGUgfHwgaXNUaW1lKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gcGFyc2VEYXRlKHJlc29sdmVkVmFsdWUpO1xuICAgICAgICAgICAgcmVzb2x2ZWRWYWx1ZSA9IGlzVGltZSAmJiBkYXRlID9cbiAgICAgICAgICAgICAgICBuZXcgRGF0ZSgpLnNldEhvdXJzKGRhdGUuZ2V0SG91cnMoKSwgZGF0ZS5nZXRNaW51dGVzKCksIGRhdGUuZ2V0U2Vjb25kcygpLCBkYXRlLmdldE1pbGxpc2Vjb25kcygpKSA6IGRhdGU7XG5cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzb2x2ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdyb3VwZWRSZWNvcmRzQnlFeHByZXNzaW9uPFQ+KFxuICAgICAgICBkYXRhOiBUW10sXG4gICAgICAgIGluZGV4OiBudW1iZXIsXG4gICAgICAgIGV4cHJlc3Npb246IElHcm91cGluZ0V4cHJlc3Npb24sXG4gICAgICAgIGlzRGF0ZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogVFtdIHtcbiAgICAgICAgY29uc3QgcmVzID0gW107XG4gICAgICAgIGNvbnN0IGtleSA9IGV4cHJlc3Npb24uZmllbGROYW1lO1xuICAgICAgICBjb25zdCBsZW4gPSBkYXRhLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZ3JvdXB2YWwgPSB0aGlzLmdldEZpZWxkVmFsdWUoZGF0YVtpbmRleF0sIGtleSwgaXNEYXRlKTtcbiAgICAgICAgcmVzLnB1c2goZGF0YVtpbmRleF0pO1xuICAgICAgICBpbmRleCsrO1xuICAgICAgICBjb25zdCBjb21wYXJlciA9IGV4cHJlc3Npb24uZ3JvdXBpbmdDb21wYXJlciB8fCBEZWZhdWx0U29ydGluZ1N0cmF0ZWd5Lmluc3RhbmNlKCkuY29tcGFyZVZhbHVlcztcbiAgICAgICAgZm9yIChsZXQgaSA9IGluZGV4OyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChjb21wYXJlcih0aGlzLmdldEZpZWxkVmFsdWUoZGF0YVtpXSwga2V5LCBpc0RhdGUpLCBncm91cHZhbCkgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaChkYXRhW2ldKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnREYXRhUmVjdXJzaXZlPFQ+KFxuICAgICAgICBkYXRhOiBUW10sXG4gICAgICAgIGV4cHJlc3Npb25zOiBJU29ydGluZ0V4cHJlc3Npb25bXSxcbiAgICAgICAgZXhwcmVzc2lvbkluZGV4OiBudW1iZXIgPSAwLFxuICAgICAgICBncmlkOiBHcmlkVHlwZVxuICAgICk6IFRbXSB7XG4gICAgICAgIGxldCBpOiBudW1iZXI7XG4gICAgICAgIGxldCBqOiBudW1iZXI7XG4gICAgICAgIGxldCBnYkRhdGE6IFRbXTtcbiAgICAgICAgbGV0IGdiRGF0YUxlbjogbnVtYmVyO1xuICAgICAgICBjb25zdCBleHByc0xlbiA9IGV4cHJlc3Npb25zLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZGF0YUxlbiA9IGRhdGEubGVuZ3RoO1xuXG4gICAgICAgIGV4cHJlc3Npb25JbmRleCA9IGV4cHJlc3Npb25JbmRleCB8fCAwO1xuICAgICAgICBpZiAoZXhwcmVzc2lvbkluZGV4ID49IGV4cHJzTGVuIHx8IGRhdGFMZW4gPD0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXhwciA9IGV4cHJlc3Npb25zW2V4cHJlc3Npb25JbmRleF07XG4gICAgICAgIGlmICghZXhwci5zdHJhdGVneSkge1xuICAgICAgICAgICAgZXhwci5zdHJhdGVneSA9IERlZmF1bHRTb3J0aW5nU3RyYXRlZ3kuaW5zdGFuY2UoKSBhcyBhbnk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29sdW1uID0gZ3JpZD8uZ2V0Q29sdW1uQnlOYW1lKGV4cHIuZmllbGROYW1lKTtcbiAgICAgICAgY29uc3QgaXNEYXRlID0gY29sdW1uPy5kYXRhVHlwZSA9PT0gREFURV9UWVBFIHx8IGNvbHVtbj8uZGF0YVR5cGUgPT09IERBVEVfVElNRV9UWVBFO1xuICAgICAgICBjb25zdCBpc1RpbWUgPSBjb2x1bW4/LmRhdGFUeXBlID09PSBUSU1FX1RZUEU7XG4gICAgICAgIGRhdGEgPSBleHByLnN0cmF0ZWd5LnNvcnQoZGF0YSwgZXhwci5maWVsZE5hbWUsIGV4cHIuZGlyLCBleHByLmlnbm9yZUNhc2UsIHRoaXMuZ2V0RmllbGRWYWx1ZSwgaXNEYXRlLCBpc1RpbWUpO1xuICAgICAgICBpZiAoZXhwcmVzc2lvbkluZGV4ID09PSBleHByc0xlbiAtIDEpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9XG4gICAgICAgIC8vIGluIGNhc2Ugb2YgbXVsdGlwbGUgc29ydGluZ1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZGF0YUxlbjsgaSsrKSB7XG4gICAgICAgICAgICBnYkRhdGEgPSB0aGlzLmdyb3VwZWRSZWNvcmRzQnlFeHByZXNzaW9uKGRhdGEsIGksIGV4cHIsIGlzRGF0ZSk7XG4gICAgICAgICAgICBnYkRhdGFMZW4gPSBnYkRhdGEubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKGdiRGF0YUxlbiA+IDEpIHtcbiAgICAgICAgICAgICAgICBnYkRhdGEgPSB0aGlzLnNvcnREYXRhUmVjdXJzaXZlKGdiRGF0YSwgZXhwcmVzc2lvbnMsIGV4cHJlc3Npb25JbmRleCArIDEsIGdyaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGdiRGF0YUxlbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgZGF0YVtpICsgal0gPSBnYkRhdGFbal07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpICs9IGdiRGF0YUxlbiAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSWd4R3JvdXBpbmcgZXh0ZW5kcyBJZ3hTb3J0aW5nIGltcGxlbWVudHMgSUdyaWRHcm91cGluZ1N0cmF0ZWd5IHtcbiAgICBwdWJsaWMgZ3JvdXBCeShkYXRhOiBhbnlbXSwgc3RhdGU6IElHcm91cGluZ1N0YXRlLCBncmlkPzogYW55LFxuICAgICAgICBncm91cHNSZWNvcmRzPzogYW55W10sIGZ1bGxSZXN1bHQ6IElHcm91cEJ5UmVzdWx0ID0geyBkYXRhOiBbXSwgbWV0YWRhdGE6IFtdIH0pOiBJR3JvdXBCeVJlc3VsdCB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhOiBJR3JvdXBCeVJlY29yZFtdID0gW107XG4gICAgICAgIGNvbnN0IGdyb3VwaW5nID0gdGhpcy5ncm91cERhdGFSZWN1cnNpdmUoZGF0YSwgc3RhdGUsIDAsIG51bGwsIG1ldGFkYXRhLCBncmlkLCBncm91cHNSZWNvcmRzLCBmdWxsUmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IGdyb3VwaW5nLFxuICAgICAgICAgICAgbWV0YWRhdGFcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb29wU29ydGluZ1N0cmF0ZWd5IGltcGxlbWVudHMgSUdyaWRTb3J0aW5nU3RyYXRlZ3kge1xuICAgIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogTm9vcFNvcnRpbmdTdHJhdGVneSA9IG51bGw7XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGluc3RhbmNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2UgfHwgKHRoaXMuX2luc3RhbmNlID0gbmV3IE5vb3BTb3J0aW5nU3RyYXRlZ3koKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNvcnQoZGF0YTogYW55W10pOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIElneERhdGFSZWNvcmRTb3J0aW5nIGV4dGVuZHMgSWd4U29ydGluZyB7XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RmllbGRWYWx1ZShvYmo6IGFueSwga2V5OiBzdHJpbmcsIGlzRGF0ZTogYm9vbGVhbiA9IGZhbHNlLCBpc1RpbWU6IGJvb2xlYW4gPSBmYWxzZSk6IGFueSB7XG4gICAgICAgIHJldHVybiBzdXBlci5nZXRGaWVsZFZhbHVlKG9iai5kYXRhLCBrZXksIGlzRGF0ZSwgaXNUaW1lKTtcbiAgICB9XG59XG4iXX0=