igniteui-angular 17.0.5-beta.0 → 17.0.6

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 (342) hide show
  1. package/esm2022/lib/accordion/accordion.component.mjs +3 -3
  2. package/esm2022/lib/accordion/accordion.module.mjs +4 -4
  3. package/esm2022/lib/accordion/public_api.mjs +12 -3
  4. package/esm2022/lib/action-strip/action-strip.component.mjs +6 -6
  5. package/esm2022/lib/action-strip/action-strip.module.mjs +4 -4
  6. package/esm2022/lib/action-strip/grid-actions/grid-action-button.component.mjs +3 -3
  7. package/esm2022/lib/action-strip/grid-actions/grid-actions-base.directive.mjs +3 -3
  8. package/esm2022/lib/action-strip/grid-actions/grid-editing-actions.component.mjs +3 -3
  9. package/esm2022/lib/action-strip/grid-actions/grid-pinning-actions.component.mjs +3 -3
  10. package/esm2022/lib/action-strip/public_api.mjs +3 -2
  11. package/esm2022/lib/avatar/avatar.component.mjs +3 -3
  12. package/esm2022/lib/avatar/avatar.module.mjs +4 -4
  13. package/esm2022/lib/badge/badge.component.mjs +3 -3
  14. package/esm2022/lib/badge/badge.module.mjs +4 -4
  15. package/esm2022/lib/banner/banner.component.mjs +3 -3
  16. package/esm2022/lib/banner/banner.directives.mjs +3 -3
  17. package/esm2022/lib/banner/banner.module.mjs +4 -4
  18. package/esm2022/lib/buttonGroup/buttonGroup.component.mjs +3 -3
  19. package/esm2022/lib/buttonGroup/buttongroup.module.mjs +4 -4
  20. package/esm2022/lib/calendar/calendar-base.mjs +3 -3
  21. package/esm2022/lib/calendar/calendar.component.mjs +3 -3
  22. package/esm2022/lib/calendar/calendar.directives.mjs +15 -15
  23. package/esm2022/lib/calendar/calendar.module.mjs +4 -4
  24. package/esm2022/lib/calendar/days-view/day-item.component.mjs +3 -3
  25. package/esm2022/lib/calendar/days-view/days-view.component.mjs +3 -3
  26. package/esm2022/lib/calendar/days-view/daysview-navigation.service.mjs +3 -3
  27. package/esm2022/lib/calendar/month-picker/month-picker-base.mjs +3 -3
  28. package/esm2022/lib/calendar/month-picker/month-picker.component.mjs +3 -3
  29. package/esm2022/lib/calendar/months-view/months-view.component.mjs +3 -3
  30. package/esm2022/lib/calendar/months-view.pipe.mjs +6 -6
  31. package/esm2022/lib/calendar/years-view/years-view.component.mjs +6 -6
  32. package/esm2022/lib/card/card.component.mjs +27 -27
  33. package/esm2022/lib/card/card.module.mjs +4 -4
  34. package/esm2022/lib/carousel/carousel.component.mjs +6 -6
  35. package/esm2022/lib/carousel/carousel.directives.mjs +9 -9
  36. package/esm2022/lib/carousel/carousel.module.mjs +4 -4
  37. package/esm2022/lib/carousel/slide.component.mjs +3 -3
  38. package/esm2022/lib/checkbox/checkbox.component.mjs +3 -3
  39. package/esm2022/lib/checkbox/checkbox.module.mjs +4 -4
  40. package/esm2022/lib/chips/chip.component.mjs +3 -3
  41. package/esm2022/lib/chips/chips-area.component.mjs +3 -3
  42. package/esm2022/lib/chips/chips.module.mjs +4 -4
  43. package/esm2022/lib/combo/combo-add-item.component.mjs +3 -3
  44. package/esm2022/lib/combo/combo-dropdown.component.mjs +3 -3
  45. package/esm2022/lib/combo/combo-item.component.mjs +3 -3
  46. package/esm2022/lib/combo/combo.api.mjs +3 -3
  47. package/esm2022/lib/combo/combo.common.mjs +3 -3
  48. package/esm2022/lib/combo/combo.component.mjs +3 -3
  49. package/esm2022/lib/combo/combo.directives.mjs +24 -24
  50. package/esm2022/lib/combo/combo.module.mjs +4 -4
  51. package/esm2022/lib/combo/combo.pipes.mjs +6 -6
  52. package/esm2022/lib/core/density.mjs +3 -3
  53. package/esm2022/lib/core/navigation/directives.mjs +6 -6
  54. package/esm2022/lib/core/navigation/nav.service.mjs +3 -3
  55. package/esm2022/lib/core/selection.mjs +3 -3
  56. package/esm2022/lib/core/touch.mjs +3 -3
  57. package/esm2022/lib/core/utils.mjs +3 -3
  58. package/esm2022/lib/date-common/calendar-container/calendar-container.component.mjs +3 -3
  59. package/esm2022/lib/date-common/picker-base.directive.mjs +3 -3
  60. package/esm2022/lib/date-common/picker-icons.common.mjs +9 -9
  61. package/esm2022/lib/date-picker/date-picker.component.mjs +3 -3
  62. package/esm2022/lib/date-picker/date-picker.module.mjs +4 -4
  63. package/esm2022/lib/date-range-picker/date-range-picker-inputs.common.mjs +15 -15
  64. package/esm2022/lib/date-range-picker/date-range-picker.component.mjs +3 -3
  65. package/esm2022/lib/date-range-picker/date-range-picker.module.mjs +4 -4
  66. package/esm2022/lib/dialog/dialog.component.mjs +3 -3
  67. package/esm2022/lib/dialog/dialog.directives.mjs +6 -6
  68. package/esm2022/lib/dialog/dialog.module.mjs +4 -4
  69. package/esm2022/lib/directives/autocomplete/autocomplete.directive.mjs +3 -3
  70. package/esm2022/lib/directives/autocomplete/autocomplete.module.mjs +4 -4
  71. package/esm2022/lib/directives/button/button.directive.mjs +3 -3
  72. package/esm2022/lib/directives/button/button.module.mjs +4 -4
  73. package/esm2022/lib/directives/date-time-editor/date-time-editor.directive.mjs +3 -3
  74. package/esm2022/lib/directives/date-time-editor/date-time-editor.module.mjs +4 -4
  75. package/esm2022/lib/directives/divider/divider.directive.mjs +3 -3
  76. package/esm2022/lib/directives/divider/divider.module.mjs +4 -4
  77. package/esm2022/lib/directives/drag-drop/drag-drop.directive.mjs +12 -12
  78. package/esm2022/lib/directives/drag-drop/drag-drop.module.mjs +4 -4
  79. package/esm2022/lib/directives/filter/filter.directive.mjs +6 -6
  80. package/esm2022/lib/directives/filter/filter.module.mjs +4 -4
  81. package/esm2022/lib/directives/focus/focus.directive.mjs +3 -3
  82. package/esm2022/lib/directives/focus/focus.module.mjs +4 -4
  83. package/esm2022/lib/directives/focus-trap/focus-trap.directive.mjs +3 -3
  84. package/esm2022/lib/directives/focus-trap/focus-trap.module.mjs +4 -4
  85. package/esm2022/lib/directives/for-of/base.helper.component.mjs +3 -3
  86. package/esm2022/lib/directives/for-of/display.container.mjs +3 -3
  87. package/esm2022/lib/directives/for-of/for_of.directive.mjs +7 -8
  88. package/esm2022/lib/directives/for-of/for_of.module.mjs +4 -4
  89. package/esm2022/lib/directives/for-of/for_of.sync.service.mjs +6 -6
  90. package/esm2022/lib/directives/for-of/horizontal.virtual.helper.component.mjs +3 -3
  91. package/esm2022/lib/directives/for-of/virtual.helper.component.mjs +3 -3
  92. package/esm2022/lib/directives/form-control/form-control.directive.mjs +3 -3
  93. package/esm2022/lib/directives/form-control/form-control.module.mjs +4 -4
  94. package/esm2022/lib/directives/hint/hint.directive.mjs +3 -3
  95. package/esm2022/lib/directives/input/input.directive.mjs +3 -3
  96. package/esm2022/lib/directives/label/label.directive.mjs +3 -3
  97. package/esm2022/lib/directives/layout/layout.directive.mjs +6 -6
  98. package/esm2022/lib/directives/layout/layout.module.mjs +4 -4
  99. package/esm2022/lib/directives/mask/mask-parsing.service.mjs +3 -3
  100. package/esm2022/lib/directives/mask/mask.directive.mjs +3 -3
  101. package/esm2022/lib/directives/mask/mask.module.mjs +4 -4
  102. package/esm2022/lib/directives/notification/notifications.directive.mjs +3 -3
  103. package/esm2022/lib/directives/prefix/prefix.directive.mjs +3 -3
  104. package/esm2022/lib/directives/radio/radio-group.directive.mjs +3 -3
  105. package/esm2022/lib/directives/radio/radio-group.module.mjs +4 -4
  106. package/esm2022/lib/directives/ripple/ripple.directive.mjs +3 -3
  107. package/esm2022/lib/directives/ripple/ripple.module.mjs +4 -4
  108. package/esm2022/lib/directives/scroll-inertia/scroll_inertia.directive.mjs +3 -3
  109. package/esm2022/lib/directives/scroll-inertia/scroll_inertia.module.mjs +4 -4
  110. package/esm2022/lib/directives/suffix/suffix.directive.mjs +3 -3
  111. package/esm2022/lib/directives/template-outlet/template_outlet.directive.mjs +3 -3
  112. package/esm2022/lib/directives/text-highlight/text-highlight.directive.mjs +3 -3
  113. package/esm2022/lib/directives/text-highlight/text-highlight.module.mjs +4 -4
  114. package/esm2022/lib/directives/text-selection/text-selection.directive.mjs +3 -3
  115. package/esm2022/lib/directives/text-selection/text-selection.module.mjs +4 -4
  116. package/esm2022/lib/directives/toggle/toggle.directive.mjs +9 -9
  117. package/esm2022/lib/directives/toggle/toggle.module.mjs +4 -4
  118. package/esm2022/lib/directives/tooltip/tooltip-target.directive.mjs +3 -3
  119. package/esm2022/lib/directives/tooltip/tooltip.component.mjs +3 -3
  120. package/esm2022/lib/directives/tooltip/tooltip.directive.mjs +3 -3
  121. package/esm2022/lib/directives/tooltip/tooltip.module.mjs +4 -4
  122. package/esm2022/lib/drop-down/drop-down-group.component.mjs +3 -3
  123. package/esm2022/lib/drop-down/drop-down-item.base.mjs +3 -3
  124. package/esm2022/lib/drop-down/drop-down-item.component.mjs +3 -3
  125. package/esm2022/lib/drop-down/drop-down-navigation.directive.mjs +3 -3
  126. package/esm2022/lib/drop-down/drop-down.base.mjs +3 -3
  127. package/esm2022/lib/drop-down/drop-down.component.mjs +3 -3
  128. package/esm2022/lib/drop-down/drop-down.module.mjs +4 -4
  129. package/esm2022/lib/expansion-panel/expansion-panel-body.component.mjs +3 -3
  130. package/esm2022/lib/expansion-panel/expansion-panel-header.component.mjs +3 -3
  131. package/esm2022/lib/expansion-panel/expansion-panel.common.mjs +3 -3
  132. package/esm2022/lib/expansion-panel/expansion-panel.component.mjs +3 -3
  133. package/esm2022/lib/expansion-panel/expansion-panel.directives.mjs +9 -9
  134. package/esm2022/lib/expansion-panel/expansion-panel.module.mjs +4 -4
  135. package/esm2022/lib/expansion-panel/toggle-animation-component.mjs +3 -3
  136. package/esm2022/lib/grids/api.service.mjs +3 -3
  137. package/esm2022/lib/grids/cell.component.mjs +3 -3
  138. package/esm2022/lib/grids/column-actions/column-actions-base.directive.mjs +3 -3
  139. package/esm2022/lib/grids/column-actions/column-actions.component.mjs +12 -12
  140. package/esm2022/lib/grids/column-actions/column-hiding.directive.mjs +3 -3
  141. package/esm2022/lib/grids/column-actions/column-pinning.directive.mjs +3 -3
  142. package/esm2022/lib/grids/columns/column-group.component.mjs +3 -3
  143. package/esm2022/lib/grids/columns/column-layout.component.mjs +3 -3
  144. package/esm2022/lib/grids/columns/column.component.mjs +3 -3
  145. package/esm2022/lib/grids/columns/templates.directive.mjs +24 -24
  146. package/esm2022/lib/grids/columns/validators.directive.mjs +21 -21
  147. package/esm2022/lib/grids/common/crud.service.mjs +3 -3
  148. package/esm2022/lib/grids/common/pipes.mjs +54 -54
  149. package/esm2022/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.mjs +3 -3
  150. package/esm2022/lib/grids/filtering/base/grid-filtering-cell.component.mjs +3 -3
  151. package/esm2022/lib/grids/filtering/base/grid-filtering-row.component.mjs +3 -3
  152. package/esm2022/lib/grids/filtering/excel-style/base-filtering.component.mjs +3 -3
  153. package/esm2022/lib/grids/filtering/excel-style/excel-style-clear-filters.component.mjs +3 -3
  154. package/esm2022/lib/grids/filtering/excel-style/excel-style-conditional-filter.component.mjs +3 -3
  155. package/esm2022/lib/grids/filtering/excel-style/excel-style-custom-dialog.component.mjs +3 -3
  156. package/esm2022/lib/grids/filtering/excel-style/excel-style-date-expression.component.mjs +3 -3
  157. package/esm2022/lib/grids/filtering/excel-style/excel-style-default-expression.component.mjs +3 -3
  158. package/esm2022/lib/grids/filtering/excel-style/excel-style-filtering.component.mjs +9 -9
  159. package/esm2022/lib/grids/filtering/excel-style/excel-style-header.component.mjs +3 -3
  160. package/esm2022/lib/grids/filtering/excel-style/excel-style-hiding.component.mjs +3 -3
  161. package/esm2022/lib/grids/filtering/excel-style/excel-style-moving.component.mjs +3 -3
  162. package/esm2022/lib/grids/filtering/excel-style/excel-style-pinning.component.mjs +3 -3
  163. package/esm2022/lib/grids/filtering/excel-style/excel-style-search.component.mjs +14 -12
  164. package/esm2022/lib/grids/filtering/excel-style/excel-style-selecting.component.mjs +3 -3
  165. package/esm2022/lib/grids/filtering/excel-style/excel-style-sorting.component.mjs +3 -3
  166. package/esm2022/lib/grids/filtering/grid-filtering.service.mjs +3 -3
  167. package/esm2022/lib/grids/grid/expandable-cell.component.mjs +3 -3
  168. package/esm2022/lib/grids/grid/grid-api.service.mjs +3 -3
  169. package/esm2022/lib/grids/grid/grid-row.component.mjs +3 -3
  170. package/esm2022/lib/grids/grid/grid-validation.service.mjs +3 -3
  171. package/esm2022/lib/grids/grid/grid.component.mjs +3 -3
  172. package/esm2022/lib/grids/grid/grid.details.pipe.mjs +3 -3
  173. package/esm2022/lib/grids/grid/grid.module.mjs +4 -4
  174. package/esm2022/lib/grids/grid/grid.pipes.mjs +12 -12
  175. package/esm2022/lib/grids/grid/grid.summary.pipe.mjs +3 -3
  176. package/esm2022/lib/grids/grid/groupby-row.component.mjs +3 -3
  177. package/esm2022/lib/grids/grid/public_api.mjs +86 -6
  178. package/esm2022/lib/grids/grid-base.directive.mjs +5 -4
  179. package/esm2022/lib/grids/grid-footer/grid-footer.component.mjs +3 -3
  180. package/esm2022/lib/grids/grid-mrl-navigation.service.mjs +3 -3
  181. package/esm2022/lib/grids/grid-navigation.service.mjs +3 -3
  182. package/esm2022/lib/grids/grid.common.mjs +3 -3
  183. package/esm2022/lib/grids/grid.directives.mjs +33 -33
  184. package/esm2022/lib/grids/grid.rowEdit.directive.mjs +15 -15
  185. package/esm2022/lib/grids/grouping/grid-group-by-area.component.mjs +3 -3
  186. package/esm2022/lib/grids/grouping/group-by-area.directive.mjs +6 -6
  187. package/esm2022/lib/grids/grouping/tree-grid-group-by-area.component.mjs +3 -3
  188. package/esm2022/lib/grids/headers/grid-header-group.component.mjs +3 -3
  189. package/esm2022/lib/grids/headers/grid-header-row.component.mjs +3 -3
  190. package/esm2022/lib/grids/headers/grid-header.component.mjs +3 -3
  191. package/esm2022/lib/grids/headers/pipes.mjs +9 -9
  192. package/esm2022/lib/grids/hierarchical-grid/hierarchical-cell.component.mjs +3 -3
  193. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-api.service.mjs +3 -3
  194. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.mjs +3 -3
  195. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.mjs +3 -3
  196. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +6 -6
  197. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.module.mjs +4 -4
  198. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.pipes.mjs +6 -6
  199. package/esm2022/lib/grids/hierarchical-grid/hierarchical-row.component.mjs +3 -3
  200. package/esm2022/lib/grids/hierarchical-grid/public_api.mjs +81 -7
  201. package/esm2022/lib/grids/hierarchical-grid/row-island-api.service.mjs +3 -3
  202. package/esm2022/lib/grids/hierarchical-grid/row-island.component.mjs +3 -3
  203. package/esm2022/lib/grids/moving/moving.drag.directive.mjs +3 -3
  204. package/esm2022/lib/grids/moving/moving.drop.directive.mjs +3 -3
  205. package/esm2022/lib/grids/moving/moving.service.mjs +3 -3
  206. package/esm2022/lib/grids/pivot-grid/pivot-data-selector.component.mjs +3 -3
  207. package/esm2022/lib/grids/pivot-grid/pivot-filtering.service.mjs +3 -3
  208. package/esm2022/lib/grids/pivot-grid/pivot-grid-navigation.service.mjs +3 -3
  209. package/esm2022/lib/grids/pivot-grid/pivot-grid.component.mjs +3 -3
  210. package/esm2022/lib/grids/pivot-grid/pivot-grid.directives.mjs +3 -3
  211. package/esm2022/lib/grids/pivot-grid/pivot-grid.module.mjs +4 -4
  212. package/esm2022/lib/grids/pivot-grid/pivot-grid.pipes.mjs +30 -30
  213. package/esm2022/lib/grids/pivot-grid/pivot-header-row.component.mjs +3 -3
  214. package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-content.component.mjs +3 -3
  215. package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-header-group.component.mjs +3 -3
  216. package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-header.component.mjs +3 -3
  217. package/esm2022/lib/grids/pivot-grid/pivot-row.component.mjs +3 -3
  218. package/esm2022/lib/grids/pivot-grid/public_api.mjs +70 -3
  219. package/esm2022/lib/grids/resizing/pivot-grid/pivot-resize-handle.directive.mjs +3 -3
  220. package/esm2022/lib/grids/resizing/pivot-grid/pivot-resizer.component.mjs +3 -3
  221. package/esm2022/lib/grids/resizing/pivot-grid/pivot-resizing.service.mjs +3 -3
  222. package/esm2022/lib/grids/resizing/resize-handle.directive.mjs +3 -3
  223. package/esm2022/lib/grids/resizing/resizer.component.mjs +3 -3
  224. package/esm2022/lib/grids/resizing/resizer.directive.mjs +3 -3
  225. package/esm2022/lib/grids/resizing/resizing.service.mjs +3 -3
  226. package/esm2022/lib/grids/row-drag.directive.mjs +9 -9
  227. package/esm2022/lib/grids/row.directive.mjs +3 -3
  228. package/esm2022/lib/grids/selection/drag-select.directive.mjs +3 -3
  229. package/esm2022/lib/grids/selection/row-selectors.mjs +9 -9
  230. package/esm2022/lib/grids/selection/selection.service.mjs +3 -3
  231. package/esm2022/lib/grids/state.directive.mjs +6 -6
  232. package/esm2022/lib/grids/summaries/grid-root-summary.pipe.mjs +3 -3
  233. package/esm2022/lib/grids/summaries/grid-summary.service.mjs +3 -3
  234. package/esm2022/lib/grids/summaries/summary-cell.component.mjs +3 -3
  235. package/esm2022/lib/grids/summaries/summary-row.component.mjs +3 -3
  236. package/esm2022/lib/grids/toolbar/common.mjs +15 -15
  237. package/esm2022/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.mjs +3 -3
  238. package/esm2022/lib/grids/toolbar/grid-toolbar-exporter.component.mjs +3 -3
  239. package/esm2022/lib/grids/toolbar/grid-toolbar-hiding.component.mjs +3 -3
  240. package/esm2022/lib/grids/toolbar/grid-toolbar-pinning.component.mjs +3 -3
  241. package/esm2022/lib/grids/toolbar/grid-toolbar.base.mjs +6 -6
  242. package/esm2022/lib/grids/toolbar/grid-toolbar.component.mjs +3 -3
  243. package/esm2022/lib/grids/tree-grid/public_api.mjs +81 -7
  244. package/esm2022/lib/grids/tree-grid/tree-cell.component.mjs +3 -3
  245. package/esm2022/lib/grids/tree-grid/tree-grid-api.service.mjs +3 -3
  246. package/esm2022/lib/grids/tree-grid/tree-grid-row.component.mjs +3 -3
  247. package/esm2022/lib/grids/tree-grid/tree-grid-selection.service.mjs +3 -3
  248. package/esm2022/lib/grids/tree-grid/tree-grid.component.mjs +3 -3
  249. package/esm2022/lib/grids/tree-grid/tree-grid.directives.mjs +3 -3
  250. package/esm2022/lib/grids/tree-grid/tree-grid.filtering.pipe.mjs +3 -3
  251. package/esm2022/lib/grids/tree-grid/tree-grid.grouping.pipe.mjs +3 -3
  252. package/esm2022/lib/grids/tree-grid/tree-grid.module.mjs +4 -4
  253. package/esm2022/lib/grids/tree-grid/tree-grid.pipes.mjs +21 -21
  254. package/esm2022/lib/grids/tree-grid/tree-grid.summary.pipe.mjs +3 -3
  255. package/esm2022/lib/icon/icon.component.mjs +3 -3
  256. package/esm2022/lib/icon/icon.module.mjs +4 -4
  257. package/esm2022/lib/icon/icon.service.mjs +3 -3
  258. package/esm2022/lib/input-group/input-group.component.mjs +3 -3
  259. package/esm2022/lib/input-group/input-group.module.mjs +4 -4
  260. package/esm2022/lib/list/list-item.component.mjs +3 -3
  261. package/esm2022/lib/list/list.common.mjs +15 -15
  262. package/esm2022/lib/list/list.component.mjs +18 -18
  263. package/esm2022/lib/list/list.module.mjs +4 -4
  264. package/esm2022/lib/navbar/navbar.component.mjs +9 -9
  265. package/esm2022/lib/navbar/navbar.module.mjs +4 -4
  266. package/esm2022/lib/navigation-drawer/navigation-drawer.component.mjs +3 -3
  267. package/esm2022/lib/navigation-drawer/navigation-drawer.directives.mjs +9 -9
  268. package/esm2022/lib/navigation-drawer/navigation-drawer.module.mjs +4 -4
  269. package/esm2022/lib/paginator/paginator-interfaces.mjs +3 -3
  270. package/esm2022/lib/paginator/paginator.component.mjs +12 -12
  271. package/esm2022/lib/paginator/paginator.module.mjs +4 -4
  272. package/esm2022/lib/progressbar/progressbar.common.mjs +6 -6
  273. package/esm2022/lib/progressbar/progressbar.component.mjs +9 -9
  274. package/esm2022/lib/progressbar/progressbar.module.mjs +4 -4
  275. package/esm2022/lib/query-builder/query-builder-header.component.mjs +3 -3
  276. package/esm2022/lib/query-builder/query-builder.component.mjs +6 -6
  277. package/esm2022/lib/query-builder/query-builder.module.mjs +4 -4
  278. package/esm2022/lib/radio/radio.component.mjs +3 -3
  279. package/esm2022/lib/select/select-group.component.mjs +3 -3
  280. package/esm2022/lib/select/select-item.component.mjs +3 -3
  281. package/esm2022/lib/select/select-navigation.directive.mjs +3 -3
  282. package/esm2022/lib/select/select.component.mjs +12 -12
  283. package/esm2022/lib/select/select.module.mjs +4 -4
  284. package/esm2022/lib/services/animation/angular-animation-service.mjs +3 -3
  285. package/esm2022/lib/services/csv/csv-exporter.mjs +3 -3
  286. package/esm2022/lib/services/direction/directionality.mjs +3 -3
  287. package/esm2022/lib/services/excel/excel-exporter.mjs +3 -3
  288. package/esm2022/lib/services/overlay/overlay.mjs +3 -3
  289. package/esm2022/lib/services/transaction/transaction-factory.service.mjs +6 -6
  290. package/esm2022/lib/simple-combo/simple-combo.component.mjs +3 -3
  291. package/esm2022/lib/simple-combo/simple-combo.module.mjs +4 -4
  292. package/esm2022/lib/slider/label/thumb-label.component.mjs +3 -3
  293. package/esm2022/lib/slider/slider.common.mjs +9 -9
  294. package/esm2022/lib/slider/slider.component.mjs +3 -3
  295. package/esm2022/lib/slider/slider.module.mjs +4 -4
  296. package/esm2022/lib/slider/thumb/thumb-slider.component.mjs +3 -3
  297. package/esm2022/lib/slider/ticks/tick.pipe.mjs +3 -3
  298. package/esm2022/lib/slider/ticks/ticks.component.mjs +3 -3
  299. package/esm2022/lib/snackbar/snackbar.component.mjs +3 -3
  300. package/esm2022/lib/snackbar/snackbar.module.mjs +4 -4
  301. package/esm2022/lib/splitter/splitter-pane/splitter-pane.component.mjs +3 -3
  302. package/esm2022/lib/splitter/splitter.component.mjs +6 -6
  303. package/esm2022/lib/splitter/splitter.module.mjs +4 -4
  304. package/esm2022/lib/stepper/step/step.component.mjs +3 -3
  305. package/esm2022/lib/stepper/stepper.component.mjs +3 -3
  306. package/esm2022/lib/stepper/stepper.directive.mjs +21 -21
  307. package/esm2022/lib/stepper/stepper.module.mjs +4 -4
  308. package/esm2022/lib/stepper/stepper.service.mjs +3 -3
  309. package/esm2022/lib/switch/switch.component.mjs +3 -3
  310. package/esm2022/lib/switch/switch.module.mjs +4 -4
  311. package/esm2022/lib/tabs/bottom-nav/bottom-nav-content.component.mjs +3 -3
  312. package/esm2022/lib/tabs/bottom-nav/bottom-nav-header.component.mjs +3 -3
  313. package/esm2022/lib/tabs/bottom-nav/bottom-nav-item.component.mjs +3 -3
  314. package/esm2022/lib/tabs/bottom-nav/bottom-nav.component.mjs +3 -3
  315. package/esm2022/lib/tabs/bottom-nav/bottom-nav.directives.mjs +6 -6
  316. package/esm2022/lib/tabs/bottom-nav/bottom-nav.module.mjs +4 -4
  317. package/esm2022/lib/tabs/tab-content.directive.mjs +3 -3
  318. package/esm2022/lib/tabs/tab-header.directive.mjs +3 -3
  319. package/esm2022/lib/tabs/tab-item.directive.mjs +3 -3
  320. package/esm2022/lib/tabs/tabs/tab-content.component.mjs +3 -3
  321. package/esm2022/lib/tabs/tabs/tab-header.component.mjs +3 -3
  322. package/esm2022/lib/tabs/tabs/tab-item.component.mjs +3 -3
  323. package/esm2022/lib/tabs/tabs/tabs.component.mjs +3 -3
  324. package/esm2022/lib/tabs/tabs/tabs.directives.mjs +6 -6
  325. package/esm2022/lib/tabs/tabs/tabs.module.mjs +4 -4
  326. package/esm2022/lib/tabs/tabs.directive.mjs +3 -3
  327. package/esm2022/lib/time-picker/time-picker.component.mjs +3 -3
  328. package/esm2022/lib/time-picker/time-picker.directives.mjs +6 -6
  329. package/esm2022/lib/time-picker/time-picker.module.mjs +4 -4
  330. package/esm2022/lib/time-picker/time-picker.pipes.mjs +6 -6
  331. package/esm2022/lib/toast/toast.component.mjs +3 -3
  332. package/esm2022/lib/toast/toast.module.mjs +4 -4
  333. package/esm2022/lib/tree/tree-navigation.service.mjs +3 -3
  334. package/esm2022/lib/tree/tree-node/tree-node.component.mjs +6 -6
  335. package/esm2022/lib/tree/tree-selection.service.mjs +3 -3
  336. package/esm2022/lib/tree/tree.component.mjs +9 -9
  337. package/esm2022/lib/tree/tree.module.mjs +4 -4
  338. package/esm2022/lib/tree/tree.service.mjs +3 -3
  339. package/fesm2022/igniteui-angular.mjs +1883 -1587
  340. package/fesm2022/igniteui-angular.mjs.map +1 -1
  341. package/package.json +1 -1
  342. package/schematics/tsconfig.tsbuildinfo +1 -1
@@ -616,10 +616,10 @@ export class IgxGridCRUDService extends IgxRowAddCrudState {
616
616
  }
617
617
  return false;
618
618
  }
619
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridCRUDService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
620
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridCRUDService }); }
619
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridCRUDService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
620
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridCRUDService }); }
621
621
  }
622
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridCRUDService, decorators: [{
622
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridCRUDService, decorators: [{
623
623
  type: Injectable
624
624
  }] });
625
625
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2NvbW1vbi9jcnVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVDQUF1QyxDQUFDOztBQUVyRSxNQUFNLE9BQU8sVUFBVTtJQU1uQixZQUFtQixFQUFPLEVBQVMsS0FBYSxFQUFTLElBQVMsRUFBUyxJQUFjO1FBQXRFLE9BQUUsR0FBRixFQUFFLENBQUs7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQVMsU0FBSSxHQUFKLElBQUksQ0FBSztRQUFTLFNBQUksR0FBSixJQUFJLENBQVU7UUFGbEYsaUJBQVksR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUdwQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVNLG1CQUFtQixDQUFDLGVBQWUsR0FBRyxJQUFJLEVBQUUsS0FBYTtRQUM1RCxNQUFNLElBQUksR0FBdUI7WUFDN0IsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ2QsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ25CLE9BQU8s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U0FDbkQ7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOzhHQS9JUSxrQkFBa0I7a0hBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSUdyaWRFZGl0RG9uZUV2ZW50QXJncywgSUdyaWRFZGl0RXZlbnRBcmdzLCBJUm93RGF0YUV2ZW50QXJncyB9IGZyb20gJy4uL2NvbW1vbi9ldmVudHMnO1xuaW1wb3J0IHsgR3JpZFR5cGUsIFJvd1R5cGUgfSBmcm9tICcuL2dyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvcHlEZXNjcmlwdG9ycywgaXNFcXVhbCwgaXNEYXRlIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEYXRlVGltZVV0aWwgfSBmcm9tICcuLi8uLi9kYXRlLWNvbW1vbi91dGlsL2RhdGUtdGltZS51dGlsJztcblxuZXhwb3J0IGNsYXNzIElneEVkaXRSb3cge1xuICAgIHB1YmxpYyB0cmFuc2FjdGlvblN0YXRlOiBhbnk7XG4gICAgcHVibGljIHN0YXRlOiBhbnk7XG4gICAgcHVibGljIG5ld0RhdGE6IGFueTtcbiAgICBwdWJsaWMgcm93Rm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgaWQ6IGFueSwgcHVibGljIGluZGV4OiBudW1iZXIsIHB1YmxpYyBkYXRhOiBhbnksIHB1YmxpYyBncmlkOiBHcmlkVHlwZSkge1xuICAgICAgICB0aGlzLnJvd0Zvcm1Hcm91cCA9IHRoaXMuZ3JpZC52YWxpZGF0aW9uLmNyZWF0ZShpZCwgZGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZUVkaXRFdmVudEFyZ3MoaW5jbHVkZU5ld1ZhbHVlID0gdHJ1ZSwgZXZlbnQ/OiBFdmVudCk6IElHcmlkRWRpdEV2ZW50QXJncyB7XG4gICAgICAgIGNvbnN0IGFyZ3M6IElHcmlkRWRpdEV2ZW50QXJncyA9IHtcbiAgICAgICAgICAgIHJvd0lEOiB0aGlzLmlkLFxuICAgICAgICAgICAgcHJpbWFyeUtleTogdGhpcy5pZCxcbiAgICAgICAgICAgIHJvd0RhdGE6IHRoaXMuZGF0YSxcbiAgICAgICAgICAgIG9sZFZhbHVlOiB0aGlzLmRhdGEsXG4gICAgICAgICAgICBjYW5jZWw6IGZhbHNlLFxuICAgICAgICAgICAgb3duZXI6IHRoaXMuZ3JpZCxcbiAgICAgICAgICAgIGlzQWRkUm93OiBmYWxzZSxcbiAgICAgICAgICAgIHZhbGlkOiB0aGlzLnJvd0Zvcm1Hcm91cC52YWxpZCxcbiAgICAgICAgICAgIGV2ZW50XG4gICAgICAgIH07XG4gICAgICAgIGlmIChpbmNsdWRlTmV3VmFsdWUpIHtcbiAgICAgICAgICAgIGFyZ3MubmV3VmFsdWUgPSB0aGlzLm5ld0RhdGEgPz8gdGhpcy5kYXRhO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcmdzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVEb25lRWRpdEV2ZW50QXJncyhjYWNoZWRSb3dEYXRhOiBhbnksIGV2ZW50PzogRXZlbnQpOiBJR3JpZEVkaXREb25lRXZlbnRBcmdzIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSB0aGlzLmdyaWQudHJhbnNhY3Rpb25zLmVuYWJsZWQgP1xuICAgICAgICAgICAgdGhpcy5ncmlkLnRyYW5zYWN0aW9ucy5nZXRBZ2dyZWdhdGVkVmFsdWUodGhpcy5pZCwgdHJ1ZSkgOiB0aGlzLmdyaWQuZ3JpZEFQSS5nZXRSb3dEYXRhKHRoaXMuaWQpO1xuICAgICAgICBjb25zdCByb3dEYXRhID0gdXBkYXRlZERhdGEgPz8gdGhpcy5ncmlkLmdyaWRBUEkuZ2V0Um93RGF0YSh0aGlzLmlkKTtcbiAgICAgICAgY29uc3QgYXJnczogSUdyaWRFZGl0RG9uZUV2ZW50QXJncyA9IHtcbiAgICAgICAgICAgIHJvd0lEOiB0aGlzLmlkLFxuICAgICAgICAgICAgcHJpbWFyeUtleTogdGhpcy5pZCxcbiAgICAgICAgICAgIHJvd0RhdGEsXG4gICAgICAgICAgICBvbGRWYWx1ZTogY2FjaGVkUm93RGF0YSxcbiAgICAgICAgICAgIG5ld1ZhbHVlOiB1cGRhdGVkRGF0YSxcbiAgICAgICAgICAgIG93bmVyOiB0aGlzLmdyaWQsXG4gICAgICAgICAgICBpc0FkZFJvdzogZmFsc2UsXG4gICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgIGV2ZW50XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJZ3hBZGRSb3cgZXh0ZW5kcyBJZ3hFZGl0Um93IHtcbiAgICBwdWJsaWMgaXNBZGRSb3cgPSB0cnVlO1xuXG4gICAgY29uc3RydWN0b3IoaWQ6IGFueSxcbiAgICAgICAgaW5kZXg6IG51bWJlcixcbiAgICAgICAgZGF0YTogYW55LFxuICAgICAgICBwdWJsaWMgcmVjb3JkUmVmOiBhbnksXG4gICAgICAgIGdyaWQ6IEdyaWRUeXBlKSB7XG4gICAgICAgIHN1cGVyKGlkLCBpbmRleCwgZGF0YSwgZ3JpZCk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGNyZWF0ZUVkaXRFdmVudEFyZ3MoaW5jbHVkZU5ld1ZhbHVlID0gdHJ1ZSwgZXZlbnQ/OiBFdmVudCk6IElHcmlkRWRpdEV2ZW50QXJncyB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSBzdXBlci5jcmVhdGVFZGl0RXZlbnRBcmdzKGluY2x1ZGVOZXdWYWx1ZSwgZXZlbnQpO1xuICAgICAgICBhcmdzLm9sZFZhbHVlID0gbnVsbDtcbiAgICAgICAgYXJncy5pc0FkZFJvdyA9IHRydWU7XG4gICAgICAgIHJldHVybiBhcmdzO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBjcmVhdGVEb25lRWRpdEV2ZW50QXJncyhjYWNoZWRSb3dEYXRhOiBhbnksIGV2ZW50PzogRXZlbnQpOiBJR3JpZEVkaXREb25lRXZlbnRBcmdzIHtcbiAgICAgICAgY29uc3QgYXJncyA9IHN1cGVyLmNyZWF0ZURvbmVFZGl0RXZlbnRBcmdzKG51bGwsIGV2ZW50KTtcbiAgICAgICAgYXJncy5pc0FkZFJvdyA9IHRydWU7XG4gICAgICAgIHJldHVybiBhcmdzO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZ3hBZGRSb3dQYXJlbnQge1xuICAgIHJvd0lEOiBzdHJpbmc7XG4gICAgaW5kZXg6IG51bWJlcjtcbiAgICBhc0NoaWxkOiBib29sZWFuO1xuICAgIGlzUGlubmVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgSWd4Q2VsbCB7XG4gICAgcHVibGljIHByaW1hcnlLZXk6IGFueTtcbiAgICBwdWJsaWMgc3RhdGU6IGFueTtcbiAgICBwdWJsaWMgcGVuZGluZ1ZhbHVlOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGlkLFxuICAgICAgICBwdWJsaWMgcm93SW5kZXg6IG51bWJlcixcbiAgICAgICAgcHVibGljIGNvbHVtbixcbiAgICAgICAgcHVibGljIHZhbHVlOiBhbnksXG4gICAgICAgIHB1YmxpYyBfZWRpdFZhbHVlOiBhbnksXG4gICAgICAgIHB1YmxpYyByb3dEYXRhOiBhbnksXG4gICAgICAgIHB1YmxpYyBncmlkOiBHcmlkVHlwZSkge1xuICAgICAgICB0aGlzLmdyaWQudmFsaWRhdGlvbi5jcmVhdGUoaWQucm93SUQsIHJvd0RhdGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdFZhbHVlKCkge1xuICAgICAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZ3JpZC52YWxpZGF0aW9uLmdldEZvcm1Db250cm9sKHRoaXMuaWQucm93SUQsIHRoaXMuY29sdW1uLmZpZWxkKTtcbiAgICAgICAgaWYgKGZvcm1Db250cm9sKSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybUNvbnRyb2wudmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGVkaXRWYWx1ZSh2YWx1ZSkge1xuICAgICAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZ3JpZC52YWxpZGF0aW9uLmdldEZvcm1Db250cm9sKHRoaXMuaWQucm93SUQsIHRoaXMuY29sdW1uLmZpZWxkKTtcblxuICAgICAgICBpZiAodGhpcy5ncmlkLnZhbGlkYXRpb25UcmlnZ2VyID09PSAnY2hhbmdlJykge1xuICAgICAgICAgICAgLy8gaW4gY2FzZSB0cmlnZ2VyIGlzIGNoYW5nZSwgbWFyayBhcyB0b3VjaGVkLlxuICAgICAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjYXN0VG9OdW1iZXIodmFsdWU6IGFueSk6IGFueSB7XG4gICAgICAgIGlmICh0aGlzLmNvbHVtbi5kYXRhVHlwZSA9PT0gJ251bWJlcicgJiYgIXRoaXMuY29sdW1uLmlubGluZUVkaXRvclRlbXBsYXRlKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gIWlzTmFOKHYpICYmIGlzRmluaXRlKHYpID8gdiA6IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVFZGl0RXZlbnRBcmdzKGluY2x1ZGVOZXdWYWx1ZSA9IHRydWUsIGV2ZW50PzogRXZlbnQpOiBJR3JpZEVkaXRFdmVudEFyZ3Mge1xuICAgICAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZ3JpZC52YWxpZGF0aW9uLmdldEZvcm1Db250cm9sKHRoaXMuaWQucm93SUQsIHRoaXMuY29sdW1uLmZpZWxkKTtcbiAgICAgICAgY29uc3QgYXJnczogSUdyaWRFZGl0RXZlbnRBcmdzID0ge1xuICAgICAgICAgICAgcm93SUQ6IHRoaXMuaWQucm93SUQsXG4gICAgICAgICAgICBwcmltYXJ5S2V5OiB0aGlzLmlkLnJvd0lELFxuICAgICAgICAgICAgY2VsbElEOiB0aGlzLmlkLFxuICAgICAgICAgICAgcm93RGF0YTogdGhpcy5yb3dEYXRhLFxuICAgICAgICAgICAgb2xkVmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICAgICAgICBjYW5jZWw6IGZhbHNlLFxuICAgICAgICAgICAgY29sdW1uOiB0aGlzLmNvbHVtbixcbiAgICAgICAgICAgIG93bmVyOiB0aGlzLmdyaWQsXG4gICAgICAgICAgICB2YWxpZDogZm9ybUNvbnRyb2wgPyBmb3JtQ29udHJvbC52YWxpZCA6IHRydWUsXG4gICAgICAgICAgICBldmVudFxuICAgICAgICB9O1xuICAgICAgICBpZiAoaW5jbHVkZU5ld1ZhbHVlKSB7XG4gICAgICAgICAgICBhcmdzLm5ld1ZhbHVlID0gdGhpcy5jYXN0VG9OdW1iZXIodGhpcy5lZGl0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcmdzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVEb25lRWRpdEV2ZW50QXJncyh2YWx1ZTogYW55LCBldmVudD86IEV2ZW50KTogSUdyaWRFZGl0RG9uZUV2ZW50QXJncyB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gdGhpcy5ncmlkLnRyYW5zYWN0aW9ucy5lbmFibGVkID9cbiAgICAgICAgICAgIHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZ2V0QWdncmVnYXRlZFZhbHVlKHRoaXMuaWQucm93SUQsIHRydWUpIDogdGhpcy5yb3dEYXRhO1xuICAgICAgICBjb25zdCByb3dEYXRhID0gdXBkYXRlZERhdGEgPT09IG51bGwgPyB0aGlzLmdyaWQuZ3JpZEFQSS5nZXRSb3dEYXRhKHRoaXMuaWQucm93SUQpIDogdXBkYXRlZERhdGE7XG4gICAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5ncmlkLnZhbGlkYXRpb24uZ2V0Rm9ybUNvbnRyb2wodGhpcy5pZC5yb3dJRCwgdGhpcy5jb2x1bW4uZmllbGQpO1xuICAgICAgICBjb25zdCBhcmdzOiBJR3JpZEVkaXREb25lRXZlbnRBcmdzID0ge1xuICAgICAgICAgICAgcm93SUQ6IHRoaXMuaWQucm93SUQsXG4gICAgICAgICAgICBwcmltYXJ5S2V5OiB0aGlzLmlkLnJvd0lELFxuICAgICAgICAgICAgY2VsbElEOiB0aGlzLmlkLFxuICAgICAgICAgICAgLy8gcm93RGF0YSAtIHNob3VsZCBiZSB0aGUgdXBkYXRlZC9jb21taXR0ZWQgcm93RGF0YSAtIHRoaXMgZWZmZWN0aXZlbHkgc2hvdWxkIGJlIHRoZSBuZXdWYWx1ZVxuICAgICAgICAgICAgLy8gdGhlIG9ubHkgY2FzZSB3ZSB1c2UgdGhpcy5yb3dEYXRhIGRpcmVjdGx5LCBpcyB3aGVuIHRoZXJlIGlzIG5vIHJvd0VkaXRpbmcgb3IgdHJhbnNhY3Rpb25zIGVuYWJsZWRcbiAgICAgICAgICAgIHJvd0RhdGEsXG4gICAgICAgICAgICBvbGRWYWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgICAgICAgIHZhbGlkOiBmb3JtQ29udHJvbCA/IGZvcm1Db250cm9sLnZhbGlkIDogdHJ1ZSxcbiAgICAgICAgICAgIG5ld1ZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW4sXG4gICAgICAgICAgICBvd25lcjogdGhpcy5ncmlkLFxuICAgICAgICAgICAgZXZlbnRcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSWd4Q2VsbENydWRTdGF0ZSB7XG4gICAgcHVibGljIGdyaWQ6IEdyaWRUeXBlO1xuICAgIHB1YmxpYyBjZWxsOiBJZ3hDZWxsIHwgbnVsbCA9IG51bGw7XG4gICAgcHVibGljIHJvdzogSWd4RWRpdFJvdyB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBpc0luQ29tcG9zaXRpb25Nb2RlID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgY3JlYXRlQ2VsbChjZWxsKTogSWd4Q2VsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNlbGwgPSBuZXcgSWd4Q2VsbChjZWxsLmNlbGxJRCB8fCBjZWxsLmlkLCBjZWxsLnJvdy5pbmRleCwgY2VsbC5jb2x1bW4sIGNlbGwudmFsdWUsIGNlbGwudmFsdWUsXG4gICAgICAgICAgICBjZWxsLnJvdy5kYXRhLCBjZWxsLmdyaWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVSb3coY2VsbDogSWd4Q2VsbCk6IElneEVkaXRSb3cge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3cgPSBuZXcgSWd4RWRpdFJvdyhjZWxsLmlkLnJvd0lELCBjZWxsLnJvd0luZGV4LCBjZWxsLnJvd0RhdGEsIGNlbGwuZ3JpZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNhbWVSb3cocm93SUQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm93ICYmIHRoaXMucm93LmlkID09PSByb3dJRDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2FtZUNlbGwoY2VsbDogSWd4Q2VsbCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuY2VsbC5pZC5yb3dJRCA9PT0gY2VsbC5pZC5yb3dJRCAmJlxuICAgICAgICAgICAgdGhpcy5jZWxsLmlkLmNvbHVtbklEID09PSBjZWxsLmlkLmNvbHVtbklEKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNlbGxJbkVkaXRNb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmNlbGw7XG4gICAgfVxuXG4gICAgcHVibGljIGJlZ2luQ2VsbEVkaXQoZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICBjb25zdCBhcmdzID0gdGhpcy5jZWxsLmNyZWF0ZUVkaXRFdmVudEFyZ3MoZmFsc2UsIGV2ZW50KTtcbiAgICAgICAgdGhpcy5ncmlkLmNlbGxFZGl0RW50ZXIuZW1pdChhcmdzKTtcblxuICAgICAgICBpZiAoYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kQ2VsbEVkaXQoKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcHVibGljIGNlbGxFZGl0KGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgYXJncyA9IHRoaXMuY2VsbC5jcmVhdGVFZGl0RXZlbnRBcmdzKHRydWUsIGV2ZW50KTtcbiAgICAgICAgdGhpcy5ncmlkLmNlbGxFZGl0LmVtaXQoYXJncyk7XG4gICAgICAgIHJldHVybiBhcmdzO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVDZWxsKGV4aXQ6IGJvb2xlYW4sIGV2ZW50PzogRXZlbnQpOiBJR3JpZEVkaXRFdmVudEFyZ3Mge1xuICAgICAgICBpZiAoIXRoaXMuY2VsbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmdyaWQudmFsaWRhdGlvbi5nZXRGb3JtQ29udHJvbCh0aGlzLmNlbGwuaWQucm93SUQsIHRoaXMuY2VsbC5jb2x1bW4uZmllbGQpO1xuICAgICAgICBpZiAodGhpcy5ncmlkLnZhbGlkYXRpb25UcmlnZ2VyID09PSAnYmx1cicgJiYgdGhpcy5jZWxsLnBlbmRpbmdWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBpbiBjYXNlIHRyaWdnZXIgaXMgYmx1ciwgdXBkYXRlIHZhbHVlIGlmIHRoZXJlJ3MgYSBwZW5kaW5nIG9uZSBhbmQgbWFyayBhcyB0b3VjaGVkLlxuICAgICAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5jZWxsLnBlbmRpbmdWYWx1ZSk7XG4gICAgICAgICAgICBmb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5ncmlkLnZhbGlkYXRpb25UcmlnZ2VyID09PSAnYmx1cicpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC50Ym9keS5uYXRpdmVFbGVtZW50LmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBkb25lQXJncztcbiAgICAgICAgaWYgKHRoaXMuY2VsbC5jb2x1bW4uZGF0YVR5cGUgPT09ICdkYXRlJyAmJiAhaXNEYXRlKHRoaXMuY2VsbC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGlmIChpc0VxdWFsKERhdGVUaW1lVXRpbC5wYXJzZUlzb0RhdGUodGhpcy5jZWxsLnZhbHVlKSwgdGhpcy5jZWxsLmVkaXRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBkb25lQXJncyA9IHRoaXMuZXhpdENlbGxFZGl0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9uZUFyZ3M7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRXF1YWwodGhpcy5jZWxsLnZhbHVlLCB0aGlzLmNlbGwuZWRpdFZhbHVlKSkge1xuICAgICAgICAgICAgZG9uZUFyZ3MgPSB0aGlzLmV4aXRDZWxsRWRpdChldmVudCk7XG4gICAgICAgICAgICByZXR1cm4gZG9uZUFyZ3M7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcmdzID0gdGhpcy5jZWxsRWRpdChldmVudCk7XG4gICAgICAgIGlmIChhcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdyaWQuZ3JpZEFQSS51cGRhdGVfY2VsbCh0aGlzLmNlbGwpO1xuXG4gICAgICAgIGRvbmVBcmdzID0gdGhpcy5jZWxsRWRpdERvbmUoZXZlbnQsIGZhbHNlKTtcbiAgICAgICAgaWYgKGV4aXQpIHtcbiAgICAgICAgICAgIGRvbmVBcmdzID0gdGhpcy5leGl0Q2VsbEVkaXQoZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgLi4uYXJncywgLi4uZG9uZUFyZ3MgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2VsbEVkaXREb25lKGV2ZW50LCBhZGRSb3c6IGJvb2xlYW4pOiBJR3JpZEVkaXREb25lRXZlbnRBcmdzIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmNlbGwuY2FzdFRvTnVtYmVyKHRoaXMuY2VsbC5lZGl0VmFsdWUpO1xuICAgICAgICBjb25zdCBkb25lQXJncyA9IHRoaXMuY2VsbC5jcmVhdGVEb25lRWRpdEV2ZW50QXJncyhuZXdWYWx1ZSwgZXZlbnQpO1xuICAgICAgICB0aGlzLmdyaWQuY2VsbEVkaXREb25lLmVtaXQoZG9uZUFyZ3MpO1xuICAgICAgICBpZiAoYWRkUm93KSB7XG4gICAgICAgICAgICBkb25lQXJncy5yb3dEYXRhID0gdGhpcy5yb3cuZGF0YTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZG9uZUFyZ3M7XG4gICAgfVxuXG4gICAgLyoqIEV4aXQgY2VsbCBlZGl0IG1vZGUgKi9cbiAgICBwdWJsaWMgZXhpdENlbGxFZGl0KGV2ZW50PzogRXZlbnQpOiBJR3JpZEVkaXREb25lRXZlbnRBcmdzIHtcbiAgICAgICAgaWYgKCF0aGlzLmNlbGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuY2VsbC5jYXN0VG9OdW1iZXIodGhpcy5jZWxsLmVkaXRWYWx1ZSk7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmNlbGw/LmNyZWF0ZURvbmVFZGl0RXZlbnRBcmdzKG5ld1ZhbHVlLCBldmVudCk7XG5cbiAgICAgICAgdGhpcy5jZWxsLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIHRoaXMuZ3JpZC5jZWxsRWRpdEV4aXQuZW1pdChhcmdzKTtcbiAgICAgICAgdGhpcy5lbmRDZWxsRWRpdCgpO1xuICAgICAgICByZXR1cm4gYXJncztcbiAgICB9XG5cblxuICAgIC8qKiBDbGVhcnMgY2VsbCBlZGl0aW5nIHN0YXRlICovXG4gICAgcHVibGljIGVuZENlbGxFZGl0KCkge1xuICAgICAgICB0aGlzLmNlbGwgPSBudWxsO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHRhcmdldGVkIGNlbGwgaXMgaW4gZWRpdCBtb2RlICovXG4gICAgcHVibGljIHRhcmdldEluRWRpdChyb3dJbmRleDogbnVtYmVyLCBjb2x1bW5JbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5jZWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5jZWxsLmNvbHVtbi5pbmRleCA9PT0gY29sdW1uSW5kZXggJiYgdGhpcy5jZWxsLnJvd0luZGV4ID09PSByb3dJbmRleDtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgSWd4Um93Q3J1ZFN0YXRlIGV4dGVuZHMgSWd4Q2VsbENydWRTdGF0ZSB7XG4gICAgcHVibGljIGNsb3NlUm93RWRpdGluZ092ZXJsYXkgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgcHJpdmF0ZSBfcm93RWRpdGluZ0Jsb2NrZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9yb3dFZGl0aW5nU3RhcnRlZCA9IGZhbHNlO1xuXG4gICAgcHVibGljIGdldCBwcmltYXJ5S2V5KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQucHJpbWFyeUtleTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJvd0luRWRpdE1vZGUoKTogUm93VHlwZSB7XG4gICAgICAgIGNvbnN0IGVkaXRSb3dTdGF0ZSA9IHRoaXMucm93O1xuICAgICAgICByZXR1cm4gZWRpdFJvd1N0YXRlICE9PSBudWxsID8gdGhpcy5ncmlkLnJvd0xpc3QuZmluZChlID0+IGUua2V5ID09PSBlZGl0Um93U3RhdGUuaWQpIDogbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJvd0VkaXRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQucm93RWRpdGFibGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBub25FZGl0YWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5yb3dFZGl0YWJsZSAmJiAodGhpcy5ncmlkLnByaW1hcnlLZXkgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmdyaWQucHJpbWFyeUtleSA9PT0gbnVsbCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByb3dFZGl0aW5nQmxvY2tlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd0VkaXRpbmdCbG9ja2VkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgcm93RWRpdGluZ0Jsb2NrZWQodmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Jvd0VkaXRpbmdCbG9ja2VkID0gdmFsO1xuICAgIH1cblxuICAgIC8qKiBFbnRlcnMgcm93IGVkaXQgbW9kZSAqL1xuICAgIHB1YmxpYyBiZWdpblJvd0VkaXQoZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICBpZiAoIXRoaXMucm93IHx8ICEodGhpcy5yb3cuZ2V0Q2xhc3NOYW1lKCkgPT09IElneEVkaXRSb3cubmFtZSkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5yb3cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVJvdyh0aGlzLmNlbGwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3Jvd0VkaXRpbmdTdGFydGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93QXJncyA9IHRoaXMucm93LmNyZWF0ZUVkaXRFdmVudEFyZ3MoZmFsc2UsIGV2ZW50KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5yb3dFZGl0RW50ZXIuZW1pdChyb3dBcmdzKTtcbiAgICAgICAgICAgICAgICBpZiAocm93QXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmRFZGl0TW9kZSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9yb3dFZGl0aW5nU3RhcnRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucm93LnRyYW5zYWN0aW9uU3RhdGUgPSB0aGlzLmdyaWQudHJhbnNhY3Rpb25zLmdldEFnZ3JlZ2F0ZWRWYWx1ZSh0aGlzLnJvdy5pZCwgdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmdyaWQudHJhbnNhY3Rpb25zLnN0YXJ0UGVuZGluZygpO1xuICAgICAgICAgICAgdGhpcy5ncmlkLm9wZW5Sb3dPdmVybGF5KHRoaXMucm93LmlkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByb3dFZGl0KGV2ZW50OiBFdmVudCk6IElHcmlkRWRpdEV2ZW50QXJncyB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSB0aGlzLnJvdy5jcmVhdGVFZGl0RXZlbnRBcmdzKHRydWUsIGV2ZW50KTtcbiAgICAgICAgdGhpcy5ncmlkLnJvd0VkaXQuZW1pdChhcmdzKTtcbiAgICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVJvdyhjb21taXQ6IGJvb2xlYW4sIGV2ZW50PzogRXZlbnQpOiBJR3JpZEVkaXRFdmVudEFyZ3Mge1xuICAgICAgICBpZiAoIXRoaXMuZ3JpZC5yb3dFZGl0YWJsZSB8fFxuICAgICAgICAgICAgdGhpcy5ncmlkLnJvd0VkaXRpbmdPdmVybGF5ICYmXG4gICAgICAgICAgICB0aGlzLmdyaWQucm93RWRpdGluZ092ZXJsYXkuY29sbGFwc2VkIHx8ICF0aGlzLnJvdykge1xuICAgICAgICAgICAgcmV0dXJuIHt9IGFzIElHcmlkRWRpdEV2ZW50QXJncztcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhcmdzO1xuICAgICAgICBpZiAoY29tbWl0KSB7XG4gICAgICAgICAgICB0aGlzLnJvdy5uZXdEYXRhID0gdGhpcy5ncmlkLnRyYW5zYWN0aW9ucy5nZXRBZ2dyZWdhdGVkVmFsdWUodGhpcy5yb3cuaWQsIHRydWUpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVSb3dFZGl0RGF0YSh0aGlzLnJvdywgdGhpcy5yb3cubmV3RGF0YSk7XG4gICAgICAgICAgICBhcmdzID0gdGhpcy5yb3dFZGl0KGV2ZW50KTtcbiAgICAgICAgICAgIGlmIChhcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhcmdzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYXJncyA9IHRoaXMuZW5kUm93VHJhbnNhY3Rpb24oY29tbWl0LCBldmVudCk7XG5cbiAgICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZW5kUm93VHJhbnNhY3Rpb24oY29tbWl0OiBib29sZWFuLCBldmVudD86IEV2ZW50KTogSUdyaWRFZGl0RXZlbnRBcmdzIHtcbiAgICAgICAgdGhpcy5yb3cubmV3RGF0YSA9IHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZ2V0QWdncmVnYXRlZFZhbHVlKHRoaXMucm93LmlkLCB0cnVlKTtcbiAgICAgICAgbGV0IHJvd0VkaXRBcmdzID0gdGhpcy5yb3cuY3JlYXRlRWRpdEV2ZW50QXJncyh0cnVlLCBldmVudCk7XG5cbiAgICAgICAgbGV0IG5vbkNhbmNlbGFibGVBcmdzO1xuICAgICAgICBpZiAoIWNvbW1pdCkge1xuICAgICAgICAgICAgdGhpcy5ncmlkLnRyYW5zYWN0aW9ucy5lbmRQZW5kaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIGNvbnN0IGlzQWRkUm93ID0gdGhpcy5yb3cgJiYgdGhpcy5yb3cuZ2V0Q2xhc3NOYW1lKCkgPT09IElneEFkZFJvdy5uYW1lO1xuICAgICAgICAgICAgY29uc3QgaWQgPSB0aGlzLnJvdyA/IHRoaXMucm93LmlkIDogdGhpcy5jZWxsLmlkLnJvd0lEO1xuICAgICAgICAgICAgaWYgKGlzQWRkUm93KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLnZhbGlkYXRpb24uY2xlYXIoaWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWQudmFsaWRhdGlvbi51cGRhdGUoaWQsIHJvd0VkaXRBcmdzLm9sZFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJvdy5nZXRDbGFzc05hbWUoKSA9PT0gSWd4RWRpdFJvdy5uYW1lKSB7XG4gICAgICAgICAgICByb3dFZGl0QXJncyA9IHRoaXMuZ3JpZC5ncmlkQVBJLnVwZGF0ZV9yb3codGhpcy5yb3csIHRoaXMucm93Lm5ld0RhdGEsIGV2ZW50KTtcbiAgICAgICAgICAgIG5vbkNhbmNlbGFibGVBcmdzID0gdGhpcy5yb3dFZGl0RG9uZShyb3dFZGl0QXJncy5vbGRWYWx1ZSwgZXZlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgcm93QWRkQXJncyA9IHRoaXMucm93LmNyZWF0ZUVkaXRFdmVudEFyZ3ModHJ1ZSwgZXZlbnQpO1xuICAgICAgICAgICAgdGhpcy5ncmlkLnJvd0FkZC5lbWl0KHJvd0FkZEFyZ3MpO1xuICAgICAgICAgICAgaWYgKHJvd0FkZEFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvd0FkZEFyZ3M7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZW5kUGVuZGluZyhmYWxzZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHBhcmVudElkID0gdGhpcy5nZXRQYXJlbnRSb3dJZCgpO1xuICAgICAgICAgICAgdGhpcy5ncmlkLmdyaWRBUEkuYWRkUm93VG9EYXRhKHRoaXMucm93Lm5ld0RhdGEgPz8gdGhpcy5yb3cuZGF0YSwgcGFyZW50SWQpO1xuICAgICAgICAgICAgdGhpcy5ncmlkLnRyaWdnZXJQaXBlcygpO1xuXG4gICAgICAgICAgICBub25DYW5jZWxhYmxlQXJncyA9IHRoaXMucm93RWRpdERvbmUobnVsbCwgZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9uQ2FuY2VsYWJsZUFyZ3MgPSB0aGlzLmV4aXRSb3dFZGl0KHJvd0VkaXRBcmdzLm9sZFZhbHVlLCBldmVudCk7XG5cbiAgICAgICAgcmV0dXJuIHsgLi4ubm9uQ2FuY2VsYWJsZUFyZ3MsIC4uLnJvd0VkaXRBcmdzIH07XG4gICAgfVxuXG4gICAgcHVibGljIHJvd0VkaXREb25lKGNhY2hlZFJvd0RhdGEsIGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBkb25lQXJncyA9IHRoaXMucm93LmNyZWF0ZURvbmVFZGl0RXZlbnRBcmdzKGNhY2hlZFJvd0RhdGEsIGV2ZW50KTtcbiAgICAgICAgdGhpcy5ncmlkLnJvd0VkaXREb25lLmVtaXQoZG9uZUFyZ3MpO1xuICAgICAgICByZXR1cm4gZG9uZUFyZ3M7XG4gICAgfVxuXG5cbiAgICAvKiogRXhpdCByb3cgZWRpdCBtb2RlICovXG4gICAgcHVibGljIGV4aXRSb3dFZGl0KGNhY2hlZFJvd0RhdGEsIGV2ZW50PzogRXZlbnQpOiBJR3JpZEVkaXREb25lRXZlbnRBcmdzIHtcbiAgICAgICAgY29uc3Qgbm9uQ2FuY2VsYWJsZUFyZ3MgPSB0aGlzLnJvdy5jcmVhdGVEb25lRWRpdEV2ZW50QXJncyhjYWNoZWRSb3dEYXRhLCBldmVudCk7XG4gICAgICAgIHRoaXMuZ3JpZC5yb3dFZGl0RXhpdC5lbWl0KG5vbkNhbmNlbGFibGVBcmdzKTtcbiAgICAgICAgdGhpcy5ncmlkLmNsb3NlUm93RWRpdGluZ092ZXJsYXkoKTtcblxuICAgICAgICB0aGlzLmVuZFJvd0VkaXQoKTtcbiAgICAgICAgcmV0dXJuIG5vbkNhbmNlbGFibGVBcmdzO1xuICAgIH1cblxuICAgIC8qKiBDbGVhcnMgcm93IGVkaXRpbmcgc3RhdGUgKi9cbiAgICBwdWJsaWMgZW5kUm93RWRpdCgpIHtcbiAgICAgICAgdGhpcy5yb3cgPSBudWxsO1xuICAgICAgICB0aGlzLnJvd0VkaXRpbmdCbG9ja2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3Jvd0VkaXRpbmdTdGFydGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIENsZWFycyBjZWxsIGFuZCByb3cgZWRpdGluZyBzdGF0ZSBhbmQgY2xvc2VzIHJvdyBlZGl0aW5nIHRlbXBsYXRlIGlmIGl0IGlzIG9wZW4gKi9cbiAgICBwdWJsaWMgZW5kRWRpdE1vZGUoKSB7XG4gICAgICAgIHRoaXMuZW5kQ2VsbEVkaXQoKTtcbiAgICAgICAgaWYgKHRoaXMuZ3JpZC5yb3dFZGl0YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5lbmRSb3dFZGl0KCk7XG4gICAgICAgICAgICB0aGlzLmdyaWQuY2xvc2VSb3dFZGl0aW5nT3ZlcmxheSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVJvd0VkaXREYXRhKHJvdzogSWd4RWRpdFJvdywgdmFsdWU/OiBhbnkpIHtcbiAgICAgICAgY29uc3QgZ3JpZCA9IHRoaXMuZ3JpZDtcblxuICAgICAgICBjb25zdCByb3dJbkVkaXRNb2RlID0gZ3JpZC5ncmlkQVBJLmNydWRTZXJ2aWNlLnJvdztcbiAgICAgICAgcm93Lm5ld0RhdGEgPSB2YWx1ZSA/PyByb3dJbkVkaXRNb2RlLnRyYW5zYWN0aW9uU3RhdGU7XG5cblxuICAgICAgICBpZiAocm93SW5FZGl0TW9kZSAmJiByb3cuaWQgPT09IHJvd0luRWRpdE1vZGUuaWQpIHtcbiAgICAgICAgICAgIC8vIGRvIG5vdCB1c2Ugc3ByZWFkIG9wZXJhdG9yIGhlcmUgYXMgaXQgd2lsbCBjb3B5IGV2ZXJ5dGhpbmcgb3ZlciBhbiBlbXB0eSBvYmplY3Qgd2l0aCBubyBkZXNjcmlwdG9yc1xuICAgICAgICAgICAgcm93LmRhdGEgPSBPYmplY3QuYXNzaWduKGNvcHlEZXNjcmlwdG9ycyhyb3cuZGF0YSksIHJvdy5kYXRhLCByb3dJbkVkaXRNb2RlLnRyYW5zYWN0aW9uU3RhdGUpO1xuICAgICAgICAgICAgLy8gVE9ETzogV29ya2Fyb3VuZCBmb3IgdXBkYXRpbmcgYSByb3cgaW4gZWRpdCBtb2RlIHRocm91Z2ggdGhlIEFQSVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ3JpZC50cmFuc2FjdGlvbnMuZW5hYmxlZCkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSBncmlkLnRyYW5zYWN0aW9ucy5nZXRTdGF0ZShyb3cuaWQpO1xuICAgICAgICAgICAgcm93LmRhdGEgPSBzdGF0ZSA/IE9iamVjdC5hc3NpZ24oe30sIHJvdy5kYXRhLCBzdGF0ZS52YWx1ZSkgOiByb3cuZGF0YTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRQYXJlbnRSb3dJZCgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSWd4Um93QWRkQ3J1ZFN0YXRlIGV4dGVuZHMgSWd4Um93Q3J1ZFN0YXRlIHtcbiAgICBwdWJsaWMgYWRkUm93UGFyZW50OiBJZ3hBZGRSb3dQYXJlbnQgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgY3JlYXRlQWRkUm93KHBhcmVudFJvdzogUm93VHlwZSwgYXNDaGlsZD86IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5jcmVhdGVBZGRSb3dQYXJlbnQocGFyZW50Um93LCBhc0NoaWxkKTtcblxuICAgICAgICBjb25zdCBuZXdSZWMgPSB0aGlzLmdyaWQuZ2V0RW1wdHlSZWNvcmRPYmplY3RGb3IocGFyZW50Um93KTtcbiAgICAgICAgY29uc3QgYWRkUm93SW5kZXggPSB0aGlzLmFkZFJvd1BhcmVudC5pbmRleCArIDE7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdyA9IG5ldyBJZ3hBZGRSb3cobmV3UmVjLnJvd0lELCBhZGRSb3dJbmRleCwgbmV3UmVjLmRhdGEsIG5ld1JlYy5yZWNvcmRSZWYsIHRoaXMuZ3JpZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgY3JlYXRlQWRkUm93UGFyZW50KHJvdzogUm93VHlwZSwgbmV3Um93QXNDaGlsZD86IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3Qgcm93SW5kZXggPSByb3cgPyByb3cuaW5kZXggOiAtMTtcbiAgICAgICAgY29uc3Qgcm93SWQgPSByb3cgPyByb3cua2V5IDogKHJvd0luZGV4ID49IDAgPyB0aGlzLmdyaWQucm93TGlzdC5sYXN0LmtleSA6IG51bGwpO1xuXG4gICAgICAgIGNvbnN0IGlzSW5QaW5uZWRBcmVhID0gdGhpcy5ncmlkLmlzUmVjb3JkUGlubmVkQnlWaWV3SW5kZXgocm93SW5kZXgpO1xuICAgICAgICBjb25zdCBwaW5JbmRleCA9IHRoaXMuZ3JpZC5waW5uZWRSZWNvcmRzLmZpbmRJbmRleCh4ID0+IHhbdGhpcy5wcmltYXJ5S2V5XSA9PT0gcm93SWQpO1xuICAgICAgICBjb25zdCB1bnBpbkluZGV4ID0gdGhpcy5ncmlkLmdldFVucGlubmVkSW5kZXhCeUlkKHJvd0lkKTtcbiAgICAgICAgdGhpcy5hZGRSb3dQYXJlbnQgPSB7XG4gICAgICAgICAgICByb3dJRDogcm93SWQsXG4gICAgICAgICAgICBpbmRleDogaXNJblBpbm5lZEFyZWEgPyBwaW5JbmRleCA6IHVucGluSW5kZXgsXG4gICAgICAgICAgICBhc0NoaWxkOiBuZXdSb3dBc0NoaWxkLFxuICAgICAgICAgICAgaXNQaW5uZWQ6IGlzSW5QaW5uZWRBcmVhXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZW5kUm93VHJhbnNhY3Rpb24oY29tbWl0OiBib29sZWFuLCBldmVudD86IEV2ZW50KTogSUdyaWRFZGl0RXZlbnRBcmdzIHtcbiAgICAgICAgY29uc3QgaXNBZGRSb3cgPSB0aGlzLnJvdyAmJiB0aGlzLnJvdy5nZXRDbGFzc05hbWUoKSA9PT0gSWd4QWRkUm93Lm5hbWU7XG4gICAgICAgIGlmIChpc0FkZFJvdykge1xuICAgICAgICAgICAgdGhpcy5ncmlkLnJvd0FkZGVkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKChhZGRSb3dBcmdzOiBJUm93RGF0YUV2ZW50QXJncykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvd0RhdGEgPSBhZGRSb3dBcmdzLmRhdGE7XG4gICAgICAgICAgICAgICAgY29uc3QgcGlubmVkSW5kZXggPSB0aGlzLmdyaWQucGlubmVkUmVjb3Jkcy5maW5kSW5kZXgoeCA9PiB4W3RoaXMucHJpbWFyeUtleV0gPT09IHJvd0RhdGFbdGhpcy5wcmltYXJ5S2V5XSk7XG4gICAgICAgICAgICAgICAgLy8gQSBjaGVjayB3aGV0aGVyIHRoZSByb3cgaXMgaW4gdGhlIGN1cnJlbnQgdmlld1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpZXdJbmRleCA9IHBpbm5lZEluZGV4ICE9PSAtMSA/IHBpbm5lZEluZGV4IDogdGhpcy5fZmluZFJlY29yZEluZGV4SW5WaWV3KHJvd0RhdGEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFJbmRleCA9IHRoaXMuZ3JpZC5maWx0ZXJlZFNvcnRlZERhdGEuZmluZEluZGV4KGRhdGEgPT4gZGF0YVt0aGlzLnByaW1hcnlLZXldID09PSByb3dEYXRhW3RoaXMucHJpbWFyeUtleV0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzSW5WaWV3ID0gdmlld0luZGV4ICE9PSAtMSAmJiAhdGhpcy5ncmlkLm5hdmlnYXRpb24uc2hvdWxkUGVyZm9ybVZlcnRpY2FsU2Nyb2xsKHZpZXdJbmRleCwgMCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2hvd0luZGV4ID0gaXNJblZpZXcgPyAtMSA6IGRhdGFJbmRleDtcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWQuc2hvd1NuYWNrYmFyRm9yKHNob3dJbmRleCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFyZ3MgPSBzdXBlci5lbmRSb3dUcmFuc2FjdGlvbihjb21taXQsIGV2ZW50KTtcbiAgICAgICAgaWYgKGFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJncztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0FkZFJvdykge1xuICAgICAgICAgICAgdGhpcy5lbmRBZGRSb3coKTtcbiAgICAgICAgICAgIGlmIChjb21taXQpIHtcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmdyaWQucm93QWRkZWROb3RpZmllci5uZXh0KHsgZGF0YTogYXJncy5uZXdWYWx1ZSwgb3duZXI6IHRoaXMuZ3JpZCB9KTtcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmdyaWQucm93QWRkZWQuZW1pdCh7IGRhdGE6IGFyZ3MubmV3VmFsdWUsIG93bmVyOiB0aGlzLmdyaWQgfSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93QWRkZWRFdmVudEFyZ3M6IElSb3dEYXRhRXZlbnRBcmdzID0geyBkYXRhOiBhcmdzLm5ld1ZhbHVlLCBvd25lcjogdGhpcy5ncmlkLCBwcmltYXJ5S2V5OiBhcmdzLm5ld1ZhbHVlW3RoaXMuZ3JpZC5wcmltYXJ5S2V5XSB9XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLnJvd0FkZGVkTm90aWZpZXIubmV4dChyb3dBZGRlZEV2ZW50QXJncyk7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLnJvd0FkZGVkLmVtaXQocm93QWRkZWRFdmVudEFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZW5kQWRkUm93KCkge1xuICAgICAgICB0aGlzLmFkZFJvd1BhcmVudCA9IG51bGw7XG4gICAgICAgIHRoaXMuZ3JpZC50cmlnZ2VyUGlwZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICogVE9ETzogY29uc2lkZXIgY2hhbmdpbmcgbW9kaWZpZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgX2ZpbmRSZWNvcmRJbmRleEluVmlldyhyZWMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5kYXRhVmlldy5maW5kSW5kZXgoZGF0YSA9PiBkYXRhW3RoaXMucHJpbWFyeUtleV0gPT09IHJlY1t0aGlzLnByaW1hcnlLZXldKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZ2V0UGFyZW50Um93SWQoKSB7XG4gICAgICAgIGlmICh0aGlzLmFkZFJvd1BhcmVudC5hc0NoaWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGRSb3dQYXJlbnQuYXNDaGlsZCA/IHRoaXMuYWRkUm93UGFyZW50LnJvd0lEIDogdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYWRkUm93UGFyZW50LnJvd0lEICE9PSBudWxsICYmIHRoaXMuYWRkUm93UGFyZW50LnJvd0lEICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNwYXduZWRGb3JSZWNvcmQgPSB0aGlzLmdyaWQuZ3JpZEFQSS5nZXRfcmVjX2J5X2lkKHRoaXMuYWRkUm93UGFyZW50LnJvd0lEKTtcbiAgICAgICAgICAgIHJldHVybiBzcGF3bmVkRm9yUmVjb3JkPy5wYXJlbnQ/LnJvd0lEO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSWd4R3JpZENSVURTZXJ2aWNlIGV4dGVuZHMgSWd4Um93QWRkQ3J1ZFN0YXRlIHtcblxuICAgIHB1YmxpYyBlbnRlckVkaXRNb2RlKGNlbGwsIGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNJbkNvbXBvc2l0aW9uTW9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubm9uRWRpdGFibGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignVGhlIGdyaWQgbXVzdCBoYXZlIGEgYHByaW1hcnlLZXlgIHNwZWNpZmllZCB3aGVuIHVzaW5nIGByb3dFZGl0YWJsZWAhJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jZWxsSW5FZGl0TW9kZSkge1xuICAgICAgICAgICAgLy8gVE9ETzogY2FzZSBzb2xlbHkgZm9yIGYyL2VudGVyIG5hdiB0aGF0IHVzZXMgZW50ZXJFZGl0TW9kZSBhcyB0b2dnbGUuIFJlZmFjdG9yLlxuICAgICAgICAgICAgY29uc3QgY2FuY2VsZWQgPSB0aGlzLmVuZEVkaXQodHJ1ZSwgZXZlbnQpO1xuXG4gICAgICAgICAgICBpZiAoIWNhbmNlbGVkIHx8ICF0aGlzLmNlbGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWQudGJvZHkubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMucm93RWRpdGluZykge1xuICAgICAgICAgICAgICAgIC8vIFRPRE8gcm93RGF0YVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJvdyAmJiAhdGhpcy5zYW1lUm93KGNlbGw/LmNlbGxJRD8ucm93SUQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93RWRpdGluZ0Jsb2NrZWQgPSB0aGlzLmVuZEVkaXQodHJ1ZSwgZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yb3dFZGl0aW5nQmxvY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd0VkaXRpbmdCbG9ja2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW5kUm93RWRpdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUNlbGwoY2VsbCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBjYW5jZWxlZCA9IHRoaXMuYmVnaW5Sb3dFZGl0KGV2ZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoIWNhbmNlbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW5DZWxsRWRpdChldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlQ2VsbChjZWxsKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJlZ2luQ2VsbEVkaXQoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW50ZXJzIGFkZCByb3cgbW9kZSBieSBjcmVhdGluZyB0ZW1wb3JhcnkgZHVtbXkgc28gdGhlIHVzZXIgY2FuIGZpbGwgaW4gbmV3IHJvdyBjZWxscy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJlbnRSb3cgUGFyZW50IHJvdyBhZnRlciB3aGljaCB0aGUgQWRkIFJvdyBVSSB3aWxsIGJlIHJlbmRlcmVkLlxuICAgICAqICAgICAgICAgICAgICAgICAgSWYgYG51bGxgIHdpbGwgc2hvdyBpdCBhdCB0aGUgYm90dG9tIGFmdGVyIGFsbCByb3dzIChvciB0b3AgaWYgdGhlcmUgYXJlIG5vdCByb3dzKS5cbiAgICAgKiBAcGFyYW0gYXNDaGlsZCBTcGVjaWZpZXMgaWYgdGhlIG5ldyByb3cgc2hvdWxkIGJlIGFkZGVkIGFzIGEgY2hpbGQgdG8gYSB0cmVlIHJvdy5cbiAgICAgKiBAcGFyYW0gZXZlbnQgQmFzZSBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgYWRkIHJvdyBtb2RlLlxuICAgICAqL1xuICAgIHB1YmxpYyBlbnRlckFkZFJvd01vZGUocGFyZW50Um93OiBSb3dUeXBlLCBhc0NoaWxkPzogYm9vbGVhbiwgZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICBpZiAoIXRoaXMucm93RWRpdGluZyAmJiAodGhpcy5ncmlkLnByaW1hcnlLZXkgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmdyaWQucHJpbWFyeUtleSA9PT0gbnVsbCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignVGhlIGdyaWQgbXVzdCB1c2Ugcm93IGVkaXQgbW9kZSB0byBwZXJmb3JtIHJvdyBhZGRpbmchIFBsZWFzZSBzZXQgcm93RWRpdGFibGUgdG8gdHJ1ZS4nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVuZEVkaXQodHJ1ZSwgZXZlbnQpO1xuXG4gICAgICAgIGlmIChwYXJlbnRSb3cgIT0gbnVsbCAmJiB0aGlzLmdyaWQuZXhwYW5zaW9uU3RhdGVzLmdldChwYXJlbnRSb3cua2V5KSkge1xuICAgICAgICAgICAgdGhpcy5ncmlkLmNvbGxhcHNlUm93KHBhcmVudFJvdy5rZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jcmVhdGVBZGRSb3cocGFyZW50Um93LCBhc0NoaWxkKTtcblxuICAgICAgICB0aGlzLmdyaWQudHJhbnNhY3Rpb25zLnN0YXJ0UGVuZGluZygpO1xuICAgICAgICBpZiAodGhpcy5hZGRSb3dQYXJlbnQuaXNQaW5uZWQpIHtcbiAgICAgICAgICAgIC8vIElmIHBhcmVudCBpcyBwaW5uZWQsIGFkZCB0aGUgbmV3IHJvdyB0byBwaW5uZWQgcmVjb3Jkc1xuICAgICAgICAgICAgKHRoaXMuZ3JpZCBhcyBhbnkpLl9waW5uZWRSZWNvcmRJRHMuc3BsaWNlKHRoaXMucm93LmluZGV4LCAwLCB0aGlzLnJvdy5pZCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdyaWQudHJpZ2dlclBpcGVzKCk7XG4gICAgICAgIHRoaXMuZ3JpZC5ub3RpZnlDaGFuZ2VzKHRydWUpO1xuXG4gICAgICAgIHRoaXMuZ3JpZC5uYXZpZ2F0ZVRvKHRoaXMucm93LmluZGV4LCAtMSk7XG4gICAgICAgIC8vIHdoZW4gc2VsZWN0aW5nIHRoZSBkdW1teSByb3cgd2UgbmVlZCB0byBhZGp1c3QgZm9yIHRvcCBwaW5uZWQgcm93c1xuICAgICAgICBjb25zdCBpbmRleEFkanVzdCA9IHRoaXMuZ3JpZC5pc1Jvd1Bpbm5pbmdUb1RvcCA/XG4gICAgICAgICAgICAoIXRoaXMuYWRkUm93UGFyZW50LmlzUGlubmVkID8gdGhpcy5ncmlkLnBpbm5lZFJvd3MubGVuZ3RoIDogMCkgOlxuICAgICAgICAgICAgKCF0aGlzLmFkZFJvd1BhcmVudC5pc1Bpbm5lZCA/IDAgOiB0aGlzLmdyaWQudW5waW5uZWRSZWNvcmRzLmxlbmd0aCk7XG5cbiAgICAgICAgLy8gVE9ETzogVHlwZSB0aGlzIHdpdGhvdXQgc2hvdmluZyBhIGJ1bmNoIG9mIGludGVybmFsIHByb3BlcnRpZXMgaW4gdGhlIHJvdyB0eXBlXG4gICAgICAgIGNvbnN0IGR1bW15Um93ID0gdGhpcy5ncmlkLmdyaWRBUEkuZ2V0X3Jvd19ieV9pbmRleCh0aGlzLnJvdy5pbmRleCArIGluZGV4QWRqdXN0KSBhcyBhbnk7XG4gICAgICAgIGR1bW15Um93LnRyaWdnZXJBZGRBbmltYXRpb24oKTtcbiAgICAgICAgZHVtbXlSb3cuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgZHVtbXlSb3cuYWRkQW5pbWF0aW9uRW5kLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNlbGwgPSBkdW1teVJvdy5jZWxscy5maW5kKGMgPT4gYy5lZGl0YWJsZSk7XG4gICAgICAgICAgICBpZiAoY2VsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5ncmlkQVBJLnVwZGF0ZV9jZWxsKHRoaXMuY2VsbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRlckVkaXRNb2RlKGNlbGwsIGV2ZW50KTtcbiAgICAgICAgICAgICAgICBjZWxsLmFjdGl2YXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmlzaGVzIHRoZSByb3cgdHJhbnNhY3Rpb25zIG9uIHRoZSBjdXJyZW50IHJvdyBhbmQgcmV0dXJucyB3aGV0aGVyIHRoZSBncmlkIGVkaXRpbmcgd2FzIGNhbmNlbGVkLlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBJZiBgY29tbWl0ID09PSB0cnVlYCwgcGFzc2VzIHRoZW0gZnJvbSB0aGUgcGVuZGluZyBzdGF0ZSB0byB0aGUgZGF0YSAob3IgdHJhbnNhY3Rpb24gc2VydmljZSlcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZ3hCdXR0b24gKGNsaWNrKT1cImdyaWQuZW5kRWRpdCh0cnVlKVwiPkNvbW1pdCBSb3c8L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKiBAcGFyYW0gY29tbWl0XG4gICAgICovXG4gICAgLy8gVE9ETzogSW1wbGVtZW50IHRoZSBzYW1lIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXRob2Qgd2l0aG91dCBldnQgZW1pc3Npb24uXG4gICAgcHVibGljIGVuZEVkaXQoY29tbWl0ID0gdHJ1ZSwgZXZlbnQ/OiBFdmVudCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMucm93ICYmICF0aGlzLmNlbGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhcmdzO1xuICAgICAgICBpZiAoY29tbWl0KSB7XG4gICAgICAgICAgICBhcmdzID0gdGhpcy51cGRhdGVDZWxsKHRydWUsIGV2ZW50KTtcbiAgICAgICAgICAgIGlmIChhcmdzICYmIGFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3MuY2FuY2VsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gbmVlZGVkZSBiZWNhdXNlIHRoaXMuY2VsbCBpcyBudWxsIGFmdGVyIGV4aXRDZWxsRWRpdFxuICAgICAgICAgICAgLy8gdGh1cyB0aGUgbmV4dCBpZiBpcyBhbHdheXMgZmFsc2VcbiAgICAgICAgICAgIGNvbnN0IGNlbGwgPSB0aGlzLmNlbGw7XG4gICAgICAgICAgICB0aGlzLmV4aXRDZWxsRWRpdChldmVudCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZ3JpZC5yb3dFZGl0YWJsZSAmJiBjZWxsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdyaWQudHJhbnNhY3Rpb25zLmdldEFnZ3JlZ2F0ZWRWYWx1ZShjZWxsLmlkLnJvd0lELCB0cnVlKSB8fCBjZWxsLnJvd0RhdGE7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkLnZhbGlkYXRpb24udXBkYXRlKGNlbGwuaWQucm93SUQsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGFyZ3MgPSB0aGlzLnVwZGF0ZVJvdyhjb21taXQsIGV2ZW50KTtcbiAgICAgICAgdGhpcy5yb3dFZGl0aW5nQmxvY2tlZCA9IGFyZ3MuY2FuY2VsO1xuICAgICAgICBpZiAoYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWN0aXZlQ2VsbCA9IHRoaXMuZ3JpZC5zZWxlY3Rpb25TZXJ2aWNlLmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChldmVudCAmJiBhY3RpdmVDZWxsKSB7XG4gICAgICAgICAgICBjb25zdCByb3dJbmRleCA9IGFjdGl2ZUNlbGwucm93O1xuICAgICAgICAgICAgY29uc3QgdmlzaWJsZUNvbEluZGV4ID0gYWN0aXZlQ2VsbC5sYXlvdXQgPyBhY3RpdmVDZWxsLmxheW91dC5jb2x1bW5WaXNpYmxlSW5kZXggOiBhY3RpdmVDZWxsLmNvbHVtbjtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5uYXZpZ2F0ZVRvKHJvd0luZGV4LCB2aXNpYmxlQ29sSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbiJdfQ==
@@ -26,10 +26,10 @@ export class IgxGridCellStyleClassesPipe {
26
26
  }
27
27
  return result.join(' ');
28
28
  }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridCellStyleClassesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
30
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: IgxGridCellStyleClassesPipe, isStandalone: true, name: "igxCellStyleClasses" }); }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridCellStyleClassesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
30
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: IgxGridCellStyleClassesPipe, isStandalone: true, name: "igxCellStyleClasses" }); }
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridCellStyleClassesPipe, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridCellStyleClassesPipe, decorators: [{
33
33
  type: Pipe,
34
34
  args: [{
35
35
  name: 'igxCellStyleClasses',
@@ -52,10 +52,10 @@ export class IgxGridCellStylesPipe {
52
52
  }
53
53
  return css;
54
54
  }
55
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridCellStylesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
56
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: IgxGridCellStylesPipe, isStandalone: true, name: "igxCellStyles" }); }
55
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridCellStylesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
56
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: IgxGridCellStylesPipe, isStandalone: true, name: "igxCellStyles" }); }
57
57
  }
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridCellStylesPipe, decorators: [{
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridCellStylesPipe, decorators: [{
59
59
  type: Pipe,
60
60
  args: [{
61
61
  name: 'igxCellStyles',
@@ -75,10 +75,10 @@ export class IgxGridCellImageAltPipe {
75
75
  }
76
76
  return value;
77
77
  }
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridCellImageAltPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
79
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: IgxGridCellImageAltPipe, isStandalone: true, name: "igxCellImageAlt" }); }
78
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridCellImageAltPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
79
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: IgxGridCellImageAltPipe, isStandalone: true, name: "igxCellImageAlt" }); }
80
80
  }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridCellImageAltPipe, decorators: [{
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridCellImageAltPipe, decorators: [{
82
82
  type: Pipe,
83
83
  args: [{
84
84
  name: 'igxCellImageAlt',
@@ -122,10 +122,10 @@ export class IgxGridRowClassesPipe {
122
122
  }
123
123
  return result;
124
124
  }
125
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridRowClassesPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
126
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: IgxGridRowClassesPipe, isStandalone: true, name: "igxGridRowClasses" }); }
125
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridRowClassesPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
126
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: IgxGridRowClassesPipe, isStandalone: true, name: "igxGridRowClasses" }); }
127
127
  }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridRowClassesPipe, decorators: [{
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridRowClassesPipe, decorators: [{
129
129
  type: Pipe,
130
130
  args: [{
131
131
  name: 'igxGridRowClasses',
@@ -156,10 +156,10 @@ export class IgxGridRowStylesPipe {
156
156
  }
157
157
  return css;
158
158
  }
159
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridRowStylesPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
160
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: IgxGridRowStylesPipe, isStandalone: true, name: "igxGridRowStyles" }); }
159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridRowStylesPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
160
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: IgxGridRowStylesPipe, isStandalone: true, name: "igxGridRowStyles" }); }
161
161
  }
162
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridRowStylesPipe, decorators: [{
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridRowStylesPipe, decorators: [{
163
163
  type: Pipe,
164
164
  args: [{
165
165
  name: 'igxGridRowStyles',
@@ -177,10 +177,10 @@ export class IgxGridNotGroupedPipe {
177
177
  transform(value) {
178
178
  return value.filter(item => !item.columnGroup);
179
179
  }
180
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridNotGroupedPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
181
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: IgxGridNotGroupedPipe, isStandalone: true, name: "igxNotGrouped" }); }
180
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridNotGroupedPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
181
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: IgxGridNotGroupedPipe, isStandalone: true, name: "igxNotGrouped" }); }
182
182
  }
183
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridNotGroupedPipe, decorators: [{
183
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridNotGroupedPipe, decorators: [{
184
184
  type: Pipe,
185
185
  args: [{
186
186
  name: 'igxNotGrouped',
@@ -195,10 +195,10 @@ export class IgxGridTopLevelColumns {
195
195
  transform(value) {
196
196
  return value.filter(item => item.level === 0);
197
197
  }
198
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridTopLevelColumns, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
199
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: IgxGridTopLevelColumns, isStandalone: true, name: "igxTopLevel" }); }
198
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridTopLevelColumns, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
199
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: IgxGridTopLevelColumns, isStandalone: true, name: "igxTopLevel" }); }
200
200
  }
201
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridTopLevelColumns, decorators: [{
201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridTopLevelColumns, decorators: [{
202
202
  type: Pipe,
203
203
  args: [{
204
204
  name: 'igxTopLevel',
@@ -213,10 +213,10 @@ export class IgxGridFilterConditionPipe {
213
213
  transform(value) {
214
214
  return value.split(/(?=[A-Z])/).join(' ');
215
215
  }
216
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridFilterConditionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
217
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: IgxGridFilterConditionPipe, isStandalone: true, name: "filterCondition" }); }
216
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridFilterConditionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
217
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: IgxGridFilterConditionPipe, isStandalone: true, name: "filterCondition" }); }
218
218
  }
219
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridFilterConditionPipe, decorators: [{
219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridFilterConditionPipe, decorators: [{
220
220
  type: Pipe,
221
221
  args: [{
222
222
  name: 'filterCondition',
@@ -239,10 +239,10 @@ export class IgxGridTransactionPipe {
239
239
  }
240
240
  return collection;
241
241
  }
242
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridTransactionPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
243
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: IgxGridTransactionPipe, isStandalone: true, name: "gridTransaction" }); }
242
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridTransactionPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
243
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: IgxGridTransactionPipe, isStandalone: true, name: "gridTransaction" }); }
244
244
  }
245
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridTransactionPipe, decorators: [{
245
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridTransactionPipe, decorators: [{
246
246
  type: Pipe,
247
247
  args: [{
248
248
  name: 'gridTransaction',
@@ -260,10 +260,10 @@ export class IgxGridPaginatorOptionsPipe {
260
260
  transform(values) {
261
261
  return Array.from(new Set([...values])).sort((a, b) => a - b);
262
262
  }
263
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridPaginatorOptionsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
264
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: IgxGridPaginatorOptionsPipe, isStandalone: true, name: "paginatorOptions" }); }
263
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridPaginatorOptionsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
264
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: IgxGridPaginatorOptionsPipe, isStandalone: true, name: "paginatorOptions" }); }
265
265
  }
266
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridPaginatorOptionsPipe, decorators: [{
266
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridPaginatorOptionsPipe, decorators: [{
267
267
  type: Pipe,
268
268
  args: [{
269
269
  name: 'paginatorOptions',
@@ -281,10 +281,10 @@ export class IgxHasVisibleColumnsPipe {
281
281
  }
282
282
  return hasVisibleColumns ? values : [];
283
283
  }
284
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxHasVisibleColumnsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
285
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: IgxHasVisibleColumnsPipe, isStandalone: true, name: "visibleColumns" }); }
284
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxHasVisibleColumnsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
285
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: IgxHasVisibleColumnsPipe, isStandalone: true, name: "visibleColumns" }); }
286
286
  }
287
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxHasVisibleColumnsPipe, decorators: [{
287
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxHasVisibleColumnsPipe, decorators: [{
288
288
  type: Pipe,
289
289
  args: [{
290
290
  name: 'visibleColumns',
@@ -324,13 +324,13 @@ export class IgxGridRowPinningPipe {
324
324
  return collection.map((rec) => !this.grid.isSummaryRow(rec) &&
325
325
  this.grid.isRecordPinned(rec) ? { recordRef: rec, ghostRecord: true } : rec);
326
326
  }
327
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridRowPinningPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
328
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: IgxGridRowPinningPipe, isStandalone: true, name: "gridRowPinning" }); }
327
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridRowPinningPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
328
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: IgxGridRowPinningPipe, isStandalone: true, name: "gridRowPinning" }); }
329
329
  }
330
330
  __decorate([
331
331
  buildDataView()
332
332
  ], IgxGridRowPinningPipe.prototype, "transform", null);
333
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridRowPinningPipe, decorators: [{
333
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridRowPinningPipe, decorators: [{
334
334
  type: Pipe,
335
335
  args: [{
336
336
  name: 'gridRowPinning',
@@ -344,10 +344,10 @@ export class IgxGridDataMapperPipe {
344
344
  transform(data, field, _, val, isNestedPath) {
345
345
  return isNestedPath ? resolveNestedPath(data, field) : val;
346
346
  }
347
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridDataMapperPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
348
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: IgxGridDataMapperPipe, isStandalone: true, name: "dataMapper" }); }
347
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridDataMapperPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
348
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: IgxGridDataMapperPipe, isStandalone: true, name: "dataMapper" }); }
349
349
  }
350
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridDataMapperPipe, decorators: [{
350
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridDataMapperPipe, decorators: [{
351
351
  type: Pipe,
352
352
  args: [{
353
353
  name: 'dataMapper',
@@ -358,10 +358,10 @@ export class IgxStringReplacePipe {
358
358
  transform(value, search, replacement) {
359
359
  return value.replace(search, replacement);
360
360
  }
361
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxStringReplacePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
362
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: IgxStringReplacePipe, isStandalone: true, name: "igxStringReplace" }); }
361
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxStringReplacePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
362
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: IgxStringReplacePipe, isStandalone: true, name: "igxStringReplace" }); }
363
363
  }
364
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxStringReplacePipe, decorators: [{
364
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxStringReplacePipe, decorators: [{
365
365
  type: Pipe,
366
366
  args: [{
367
367
  name: 'igxStringReplace',
@@ -383,10 +383,10 @@ export class IgxGridTransactionStatePipe {
383
383
  return transaction && transaction.value && (value || value === 0 || value === false);
384
384
  }
385
385
  }
386
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridTransactionStatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
387
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: IgxGridTransactionStatePipe, isStandalone: true, name: "transactionState" }); }
386
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridTransactionStatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
387
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: IgxGridTransactionStatePipe, isStandalone: true, name: "transactionState" }); }
388
388
  }
389
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridTransactionStatePipe, decorators: [{
389
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridTransactionStatePipe, decorators: [{
390
390
  type: Pipe,
391
391
  args: [{
392
392
  name: 'transactionState',
@@ -397,10 +397,10 @@ export class IgxColumnFormatterPipe {
397
397
  transform(value, formatter, rowData, columnData) {
398
398
  return formatter(value, rowData, columnData);
399
399
  }
400
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxColumnFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
401
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: IgxColumnFormatterPipe, isStandalone: true, name: "columnFormatter" }); }
400
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxColumnFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
401
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: IgxColumnFormatterPipe, isStandalone: true, name: "columnFormatter" }); }
402
402
  }
403
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxColumnFormatterPipe, decorators: [{
403
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxColumnFormatterPipe, decorators: [{
404
404
  type: Pipe,
405
405
  args: [{
406
406
  name: 'columnFormatter',
@@ -411,10 +411,10 @@ export class IgxSummaryFormatterPipe {
411
411
  transform(summaryResult, summaryOperand, summaryFormatter) {
412
412
  return summaryFormatter(summaryResult, summaryOperand);
413
413
  }
414
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxSummaryFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
415
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: IgxSummaryFormatterPipe, isStandalone: true, name: "summaryFormatter" }); }
414
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxSummaryFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
415
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: IgxSummaryFormatterPipe, isStandalone: true, name: "summaryFormatter" }); }
416
416
  }
417
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxSummaryFormatterPipe, decorators: [{
417
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxSummaryFormatterPipe, decorators: [{
418
418
  type: Pipe,
419
419
  args: [{
420
420
  name: 'summaryFormatter',
@@ -435,10 +435,10 @@ export class IgxGridAddRowPipe {
435
435
  copy.splice(this.grid.crudService.row.index, 0, rec);
436
436
  return copy;
437
437
  }
438
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridAddRowPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
439
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: IgxGridAddRowPipe, isStandalone: true, name: "gridAddRow" }); }
438
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridAddRowPipe, deps: [{ token: IGX_GRID_BASE }], target: i0.ɵɵFactoryTarget.Pipe }); }
439
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: IgxGridAddRowPipe, isStandalone: true, name: "gridAddRow" }); }
440
440
  }
441
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridAddRowPipe, decorators: [{
441
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridAddRowPipe, decorators: [{
442
442
  type: Pipe,
443
443
  args: [{
444
444
  name: 'gridAddRow',
@@ -183,10 +183,10 @@ export class IgxAdvancedFilteringDialogComponent {
183
183
  });
184
184
  }
185
185
  }
186
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxAdvancedFilteringDialogComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.PlatformUtil }], target: i0.ɵɵFactoryTarget.Component }); }
187
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: IgxAdvancedFilteringDialogComponent, isStandalone: true, selector: "igx-advanced-filtering-dialog", inputs: { grid: "grid" }, host: { properties: { "style.display": "this.display" } }, viewQueries: [{ propertyName: "queryBuilder", first: true, predicate: ["queryBuilder"], descendants: true, read: IgxQueryBuilderComponent }], ngImport: i0, template: "<article *ngIf=\"grid\" class=\"igx-advanced-filter\" igxDrag [ghost]=\"false\" [dragTolerance]=\"0\"\n (dragStart)=\"dragStart($event)\" (dragMove)=\"onDragMove($event)\" (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{\n 'igx-advanced-filter': true,\n 'igx-advanced-filter--inline': inline\n }\">\n <igx-query-builder #queryBuilder [locale]=\"grid.locale\"\n [fields]=\"this.filterableFields\"\n [expressionTree]=\"this.grid.advancedFilteringExpressionsTree\">\n <igx-query-builder-header\n [title]=\"grid.resourceStrings.igx_grid_advanced_filter_title\"\n igxDragHandle>\n </igx-query-builder-header>\n </igx-query-builder>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button igxButton=\"flat\" type=\"button\" [displayDensity]=\"displayDensity\"\n (click)=\"onClearButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button igxButton=\"flat\" type=\"button\" [displayDensity]=\"displayDensity\" (click)=\"cancelChanges()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button igxButton=\"raised\" type=\"button\" [displayDensity]=\"displayDensity\"\n (click)=\"onApplyButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n</article>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IgxDragDirective, selector: "[igxDrag]", inputs: ["igxDrag", "dragTolerance", "dragDirection", "dragChannel", "ghost", "ghostClass", "ghostStyle", "ghostTemplate", "ghostHost", "scrollContainer", "ghostOffsetX", "ghostOffsetY"], outputs: ["dragStart", "dragMove", "dragEnd", "dragClick", "ghostCreate", "ghostDestroy", "transitioned"], exportAs: ["drag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IgxQueryBuilderComponent, selector: "igx-query-builder", inputs: ["fields", "expressionTree", "locale", "resourceStrings"], outputs: ["expressionTreeChange"] }, { kind: "component", type: IgxQueryBuilderHeaderComponent, selector: "igx-query-builder-header", inputs: ["title", "showLegend", "resourceStrings"] }, { kind: "directive", type: IgxDragHandleDirective, selector: "[igxDragHandle]" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxButtonColor", "igxButtonBackground", "igxLabel", "disabled"], outputs: ["buttonClick", "buttonSelected"] }] }); }
186
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxAdvancedFilteringDialogComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.PlatformUtil }], target: i0.ɵɵFactoryTarget.Component }); }
187
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.5", type: IgxAdvancedFilteringDialogComponent, isStandalone: true, selector: "igx-advanced-filtering-dialog", inputs: { grid: "grid" }, host: { properties: { "style.display": "this.display" } }, viewQueries: [{ propertyName: "queryBuilder", first: true, predicate: ["queryBuilder"], descendants: true, read: IgxQueryBuilderComponent }], ngImport: i0, template: "<article *ngIf=\"grid\" class=\"igx-advanced-filter\" igxDrag [ghost]=\"false\" [dragTolerance]=\"0\"\n (dragStart)=\"dragStart($event)\" (dragMove)=\"onDragMove($event)\" (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{\n 'igx-advanced-filter': true,\n 'igx-advanced-filter--inline': inline\n }\">\n <igx-query-builder #queryBuilder [locale]=\"grid.locale\"\n [fields]=\"this.filterableFields\"\n [expressionTree]=\"this.grid.advancedFilteringExpressionsTree\">\n <igx-query-builder-header\n [title]=\"grid.resourceStrings.igx_grid_advanced_filter_title\"\n igxDragHandle>\n </igx-query-builder-header>\n </igx-query-builder>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button igxButton=\"flat\" type=\"button\" [displayDensity]=\"displayDensity\"\n (click)=\"onClearButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button igxButton=\"flat\" type=\"button\" [displayDensity]=\"displayDensity\" (click)=\"cancelChanges()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button igxButton=\"raised\" type=\"button\" [displayDensity]=\"displayDensity\"\n (click)=\"onApplyButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n</article>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IgxDragDirective, selector: "[igxDrag]", inputs: ["igxDrag", "dragTolerance", "dragDirection", "dragChannel", "ghost", "ghostClass", "ghostStyle", "ghostTemplate", "ghostHost", "scrollContainer", "ghostOffsetX", "ghostOffsetY"], outputs: ["dragStart", "dragMove", "dragEnd", "dragClick", "ghostCreate", "ghostDestroy", "transitioned"], exportAs: ["drag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IgxQueryBuilderComponent, selector: "igx-query-builder", inputs: ["fields", "expressionTree", "locale", "resourceStrings"], outputs: ["expressionTreeChange"] }, { kind: "component", type: IgxQueryBuilderHeaderComponent, selector: "igx-query-builder-header", inputs: ["title", "showLegend", "resourceStrings"] }, { kind: "directive", type: IgxDragHandleDirective, selector: "[igxDragHandle]" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxButtonColor", "igxButtonBackground", "igxLabel", "disabled"], outputs: ["buttonClick", "buttonSelected"] }] }); }
188
188
  }
189
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxAdvancedFilteringDialogComponent, decorators: [{
189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxAdvancedFilteringDialogComponent, decorators: [{
190
190
  type: Component,
191
191
  args: [{ selector: 'igx-advanced-filtering-dialog', standalone: true, imports: [NgIf, IgxDragDirective, NgClass, IgxQueryBuilderComponent, IgxQueryBuilderHeaderComponent, IgxDragHandleDirective, IgxButtonDirective], template: "<article *ngIf=\"grid\" class=\"igx-advanced-filter\" igxDrag [ghost]=\"false\" [dragTolerance]=\"0\"\n (dragStart)=\"dragStart($event)\" (dragMove)=\"onDragMove($event)\" (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{\n 'igx-advanced-filter': true,\n 'igx-advanced-filter--inline': inline\n }\">\n <igx-query-builder #queryBuilder [locale]=\"grid.locale\"\n [fields]=\"this.filterableFields\"\n [expressionTree]=\"this.grid.advancedFilteringExpressionsTree\">\n <igx-query-builder-header\n [title]=\"grid.resourceStrings.igx_grid_advanced_filter_title\"\n igxDragHandle>\n </igx-query-builder-header>\n </igx-query-builder>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button igxButton=\"flat\" type=\"button\" [displayDensity]=\"displayDensity\"\n (click)=\"onClearButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button igxButton=\"flat\" type=\"button\" [displayDensity]=\"displayDensity\" (click)=\"cancelChanges()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button igxButton=\"raised\" type=\"button\" [displayDensity]=\"displayDensity\"\n (click)=\"onApplyButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n</article>\n" }]
192
192
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.PlatformUtil }], propDecorators: { queryBuilder: [{
@@ -181,10 +181,10 @@ export class IgxGridFilteringCellComponent {
181
181
  this.cdr.detectChanges();
182
182
  }
183
183
  }
184
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridFilteringCellComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.IgxFilteringService }], target: i0.ɵɵFactoryTarget.Component }); }
185
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: IgxGridFilteringCellComponent, isStandalone: true, selector: "igx-grid-filtering-cell", inputs: { column: "column" }, host: { properties: { "class": "this.styleClasses" } }, viewQueries: [{ propertyName: "emptyFilter", first: true, predicate: ["emptyFilter"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultFilter", first: true, predicate: ["defaultFilter"], descendants: true, read: TemplateRef, static: true }, { propertyName: "complexFilter", first: true, predicate: ["complexFilter"], descendants: true, read: TemplateRef, static: true }, { propertyName: "chipsArea", first: true, predicate: ["chipsArea"], descendants: true, read: IgxChipsAreaComponent }, { propertyName: "moreIcon", first: true, predicate: ["moreIcon"], descendants: true, read: ElementRef }, { propertyName: "ghostChip", first: true, predicate: ["ghostChip"], descendants: true, read: IgxChipComponent }, { propertyName: "complexChip", first: true, predicate: ["complexChip"], descendants: true, read: IgxChipComponent }], ngImport: i0, template: "<ng-template #emptyFilter>\n <igx-chips-area [attr.draggable]=\"false\" class=\"igx-filtering-chips\">\n <igx-chip #ghostChip [attr.draggable]=\"false\" (click)=\"onChipClicked()\" [displayDensity]=\"displayDensity\" [tabIndex]=\"-1\">\n <igx-icon [attr.draggable]=\"false\" igxPrefix>filter_list</igx-icon>\n <span [attr.draggable]=\"false\">{{filteringService.grid.resourceStrings.igx_grid_filter}}</span>\n </igx-chip>\n </igx-chips-area>\n</ng-template>\n\n<ng-template #defaultFilter>\n <igx-chips-area #chipsArea class=\"igx-filtering-chips\">\n <ng-container *ngFor=\"let item of expressionsList; let last = last; let index = index;\" >\n <igx-chip *ngIf=\"isChipVisible(index)\"\n [removable]=\"true\"\n [tabIndex]=\"-1\"\n [displayDensity]=\"displayDensity\"\n (click)=\"onChipClicked(item.expression)\"\n (remove)=\"onChipRemoved($event, item)\">\n <igx-icon igxPrefix\n family=\"imx-icons\"\n [name]=\"item.expression.condition.iconName\">\n </igx-icon>\n <span #label>\n {{filteringService.getChipLabel(item.expression)}}\n </span>\n </igx-chip>\n <span class=\"igx-filtering-chips__connector\" *ngIf=\"!last && isChipVisible(index + 1)\">{{filteringService.getOperatorAsString(item.afterOperator)}}</span>\n </ng-container>\n <div #moreIcon [ngClass]=\"filteringIndicatorClass()\" (click)=\"onChipClicked()\">\n <igx-icon>filter_list</igx-icon>\n <igx-badge [value]=\"moreFiltersCount\"></igx-badge>\n </div>\n </igx-chips-area>\n</ng-template>\n\n<ng-template #complexFilter>\n <igx-chip #complexChip [removable]=\"true\" [displayDensity]=\"displayDensity\" (remove)=\"clearFiltering()\" [tabIndex]=\"-1\">\n <igx-icon igxPrefix>filter_list</igx-icon>\n <span>{{filteringService.grid.resourceStrings.igx_grid_complex_filter}}</span>\n </igx-chip>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"template; context: context\"></ng-container>\n", dependencies: [{ kind: "component", type: IgxChipsAreaComponent, selector: "igx-chips-area", inputs: ["width", "height"], outputs: ["reorder", "selectionChange", "moveStart", "moveEnd"] }, { kind: "component", type: IgxChipComponent, selector: "igx-chip", inputs: ["variant", "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", "dragLeave", "dragOver", "dragDrop"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }, { kind: "directive", type: IgxPrefixDirective, selector: "igx-prefix,[igxPrefix],[igxStart]" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IgxBadgeComponent, selector: "igx-badge", inputs: ["id", "type", "value", "icon", "iconSet", "shape"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
184
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridFilteringCellComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.IgxFilteringService }], target: i0.ɵɵFactoryTarget.Component }); }
185
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.5", type: IgxGridFilteringCellComponent, isStandalone: true, selector: "igx-grid-filtering-cell", inputs: { column: "column" }, host: { properties: { "class": "this.styleClasses" } }, viewQueries: [{ propertyName: "emptyFilter", first: true, predicate: ["emptyFilter"], descendants: true, read: TemplateRef, static: true }, { propertyName: "defaultFilter", first: true, predicate: ["defaultFilter"], descendants: true, read: TemplateRef, static: true }, { propertyName: "complexFilter", first: true, predicate: ["complexFilter"], descendants: true, read: TemplateRef, static: true }, { propertyName: "chipsArea", first: true, predicate: ["chipsArea"], descendants: true, read: IgxChipsAreaComponent }, { propertyName: "moreIcon", first: true, predicate: ["moreIcon"], descendants: true, read: ElementRef }, { propertyName: "ghostChip", first: true, predicate: ["ghostChip"], descendants: true, read: IgxChipComponent }, { propertyName: "complexChip", first: true, predicate: ["complexChip"], descendants: true, read: IgxChipComponent }], ngImport: i0, template: "<ng-template #emptyFilter>\n <igx-chips-area [attr.draggable]=\"false\" class=\"igx-filtering-chips\">\n <igx-chip #ghostChip [attr.draggable]=\"false\" (click)=\"onChipClicked()\" [displayDensity]=\"displayDensity\" [tabIndex]=\"-1\">\n <igx-icon [attr.draggable]=\"false\" igxPrefix>filter_list</igx-icon>\n <span [attr.draggable]=\"false\">{{filteringService.grid.resourceStrings.igx_grid_filter}}</span>\n </igx-chip>\n </igx-chips-area>\n</ng-template>\n\n<ng-template #defaultFilter>\n <igx-chips-area #chipsArea class=\"igx-filtering-chips\">\n <ng-container *ngFor=\"let item of expressionsList; let last = last; let index = index;\" >\n <igx-chip *ngIf=\"isChipVisible(index)\"\n [removable]=\"true\"\n [tabIndex]=\"-1\"\n [displayDensity]=\"displayDensity\"\n (click)=\"onChipClicked(item.expression)\"\n (remove)=\"onChipRemoved($event, item)\">\n <igx-icon igxPrefix\n family=\"imx-icons\"\n [name]=\"item.expression.condition.iconName\">\n </igx-icon>\n <span #label>\n {{filteringService.getChipLabel(item.expression)}}\n </span>\n </igx-chip>\n <span class=\"igx-filtering-chips__connector\" *ngIf=\"!last && isChipVisible(index + 1)\">{{filteringService.getOperatorAsString(item.afterOperator)}}</span>\n </ng-container>\n <div #moreIcon [ngClass]=\"filteringIndicatorClass()\" (click)=\"onChipClicked()\">\n <igx-icon>filter_list</igx-icon>\n <igx-badge [value]=\"moreFiltersCount\"></igx-badge>\n </div>\n </igx-chips-area>\n</ng-template>\n\n<ng-template #complexFilter>\n <igx-chip #complexChip [removable]=\"true\" [displayDensity]=\"displayDensity\" (remove)=\"clearFiltering()\" [tabIndex]=\"-1\">\n <igx-icon igxPrefix>filter_list</igx-icon>\n <span>{{filteringService.grid.resourceStrings.igx_grid_complex_filter}}</span>\n </igx-chip>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"template; context: context\"></ng-container>\n", dependencies: [{ kind: "component", type: IgxChipsAreaComponent, selector: "igx-chips-area", inputs: ["width", "height"], outputs: ["reorder", "selectionChange", "moveStart", "moveEnd"] }, { kind: "component", type: IgxChipComponent, selector: "igx-chip", inputs: ["variant", "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", "dragLeave", "dragOver", "dragDrop"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }, { kind: "directive", type: IgxPrefixDirective, selector: "igx-prefix,[igxPrefix],[igxStart]" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IgxBadgeComponent, selector: "igx-badge", inputs: ["id", "type", "value", "icon", "iconSet", "shape"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
186
186
  }
187
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IgxGridFilteringCellComponent, decorators: [{
187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: IgxGridFilteringCellComponent, decorators: [{
188
188
  type: Component,
189
189
  args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-grid-filtering-cell', standalone: true, imports: [IgxChipsAreaComponent, IgxChipComponent, IgxIconComponent, IgxPrefixDirective, NgFor, NgIf, NgClass, IgxBadgeComponent, NgTemplateOutlet], template: "<ng-template #emptyFilter>\n <igx-chips-area [attr.draggable]=\"false\" class=\"igx-filtering-chips\">\n <igx-chip #ghostChip [attr.draggable]=\"false\" (click)=\"onChipClicked()\" [displayDensity]=\"displayDensity\" [tabIndex]=\"-1\">\n <igx-icon [attr.draggable]=\"false\" igxPrefix>filter_list</igx-icon>\n <span [attr.draggable]=\"false\">{{filteringService.grid.resourceStrings.igx_grid_filter}}</span>\n </igx-chip>\n </igx-chips-area>\n</ng-template>\n\n<ng-template #defaultFilter>\n <igx-chips-area #chipsArea class=\"igx-filtering-chips\">\n <ng-container *ngFor=\"let item of expressionsList; let last = last; let index = index;\" >\n <igx-chip *ngIf=\"isChipVisible(index)\"\n [removable]=\"true\"\n [tabIndex]=\"-1\"\n [displayDensity]=\"displayDensity\"\n (click)=\"onChipClicked(item.expression)\"\n (remove)=\"onChipRemoved($event, item)\">\n <igx-icon igxPrefix\n family=\"imx-icons\"\n [name]=\"item.expression.condition.iconName\">\n </igx-icon>\n <span #label>\n {{filteringService.getChipLabel(item.expression)}}\n </span>\n </igx-chip>\n <span class=\"igx-filtering-chips__connector\" *ngIf=\"!last && isChipVisible(index + 1)\">{{filteringService.getOperatorAsString(item.afterOperator)}}</span>\n </ng-container>\n <div #moreIcon [ngClass]=\"filteringIndicatorClass()\" (click)=\"onChipClicked()\">\n <igx-icon>filter_list</igx-icon>\n <igx-badge [value]=\"moreFiltersCount\"></igx-badge>\n </div>\n </igx-chips-area>\n</ng-template>\n\n<ng-template #complexFilter>\n <igx-chip #complexChip [removable]=\"true\" [displayDensity]=\"displayDensity\" (remove)=\"clearFiltering()\" [tabIndex]=\"-1\">\n <igx-icon igxPrefix>filter_list</igx-icon>\n <span>{{filteringService.grid.resourceStrings.igx_grid_complex_filter}}</span>\n </igx-chip>\n</ng-template>\n\n<ng-container *ngTemplateOutlet=\"template; context: context\"></ng-container>\n" }]
190
190
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.IgxFilteringService }], propDecorators: { column: [{