@ng-matero/extensions 14.6.3 → 15.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. package/README.md +0 -1
  2. package/_index.scss +3 -4
  3. package/_theming.scss +3 -4
  4. package/alert/_alert-theme.import.scss +1 -1
  5. package/alert/_alert-theme.scss +2 -2
  6. package/alert/{alert.module.d.ts → alert-module.d.ts} +2 -2
  7. package/alert/{alert.component.d.ts → alert.d.ts} +4 -4
  8. package/alert/{alert.component.scss → alert.scss} +0 -0
  9. package/alert/public-api.d.ts +2 -2
  10. package/button/button-loading.d.ts +25 -0
  11. package/button/button-loading.scss +5 -4
  12. package/button/{button.module.d.ts → button-module.d.ts} +2 -2
  13. package/button/public-api.d.ts +2 -2
  14. package/checkbox-group/{checkbox-group.module.d.ts → checkbox-group-module.d.ts} +2 -2
  15. package/checkbox-group/{checkbox-group.component.d.ts → checkbox-group.d.ts} +4 -4
  16. package/checkbox-group/checkbox-group.scss +0 -0
  17. package/checkbox-group/{checkbox-group.interface.d.ts → interfaces.d.ts} +0 -0
  18. package/checkbox-group/public-api.d.ts +3 -3
  19. package/colorpicker/_colorpicker-theme.import.scss +1 -1
  20. package/colorpicker/_colorpicker-theme.scss +2 -2
  21. package/colorpicker/colorpicker-input.d.ts +1 -1
  22. package/colorpicker/colorpicker-toggle.d.ts +2 -2
  23. package/colorpicker/colorpicker.d.ts +2 -2
  24. package/column-resize/column-resize-directives/column-resize-flex.d.ts +1 -1
  25. package/column-resize/column-resize-directives/column-resize.d.ts +1 -1
  26. package/column-resize/column-resize.d.ts +1 -1
  27. package/column-resize/overlay-handle.d.ts +1 -1
  28. package/column-resize/resizable.d.ts +1 -1
  29. package/core/color/_all-color.scss +28 -0
  30. package/core/density/_all-density.scss +24 -0
  31. package/core/style/_elevation.scss +20 -126
  32. package/core/style/_private.scss +9 -18
  33. package/core/style/_variables.scss +1 -1
  34. package/core/style/_vendor-prefixes.scss +8 -21
  35. package/core/theming/_all-theme.scss +38 -0
  36. package/core/theming/_palette.scss +1 -1
  37. package/core/theming/_theming.scss +55 -22
  38. package/core/typography/_typography.scss +195 -17
  39. package/datetimepicker/_datetimepicker-theme.import.scss +1 -1
  40. package/datetimepicker/_datetimepicker-theme.scss +3 -4
  41. package/datetimepicker/calendar-body.d.ts +1 -1
  42. package/datetimepicker/calendar.d.ts +3 -4
  43. package/datetimepicker/calendar.scss +3 -0
  44. package/datetimepicker/clock.d.ts +7 -3
  45. package/datetimepicker/datetimepicker-input.d.ts +1 -1
  46. package/datetimepicker/datetimepicker-toggle.d.ts +2 -2
  47. package/datetimepicker/datetimepicker.d.ts +2 -2
  48. package/datetimepicker/month-view.d.ts +1 -1
  49. package/datetimepicker/multi-year-view.d.ts +1 -1
  50. package/datetimepicker/time.d.ts +2 -2
  51. package/datetimepicker/time.scss +1 -1
  52. package/datetimepicker/year-view.d.ts +1 -1
  53. package/dialog/dialog-container.d.ts +12 -0
  54. package/dialog/dialog-container.scss +48 -0
  55. package/dialog/{dialog.module.d.ts → dialog-module.d.ts} +2 -2
  56. package/dialog/public-api.d.ts +2 -2
  57. package/drawer/_drawer-theme.import.scss +1 -1
  58. package/drawer/_drawer-theme.scss +2 -2
  59. package/drawer/drawer-container.d.ts +1 -1
  60. package/esm2020/alert/alert-module.mjs +18 -0
  61. package/esm2020/alert/alert.mjs +52 -0
  62. package/esm2020/alert/public-api.mjs +3 -3
  63. package/esm2020/button/button-loading.mjs +76 -0
  64. package/esm2020/button/button-module.mjs +20 -0
  65. package/esm2020/button/public-api.mjs +3 -3
  66. package/esm2020/checkbox-group/{checkbox-group.module.mjs → checkbox-group-module.mjs} +8 -8
  67. package/esm2020/checkbox-group/checkbox-group.mjs +234 -0
  68. package/esm2020/checkbox-group/interfaces.mjs +2 -0
  69. package/esm2020/checkbox-group/public-api.mjs +4 -4
  70. package/esm2020/colorpicker/colorpicker-input.mjs +3 -3
  71. package/esm2020/colorpicker/colorpicker-module.mjs +4 -4
  72. package/esm2020/colorpicker/colorpicker-toggle.mjs +6 -6
  73. package/esm2020/colorpicker/colorpicker.mjs +6 -6
  74. package/esm2020/column-resize/column-resize-directives/column-resize-flex.mjs +3 -3
  75. package/esm2020/column-resize/column-resize-directives/column-resize.mjs +3 -3
  76. package/esm2020/column-resize/column-resize-module.mjs +4 -4
  77. package/esm2020/column-resize/column-resize-notifier.mjs +7 -7
  78. package/esm2020/column-resize/column-resize.mjs +3 -3
  79. package/esm2020/column-resize/column-size-store.mjs +3 -3
  80. package/esm2020/column-resize/event-dispatcher.mjs +3 -3
  81. package/esm2020/column-resize/overlay-handle.mjs +3 -3
  82. package/esm2020/column-resize/resizable.mjs +3 -3
  83. package/esm2020/column-resize/resize-strategy.mjs +9 -9
  84. package/esm2020/core/datetime/datetime.module.mjs +8 -8
  85. package/esm2020/core/datetime/native-datetime-adapter.mjs +3 -3
  86. package/esm2020/core/pipes/pipes.module.mjs +4 -4
  87. package/esm2020/core/pipes/to-observable.pipe.mjs +3 -3
  88. package/esm2020/datetimepicker/calendar-body.mjs +3 -3
  89. package/esm2020/datetimepicker/calendar.mjs +17 -15
  90. package/esm2020/datetimepicker/clock.mjs +41 -22
  91. package/esm2020/datetimepicker/datetimepicker-input.mjs +3 -3
  92. package/esm2020/datetimepicker/datetimepicker-intl.mjs +3 -3
  93. package/esm2020/datetimepicker/datetimepicker-module.mjs +4 -4
  94. package/esm2020/datetimepicker/datetimepicker-toggle.mjs +6 -6
  95. package/esm2020/datetimepicker/datetimepicker.mjs +9 -8
  96. package/esm2020/datetimepicker/month-view.mjs +3 -3
  97. package/esm2020/datetimepicker/multi-year-view.mjs +3 -3
  98. package/esm2020/datetimepicker/time.mjs +16 -14
  99. package/esm2020/datetimepicker/year-view.mjs +3 -3
  100. package/esm2020/dialog/dialog-container.mjs +35 -0
  101. package/esm2020/dialog/{dialog.module.mjs → dialog-module.mjs} +8 -8
  102. package/esm2020/dialog/dialog.mjs +7 -7
  103. package/esm2020/dialog/public-api.mjs +3 -3
  104. package/esm2020/drawer/drawer-container.mjs +3 -3
  105. package/esm2020/drawer/drawer-module.mjs +4 -4
  106. package/esm2020/drawer/drawer.mjs +4 -4
  107. package/esm2020/grid/cell.mjs +130 -0
  108. package/esm2020/grid/column-menu.mjs +112 -0
  109. package/esm2020/grid/column-resize/column-resize-directives/column-resize-flex.mjs +3 -3
  110. package/esm2020/grid/column-resize/column-resize-directives/column-resize.mjs +3 -3
  111. package/esm2020/grid/column-resize/column-resize-module.mjs +8 -8
  112. package/esm2020/grid/column-resize/overlay-handle.mjs +3 -3
  113. package/esm2020/grid/column-resize/resizable-directives/resizable.mjs +3 -3
  114. package/esm2020/grid/column-resize/resize-strategy.mjs +3 -3
  115. package/esm2020/grid/expansion-toggle.mjs +64 -0
  116. package/esm2020/grid/grid-module.mjs +115 -0
  117. package/esm2020/grid/grid-utils.mjs +44 -0
  118. package/esm2020/grid/grid.mjs +619 -0
  119. package/esm2020/grid/interfaces.mjs +2 -0
  120. package/esm2020/grid/public-api.mjs +8 -8
  121. package/esm2020/loader/loader-module.mjs +20 -0
  122. package/esm2020/loader/loader.mjs +69 -0
  123. package/esm2020/loader/public-api.mjs +3 -3
  124. package/esm2020/popover/popover-content.mjs +6 -6
  125. package/esm2020/popover/popover-module.mjs +4 -4
  126. package/esm2020/popover/popover-target.mjs +3 -3
  127. package/esm2020/popover/popover-trigger.mjs +3 -3
  128. package/esm2020/popover/popover.mjs +3 -3
  129. package/esm2020/progress/progress-module.mjs +18 -0
  130. package/esm2020/progress/progress.mjs +55 -0
  131. package/esm2020/progress/public-api.mjs +3 -3
  132. package/esm2020/select/option.mjs +57 -0
  133. package/esm2020/select/public-api.mjs +5 -5
  134. package/esm2020/select/select-module.mjs +74 -0
  135. package/esm2020/select/select.mjs +550 -0
  136. package/esm2020/select/templates.mjs +124 -0
  137. package/esm2020/slider/slider-module.mjs +4 -4
  138. package/esm2020/slider/slider.mjs +4 -4
  139. package/esm2020/split/interfaces.mjs +2 -0
  140. package/esm2020/split/public-api.mjs +5 -5
  141. package/esm2020/split/split-module.mjs +19 -0
  142. package/esm2020/split/split-pane.mjs +149 -0
  143. package/esm2020/split/split.mjs +619 -0
  144. package/esm2020/split/utils.mjs +4 -4
  145. package/esm2020/tooltip/tooltip-module.mjs +4 -4
  146. package/esm2020/tooltip/tooltip.mjs +6 -6
  147. package/fesm2015/mtxAlert.mjs +12 -11
  148. package/fesm2015/mtxAlert.mjs.map +1 -1
  149. package/fesm2015/mtxButton.mjs +31 -31
  150. package/fesm2015/mtxButton.mjs.map +1 -1
  151. package/fesm2015/mtxCheckboxGroup.mjs +16 -15
  152. package/fesm2015/mtxCheckboxGroup.mjs.map +1 -1
  153. package/fesm2015/mtxColorpicker.mjs +20 -19
  154. package/fesm2015/mtxColorpicker.mjs.map +1 -1
  155. package/fesm2015/mtxColumnResize.mjs +41 -40
  156. package/fesm2015/mtxColumnResize.mjs.map +1 -1
  157. package/fesm2015/mtxCore.mjs +19 -18
  158. package/fesm2015/mtxDatetimepicker.mjs +107 -83
  159. package/fesm2015/mtxDatetimepicker.mjs.map +1 -1
  160. package/fesm2015/mtxDialog.mjs +20 -17
  161. package/fesm2015/mtxDialog.mjs.map +1 -1
  162. package/fesm2015/mtxDrawer.mjs +11 -10
  163. package/fesm2015/mtxDrawer.mjs.map +1 -1
  164. package/fesm2015/mtxGrid.mjs +91 -90
  165. package/fesm2015/mtxGrid.mjs.map +1 -1
  166. package/fesm2015/mtxLoader.mjs +13 -12
  167. package/fesm2015/mtxLoader.mjs.map +1 -1
  168. package/fesm2015/mtxPopover.mjs +20 -19
  169. package/fesm2015/mtxProgress.mjs +12 -11
  170. package/fesm2015/mtxProgress.mjs.map +1 -1
  171. package/fesm2015/mtxSelect.mjs +123 -121
  172. package/fesm2015/mtxSelect.mjs.map +1 -1
  173. package/fesm2015/mtxSlider.mjs +9 -8
  174. package/fesm2015/mtxSlider.mjs.map +1 -1
  175. package/fesm2015/mtxSplit.mjs +19 -18
  176. package/fesm2015/mtxSplit.mjs.map +1 -1
  177. package/fesm2015/mtxTooltip.mjs +11 -10
  178. package/fesm2015/ng-matero-extensions.mjs +1 -0
  179. package/fesm2020/mtxAlert.mjs +12 -11
  180. package/fesm2020/mtxAlert.mjs.map +1 -1
  181. package/fesm2020/mtxButton.mjs +31 -31
  182. package/fesm2020/mtxButton.mjs.map +1 -1
  183. package/fesm2020/mtxCheckboxGroup.mjs +16 -15
  184. package/fesm2020/mtxCheckboxGroup.mjs.map +1 -1
  185. package/fesm2020/mtxColorpicker.mjs +20 -19
  186. package/fesm2020/mtxColorpicker.mjs.map +1 -1
  187. package/fesm2020/mtxColumnResize.mjs +41 -40
  188. package/fesm2020/mtxColumnResize.mjs.map +1 -1
  189. package/fesm2020/mtxCore.mjs +19 -18
  190. package/fesm2020/mtxDatetimepicker.mjs +107 -83
  191. package/fesm2020/mtxDatetimepicker.mjs.map +1 -1
  192. package/fesm2020/mtxDialog.mjs +20 -17
  193. package/fesm2020/mtxDialog.mjs.map +1 -1
  194. package/fesm2020/mtxDrawer.mjs +11 -10
  195. package/fesm2020/mtxDrawer.mjs.map +1 -1
  196. package/fesm2020/mtxGrid.mjs +91 -90
  197. package/fesm2020/mtxGrid.mjs.map +1 -1
  198. package/fesm2020/mtxLoader.mjs +13 -12
  199. package/fesm2020/mtxLoader.mjs.map +1 -1
  200. package/fesm2020/mtxPopover.mjs +20 -19
  201. package/fesm2020/mtxProgress.mjs +12 -11
  202. package/fesm2020/mtxProgress.mjs.map +1 -1
  203. package/fesm2020/mtxSelect.mjs +123 -121
  204. package/fesm2020/mtxSelect.mjs.map +1 -1
  205. package/fesm2020/mtxSlider.mjs +9 -8
  206. package/fesm2020/mtxSlider.mjs.map +1 -1
  207. package/fesm2020/mtxSplit.mjs +19 -18
  208. package/fesm2020/mtxSplit.mjs.map +1 -1
  209. package/fesm2020/mtxTooltip.mjs +11 -10
  210. package/fesm2020/ng-matero-extensions.mjs +1 -0
  211. package/grid/_grid-theme.import.scss +1 -1
  212. package/grid/_grid-theme.scss +16 -16
  213. package/grid/{cell.component.d.ts → cell.d.ts} +8 -8
  214. package/grid/{cell.component.scss → cell.scss} +0 -0
  215. package/grid/{column-menu.component.d.ts → column-menu.d.ts} +4 -4
  216. package/grid/{column-menu.component.scss → column-menu.scss} +6 -10
  217. package/grid/column-resize/_column-resize.scss +9 -9
  218. package/grid/column-resize/column-resize-directives/column-resize-flex.d.ts +1 -1
  219. package/grid/column-resize/column-resize-directives/column-resize.d.ts +1 -1
  220. package/grid/column-resize/overlay-handle.d.ts +1 -1
  221. package/grid/column-resize/resizable-directives/resizable.d.ts +1 -1
  222. package/grid/{expansion-toggle.directive.d.ts → expansion-toggle.d.ts} +4 -4
  223. package/grid/{grid.module.d.ts → grid-module.d.ts} +5 -5
  224. package/grid/{grid.service.d.ts → grid-utils.d.ts} +4 -4
  225. package/grid/{grid.component.d.ts → grid.d.ts} +18 -17
  226. package/grid/{grid.component.scss → grid.scss} +17 -29
  227. package/grid/{grid.interface.d.ts → interfaces.d.ts} +0 -6
  228. package/grid/public-api.d.ts +7 -7
  229. package/loader/_loader-theme.import.scss +1 -1
  230. package/loader/_loader-theme.scss +2 -2
  231. package/loader/{loader.module.d.ts → loader-module.d.ts} +2 -2
  232. package/loader/{loader.component.d.ts → loader.d.ts} +3 -3
  233. package/loader/{loader.component.scss → loader.scss} +2 -2
  234. package/loader/public-api.d.ts +2 -2
  235. package/package.json +8 -24
  236. package/popover/_popover-theme.import.scss +1 -1
  237. package/popover/_popover-theme.scss +2 -2
  238. package/popover/popover-content.d.ts +2 -2
  239. package/popover/popover-target.d.ts +1 -1
  240. package/popover/popover-trigger.d.ts +1 -1
  241. package/popover/popover.d.ts +1 -1
  242. package/progress/_progress-theme.import.scss +1 -1
  243. package/progress/_progress-theme.scss +2 -2
  244. package/progress/{progress.module.d.ts → progress-module.d.ts} +2 -2
  245. package/progress/{progress.component.d.ts → progress.d.ts} +3 -3
  246. package/progress/{progress.component.scss → progress.scss} +0 -0
  247. package/progress/public-api.d.ts +2 -2
  248. package/select/_select-density.scss +68 -0
  249. package/select/_select-theme.import.scss +2 -1
  250. package/select/_select-theme.scss +6 -2
  251. package/select/{option.component.d.ts → option.d.ts} +3 -3
  252. package/select/public-api.d.ts +4 -4
  253. package/select/select-module.d.ts +12 -0
  254. package/select/{select.component.d.ts → select.d.ts} +5 -5
  255. package/select/{select.component.scss → select.scss} +14 -22
  256. package/select/{templates.directive.d.ts → templates.d.ts} +33 -33
  257. package/slider/_slider-theme.import.scss +1 -1
  258. package/slider/_slider-theme.scss +3 -4
  259. package/slider/slider.d.ts +1 -1
  260. package/slider/slider.scss +3 -3
  261. package/split/_split-theme.import.scss +1 -1
  262. package/split/_split-theme.scss +2 -2
  263. package/split/{interface.d.ts → interfaces.d.ts} +2 -2
  264. package/split/public-api.d.ts +4 -4
  265. package/split/{split.module.d.ts → split-module.d.ts} +3 -3
  266. package/split/{split-pane.directive.d.ts → split-pane.d.ts} +5 -5
  267. package/split/{split.component.d.ts → split.d.ts} +11 -11
  268. package/split/{split.component.scss → split.scss} +0 -0
  269. package/split/utils.d.ts +4 -1
  270. package/tooltip/_tooltip-theme.import.scss +1 -1
  271. package/tooltip/_tooltip-theme.scss +3 -4
  272. package/tooltip/tooltip.d.ts +2 -2
  273. package/_all-color.scss +0 -47
  274. package/_all-theme.scss +0 -47
  275. package/button/button-loading.directive.d.ts +0 -26
  276. package/checkbox-group/checkbox-group.component.scss +0 -12
  277. package/core/density/private/_compatibility.scss +0 -74
  278. package/dialog/dialog.component.d.ts +0 -12
  279. package/dialog/dialog.component.scss +0 -27
  280. package/esm2020/alert/alert.component.mjs +0 -52
  281. package/esm2020/alert/alert.module.mjs +0 -18
  282. package/esm2020/button/button-loading.directive.mjs +0 -77
  283. package/esm2020/button/button.module.mjs +0 -20
  284. package/esm2020/checkbox-group/checkbox-group.component.mjs +0 -234
  285. package/esm2020/checkbox-group/checkbox-group.interface.mjs +0 -2
  286. package/esm2020/dialog/dialog.component.mjs +0 -33
  287. package/esm2020/form-group/form-group.component.mjs +0 -37
  288. package/esm2020/form-group/form-group.module.mjs +0 -18
  289. package/esm2020/form-group/mtxFormGroup.mjs +0 -5
  290. package/esm2020/form-group/public-api.mjs +0 -3
  291. package/esm2020/grid/cell.component.mjs +0 -130
  292. package/esm2020/grid/column-menu.component.mjs +0 -112
  293. package/esm2020/grid/expansion-toggle.directive.mjs +0 -64
  294. package/esm2020/grid/grid.component.mjs +0 -619
  295. package/esm2020/grid/grid.interface.mjs +0 -2
  296. package/esm2020/grid/grid.module.mjs +0 -115
  297. package/esm2020/grid/grid.service.mjs +0 -44
  298. package/esm2020/loader/loader.component.mjs +0 -69
  299. package/esm2020/loader/loader.module.mjs +0 -20
  300. package/esm2020/progress/progress.component.mjs +0 -55
  301. package/esm2020/progress/progress.module.mjs +0 -18
  302. package/esm2020/select/option.component.mjs +0 -57
  303. package/esm2020/select/select.component.mjs +0 -549
  304. package/esm2020/select/select.module.mjs +0 -74
  305. package/esm2020/select/templates.directive.mjs +0 -124
  306. package/esm2020/split/interface.mjs +0 -2
  307. package/esm2020/split/split-pane.directive.mjs +0 -149
  308. package/esm2020/split/split.component.mjs +0 -619
  309. package/esm2020/split/split.module.mjs +0 -19
  310. package/esm2020/text3d/mtxText3d.mjs +0 -5
  311. package/esm2020/text3d/public-api.mjs +0 -3
  312. package/esm2020/text3d/text3d.component.mjs +0 -45
  313. package/esm2020/text3d/text3d.module.mjs +0 -18
  314. package/fesm2015/mtxFormGroup.mjs +0 -59
  315. package/fesm2015/mtxFormGroup.mjs.map +0 -1
  316. package/fesm2015/mtxText3d.mjs +0 -67
  317. package/fesm2015/mtxText3d.mjs.map +0 -1
  318. package/fesm2020/mtxFormGroup.mjs +0 -59
  319. package/fesm2020/mtxFormGroup.mjs.map +0 -1
  320. package/fesm2020/mtxText3d.mjs +0 -67
  321. package/fesm2020/mtxText3d.mjs.map +0 -1
  322. package/form-group/_form-group-theme.import.scss +0 -2
  323. package/form-group/_form-group-theme.scss +0 -95
  324. package/form-group/form-group.component.d.ts +0 -15
  325. package/form-group/form-group.component.scss +0 -103
  326. package/form-group/form-group.module.d.ts +0 -8
  327. package/form-group/index.d.ts +0 -5
  328. package/form-group/public-api.d.ts +0 -2
  329. package/select/select.module.d.ts +0 -12
  330. package/text3d/_text3d-theme.import.scss +0 -2
  331. package/text3d/_text3d-theme.scss +0 -48
  332. package/text3d/index.d.ts +0 -5
  333. package/text3d/public-api.d.ts +0 -2
  334. package/text3d/text3d.component.d.ts +0 -14
  335. package/text3d/text3d.component.scss +0 -21
  336. package/text3d/text3d.module.d.ts +0 -8
@@ -140,9 +140,9 @@ export class MtxDrawer {
140
140
  return Injector.create({ parent: userInjector || this._injector, providers });
141
141
  }
142
142
  }
143
- /** @nocollapse */ MtxDrawer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MtxDrawer, deps: [{ token: i1.Overlay }, { token: i0.Injector }, { token: MtxDrawer, optional: true, skipSelf: true }, { token: MTX_DRAWER_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
144
- /** @nocollapse */ MtxDrawer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MtxDrawer });
145
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MtxDrawer, decorators: [{
143
+ /** @nocollapse */ MtxDrawer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MtxDrawer, deps: [{ token: i1.Overlay }, { token: i0.Injector }, { token: MtxDrawer, optional: true, skipSelf: true }, { token: MTX_DRAWER_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
144
+ /** @nocollapse */ MtxDrawer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MtxDrawer });
145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MtxDrawer, decorators: [{
146
146
  type: Injectable
147
147
  }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.Injector }, { type: MtxDrawer, decorators: [{
148
148
  type: Optional
@@ -163,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
163
163
  function _applyConfigDefaults(defaults, config) {
164
164
  return { ...defaults, ...config };
165
165
  }
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9kcmF3ZXIvZHJhd2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQVcsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBaUIsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckYsT0FBTyxFQUVMLFVBQVUsRUFDVixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixXQUFXLEVBQ1gsY0FBYyxFQUNkLE1BQU0sRUFHTixXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEVBQUUsSUFBSSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFFNUMsMEZBQTBGO0FBQzFGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBTSxlQUFlLENBQUMsQ0FBQztBQUV4RSwwRUFBMEU7QUFDMUUsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQzFELDRCQUE0QixDQUM3QixDQUFDO0FBRUY7O0dBRUc7QUFFSCxNQUFNLE9BQU8sU0FBUztJQWlCcEIsWUFDVSxRQUFpQixFQUNqQixTQUFtQixFQUNLLGFBQXdCLEVBR2hELGVBQWlDO1FBTGpDLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNLLGtCQUFhLEdBQWIsYUFBYSxDQUFXO1FBR2hELG9CQUFlLEdBQWYs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LFNBQVM7a0JBRHJCLFVBQVU7dUdBcUJ3QyxTQUFTOzBCQUF2RCxRQUFROzswQkFBSSxRQUFROzswQkFDcEIsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQywwQkFBMEI7O0FBOEp0Qzs7Ozs7R0FLRztBQUNILFNBQVMsb0JBQW9CLENBQzNCLFFBQXlCLEVBQ3pCLE1BQXdCO0lBRXhCLE9BQU8sRUFBRSxHQUFHLFFBQVEsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3BDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIENvbXBvbmVudFR5cGUsIFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBDb21wb25lbnRSZWYsXG4gIEluamVjdGFibGUsXG4gIEluamVjdG9yLFxuICBPcHRpb25hbCxcbiAgU2tpcFNlbGYsXG4gIFRlbXBsYXRlUmVmLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIFN0YXRpY1Byb3ZpZGVyLFxuICBJbmplY3RGbGFncyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBvZiBhcyBvYnNlcnZhYmxlT2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE10eERyYXdlckNvbmZpZyB9IGZyb20gJy4vZHJhd2VyLWNvbmZpZyc7XG5pbXBvcnQgeyBNdHhEcmF3ZXJDb250YWluZXIgfSBmcm9tICcuL2RyYXdlci1jb250YWluZXInO1xuaW1wb3J0IHsgTXR4RHJhd2VyUmVmIH0gZnJvbSAnLi9kcmF3ZXItcmVmJztcblxuLyoqIEluamVjdGlvbiB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGFjY2VzcyB0aGUgZGF0YSB0aGF0IHdhcyBwYXNzZWQgaW4gdG8gYSBkcmF3ZXIuICovXG5leHBvcnQgY29uc3QgTVRYX0RSQVdFUl9EQVRBID0gbmV3IEluamVjdGlvblRva2VuPGFueT4oJ010eERyYXdlckRhdGEnKTtcblxuLyoqIEluamVjdGlvbiB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgZGVmYXVsdCBkcmF3ZXIgb3B0aW9ucy4gKi9cbmV4cG9ydCBjb25zdCBNVFhfRFJBV0VSX0RFRkFVTFRfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNdHhEcmF3ZXJDb25maWc+KFxuICAnbXR4LWRyYXdlci1kZWZhdWx0LW9wdGlvbnMnXG4pO1xuXG4vKipcbiAqIFNlcnZpY2UgdG8gdHJpZ2dlciBNYXRlcmlhbCBEZXNpZ24gYm90dG9tIHNoZWV0cy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE10eERyYXdlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2RyYXdlclJlZkF0VGhpc0xldmVsOiBNdHhEcmF3ZXJSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnRseSBvcGVuZWQgZHJhd2VyLiAqL1xuICBnZXQgX29wZW5lZERyYXdlclJlZigpOiBNdHhEcmF3ZXJSZWY8YW55PiB8IG51bGwge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX3BhcmVudERyYXdlcjtcbiAgICByZXR1cm4gcGFyZW50ID8gcGFyZW50Ll9vcGVuZWREcmF3ZXJSZWYgOiB0aGlzLl9kcmF3ZXJSZWZBdFRoaXNMZXZlbDtcbiAgfVxuXG4gIHNldCBfb3BlbmVkRHJhd2VyUmVmKHZhbHVlOiBNdHhEcmF3ZXJSZWY8YW55PiB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5fcGFyZW50RHJhd2VyKSB7XG4gICAgICB0aGlzLl9wYXJlbnREcmF3ZXIuX29wZW5lZERyYXdlclJlZiA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kcmF3ZXJSZWZBdFRoaXNMZXZlbCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHByaXZhdGUgX3BhcmVudERyYXdlcjogTXR4RHJhd2VyLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChNVFhfRFJBV0VSX0RFRkFVTFRfT1BUSU9OUylcbiAgICBwcml2YXRlIF9kZWZhdWx0T3B0aW9ucz86IE10eERyYXdlckNvbmZpZ1xuICApIHt9XG5cbiAgLyoqXG4gICAqIE9wZW5zIGEgZHJhd2VyIGNvbnRhaW5pbmcgdGhlIGdpdmVuIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIGNvbXBvbmVudCBUeXBlIG9mIHRoZSBjb21wb25lbnQgdG8gbG9hZCBpbnRvIHRoZSBkcmF3ZXIuXG4gICAqIEBwYXJhbSBjb25maWcgRXh0cmEgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgKiBAcmV0dXJucyBSZWZlcmVuY2UgdG8gdGhlIG5ld2x5LW9wZW5lZCBkcmF3ZXIuXG4gICAqL1xuICBvcGVuPFQsIEQgPSBhbnksIFIgPSBhbnk+KFxuICAgIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxUPixcbiAgICBjb25maWc/OiBNdHhEcmF3ZXJDb25maWc8RD5cbiAgKTogTXR4RHJhd2VyUmVmPFQsIFI+O1xuXG4gIC8qKlxuICAgKiBPcGVucyBhIGRyYXdlciBjb250YWluaW5nIHRoZSBnaXZlbiB0ZW1wbGF0ZS5cbiAgICogQHBhcmFtIHRlbXBsYXRlIFRlbXBsYXRlUmVmIHRvIGluc3RhbnRpYXRlIGFzIHRoZSBkcmF3ZXIgY29udGVudC5cbiAgICogQHBhcmFtIGNvbmZpZyBFeHRyYSBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIFJlZmVyZW5jZSB0byB0aGUgbmV3bHktb3BlbmVkIGRyYXdlci5cbiAgICovXG4gIG9wZW48VCwgRCA9IGFueSwgUiA9IGFueT4oXG4gICAgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPFQ+LFxuICAgIGNvbmZpZz86IE10eERyYXdlckNvbmZpZzxEPlxuICApOiBNdHhEcmF3ZXJSZWY8VCwgUj47XG5cbiAgb3BlbjxULCBEID0gYW55LCBSID0gYW55PihcbiAgICBjb21wb25lbnRPclRlbXBsYXRlUmVmOiBDb21wb25lbnRUeXBlPFQ+IHwgVGVtcGxhdGVSZWY8VD4sXG4gICAgY29uZmlnPzogTXR4RHJhd2VyQ29uZmlnPEQ+XG4gICk6IE10eERyYXdlclJlZjxULCBSPiB7XG4gICAgY29uc3QgX2NvbmZpZyA9IF9hcHBseUNvbmZpZ0RlZmF1bHRzKHRoaXMuX2RlZmF1bHRPcHRpb25zIHx8IG5ldyBNdHhEcmF3ZXJDb25maWcoKSwgY29uZmlnKTtcbiAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5fY3JlYXRlT3ZlcmxheShfY29uZmlnKTtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLl9hdHRhY2hDb250YWluZXIob3ZlcmxheVJlZiwgX2NvbmZpZyk7XG4gICAgY29uc3QgcmVmID0gbmV3IE10eERyYXdlclJlZjxULCBSPihjb250YWluZXIsIG92ZXJsYXlSZWYpO1xuXG4gICAgaWYgKGNvbXBvbmVudE9yVGVtcGxhdGVSZWYgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgICAgY29udGFpbmVyLmF0dGFjaFRlbXBsYXRlUG9ydGFsKFxuICAgICAgICBuZXcgVGVtcGxhdGVQb3J0YWw8VD4oY29tcG9uZW50T3JUZW1wbGF0ZVJlZiwgbnVsbCEsIHtcbiAgICAgICAgICAkaW1wbGljaXQ6IF9jb25maWcuZGF0YSxcbiAgICAgICAgICBkcmF3ZXJSZWY6IHJlZixcbiAgICAgICAgfSBhcyBhbnkpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKFxuICAgICAgICBjb21wb25lbnRPclRlbXBsYXRlUmVmLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHRoaXMuX2NyZWF0ZUluamVjdG9yKF9jb25maWcsIHJlZilcbiAgICAgICk7XG4gICAgICBjb25zdCBjb250ZW50UmVmID0gY29udGFpbmVyLmF0dGFjaENvbXBvbmVudFBvcnRhbChwb3J0YWwpO1xuICAgICAgcmVmLmluc3RhbmNlID0gY29udGVudFJlZi5pbnN0YW5jZTtcbiAgICB9XG5cbiAgICAvLyBXaGVuIHRoZSBkcmF3ZXIgaXMgZGlzbWlzc2VkLCBjbGVhciB0aGUgcmVmZXJlbmNlIHRvIGl0LlxuICAgIHJlZi5hZnRlckRpc21pc3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAvLyBDbGVhciB0aGUgZHJhd2VyIHJlZiBpZiBpdCBoYXNuJ3QgYWxyZWFkeSBiZWVuIHJlcGxhY2VkIGJ5IGEgbmV3ZXIgb25lLlxuICAgICAgaWYgKHRoaXMuX29wZW5lZERyYXdlclJlZiA9PSByZWYpIHtcbiAgICAgICAgdGhpcy5fb3BlbmVkRHJhd2VyUmVmID0gbnVsbDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLl9vcGVuZWREcmF3ZXJSZWYpIHtcbiAgICAgIC8vIElmIGEgZHJhd2VyIGlzIGFscmVhZHkgaW4gdmlldywgZGlzbWlzcyBpdCBhbmQgZW50ZXIgdGhlXG4gICAgICAvLyBuZXcgZHJhd2VyIGFmdGVyIGV4aXQgYW5pbWF0aW9uIGlzIGNvbXBsZXRlLlxuICAgICAgdGhpcy5fb3BlbmVkRHJhd2VyUmVmLmFmdGVyRGlzbWlzc2VkKCkuc3Vic2NyaWJlKCgpID0+IHJlZi5jb250YWluZXJJbnN0YW5jZS5lbnRlcigpKTtcbiAgICAgIHRoaXMuX29wZW5lZERyYXdlclJlZi5kaXNtaXNzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIG5vIGRyYXdlciBpcyBpbiB2aWV3LCBlbnRlciB0aGUgbmV3IGRyYXdlci5cbiAgICAgIHJlZi5jb250YWluZXJJbnN0YW5jZS5lbnRlcigpO1xuICAgIH1cblxuICAgIHRoaXMuX29wZW5lZERyYXdlclJlZiA9IHJlZjtcblxuICAgIHJldHVybiByZWY7XG4gIH1cblxuICAvKipcbiAgICogRGlzbWlzc2VzIHRoZSBjdXJyZW50bHktdmlzaWJsZSBkcmF3ZXIuXG4gICAqIEBwYXJhbSByZXN1bHQgRGF0YSB0byBwYXNzIHRvIHRoZSBkcmF3ZXIgaW5zdGFuY2UuXG4gICAqL1xuICBkaXNtaXNzPFIgPSBhbnk+KHJlc3VsdD86IFIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fb3BlbmVkRHJhd2VyUmVmKSB7XG4gICAgICB0aGlzLl9vcGVuZWREcmF3ZXJSZWYuZGlzbWlzcyhyZXN1bHQpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLl9kcmF3ZXJSZWZBdFRoaXNMZXZlbCkge1xuICAgICAgdGhpcy5fZHJhd2VyUmVmQXRUaGlzTGV2ZWwuZGlzbWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2hlcyB0aGUgZHJhd2VyIGNvbnRhaW5lciBjb21wb25lbnQgdG8gdGhlIG92ZXJsYXkuXG4gICAqL1xuICBwcml2YXRlIF9hdHRhY2hDb250YWluZXIob3ZlcmxheVJlZjogT3ZlcmxheVJlZiwgY29uZmlnOiBNdHhEcmF3ZXJDb25maWcpOiBNdHhEcmF3ZXJDb250YWluZXIge1xuICAgIGNvbnN0IHVzZXJJbmplY3RvciA9IGNvbmZpZyAmJiBjb25maWcudmlld0NvbnRhaW5lclJlZiAmJiBjb25maWcudmlld0NvbnRhaW5lclJlZi5pbmplY3RvcjtcbiAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IHVzZXJJbmplY3RvciB8fCB0aGlzLl9pbmplY3RvcixcbiAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTXR4RHJhd2VyQ29uZmlnLCB1c2VWYWx1ZTogY29uZmlnIH1dLFxuICAgIH0pO1xuXG4gICAgY29uc3QgY29udGFpbmVyUG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChcbiAgICAgIE10eERyYXdlckNvbnRhaW5lcixcbiAgICAgIGNvbmZpZy52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgaW5qZWN0b3JcbiAgICApO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZjogQ29tcG9uZW50UmVmPE10eERyYXdlckNvbnRhaW5lcj4gPSBvdmVybGF5UmVmLmF0dGFjaChjb250YWluZXJQb3J0YWwpO1xuICAgIHJldHVybiBjb250YWluZXJSZWYuaW5zdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBvdmVybGF5IGFuZCBwbGFjZXMgaXQgaW4gdGhlIGNvcnJlY3QgbG9jYXRpb24uXG4gICAqIEBwYXJhbSBjb25maWcgVGhlIHVzZXItc3BlY2lmaWVkIGRyYXdlciBjb25maWcuXG4gICAqL1xuICBwcml2YXRlIF9jcmVhdGVPdmVybGF5KGNvbmZpZzogTXR4RHJhd2VyQ29uZmlnKTogT3ZlcmxheVJlZiB7XG4gICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIGRpcmVjdGlvbjogY29uZmlnLmRpcmVjdGlvbixcbiAgICAgIGhhc0JhY2tkcm9wOiBjb25maWcuaGFzQmFja2Ryb3AsXG4gICAgICBkaXNwb3NlT25OYXZpZ2F0aW9uOiBjb25maWcuY2xvc2VPbk5hdmlnYXRpb24sXG4gICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IGNvbmZpZy5zY3JvbGxTdHJhdGVneSB8fCB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMuX292ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKVtjb25maWcucG9zaXRpb24hXSgnMCcpLFxuICAgIH0pO1xuXG4gICAgaWYgKGNvbmZpZy5iYWNrZHJvcENsYXNzKSB7XG4gICAgICBvdmVybGF5Q29uZmlnLmJhY2tkcm9wQ2xhc3MgPSBjb25maWcuYmFja2Ryb3BDbGFzcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbmplY3RvciB0byBiZSB1c2VkIGluc2lkZSBvZiBhIGRyYXdlciBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBjb25maWcgQ29uZmlnIHRoYXQgd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSBkcmF3ZXIuXG4gICAqIEBwYXJhbSBkcmF3ZXJSZWYgUmVmZXJlbmNlIHRvIHRoZSBkcmF3ZXIuXG4gICAqL1xuICBwcml2YXRlIF9jcmVhdGVJbmplY3RvcjxUPihjb25maWc6IE10eERyYXdlckNvbmZpZywgZHJhd2VyUmVmOiBNdHhEcmF3ZXJSZWY8VD4pOiBJbmplY3RvciB7XG4gICAgY29uc3QgdXNlckluamVjdG9yID0gY29uZmlnICYmIGNvbmZpZy52aWV3Q29udGFpbmVyUmVmICYmIGNvbmZpZy52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yO1xuICAgIGNvbnN0IHByb3ZpZGVyczogU3RhdGljUHJvdmlkZXJbXSA9IFtcbiAgICAgIHsgcHJvdmlkZTogTXR4RHJhd2VyUmVmLCB1c2VWYWx1ZTogZHJhd2VyUmVmIH0sXG4gICAgICB7IHByb3ZpZGU6IE1UWF9EUkFXRVJfREFUQSwgdXNlVmFsdWU6IGNvbmZpZy5kYXRhIH0sXG4gICAgXTtcblxuICAgIGlmIChcbiAgICAgIGNvbmZpZy5kaXJlY3Rpb24gJiZcbiAgICAgICghdXNlckluamVjdG9yIHx8XG4gICAgICAgICF1c2VySW5qZWN0b3IuZ2V0PERpcmVjdGlvbmFsaXR5IHwgbnVsbD4oRGlyZWN0aW9uYWxpdHksIG51bGwsIEluamVjdEZsYWdzLk9wdGlvbmFsKSlcbiAgICApIHtcbiAgICAgIHByb3ZpZGVycy5wdXNoKHtcbiAgICAgICAgcHJvdmlkZTogRGlyZWN0aW9uYWxpdHksXG4gICAgICAgIHVzZVZhbHVlOiB7IHZhbHVlOiBjb25maWcuZGlyZWN0aW9uLCBjaGFuZ2U6IG9ic2VydmFibGVPZigpIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gSW5qZWN0b3IuY3JlYXRlKHsgcGFyZW50OiB1c2VySW5qZWN0b3IgfHwgdGhpcy5faW5qZWN0b3IsIHByb3ZpZGVycyB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEFwcGxpZXMgZGVmYXVsdCBvcHRpb25zIHRvIHRoZSBkcmF3ZXIgY29uZmlnLlxuICogQHBhcmFtIGRlZmF1bHRzIE9iamVjdCBjb250YWluaW5nIHRoZSBkZWZhdWx0IHZhbHVlcyB0byB3aGljaCB0byBmYWxsIGJhY2suXG4gKiBAcGFyYW0gY29uZmlnIFRoZSBjb25maWd1cmF0aW9uIHRvIHdoaWNoIHRoZSBkZWZhdWx0cyB3aWxsIGJlIGFwcGxpZWQuXG4gKiBAcmV0dXJucyBUaGUgbmV3IGNvbmZpZ3VyYXRpb24gb2JqZWN0IHdpdGggZGVmYXVsdHMgYXBwbGllZC5cbiAqL1xuZnVuY3Rpb24gX2FwcGx5Q29uZmlnRGVmYXVsdHMoXG4gIGRlZmF1bHRzOiBNdHhEcmF3ZXJDb25maWcsXG4gIGNvbmZpZz86IE10eERyYXdlckNvbmZpZ1xuKTogTXR4RHJhd2VyQ29uZmlnIHtcbiAgcmV0dXJuIHsgLi4uZGVmYXVsdHMsIC4uLmNvbmZpZyB9O1xufVxuIl19
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9kcmF3ZXIvZHJhd2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQVcsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBaUIsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckYsT0FBTyxFQUVMLFVBQVUsRUFDVixRQUFRLEVBQ1IsUUFBUSxFQUNSLFFBQVEsRUFDUixXQUFXLEVBQ1gsY0FBYyxFQUNkLE1BQU0sRUFHTixXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEVBQUUsSUFBSSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7QUFFNUMsMEZBQTBGO0FBQzFGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBTSxlQUFlLENBQUMsQ0FBQztBQUV4RSwwRUFBMEU7QUFDMUUsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxjQUFjLENBQzFELDRCQUE0QixDQUM3QixDQUFDO0FBRUY7O0dBRUc7QUFFSCxNQUFNLE9BQU8sU0FBUztJQWlCcEIsWUFDVSxRQUFpQixFQUNqQixTQUFtQixFQUNLLGFBQXdCLEVBR2hELGVBQWlDO1FBTGpDLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNLLGtCQUFhLEdBQWIsYUFBYSxDQUFXO1FBR2hELG9CQUFlLEdBQWYsZUFBZSxDQUFrQjtRQXRCbkMsMEJBQXFCLEdBQTZCLElBQUksQ0FBQztJQXVCNUQsQ0FBQztJQXJCSixnREFBZ0Q7SUFDaEQsSUFBSSxnQkFBZ0I7UUFDbEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNsQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDdkUsQ0FBQztJQUVELElBQUksZ0JBQWdCLENBQUMsS0FBK0I7UUFDbEQsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1NBQzdDO2FBQU07WUFDTCxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQWlDRCxJQUFJLENBQ0Ysc0JBQXlELEVBQ3pELE1BQTJCO1FBRTNCLE1BQU0sT0FBTyxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxlQUFlLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1RixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDN0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxZQUFZLENBQU8sU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTFELElBQUksc0JBQXNCLFlBQVksV0FBVyxFQUFFO1lBQ2pELFNBQVMsQ0FBQyxvQkFBb0IsQ0FDNUIsSUFBSSxjQUFjLENBQUksc0JBQXNCLEVBQUUsSUFBSyxFQUFFO2dCQUNuRCxTQUFTLEVBQUUsT0FBTyxDQUFDLElBQUk7Z0JBQ3ZCLFNBQVMsRUFBRSxHQUFHO2FBQ1IsQ0FBQyxDQUNWLENBQUM7U0FDSDthQUFNO1lBQ0wsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQ2hDLHNCQUFzQixFQUN0QixTQUFTLEVBQ1QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQ25DLENBQUM7WUFDRixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0QsR0FBRyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQ3BDO1FBRUQsMkRBQTJEO1FBQzNELEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xDLDBFQUEwRTtZQUMxRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxHQUFHLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7YUFDOUI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLDJEQUEyRDtZQUMzRCwrQ0FBK0M7WUFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUN0RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDakM7YUFBTTtZQUNMLGlEQUFpRDtZQUNqRCxHQUFHLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDL0I7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO1FBRTVCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7T0FHRztJQUNILE9BQU8sQ0FBVSxNQUFVO1FBQ3pCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzlCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUN0QztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLGdCQUFnQixDQUFDLFVBQXNCLEVBQUUsTUFBdUI7UUFDdEUsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1FBQzNGLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDL0IsTUFBTSxFQUFFLFlBQVksSUFBSSxJQUFJLENBQUMsU0FBUztZQUN0QyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO1NBQzVELENBQUMsQ0FBQztRQUVILE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxDQUN6QyxrQkFBa0IsRUFDbEIsTUFBTSxDQUFDLGdCQUFnQixFQUN2QixRQUFRLENBQ1QsQ0FBQztRQUNGLE1BQU0sWUFBWSxHQUFxQyxVQUFVLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzFGLE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUMvQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssY0FBYyxDQUFDLE1BQXVCO1FBQzVDLE1BQU0sYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDO1lBQ3RDLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztZQUMzQixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7WUFDL0IsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLGlCQUFpQjtZQUM3QyxRQUFRLEVBQUUsTUFBTTtZQUNoQixjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRTtZQUMvRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFTLENBQUMsQ0FBQyxHQUFHLENBQUM7U0FDM0UsQ0FBQyxDQUFDO1FBRUgsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQ3hCLGFBQWEsQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztTQUNwRDtRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxlQUFlLENBQUksTUFBdUIsRUFBRSxTQUEwQjtRQUM1RSxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksTUFBTSxDQUFDLGdCQUFnQixJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7UUFDM0YsTUFBTSxTQUFTLEdBQXFCO1lBQ2xDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFO1lBQzlDLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRTtTQUNwRCxDQUFDO1FBRUYsSUFDRSxNQUFNLENBQUMsU0FBUztZQUNoQixDQUFDLENBQUMsWUFBWTtnQkFDWixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQXdCLGNBQWMsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQ3ZGO1lBQ0EsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDYixPQUFPLEVBQUUsY0FBYztnQkFDdkIsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFO2FBQzlELENBQUMsQ0FBQztTQUNKO1FBRUQsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFlBQVksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDaEYsQ0FBQzs7eUhBakxVLFNBQVMsdUhBc0JWLDBCQUEwQjs2SEF0QnpCLFNBQVM7MkZBQVQsU0FBUztrQkFEckIsVUFBVTs7MEJBcUJOLFFBQVE7OzBCQUFJLFFBQVE7OzBCQUNwQixRQUFROzswQkFDUixNQUFNOzJCQUFDLDBCQUEwQjs7QUE4SnRDOzs7OztHQUtHO0FBQ0gsU0FBUyxvQkFBb0IsQ0FDM0IsUUFBeUIsRUFDekIsTUFBd0I7SUFFeEIsT0FBTyxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7QUFDcEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCwgQ29tcG9uZW50VHlwZSwgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIENvbXBvbmVudFJlZixcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0b3IsXG4gIE9wdGlvbmFsLFxuICBTa2lwU2VsZixcbiAgVGVtcGxhdGVSZWYsXG4gIEluamVjdGlvblRva2VuLFxuICBJbmplY3QsXG4gIE9uRGVzdHJveSxcbiAgU3RhdGljUHJvdmlkZXIsXG4gIEluamVjdEZsYWdzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG9mIGFzIG9ic2VydmFibGVPZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTXR4RHJhd2VyQ29uZmlnIH0gZnJvbSAnLi9kcmF3ZXItY29uZmlnJztcbmltcG9ydCB7IE10eERyYXdlckNvbnRhaW5lciB9IGZyb20gJy4vZHJhd2VyLWNvbnRhaW5lcic7XG5pbXBvcnQgeyBNdHhEcmF3ZXJSZWYgfSBmcm9tICcuL2RyYXdlci1yZWYnO1xuXG4vKiogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIHRoZSBkYXRhIHRoYXQgd2FzIHBhc3NlZCBpbiB0byBhIGRyYXdlci4gKi9cbmV4cG9ydCBjb25zdCBNVFhfRFJBV0VSX0RBVEEgPSBuZXcgSW5qZWN0aW9uVG9rZW48YW55PignTXR4RHJhd2VyRGF0YScpO1xuXG4vKiogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBkZWZhdWx0IGRyYXdlciBvcHRpb25zLiAqL1xuZXhwb3J0IGNvbnN0IE1UWF9EUkFXRVJfREVGQVVMVF9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPE10eERyYXdlckNvbmZpZz4oXG4gICdtdHgtZHJhd2VyLWRlZmF1bHQtb3B0aW9ucydcbik7XG5cbi8qKlxuICogU2VydmljZSB0byB0cmlnZ2VyIE1hdGVyaWFsIERlc2lnbiBib3R0b20gc2hlZXRzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTXR4RHJhd2VyIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfZHJhd2VyUmVmQXRUaGlzTGV2ZWw6IE10eERyYXdlclJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudGx5IG9wZW5lZCBkcmF3ZXIuICovXG4gIGdldCBfb3BlbmVkRHJhd2VyUmVmKCk6IE10eERyYXdlclJlZjxhbnk+IHwgbnVsbCB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5fcGFyZW50RHJhd2VyO1xuICAgIHJldHVybiBwYXJlbnQgPyBwYXJlbnQuX29wZW5lZERyYXdlclJlZiA6IHRoaXMuX2RyYXdlclJlZkF0VGhpc0xldmVsO1xuICB9XG5cbiAgc2V0IF9vcGVuZWREcmF3ZXJSZWYodmFsdWU6IE10eERyYXdlclJlZjxhbnk+IHwgbnVsbCkge1xuICAgIGlmICh0aGlzLl9wYXJlbnREcmF3ZXIpIHtcbiAgICAgIHRoaXMuX3BhcmVudERyYXdlci5fb3BlbmVkRHJhd2VyUmVmID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2RyYXdlclJlZkF0VGhpc0xldmVsID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJpdmF0ZSBfcGFyZW50RHJhd2VyOiBNdHhEcmF3ZXIsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KE1UWF9EUkFXRVJfREVGQVVMVF9PUFRJT05TKVxuICAgIHByaXZhdGUgX2RlZmF1bHRPcHRpb25zPzogTXR4RHJhd2VyQ29uZmlnXG4gICkge31cblxuICAvKipcbiAgICogT3BlbnMgYSBkcmF3ZXIgY29udGFpbmluZyB0aGUgZ2l2ZW4gY29tcG9uZW50LlxuICAgKiBAcGFyYW0gY29tcG9uZW50IFR5cGUgb2YgdGhlIGNvbXBvbmVudCB0byBsb2FkIGludG8gdGhlIGRyYXdlci5cbiAgICogQHBhcmFtIGNvbmZpZyBFeHRyYSBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIFJlZmVyZW5jZSB0byB0aGUgbmV3bHktb3BlbmVkIGRyYXdlci5cbiAgICovXG4gIG9wZW48VCwgRCA9IGFueSwgUiA9IGFueT4oXG4gICAgY29tcG9uZW50OiBDb21wb25lbnRUeXBlPFQ+LFxuICAgIGNvbmZpZz86IE10eERyYXdlckNvbmZpZzxEPlxuICApOiBNdHhEcmF3ZXJSZWY8VCwgUj47XG5cbiAgLyoqXG4gICAqIE9wZW5zIGEgZHJhd2VyIGNvbnRhaW5pbmcgdGhlIGdpdmVuIHRlbXBsYXRlLlxuICAgKiBAcGFyYW0gdGVtcGxhdGUgVGVtcGxhdGVSZWYgdG8gaW5zdGFudGlhdGUgYXMgdGhlIGRyYXdlciBjb250ZW50LlxuICAgKiBAcGFyYW0gY29uZmlnIEV4dHJhIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAgICogQHJldHVybnMgUmVmZXJlbmNlIHRvIHRoZSBuZXdseS1vcGVuZWQgZHJhd2VyLlxuICAgKi9cbiAgb3BlbjxULCBEID0gYW55LCBSID0gYW55PihcbiAgICB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8VD4sXG4gICAgY29uZmlnPzogTXR4RHJhd2VyQ29uZmlnPEQ+XG4gICk6IE10eERyYXdlclJlZjxULCBSPjtcblxuICBvcGVuPFQsIEQgPSBhbnksIFIgPSBhbnk+KFxuICAgIGNvbXBvbmVudE9yVGVtcGxhdGVSZWY6IENvbXBvbmVudFR5cGU8VD4gfCBUZW1wbGF0ZVJlZjxUPixcbiAgICBjb25maWc/OiBNdHhEcmF3ZXJDb25maWc8RD5cbiAgKTogTXR4RHJhd2VyUmVmPFQsIFI+IHtcbiAgICBjb25zdCBfY29uZmlnID0gX2FwcGx5Q29uZmlnRGVmYXVsdHModGhpcy5fZGVmYXVsdE9wdGlvbnMgfHwgbmV3IE10eERyYXdlckNvbmZpZygpLCBjb25maWcpO1xuICAgIGNvbnN0IG92ZXJsYXlSZWYgPSB0aGlzLl9jcmVhdGVPdmVybGF5KF9jb25maWcpO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuX2F0dGFjaENvbnRhaW5lcihvdmVybGF5UmVmLCBfY29uZmlnKTtcbiAgICBjb25zdCByZWYgPSBuZXcgTXR4RHJhd2VyUmVmPFQsIFI+KGNvbnRhaW5lciwgb3ZlcmxheVJlZik7XG5cbiAgICBpZiAoY29tcG9uZW50T3JUZW1wbGF0ZVJlZiBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmKSB7XG4gICAgICBjb250YWluZXIuYXR0YWNoVGVtcGxhdGVQb3J0YWwoXG4gICAgICAgIG5ldyBUZW1wbGF0ZVBvcnRhbDxUPihjb21wb25lbnRPclRlbXBsYXRlUmVmLCBudWxsISwge1xuICAgICAgICAgICRpbXBsaWNpdDogX2NvbmZpZy5kYXRhLFxuICAgICAgICAgIGRyYXdlclJlZjogcmVmLFxuICAgICAgICB9IGFzIGFueSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoXG4gICAgICAgIGNvbXBvbmVudE9yVGVtcGxhdGVSZWYsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgdGhpcy5fY3JlYXRlSW5qZWN0b3IoX2NvbmZpZywgcmVmKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNvbnRlbnRSZWYgPSBjb250YWluZXIuYXR0YWNoQ29tcG9uZW50UG9ydGFsKHBvcnRhbCk7XG4gICAgICByZWYuaW5zdGFuY2UgPSBjb250ZW50UmVmLmluc3RhbmNlO1xuICAgIH1cblxuICAgIC8vIFdoZW4gdGhlIGRyYXdlciBpcyBkaXNtaXNzZWQsIGNsZWFyIHRoZSByZWZlcmVuY2UgdG8gaXQuXG4gICAgcmVmLmFmdGVyRGlzbWlzc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIC8vIENsZWFyIHRoZSBkcmF3ZXIgcmVmIGlmIGl0IGhhc24ndCBhbHJlYWR5IGJlZW4gcmVwbGFjZWQgYnkgYSBuZXdlciBvbmUuXG4gICAgICBpZiAodGhpcy5fb3BlbmVkRHJhd2VyUmVmID09IHJlZikge1xuICAgICAgICB0aGlzLl9vcGVuZWREcmF3ZXJSZWYgPSBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuX29wZW5lZERyYXdlclJlZikge1xuICAgICAgLy8gSWYgYSBkcmF3ZXIgaXMgYWxyZWFkeSBpbiB2aWV3LCBkaXNtaXNzIGl0IGFuZCBlbnRlciB0aGVcbiAgICAgIC8vIG5ldyBkcmF3ZXIgYWZ0ZXIgZXhpdCBhbmltYXRpb24gaXMgY29tcGxldGUuXG4gICAgICB0aGlzLl9vcGVuZWREcmF3ZXJSZWYuYWZ0ZXJEaXNtaXNzZWQoKS5zdWJzY3JpYmUoKCkgPT4gcmVmLmNvbnRhaW5lckluc3RhbmNlLmVudGVyKCkpO1xuICAgICAgdGhpcy5fb3BlbmVkRHJhd2VyUmVmLmRpc21pc3MoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgbm8gZHJhd2VyIGlzIGluIHZpZXcsIGVudGVyIHRoZSBuZXcgZHJhd2VyLlxuICAgICAgcmVmLmNvbnRhaW5lckluc3RhbmNlLmVudGVyKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fb3BlbmVkRHJhd2VyUmVmID0gcmVmO1xuXG4gICAgcmV0dXJuIHJlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNtaXNzZXMgdGhlIGN1cnJlbnRseS12aXNpYmxlIGRyYXdlci5cbiAgICogQHBhcmFtIHJlc3VsdCBEYXRhIHRvIHBhc3MgdG8gdGhlIGRyYXdlciBpbnN0YW5jZS5cbiAgICovXG4gIGRpc21pc3M8UiA9IGFueT4ocmVzdWx0PzogUik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9vcGVuZWREcmF3ZXJSZWYpIHtcbiAgICAgIHRoaXMuX29wZW5lZERyYXdlclJlZi5kaXNtaXNzKHJlc3VsdCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuX2RyYXdlclJlZkF0VGhpc0xldmVsKSB7XG4gICAgICB0aGlzLl9kcmF3ZXJSZWZBdFRoaXNMZXZlbC5kaXNtaXNzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaGVzIHRoZSBkcmF3ZXIgY29udGFpbmVyIGNvbXBvbmVudCB0byB0aGUgb3ZlcmxheS5cbiAgICovXG4gIHByaXZhdGUgX2F0dGFjaENvbnRhaW5lcihvdmVybGF5UmVmOiBPdmVybGF5UmVmLCBjb25maWc6IE10eERyYXdlckNvbmZpZyk6IE10eERyYXdlckNvbnRhaW5lciB7XG4gICAgY29uc3QgdXNlckluamVjdG9yID0gY29uZmlnICYmIGNvbmZpZy52aWV3Q29udGFpbmVyUmVmICYmIGNvbmZpZy52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yO1xuICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHBhcmVudDogdXNlckluamVjdG9yIHx8IHRoaXMuX2luamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBNdHhEcmF3ZXJDb25maWcsIHVzZVZhbHVlOiBjb25maWcgfV0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb250YWluZXJQb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKFxuICAgICAgTXR4RHJhd2VyQ29udGFpbmVyLFxuICAgICAgY29uZmlnLnZpZXdDb250YWluZXJSZWYsXG4gICAgICBpbmplY3RvclxuICAgICk7XG4gICAgY29uc3QgY29udGFpbmVyUmVmOiBDb21wb25lbnRSZWY8TXR4RHJhd2VyQ29udGFpbmVyPiA9IG92ZXJsYXlSZWYuYXR0YWNoKGNvbnRhaW5lclBvcnRhbCk7XG4gICAgcmV0dXJuIGNvbnRhaW5lclJlZi5pbnN0YW5jZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IG92ZXJsYXkgYW5kIHBsYWNlcyBpdCBpbiB0aGUgY29ycmVjdCBsb2NhdGlvbi5cbiAgICogQHBhcmFtIGNvbmZpZyBUaGUgdXNlci1zcGVjaWZpZWQgZHJhd2VyIGNvbmZpZy5cbiAgICovXG4gIHByaXZhdGUgX2NyZWF0ZU92ZXJsYXkoY29uZmlnOiBNdHhEcmF3ZXJDb25maWcpOiBPdmVybGF5UmVmIHtcbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgZGlyZWN0aW9uOiBjb25maWcuZGlyZWN0aW9uLFxuICAgICAgaGFzQmFja2Ryb3A6IGNvbmZpZy5oYXNCYWNrZHJvcCxcbiAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IGNvbmZpZy5jbG9zZU9uTmF2aWdhdGlvbixcbiAgICAgIG1heFdpZHRoOiAnMTAwJScsXG4gICAgICBzY3JvbGxTdHJhdGVneTogY29uZmlnLnNjcm9sbFN0cmF0ZWd5IHx8IHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpLFxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpW2NvbmZpZy5wb3NpdGlvbiFdKCcwJyksXG4gICAgfSk7XG5cbiAgICBpZiAoY29uZmlnLmJhY2tkcm9wQ2xhc3MpIHtcbiAgICAgIG92ZXJsYXlDb25maWcuYmFja2Ryb3BDbGFzcyA9IGNvbmZpZy5iYWNrZHJvcENsYXNzO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9vdmVybGF5LmNyZWF0ZShvdmVybGF5Q29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluamVjdG9yIHRvIGJlIHVzZWQgaW5zaWRlIG9mIGEgZHJhd2VyIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIGNvbmZpZyBDb25maWcgdGhhdCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIGRyYXdlci5cbiAgICogQHBhcmFtIGRyYXdlclJlZiBSZWZlcmVuY2UgdG8gdGhlIGRyYXdlci5cbiAgICovXG4gIHByaXZhdGUgX2NyZWF0ZUluamVjdG9yPFQ+KGNvbmZpZzogTXR4RHJhd2VyQ29uZmlnLCBkcmF3ZXJSZWY6IE10eERyYXdlclJlZjxUPik6IEluamVjdG9yIHtcbiAgICBjb25zdCB1c2VySW5qZWN0b3IgPSBjb25maWcgJiYgY29uZmlnLnZpZXdDb250YWluZXJSZWYgJiYgY29uZmlnLnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3I7XG4gICAgY29uc3QgcHJvdmlkZXJzOiBTdGF0aWNQcm92aWRlcltdID0gW1xuICAgICAgeyBwcm92aWRlOiBNdHhEcmF3ZXJSZWYsIHVzZVZhbHVlOiBkcmF3ZXJSZWYgfSxcbiAgICAgIHsgcHJvdmlkZTogTVRYX0RSQVdFUl9EQVRBLCB1c2VWYWx1ZTogY29uZmlnLmRhdGEgfSxcbiAgICBdO1xuXG4gICAgaWYgKFxuICAgICAgY29uZmlnLmRpcmVjdGlvbiAmJlxuICAgICAgKCF1c2VySW5qZWN0b3IgfHxcbiAgICAgICAgIXVzZXJJbmplY3Rvci5nZXQ8RGlyZWN0aW9uYWxpdHkgfCBudWxsPihEaXJlY3Rpb25hbGl0eSwgbnVsbCwgSW5qZWN0RmxhZ3MuT3B0aW9uYWwpKVxuICAgICkge1xuICAgICAgcHJvdmlkZXJzLnB1c2goe1xuICAgICAgICBwcm92aWRlOiBEaXJlY3Rpb25hbGl0eSxcbiAgICAgICAgdXNlVmFsdWU6IHsgdmFsdWU6IGNvbmZpZy5kaXJlY3Rpb24sIGNoYW5nZTogb2JzZXJ2YWJsZU9mKCkgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBJbmplY3Rvci5jcmVhdGUoeyBwYXJlbnQ6IHVzZXJJbmplY3RvciB8fCB0aGlzLl9pbmplY3RvciwgcHJvdmlkZXJzIH0pO1xuICB9XG59XG5cbi8qKlxuICogQXBwbGllcyBkZWZhdWx0IG9wdGlvbnMgdG8gdGhlIGRyYXdlciBjb25maWcuXG4gKiBAcGFyYW0gZGVmYXVsdHMgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGRlZmF1bHQgdmFsdWVzIHRvIHdoaWNoIHRvIGZhbGwgYmFjay5cbiAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24gdG8gd2hpY2ggdGhlIGRlZmF1bHRzIHdpbGwgYmUgYXBwbGllZC5cbiAqIEByZXR1cm5zIFRoZSBuZXcgY29uZmlndXJhdGlvbiBvYmplY3Qgd2l0aCBkZWZhdWx0cyBhcHBsaWVkLlxuICovXG5mdW5jdGlvbiBfYXBwbHlDb25maWdEZWZhdWx0cyhcbiAgZGVmYXVsdHM6IE10eERyYXdlckNvbmZpZyxcbiAgY29uZmlnPzogTXR4RHJhd2VyQ29uZmlnXG4pOiBNdHhEcmF3ZXJDb25maWcge1xuICByZXR1cm4geyAuLi5kZWZhdWx0cywgLi4uY29uZmlnIH07XG59XG4iXX0=
@@ -0,0 +1,130 @@
1
+ import { Component, Input, ViewEncapsulation } from '@angular/core';
2
+ import { isObservable } from 'rxjs';
3
+ import PhotoViewer from 'photoviewer';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@ng-matero/extensions/dialog";
6
+ import * as i2 from "./grid-utils";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "@angular/material/button";
9
+ import * as i5 from "@angular/material/chips";
10
+ import * as i6 from "@angular/material/tooltip";
11
+ import * as i7 from "@angular/material/icon";
12
+ import * as i8 from "@ng-matero/extensions/core";
13
+ export class MtxGridCell {
14
+ constructor(_dialog, _utils) {
15
+ this._dialog = _dialog;
16
+ this._utils = _utils;
17
+ /** Row data */
18
+ this.rowData = {};
19
+ /** Table data */
20
+ this.data = [];
21
+ /** Whether show summary */
22
+ this.summary = false;
23
+ /** Placeholder for the empty value (`null`, `''`, `[]`) */
24
+ this.placeholder = '--';
25
+ }
26
+ get _colValue() {
27
+ return this._utils.getCellValue(this.rowData, this.colDef);
28
+ }
29
+ _isEmptyValue(value) {
30
+ return value == null || value.toString() === '';
31
+ }
32
+ _isContainHTML(value) {
33
+ return /<\/?[a-z][\s\S]*>/i.test(value);
34
+ }
35
+ _getText(value) {
36
+ return value === undefined ? '' : this._isEmptyValue(value) ? this.placeholder : value;
37
+ }
38
+ _getTooltip(value) {
39
+ return this._isEmptyValue(value) ? '' : value;
40
+ }
41
+ _getFormatterTooltip(value) {
42
+ return this._isContainHTML(value) || this._isEmptyValue(value) ? '' : value;
43
+ }
44
+ _formatSummary(data, colDef) {
45
+ if (typeof colDef.summary === 'string') {
46
+ return colDef.summary;
47
+ }
48
+ else if (typeof colDef.summary === 'function') {
49
+ return colDef.summary(this._utils.getColData(data, colDef), colDef);
50
+ }
51
+ }
52
+ _onActionClick(event, btn, rowData) {
53
+ event.preventDefault();
54
+ event.stopPropagation();
55
+ if (btn.pop) {
56
+ this._dialog.open({
57
+ title: btn.pop?.title,
58
+ description: btn.pop?.description,
59
+ buttons: [
60
+ {
61
+ color: btn.pop?.okColor || 'primary',
62
+ text: btn.pop?.okText || 'OK',
63
+ onClick: () => btn.click?.(rowData) || {},
64
+ },
65
+ {
66
+ color: btn.pop?.closeColor,
67
+ text: btn.pop?.closeText || 'CLOSE',
68
+ onClick: () => { },
69
+ },
70
+ ],
71
+ });
72
+ }
73
+ else {
74
+ btn.click?.(rowData);
75
+ }
76
+ }
77
+ _getActionTooltip(btn) {
78
+ if (typeof btn.tooltip === 'string' || isObservable(btn.tooltip)) {
79
+ return {
80
+ message: btn.tooltip,
81
+ };
82
+ }
83
+ else {
84
+ return btn.tooltip;
85
+ }
86
+ }
87
+ _isActionDisabled(btn, rowData) {
88
+ if (typeof btn.disabled === 'boolean') {
89
+ return btn.disabled;
90
+ }
91
+ else if (typeof btn.disabled === 'function') {
92
+ return btn.disabled(rowData);
93
+ }
94
+ else {
95
+ return false;
96
+ }
97
+ }
98
+ /** Preview enlarged image */
99
+ _onImagePreview(urlStr) {
100
+ const imgs = [];
101
+ this._utils.str2arr(urlStr).forEach((url, index) => {
102
+ imgs.push({ title: index + 1 + '', src: url });
103
+ });
104
+ const footerToolbar = imgs.length > 1
105
+ ? ['zoomIn', 'zoomOut', 'prev', 'next', 'rotateRight', 'rotateLeft', 'actualSize']
106
+ : ['zoomIn', 'zoomOut', 'rotateRight', 'rotateLeft', 'actualSize'];
107
+ const options = {
108
+ title: imgs.length > 1,
109
+ footerToolbar,
110
+ };
111
+ const photoviewer = new PhotoViewer(imgs, options);
112
+ }
113
+ }
114
+ /** @nocollapse */ MtxGridCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MtxGridCell, deps: [{ token: i1.MtxDialog }, { token: i2.MtxGridUtils }], target: i0.ɵɵFactoryTarget.Component });
115
+ /** @nocollapse */ MtxGridCell.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: MtxGridCell, selector: "mtx-grid-cell", inputs: { rowData: "rowData", colDef: "colDef", data: "data", summary: "summary", placeholder: "placeholder" }, exportAs: ["mtxGridCell"], ngImport: i0, template: "<span *ngIf=\"summary; else customCellFormattingTpl\"\r\n [title]=\"_getFormatterTooltip(_formatSummary(data, colDef))\"\r\n [innerHTML]=\"_getText(_formatSummary(data, colDef))\">\r\n</span>\r\n\r\n<!-- Custom formatting -->\r\n<ng-template #customCellFormattingTpl>\r\n <span *ngIf=\"colDef.formatter; else defaultCellFormattingTpl\"\r\n [title]=\"_getFormatterTooltip(colDef.formatter(rowData, colDef))\"\r\n [innerHTML]=\"_getText(colDef.formatter(rowData, colDef))\">\r\n </span>\r\n</ng-template>\r\n\r\n<!-- Default formatting -->\r\n<ng-template #defaultCellFormattingTpl>\r\n <ng-container [ngSwitch]=\"colDef.type\">\r\n <!-- Tag -->\r\n <ng-container *ngSwitchCase=\"'tag'\">\r\n <mat-chip-listbox *ngIf=\"colDef.tag && colDef.tag[_colValue]; else tagEmptyTpl\">\r\n <mat-chip color=\"primary\" [ngClass]=\"['bg-' + colDef.tag[_colValue].color]\">\r\n {{colDef.tag[_colValue].text}}\r\n </mat-chip>\r\n </mat-chip-listbox>\r\n <ng-template #tagEmptyTpl>{{_colValue}}</ng-template>\r\n </ng-container>\r\n <!-- Buttons -->\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <ng-container *ngFor=\"let btn of colDef.buttons;\">\r\n <ng-container *ngIf=\"!btn.iif || btn.iif(rowData)\">\r\n <button *ngIf=\"btn.type==='basic'\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class||'']\"\r\n mat-button [color]=\"btn.color || 'primary'\"\r\n [disabled]=\"_isActionDisabled(btn, rowData)\"\r\n [matTooltip]=\"_getActionTooltip(btn)?.message | toObservable | async\"\r\n [matTooltipClass]=\"_getActionTooltip(btn)?.class\"\r\n [matTooltipHideDelay]=\"_getActionTooltip(btn)?.hideDelay\"\r\n [matTooltipShowDelay]=\"_getActionTooltip(btn)?.showDelay\"\r\n [matTooltipPosition]=\"_getActionTooltip(btn)?.position || 'below'\"\r\n [matTooltipTouchGestures]=\"_getActionTooltip(btn)?.touchGestures || 'auto'\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\" *ngIf=\"btn.icon\">{{btn.icon}}</mat-icon>\r\n <span>{{btn.text | toObservable | async}}</span>\r\n </button>\r\n <button *ngIf=\"!btn.type || btn.type==='icon'\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class||'']\"\r\n mat-icon-button [color]=\"btn.color || 'primary'\"\r\n [disabled]=\"_isActionDisabled(btn, rowData)\"\r\n [matTooltip]=\"_getActionTooltip(btn)?.message | toObservable | async\"\r\n [matTooltipClass]=\"_getActionTooltip(btn)?.class\"\r\n [matTooltipHideDelay]=\"_getActionTooltip(btn)?.hideDelay\"\r\n [matTooltipShowDelay]=\"_getActionTooltip(btn)?.showDelay\"\r\n [matTooltipPosition]=\"_getActionTooltip(btn)?.position || 'below'\"\r\n [matTooltipTouchGestures]=\"_getActionTooltip(btn)?.touchGestures || 'auto'\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- Link -->\r\n <ng-container *ngSwitchCase=\"'link'\">\r\n <a [href]=\"_colValue\" target=\"_blank\">{{_colValue}}</a>\r\n </ng-container>\r\n <!-- Image -->\r\n <ng-container *ngSwitchCase=\"'image'\">\r\n <img class=\"mtx-grid-img\" [src]=\"_colValue\" (click)=\"_onImagePreview(_colValue)\">\r\n </ng-container>\r\n <!-- Boolean -->\r\n <ng-container *ngSwitchCase=\"'boolean'\">\r\n <span [title]=\"_getTooltip(_colValue)\">{{_getText(_colValue)}}</span>\r\n </ng-container>\r\n <!-- Number -->\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <span [title]=\"_getTooltip(_colValue | number: colDef.typeParameter?.digitsInfo :\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_colValue | number: colDef.typeParameter?.digitsInfo :\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Currency -->\r\n <ng-container *ngSwitchCase=\"'currency'\">\r\n <span [title]=\"_getTooltip(_colValue | currency: colDef.typeParameter?.currencyCode :\r\n colDef.typeParameter?.display :\r\n colDef.typeParameter?.digitsInfo :\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_colValue | currency: colDef.typeParameter?.currencyCode :\r\n colDef.typeParameter?.display :\r\n colDef.typeParameter?.digitsInfo :\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Percent -->\r\n <ng-container *ngSwitchCase=\"'percent'\">\r\n <span [title]=\"_getTooltip(_colValue | percent: colDef.typeParameter?.digitsInfo :\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_colValue | percent: colDef.typeParameter?.digitsInfo :\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Date -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <span [title]=\"_getTooltip(_colValue | date: colDef.typeParameter?.format :\r\n colDef.typeParameter?.timezone :\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_colValue | date: colDef.typeParameter?.format :\r\n colDef.typeParameter?.timezone :\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Default -->\r\n <ng-container *ngSwitchDefault>\r\n <span [title]=\"_getTooltip(_colValue)\">{{_getText(_colValue)}}</span>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n", styles: [".mtx-grid-img{display:block;width:30px;border-radius:4px;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatChip, selector: "mat-basic-chip, mat-chip", inputs: ["color", "disabled", "disableRipple", "tabIndex", "role", "id", "aria-label", "value", "removable", "highlighted"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i5.MatChipListbox, selector: "mat-chip-listbox", inputs: ["tabIndex", "multiple", "aria-orientation", "selectable", "compareWith", "required", "value"], outputs: ["change"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }, { kind: "pipe", type: i3.PercentPipe, name: "percent" }, { kind: "pipe", type: i3.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i8.MtxToObservablePipe, name: "toObservable" }], encapsulation: i0.ViewEncapsulation.None });
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MtxGridCell, decorators: [{
117
+ type: Component,
118
+ args: [{ selector: 'mtx-grid-cell', exportAs: 'mtxGridCell', encapsulation: ViewEncapsulation.None, template: "<span *ngIf=\"summary; else customCellFormattingTpl\"\r\n [title]=\"_getFormatterTooltip(_formatSummary(data, colDef))\"\r\n [innerHTML]=\"_getText(_formatSummary(data, colDef))\">\r\n</span>\r\n\r\n<!-- Custom formatting -->\r\n<ng-template #customCellFormattingTpl>\r\n <span *ngIf=\"colDef.formatter; else defaultCellFormattingTpl\"\r\n [title]=\"_getFormatterTooltip(colDef.formatter(rowData, colDef))\"\r\n [innerHTML]=\"_getText(colDef.formatter(rowData, colDef))\">\r\n </span>\r\n</ng-template>\r\n\r\n<!-- Default formatting -->\r\n<ng-template #defaultCellFormattingTpl>\r\n <ng-container [ngSwitch]=\"colDef.type\">\r\n <!-- Tag -->\r\n <ng-container *ngSwitchCase=\"'tag'\">\r\n <mat-chip-listbox *ngIf=\"colDef.tag && colDef.tag[_colValue]; else tagEmptyTpl\">\r\n <mat-chip color=\"primary\" [ngClass]=\"['bg-' + colDef.tag[_colValue].color]\">\r\n {{colDef.tag[_colValue].text}}\r\n </mat-chip>\r\n </mat-chip-listbox>\r\n <ng-template #tagEmptyTpl>{{_colValue}}</ng-template>\r\n </ng-container>\r\n <!-- Buttons -->\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <ng-container *ngFor=\"let btn of colDef.buttons;\">\r\n <ng-container *ngIf=\"!btn.iif || btn.iif(rowData)\">\r\n <button *ngIf=\"btn.type==='basic'\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class||'']\"\r\n mat-button [color]=\"btn.color || 'primary'\"\r\n [disabled]=\"_isActionDisabled(btn, rowData)\"\r\n [matTooltip]=\"_getActionTooltip(btn)?.message | toObservable | async\"\r\n [matTooltipClass]=\"_getActionTooltip(btn)?.class\"\r\n [matTooltipHideDelay]=\"_getActionTooltip(btn)?.hideDelay\"\r\n [matTooltipShowDelay]=\"_getActionTooltip(btn)?.showDelay\"\r\n [matTooltipPosition]=\"_getActionTooltip(btn)?.position || 'below'\"\r\n [matTooltipTouchGestures]=\"_getActionTooltip(btn)?.touchGestures || 'auto'\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\" *ngIf=\"btn.icon\">{{btn.icon}}</mat-icon>\r\n <span>{{btn.text | toObservable | async}}</span>\r\n </button>\r\n <button *ngIf=\"!btn.type || btn.type==='icon'\"\r\n [ngClass]=\"['mtx-grid-action-button', btn.class||'']\"\r\n mat-icon-button [color]=\"btn.color || 'primary'\"\r\n [disabled]=\"_isActionDisabled(btn, rowData)\"\r\n [matTooltip]=\"_getActionTooltip(btn)?.message | toObservable | async\"\r\n [matTooltipClass]=\"_getActionTooltip(btn)?.class\"\r\n [matTooltipHideDelay]=\"_getActionTooltip(btn)?.hideDelay\"\r\n [matTooltipShowDelay]=\"_getActionTooltip(btn)?.showDelay\"\r\n [matTooltipPosition]=\"_getActionTooltip(btn)?.position || 'below'\"\r\n [matTooltipTouchGestures]=\"_getActionTooltip(btn)?.touchGestures || 'auto'\"\r\n (click)=\"_onActionClick($event, btn, rowData)\">\r\n <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- Link -->\r\n <ng-container *ngSwitchCase=\"'link'\">\r\n <a [href]=\"_colValue\" target=\"_blank\">{{_colValue}}</a>\r\n </ng-container>\r\n <!-- Image -->\r\n <ng-container *ngSwitchCase=\"'image'\">\r\n <img class=\"mtx-grid-img\" [src]=\"_colValue\" (click)=\"_onImagePreview(_colValue)\">\r\n </ng-container>\r\n <!-- Boolean -->\r\n <ng-container *ngSwitchCase=\"'boolean'\">\r\n <span [title]=\"_getTooltip(_colValue)\">{{_getText(_colValue)}}</span>\r\n </ng-container>\r\n <!-- Number -->\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <span [title]=\"_getTooltip(_colValue | number: colDef.typeParameter?.digitsInfo :\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_colValue | number: colDef.typeParameter?.digitsInfo :\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Currency -->\r\n <ng-container *ngSwitchCase=\"'currency'\">\r\n <span [title]=\"_getTooltip(_colValue | currency: colDef.typeParameter?.currencyCode :\r\n colDef.typeParameter?.display :\r\n colDef.typeParameter?.digitsInfo :\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_colValue | currency: colDef.typeParameter?.currencyCode :\r\n colDef.typeParameter?.display :\r\n colDef.typeParameter?.digitsInfo :\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Percent -->\r\n <ng-container *ngSwitchCase=\"'percent'\">\r\n <span [title]=\"_getTooltip(_colValue | percent: colDef.typeParameter?.digitsInfo :\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_colValue | percent: colDef.typeParameter?.digitsInfo :\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Date -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <span [title]=\"_getTooltip(_colValue | date: colDef.typeParameter?.format :\r\n colDef.typeParameter?.timezone :\r\n colDef.typeParameter?.locale)\">\r\n {{_getText(_colValue | date: colDef.typeParameter?.format :\r\n colDef.typeParameter?.timezone :\r\n colDef.typeParameter?.locale)}}\r\n </span>\r\n </ng-container>\r\n <!-- Default -->\r\n <ng-container *ngSwitchDefault>\r\n <span [title]=\"_getTooltip(_colValue)\">{{_getText(_colValue)}}</span>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n", styles: [".mtx-grid-img{display:block;width:30px;border-radius:4px;cursor:pointer}\n"] }]
119
+ }], ctorParameters: function () { return [{ type: i1.MtxDialog }, { type: i2.MtxGridUtils }]; }, propDecorators: { rowData: [{
120
+ type: Input
121
+ }], colDef: [{
122
+ type: Input
123
+ }], data: [{
124
+ type: Input
125
+ }], summary: [{
126
+ type: Input
127
+ }], placeholder: [{
128
+ type: Input
129
+ }] } });
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvZ3JpZC9jZWxsLnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9ncmlkL2NlbGwuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSXBDLE9BQU8sV0FBVyxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7OztBQVN0QyxNQUFNLE9BQU8sV0FBVztJQW1EdEIsWUFBb0IsT0FBa0IsRUFBVSxNQUFvQjtRQUFoRCxZQUFPLEdBQVAsT0FBTyxDQUFXO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQWxEcEUsZUFBZTtRQUNOLFlBQU8sR0FBUSxFQUFFLENBQUM7UUFLM0IsaUJBQWlCO1FBQ1IsU0FBSSxHQUFVLEVBQUUsQ0FBQztRQUUxQiwyQkFBMkI7UUFDbEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUV6QiwyREFBMkQ7UUFDbEQsZ0JBQVcsR0FBVyxJQUFJLENBQUM7SUFxQ21DLENBQUM7SUFuQ3hFLElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFVO1FBQ3RCLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRCxjQUFjLENBQUMsS0FBYTtRQUMxQixPQUFPLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVU7UUFD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QUFmLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNdHhEaWFsb2cgfSBmcm9tICdAbmctbWF0ZXJvL2V4dGVuc2lvbnMvZGlhbG9nJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBNdHhHcmlkQ29sdW1uLCBNdHhHcmlkQ29sdW1uQnV0dG9uIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE10eEdyaWRVdGlscyB9IGZyb20gJy4vZ3JpZC11dGlscyc7XG5pbXBvcnQgUGhvdG9WaWV3ZXIgZnJvbSAncGhvdG92aWV3ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdHgtZ3JpZC1jZWxsJyxcbiAgZXhwb3J0QXM6ICdtdHhHcmlkQ2VsbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jZWxsLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jZWxsLnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTXR4R3JpZENlbGwge1xuICAvKiogUm93IGRhdGEgKi9cbiAgQElucHV0KCkgcm93RGF0YTogYW55ID0ge307XG5cbiAgLyoqIENvbHVtbiBkZWZpbml0aW9uICovXG4gIEBJbnB1dCgpIGNvbERlZiE6IE10eEdyaWRDb2x1bW47XG5cbiAgLyoqIFRhYmxlIGRhdGEgKi9cbiAgQElucHV0KCkgZGF0YTogYW55W10gPSBbXTtcblxuICAvKiogV2hldGhlciBzaG93IHN1bW1hcnkgKi9cbiAgQElucHV0KCkgc3VtbWFyeSA9IGZhbHNlO1xuXG4gIC8qKiBQbGFjZWhvbGRlciBmb3IgdGhlIGVtcHR5IHZhbHVlIChgbnVsbGAsIGAnJ2AsIGBbXWApICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnLS0nO1xuXG4gIGdldCBfY29sVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3V0aWxzLmdldENlbGxWYWx1ZSh0aGlzLnJvd0RhdGEsIHRoaXMuY29sRGVmKTtcbiAgfVxuXG4gIF9pc0VtcHR5VmFsdWUodmFsdWU6IGFueSkge1xuICAgIHJldHVybiB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlLnRvU3RyaW5nKCkgPT09ICcnO1xuICB9XG5cbiAgX2lzQ29udGFpbkhUTUwodmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiAvPFxcLz9bYS16XVtcXHNcXFNdKj4vaS50ZXN0KHZhbHVlKTtcbiAgfVxuXG4gIF9nZXRUZXh0KHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/ICcnIDogdGhpcy5faXNFbXB0eVZhbHVlKHZhbHVlKSA/IHRoaXMucGxhY2Vob2xkZXIgOiB2YWx1ZTtcbiAgfVxuXG4gIF9nZXRUb29sdGlwKHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5faXNFbXB0eVZhbHVlKHZhbHVlKSA/ICcnIDogdmFsdWU7XG4gIH1cblxuICBfZ2V0Rm9ybWF0dGVyVG9vbHRpcCh2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzQ29udGFpbkhUTUwodmFsdWUpIHx8IHRoaXMuX2lzRW1wdHlWYWx1ZSh2YWx1ZSkgPyAnJyA6IHZhbHVlO1xuICB9XG5cbiAgX2Zvcm1hdFN1bW1hcnkoZGF0YTogYW55W10sIGNvbERlZjogTXR4R3JpZENvbHVtbikge1xuICAgIGlmICh0eXBlb2YgY29sRGVmLnN1bW1hcnkgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gY29sRGVmLnN1bW1hcnk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgY29sRGVmLnN1bW1hcnkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiAoY29sRGVmLnN1bW1hcnkgYXMgKGRhdGE6IGFueVtdLCBjb2xEZWY/OiBNdHhHcmlkQ29sdW1uKSA9PiBhbnkpKFxuICAgICAgICB0aGlzLl91dGlscy5nZXRDb2xEYXRhKGRhdGEsIGNvbERlZiksXG4gICAgICAgIGNvbERlZlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kaWFsb2c6IE10eERpYWxvZywgcHJpdmF0ZSBfdXRpbHM6IE10eEdyaWRVdGlscykge31cblxuICBfb25BY3Rpb25DbGljayhldmVudDogTW91c2VFdmVudCwgYnRuOiBNdHhHcmlkQ29sdW1uQnV0dG9uLCByb3dEYXRhOiBhbnkpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKGJ0bi5wb3ApIHtcbiAgICAgIHRoaXMuX2RpYWxvZy5vcGVuKHtcbiAgICAgICAgdGl0bGU6IGJ0bi5wb3A/LnRpdGxlLFxuICAgICAgICBkZXNjcmlwdGlvbjogYnRuLnBvcD8uZGVzY3JpcHRpb24sXG4gICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2xvcjogYnRuLnBvcD8ub2tDb2xvciB8fCAncHJpbWFyeScsXG4gICAgICAgICAgICB0ZXh0OiBidG4ucG9wPy5va1RleHQgfHwgJ09LJyxcbiAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IGJ0bi5jbGljaz8uKHJvd0RhdGEpIHx8IHt9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29sb3I6IGJ0bi5wb3A/LmNsb3NlQ29sb3IsXG4gICAgICAgICAgICB0ZXh0OiBidG4ucG9wPy5jbG9zZVRleHQgfHwgJ0NMT1NFJyxcbiAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHt9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnRuLmNsaWNrPy4ocm93RGF0YSk7XG4gICAgfVxuICB9XG5cbiAgX2dldEFjdGlvblRvb2x0aXAoYnRuOiBNdHhHcmlkQ29sdW1uQnV0dG9uKSB7XG4gICAgaWYgKHR5cGVvZiBidG4udG9vbHRpcCA9PT0gJ3N0cmluZycgfHwgaXNPYnNlcnZhYmxlKGJ0bi50b29sdGlwKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWVzc2FnZTogYnRuLnRvb2x0aXAsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYnRuLnRvb2x0aXA7XG4gICAgfVxuICB9XG5cbiAgX2lzQWN0aW9uRGlzYWJsZWQoYnRuOiBNdHhHcmlkQ29sdW1uQnV0dG9uLCByb3dEYXRhOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIGJ0bi5kaXNhYmxlZCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gYnRuLmRpc2FibGVkO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGJ0bi5kaXNhYmxlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGJ0bi5kaXNhYmxlZChyb3dEYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBQcmV2aWV3IGVubGFyZ2VkIGltYWdlICovXG4gIF9vbkltYWdlUHJldmlldyh1cmxTdHI6IHN0cmluZykge1xuICAgIGNvbnN0IGltZ3M6IFBob3RvVmlld2VyLkltZ1tdID0gW107XG5cbiAgICB0aGlzLl91dGlscy5zdHIyYXJyKHVybFN0cikuZm9yRWFjaCgodXJsLCBpbmRleCkgPT4ge1xuICAgICAgaW1ncy5wdXNoKHsgdGl0bGU6IGluZGV4ICsgMSArICcnLCBzcmM6IHVybCB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZvb3RlclRvb2xiYXIgPVxuICAgICAgaW1ncy5sZW5ndGggPiAxXG4gICAgICAgID8gWyd6b29tSW4nLCAnem9vbU91dCcsICdwcmV2JywgJ25leHQnLCAncm90YXRlUmlnaHQnLCAncm90YXRlTGVmdCcsICdhY3R1YWxTaXplJ11cbiAgICAgICAgOiBbJ3pvb21JbicsICd6b29tT3V0JywgJ3JvdGF0ZVJpZ2h0JywgJ3JvdGF0ZUxlZnQnLCAnYWN0dWFsU2l6ZSddO1xuXG4gICAgY29uc3Qgb3B0aW9uczogUGhvdG9WaWV3ZXIuT3B0aW9ucyA9IHtcbiAgICAgIHRpdGxlOiBpbWdzLmxlbmd0aCA+IDEsXG4gICAgICBmb290ZXJUb29sYmFyLFxuICAgIH07XG5cbiAgICBjb25zdCBwaG90b3ZpZXdlciA9IG5ldyBQaG90b1ZpZXdlcihpbWdzLCBvcHRpb25zKTtcbiAgfVxufVxuIiwiPHNwYW4gKm5nSWY9XCJzdW1tYXJ5OyBlbHNlIGN1c3RvbUNlbGxGb3JtYXR0aW5nVHBsXCJcclxuICAgICAgW3RpdGxlXT1cIl9nZXRGb3JtYXR0ZXJUb29sdGlwKF9mb3JtYXRTdW1tYXJ5KGRhdGEsIGNvbERlZikpXCJcclxuICAgICAgW2lubmVySFRNTF09XCJfZ2V0VGV4dChfZm9ybWF0U3VtbWFyeShkYXRhLCBjb2xEZWYpKVwiPlxyXG48L3NwYW4+XHJcblxyXG48IS0tIEN1c3RvbSBmb3JtYXR0aW5nIC0tPlxyXG48bmctdGVtcGxhdGUgI2N1c3RvbUNlbGxGb3JtYXR0aW5nVHBsPlxyXG4gIDxzcGFuICpuZ0lmPVwiY29sRGVmLmZvcm1hdHRlcjsgZWxzZSBkZWZhdWx0Q2VsbEZvcm1hdHRpbmdUcGxcIlxyXG4gICAgICAgIFt0aXRsZV09XCJfZ2V0Rm9ybWF0dGVyVG9vbHRpcChjb2xEZWYuZm9ybWF0dGVyKHJvd0RhdGEsIGNvbERlZikpXCJcclxuICAgICAgICBbaW5uZXJIVE1MXT1cIl9nZXRUZXh0KGNvbERlZi5mb3JtYXR0ZXIocm93RGF0YSwgY29sRGVmKSlcIj5cclxuICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIERlZmF1bHQgZm9ybWF0dGluZyAtLT5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2VsbEZvcm1hdHRpbmdUcGw+XHJcbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiY29sRGVmLnR5cGVcIj5cclxuICAgIDwhLS0gVGFnIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RhZydcIj5cclxuICAgICAgPG1hdC1jaGlwLWxpc3Rib3ggKm5nSWY9XCJjb2xEZWYudGFnICYmIGNvbERlZi50YWdbX2NvbFZhbHVlXTsgZWxzZSB0YWdFbXB0eVRwbFwiPlxyXG4gICAgICAgIDxtYXQtY2hpcCBjb2xvcj1cInByaW1hcnlcIiBbbmdDbGFzc109XCJbJ2JnLScgKyBjb2xEZWYudGFnW19jb2xWYWx1ZV0uY29sb3JdXCI+XHJcbiAgICAgICAgICB7e2NvbERlZi50YWdbX2NvbFZhbHVlXS50ZXh0fX1cclxuICAgICAgICA8L21hdC1jaGlwPlxyXG4gICAgICA8L21hdC1jaGlwLWxpc3Rib3g+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjdGFnRW1wdHlUcGw+e3tfY29sVmFsdWV9fTwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gQnV0dG9ucyAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIididXR0b24nXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ0biBvZiBjb2xEZWYuYnV0dG9ucztcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWJ0bi5paWYgfHwgYnRuLmlpZihyb3dEYXRhKVwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImJ0bi50eXBlPT09J2Jhc2ljJ1wiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlsnbXR4LWdyaWQtYWN0aW9uLWJ1dHRvbicsIGJ0bi5jbGFzc3x8JyddXCJcclxuICAgICAgICAgICAgICAgICAgbWF0LWJ1dHRvbiBbY29sb3JdPVwiYnRuLmNvbG9yIHx8ICdwcmltYXJ5J1wiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfaXNBY3Rpb25EaXNhYmxlZChidG4sIHJvd0RhdGEpXCJcclxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiX2dldEFjdGlvblRvb2x0aXAoYnRuKT8ubWVzc2FnZSB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jXCJcclxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBDbGFzc109XCJfZ2V0QWN0aW9uVG9vbHRpcChidG4pPy5jbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwSGlkZURlbGF5XT1cIl9nZXRBY3Rpb25Ub29sdGlwKGJ0bik/LmhpZGVEZWxheVwiXHJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwU2hvd0RlbGF5XT1cIl9nZXRBY3Rpb25Ub29sdGlwKGJ0bik/LnNob3dEZWxheVwiXHJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwiX2dldEFjdGlvblRvb2x0aXAoYnRuKT8ucG9zaXRpb24gfHwgJ2JlbG93J1wiXHJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwVG91Y2hHZXN0dXJlc109XCJfZ2V0QWN0aW9uVG9vbHRpcChidG4pPy50b3VjaEdlc3R1cmVzIHx8ICdhdXRvJ1wiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfb25BY3Rpb25DbGljaygkZXZlbnQsIGJ0biwgcm93RGF0YSlcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibXR4LWdyaWQtaWNvblwiICpuZ0lmPVwiYnRuLmljb25cIj57e2J0bi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8c3Bhbj57e2J0bi50ZXh0IHwgdG9PYnNlcnZhYmxlIHwgYXN5bmN9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFidG4udHlwZSB8fCBidG4udHlwZT09PSdpY29uJ1wiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlsnbXR4LWdyaWQtYWN0aW9uLWJ1dHRvbicsIGJ0bi5jbGFzc3x8JyddXCJcclxuICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uIFtjb2xvcl09XCJidG4uY29sb3IgfHwgJ3ByaW1hcnknXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIl9pc0FjdGlvbkRpc2FibGVkKGJ0biwgcm93RGF0YSlcIlxyXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJfZ2V0QWN0aW9uVG9vbHRpcChidG4pPy5tZXNzYWdlIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmNcIlxyXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcENsYXNzXT1cIl9nZXRBY3Rpb25Ub29sdGlwKGJ0bik/LmNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBIaWRlRGVsYXldPVwiX2dldEFjdGlvblRvb2x0aXAoYnRuKT8uaGlkZURlbGF5XCJcclxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBTaG93RGVsYXldPVwiX2dldEFjdGlvblRvb2x0aXAoYnRuKT8uc2hvd0RlbGF5XCJcclxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCJfZ2V0QWN0aW9uVG9vbHRpcChidG4pPy5wb3NpdGlvbiB8fCAnYmVsb3cnXCJcclxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBUb3VjaEdlc3R1cmVzXT1cIl9nZXRBY3Rpb25Ub29sdGlwKGJ0bik/LnRvdWNoR2VzdHVyZXMgfHwgJ2F1dG8nXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9vbkFjdGlvbkNsaWNrKCRldmVudCwgYnRuLCByb3dEYXRhKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtdHgtZ3JpZC1pY29uXCI+e3tidG4uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBMaW5rIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmsnXCI+XHJcbiAgICAgIDxhIFtocmVmXT1cIl9jb2xWYWx1ZVwiIHRhcmdldD1cIl9ibGFua1wiPnt7X2NvbFZhbHVlfX08L2E+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gSW1hZ2UgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaW1hZ2UnXCI+XHJcbiAgICAgIDxpbWcgY2xhc3M9XCJtdHgtZ3JpZC1pbWdcIiBbc3JjXT1cIl9jb2xWYWx1ZVwiIChjbGljayk9XCJfb25JbWFnZVByZXZpZXcoX2NvbFZhbHVlKVwiPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tIEJvb2xlYW4gLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInYm9vbGVhbidcIj5cclxuICAgICAgPHNwYW4gW3RpdGxlXT1cIl9nZXRUb29sdGlwKF9jb2xWYWx1ZSlcIj57e19nZXRUZXh0KF9jb2xWYWx1ZSl9fTwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBOdW1iZXIgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiPlxyXG4gICAgICA8c3BhbiBbdGl0bGVdPVwiX2dldFRvb2x0aXAoX2NvbFZhbHVlIHwgbnVtYmVyOiBjb2xEZWYudHlwZVBhcmFtZXRlcj8uZGlnaXRzSW5mbyA6XHJcbiAgICAgIGNvbERlZi50eXBlUGFyYW1ldGVyPy5sb2NhbGUpXCI+XHJcbiAgICAgICAge3tfZ2V0VGV4dChfY29sVmFsdWUgfCBudW1iZXI6IGNvbERlZi50eXBlUGFyYW1ldGVyPy5kaWdpdHNJbmZvIDpcclxuICAgICAgICBjb2xEZWYudHlwZVBhcmFtZXRlcj8ubG9jYWxlKX19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBDdXJyZW5jeSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjdXJyZW5jeSdcIj5cclxuICAgICAgPHNwYW4gW3RpdGxlXT1cIl9nZXRUb29sdGlwKF9jb2xWYWx1ZSB8IGN1cnJlbmN5OiBjb2xEZWYudHlwZVBhcmFtZXRlcj8uY3VycmVuY3lDb2RlIDpcclxuICAgICAgY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmRpc3BsYXkgOlxyXG4gICAgICBjb2xEZWYudHlwZVBhcmFtZXRlcj8uZGlnaXRzSW5mbyA6XHJcbiAgICAgIGNvbERlZi50eXBlUGFyYW1ldGVyPy5sb2NhbGUpXCI+XHJcbiAgICAgICAge3tfZ2V0VGV4dChfY29sVmFsdWUgfCBjdXJyZW5jeTogY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmN1cnJlbmN5Q29kZSA6XHJcbiAgICAgICAgY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmRpc3BsYXkgOlxyXG4gICAgICAgIGNvbERlZi50eXBlUGFyYW1ldGVyPy5kaWdpdHNJbmZvIDpcclxuICAgICAgICBjb2xEZWYudHlwZVBhcmFtZXRlcj8ubG9jYWxlKX19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSBQZXJjZW50IC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3BlcmNlbnQnXCI+XHJcbiAgICAgIDxzcGFuIFt0aXRsZV09XCJfZ2V0VG9vbHRpcChfY29sVmFsdWUgfCBwZXJjZW50OiBjb2xEZWYudHlwZVBhcmFtZXRlcj8uZGlnaXRzSW5mbyA6XHJcbiAgICAgIGNvbERlZi50eXBlUGFyYW1ldGVyPy5sb2NhbGUpXCI+XHJcbiAgICAgICAge3tfZ2V0VGV4dChfY29sVmFsdWUgfCBwZXJjZW50OiBjb2xEZWYudHlwZVBhcmFtZXRlcj8uZGlnaXRzSW5mbyA6XHJcbiAgICAgICAgY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmxvY2FsZSl9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gRGF0ZSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxyXG4gICAgICA8c3BhbiBbdGl0bGVdPVwiX2dldFRvb2x0aXAoX2NvbFZhbHVlIHwgZGF0ZTogY29sRGVmLnR5cGVQYXJhbWV0ZXI/LmZvcm1hdCA6XHJcbiAgICAgIGNvbERlZi50eXBlUGFyYW1ldGVyPy50aW1lem9uZSA6XHJcbiAgICAgIGNvbERlZi50eXBlUGFyYW1ldGVyPy5sb2NhbGUpXCI+XHJcbiAgICAgICAge3tfZ2V0VGV4dChfY29sVmFsdWUgfCBkYXRlOiBjb2xEZWYudHlwZVBhcmFtZXRlcj8uZm9ybWF0IDpcclxuICAgICAgICBjb2xEZWYudHlwZVBhcmFtZXRlcj8udGltZXpvbmUgOlxyXG4gICAgICAgIGNvbERlZi50eXBlUGFyYW1ldGVyPy5sb2NhbGUpfX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tIERlZmF1bHQgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgIDxzcGFuIFt0aXRsZV09XCJfZ2V0VG9vbHRpcChfY29sVmFsdWUpXCI+e3tfZ2V0VGV4dChfY29sVmFsdWUpfX08L3NwYW4+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -0,0 +1,112 @@
1
+ import { Component, Input, ViewEncapsulation, ChangeDetectionStrategy, Output, EventEmitter, ViewChild, } from '@angular/core';
2
+ import { moveItemInArray } from '@angular/cdk/drag-drop';
3
+ import { MatMenuTrigger } from '@angular/material/menu';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/forms";
7
+ import * as i3 from "@angular/material/checkbox";
8
+ import * as i4 from "@angular/material/button";
9
+ import * as i5 from "@angular/material/icon";
10
+ import * as i6 from "@angular/material/menu";
11
+ import * as i7 from "@angular/cdk/drag-drop";
12
+ import * as i8 from "@ng-matero/extensions/core";
13
+ export class MtxGridColumnMenu {
14
+ constructor() {
15
+ this.columns = [];
16
+ this.selectable = true;
17
+ this.selectableChecked = 'show';
18
+ this.sortable = true;
19
+ this.pinnable = true;
20
+ this._buttonText = '';
21
+ this.buttonType = 'stroked';
22
+ this.buttonClass = '';
23
+ this.buttonIcon = '';
24
+ this.showHeader = false;
25
+ this.headerText = 'Columns Header';
26
+ this.showFooter = false;
27
+ this.footerText = 'Columns Footer';
28
+ this.columnChange = new EventEmitter();
29
+ this._pinOptions = [
30
+ { label: 'Pin Left', value: 'left' },
31
+ { label: 'Pin Right', value: 'right' },
32
+ { label: 'No Pin', value: null },
33
+ ];
34
+ }
35
+ get buttonText() {
36
+ const defaultText = `Columns ${this.selectableChecked === 'show' ? 'Shown' : 'Hidden'}`;
37
+ return this._buttonText ? this._buttonText : defaultText;
38
+ }
39
+ set buttonText(value) {
40
+ this._buttonText = value;
41
+ }
42
+ get pinOptions() {
43
+ return this._pinOptions;
44
+ }
45
+ set pinOptions(value) {
46
+ if (value.length > 0) {
47
+ this._pinOptions = value;
48
+ }
49
+ }
50
+ _handleDroped(e) {
51
+ moveItemInArray(this.columns, e.previousIndex, e.currentIndex);
52
+ this.columnChange.emit(this.columns);
53
+ }
54
+ _handleChecked(e) {
55
+ this.columnChange.emit(this.columns);
56
+ }
57
+ _handlePinSelect(col, val) {
58
+ if (col.pinned != val) {
59
+ col.pinned = val;
60
+ this.columnChange.emit(this.columns);
61
+ }
62
+ }
63
+ }
64
+ /** @nocollapse */ MtxGridColumnMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MtxGridColumnMenu, deps: [], target: i0.ɵɵFactoryTarget.Component });
65
+ /** @nocollapse */ MtxGridColumnMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: MtxGridColumnMenu, selector: "mtx-grid-column-menu", inputs: { columns: "columns", selectable: "selectable", selectableChecked: "selectableChecked", sortable: "sortable", pinnable: "pinnable", buttonText: "buttonText", buttonType: "buttonType", buttonColor: "buttonColor", buttonClass: "buttonClass", buttonIcon: "buttonIcon", showHeader: "showHeader", headerText: "headerText", headerTemplate: "headerTemplate", showFooter: "showFooter", footerText: "footerText", footerTemplate: "footerTemplate", pinOptions: "pinOptions" }, outputs: { columnChange: "columnChange" }, viewQueries: [{ propertyName: "menuPanel", first: true, predicate: ["menu"], descendants: true, static: true }, { propertyName: "menuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }], exportAs: ["mtxGridColumnMenu"], ngImport: i0, template: "<ng-container [ngSwitch]=\"buttonType\">\r\n <ng-container *ngSwitchCase=\"'raised'\">\r\n <button [ngClass]=\"buttonClass\" mat-raised-button [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'stroked'\">\r\n <button [ngClass]=\"buttonClass\" mat-stroked-button [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'flat'\">\r\n <button [ngClass]=\"buttonClass\" mat-flat-button [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'icon'\">\r\n <button [ngClass]=\"buttonClass\" mat-icon-button [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'fab'\">\r\n <button [ngClass]=\"buttonClass\" mat-fab [color]=\"buttonColor\" [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'mini-fab'\">\r\n <button [ngClass]=\"buttonClass\" mat-mini-fab [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <button [ngClass]=\"buttonClass\" mat-button [color]=\"buttonColor\" [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<mat-menu #menu=\"matMenu\" class=\"mtx-grid-column-menu\">\r\n <div class=\"mtx-grid-column-menu-content\"\r\n (click)=\"$event.stopPropagation()\" (keydown)=\"$event.stopPropagation()\">\r\n <div class=\"mtx-grid-column-menu-header\" *ngIf=\"showHeader\">\r\n <ng-template [ngIf]=\"headerTemplate\" [ngIfElse]=\"defaultHeaderTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultHeaderTpl>{{headerText}}</ng-template>\r\n </div>\r\n\r\n <div class=\"mtx-grid-column-menu-body\">\r\n <div class=\"mtx-grid-column-menu-list\" *ngIf=\"sortable\"\r\n cdkDropList (cdkDropListDropped)=\"_handleDroped($event)\">\r\n <div class=\"mtx-grid-column-menu-item\" *ngFor=\"let col of columns\"\r\n cdkDrag [cdkDragDisabled]=\"selectableChecked === 'show'? !col.show : col.hide\">\r\n <svg class=\"mtx-grid-icon mtx-grid-column-drag-handle-icon\" viewBox=\"0 0 24 24\"\r\n width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path\r\n d=\"M7,19V17H9V19H7M11,19V17H13V19H11M15,19V17H17V19H15M7,15V13H9V15H7M11,15V13H13V15H11M15,15V13H17V15H15M7,11V9H9V11H7M11,11V9H13V11H11M15,11V9H17V11H15M7,7V5H9V7H7M11,7V5H13V7H11M15,7V5H17V7H15Z\">\r\n </path>\r\n </svg>\r\n <ng-template [ngTemplateOutlet]=\"checkboxList\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col }\">\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mtx-grid-column-menu-list\" *ngIf=\"!sortable\">\r\n <div class=\"mtx-grid-column-menu-item\" *ngFor=\"let col of columns\">\r\n <ng-template [ngTemplateOutlet]=\"checkboxList\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col }\">\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mtx-grid-column-menu-footer\" *ngIf=\"showFooter\">\r\n <ng-template [ngIf]=\"footerTemplate\" [ngIfElse]=\"defaultFooterTpl\">\r\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultFooterTpl>{{footerText}}</ng-template>\r\n </div>\r\n </div>\r\n</mat-menu>\r\n\r\n<ng-template #checkboxList let-col>\r\n <ng-container *ngIf=\"pinnable\">\r\n <button class=\"mtx-grid-column-pin-button\" mat-icon-button [matMenuTriggerFor]=\"pinList\">\r\n <svg class=\"mtx-grid-icon mtx-grid-column-pin-icon\" *ngIf=\"col.pinned\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path d=\"M16,12V4H17V2H7V4H8V12L6,14V16H11.2V22H12.8V16H18V14L16,12Z\" />\r\n </svg>\r\n <svg class=\"mtx-grid-icon mtx-grid-column-pin-off-icon\" *ngIf=\"!col.pinned\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path\r\n d=\"M2,5.27L3.28,4L20,20.72L18.73,22L12.8,16.07V22H11.2V16H6V14L8,12V11.27L2,5.27M16,12L18,14V16H17.82L8,6.18V4H7V2H17V4H16V12Z\" />\r\n </svg>\r\n </button>\r\n <mat-menu #pinList=\"matMenu\" class=\"mtx-grid-column-pin-list\">\r\n <button class=\"mtx-grid-column-pin-option\" *ngFor=\"let item of pinOptions\" mat-menu-item\r\n (click)=\"_handlePinSelect(col, item.value)\">\r\n <span class=\"mtx-grid-column-pin-option-placeholder\">\r\n <!-- eslint-disable-next-line @angular-eslint/template/eqeqeq -->\r\n <svg class=\"mtx-grid-icon mtx-grid-column-pin-check-icon\" *ngIf=\"col.pinned==item.value\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path d=\"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\" />\r\n </svg>\r\n </span>\r\n <span class=\"mtx-grid-column-pin-option-text\">{{item.label | toObservable | async}}</span>\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n\r\n <mat-checkbox class=\"mtx-grid-column-menu-item-label\" *ngIf=\"selectable\"\r\n [(ngModel)]=\"col[selectableChecked]\" [disabled]=\"col.disabled\"\r\n (change)=\"_handleChecked($event)\">\r\n {{col.header | toObservable | async}}\r\n </mat-checkbox>\r\n <span class=\"mtx-grid-column-menu-item-label\" *ngIf=\"!selectable\">\r\n {{col.header | toObservable | async}}\r\n </span>\r\n</ng-template>\r\n", styles: [".mtx-grid-column-menu .mat-menu-content{padding:0}.mtx-grid-column-menu-body{padding:8px 16px}.mtx-grid-column-menu-header,.mtx-grid-column-menu-footer{position:sticky;z-index:1;padding:8px 16px}.mtx-grid-column-menu-header{top:0}.mtx-grid-column-menu-footer{bottom:0}.mtx-grid-column-menu-list{display:block;max-width:100%}.mtx-grid-column-menu-list.cdk-drop-list-dragging .mtx-grid-column-menu-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.mtx-grid-column-menu-item{display:flex;flex-direction:row;align-items:center}.mtx-grid-column-menu-item.cdk-drag-disabled .cdk-drag-handle{opacity:.35;cursor:no-drop}.mtx-grid-column-menu-item .cdk-drag-handle{cursor:move}.mtx-grid-column-menu-item.cdk-drag-preview{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mtx-grid-column-menu-item.cdk-drag-placeholder{opacity:0}.mtx-grid-column-menu-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.mtx-grid-column-pin-button.mat-mdc-icon-button{width:40px;height:40px;padding:8px}.mtx-grid-column-pin-option.mat-menu-item{display:flex;align-items:center;height:32px}.mtx-grid-column-pin-option-placeholder{display:inline-block;width:20px;height:20px;line-height:20px;vertical-align:middle}.mtx-grid-column-pin-option-text{padding:0 8px;vertical-align:middle}.mtx-grid-column-drag-handle-icon:hover{cursor:move}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatFabButton, selector: "button[mat-fab]", inputs: ["disabled", "disableRipple", "color", "tabIndex", "extended"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.MtxToObservablePipe, name: "toObservable" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MtxGridColumnMenu, decorators: [{
67
+ type: Component,
68
+ args: [{ selector: 'mtx-grid-column-menu', exportAs: 'mtxGridColumnMenu', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [ngSwitch]=\"buttonType\">\r\n <ng-container *ngSwitchCase=\"'raised'\">\r\n <button [ngClass]=\"buttonClass\" mat-raised-button [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'stroked'\">\r\n <button [ngClass]=\"buttonClass\" mat-stroked-button [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'flat'\">\r\n <button [ngClass]=\"buttonClass\" mat-flat-button [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'icon'\">\r\n <button [ngClass]=\"buttonClass\" mat-icon-button [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'fab'\">\r\n <button [ngClass]=\"buttonClass\" mat-fab [color]=\"buttonColor\" [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'mini-fab'\">\r\n <button [ngClass]=\"buttonClass\" mat-mini-fab [color]=\"buttonColor\"\r\n [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <button [ngClass]=\"buttonClass\" mat-button [color]=\"buttonColor\" [matMenuTriggerFor]=\"menu\">\r\n <mat-icon *ngIf=\"buttonIcon\">{{buttonIcon}}</mat-icon> {{buttonText}}\r\n </button>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<mat-menu #menu=\"matMenu\" class=\"mtx-grid-column-menu\">\r\n <div class=\"mtx-grid-column-menu-content\"\r\n (click)=\"$event.stopPropagation()\" (keydown)=\"$event.stopPropagation()\">\r\n <div class=\"mtx-grid-column-menu-header\" *ngIf=\"showHeader\">\r\n <ng-template [ngIf]=\"headerTemplate\" [ngIfElse]=\"defaultHeaderTpl\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultHeaderTpl>{{headerText}}</ng-template>\r\n </div>\r\n\r\n <div class=\"mtx-grid-column-menu-body\">\r\n <div class=\"mtx-grid-column-menu-list\" *ngIf=\"sortable\"\r\n cdkDropList (cdkDropListDropped)=\"_handleDroped($event)\">\r\n <div class=\"mtx-grid-column-menu-item\" *ngFor=\"let col of columns\"\r\n cdkDrag [cdkDragDisabled]=\"selectableChecked === 'show'? !col.show : col.hide\">\r\n <svg class=\"mtx-grid-icon mtx-grid-column-drag-handle-icon\" viewBox=\"0 0 24 24\"\r\n width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path\r\n d=\"M7,19V17H9V19H7M11,19V17H13V19H11M15,19V17H17V19H15M7,15V13H9V15H7M11,15V13H13V15H11M15,15V13H17V15H15M7,11V9H9V11H7M11,11V9H13V11H11M15,11V9H17V11H15M7,7V5H9V7H7M11,7V5H13V7H11M15,7V5H17V7H15Z\">\r\n </path>\r\n </svg>\r\n <ng-template [ngTemplateOutlet]=\"checkboxList\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col }\">\r\n </ng-template>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mtx-grid-column-menu-list\" *ngIf=\"!sortable\">\r\n <div class=\"mtx-grid-column-menu-item\" *ngFor=\"let col of columns\">\r\n <ng-template [ngTemplateOutlet]=\"checkboxList\"\r\n [ngTemplateOutletContext]=\"{ $implicit: col }\">\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mtx-grid-column-menu-footer\" *ngIf=\"showFooter\">\r\n <ng-template [ngIf]=\"footerTemplate\" [ngIfElse]=\"defaultFooterTpl\">\r\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\r\n </ng-template>\r\n <ng-template #defaultFooterTpl>{{footerText}}</ng-template>\r\n </div>\r\n </div>\r\n</mat-menu>\r\n\r\n<ng-template #checkboxList let-col>\r\n <ng-container *ngIf=\"pinnable\">\r\n <button class=\"mtx-grid-column-pin-button\" mat-icon-button [matMenuTriggerFor]=\"pinList\">\r\n <svg class=\"mtx-grid-icon mtx-grid-column-pin-icon\" *ngIf=\"col.pinned\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path d=\"M16,12V4H17V2H7V4H8V12L6,14V16H11.2V22H12.8V16H18V14L16,12Z\" />\r\n </svg>\r\n <svg class=\"mtx-grid-icon mtx-grid-column-pin-off-icon\" *ngIf=\"!col.pinned\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path\r\n d=\"M2,5.27L3.28,4L20,20.72L18.73,22L12.8,16.07V22H11.2V16H6V14L8,12V11.27L2,5.27M16,12L18,14V16H17.82L8,6.18V4H7V2H17V4H16V12Z\" />\r\n </svg>\r\n </button>\r\n <mat-menu #pinList=\"matMenu\" class=\"mtx-grid-column-pin-list\">\r\n <button class=\"mtx-grid-column-pin-option\" *ngFor=\"let item of pinOptions\" mat-menu-item\r\n (click)=\"_handlePinSelect(col, item.value)\">\r\n <span class=\"mtx-grid-column-pin-option-placeholder\">\r\n <!-- eslint-disable-next-line @angular-eslint/template/eqeqeq -->\r\n <svg class=\"mtx-grid-icon mtx-grid-column-pin-check-icon\" *ngIf=\"col.pinned==item.value\"\r\n viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\r\n <path d=\"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\" />\r\n </svg>\r\n </span>\r\n <span class=\"mtx-grid-column-pin-option-text\">{{item.label | toObservable | async}}</span>\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n\r\n <mat-checkbox class=\"mtx-grid-column-menu-item-label\" *ngIf=\"selectable\"\r\n [(ngModel)]=\"col[selectableChecked]\" [disabled]=\"col.disabled\"\r\n (change)=\"_handleChecked($event)\">\r\n {{col.header | toObservable | async}}\r\n </mat-checkbox>\r\n <span class=\"mtx-grid-column-menu-item-label\" *ngIf=\"!selectable\">\r\n {{col.header | toObservable | async}}\r\n </span>\r\n</ng-template>\r\n", styles: [".mtx-grid-column-menu .mat-menu-content{padding:0}.mtx-grid-column-menu-body{padding:8px 16px}.mtx-grid-column-menu-header,.mtx-grid-column-menu-footer{position:sticky;z-index:1;padding:8px 16px}.mtx-grid-column-menu-header{top:0}.mtx-grid-column-menu-footer{bottom:0}.mtx-grid-column-menu-list{display:block;max-width:100%}.mtx-grid-column-menu-list.cdk-drop-list-dragging .mtx-grid-column-menu-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.mtx-grid-column-menu-item{display:flex;flex-direction:row;align-items:center}.mtx-grid-column-menu-item.cdk-drag-disabled .cdk-drag-handle{opacity:.35;cursor:no-drop}.mtx-grid-column-menu-item .cdk-drag-handle{cursor:move}.mtx-grid-column-menu-item.cdk-drag-preview{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mtx-grid-column-menu-item.cdk-drag-placeholder{opacity:0}.mtx-grid-column-menu-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.mtx-grid-column-pin-button.mat-mdc-icon-button{width:40px;height:40px;padding:8px}.mtx-grid-column-pin-option.mat-menu-item{display:flex;align-items:center;height:32px}.mtx-grid-column-pin-option-placeholder{display:inline-block;width:20px;height:20px;line-height:20px;vertical-align:middle}.mtx-grid-column-pin-option-text{padding:0 8px;vertical-align:middle}.mtx-grid-column-drag-handle-icon:hover{cursor:move}\n"] }]
69
+ }], propDecorators: { menuPanel: [{
70
+ type: ViewChild,
71
+ args: ['menu', { static: true }]
72
+ }], menuTrigger: [{
73
+ type: ViewChild,
74
+ args: [MatMenuTrigger]
75
+ }], columns: [{
76
+ type: Input
77
+ }], selectable: [{
78
+ type: Input
79
+ }], selectableChecked: [{
80
+ type: Input
81
+ }], sortable: [{
82
+ type: Input
83
+ }], pinnable: [{
84
+ type: Input
85
+ }], buttonText: [{
86
+ type: Input
87
+ }], buttonType: [{
88
+ type: Input
89
+ }], buttonColor: [{
90
+ type: Input
91
+ }], buttonClass: [{
92
+ type: Input
93
+ }], buttonIcon: [{
94
+ type: Input
95
+ }], showHeader: [{
96
+ type: Input
97
+ }], headerText: [{
98
+ type: Input
99
+ }], headerTemplate: [{
100
+ type: Input
101
+ }], showFooter: [{
102
+ type: Input
103
+ }], footerText: [{
104
+ type: Input
105
+ }], footerTemplate: [{
106
+ type: Input
107
+ }], columnChange: [{
108
+ type: Output
109
+ }], pinOptions: [{
110
+ type: Input
111
+ }] } });
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLW1lbnUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2dyaWQvY29sdW1uLW1lbnUudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2dyaWQvY29sdW1uLW1lbnUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixZQUFZLEVBRVosU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV0RSxPQUFPLEVBQVcsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7QUFpQmpFLE1BQU0sT0FBTyxpQkFBaUI7SUFSOUI7UUFZVyxZQUFPLEdBQW9CLEVBQUUsQ0FBQztRQUM5QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLHNCQUFpQixHQUFvQixNQUFNLENBQUM7UUFDNUMsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBVWpCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRWhCLGVBQVUsR0FBc0IsU0FBUyxDQUFDO1FBRTFDLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixlQUFVLEdBQUcsZ0JBQWdCLENBQUM7UUFFOUIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixlQUFVLEdBQUcsZ0JBQWdCLENBQUM7UUFHN0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBbUIsQ0FBQztRQVdyRCxnQkFBVyxHQUE2QjtZQUM5QyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUNwQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUN0QyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtTQUNqQyxDQUFDO0tBaUJIO0lBdERDLElBQ0ksVUFBVTtRQUNaLE1BQU0sV0FBVyxHQUFHLFdBQVcsSUFBSSxDQUFDLGlCQUFpQixLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4RixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUMzRCxDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUMsS0FBYTtRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBaUJELElBQ0ksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUMsS0FBK0I7UUFDNUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztTQUMxQjtJQUNILENBQUM7SUFPRCxhQUFhLENBQUMsQ0FBd0I7UUFDcEMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxjQUFjLENBQUMsQ0FBb0I7UUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxHQUFrQixFQUFFLEdBQTBCO1FBQzdELElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUU7WUFDckIsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7WUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQzs7aUlBL0RVLGlCQUFpQjtxSEFBakIsaUJBQWlCLGd0QkFFakIsY0FBYyxpRkMvQjNCLDQ3TUE2SEE7MkZEaEdhLGlCQUFpQjtrQkFSN0IsU0FBUzsrQkFDRSxzQkFBc0IsWUFDdEIsbUJBQW1CLGlCQUdkLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OEJBR1YsU0FBUztzQkFBN0MsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNSLFdBQVc7c0JBQXJDLFNBQVM7dUJBQUMsY0FBYztnQkFFaEIsT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRixVQUFVO3NCQURiLEtBQUs7Z0JBVUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUdILFVBQVU7c0JBRGIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRNZW51LCBNYXRNZW51VHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge1xuICBNdHhHcmlkQnV0dG9uVHlwZSxcbiAgTXR4R3JpZENvbHVtbixcbiAgTXR4R3JpZENvbHVtblBpbk9wdGlvbixcbiAgTXR4R3JpZENvbHVtblBpblZhbHVlLFxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdHgtZ3JpZC1jb2x1bW4tbWVudScsXG4gIGV4cG9ydEFzOiAnbXR4R3JpZENvbHVtbk1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sdW1uLW1lbnUuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbHVtbi1tZW51LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE10eEdyaWRDb2x1bW5NZW51IHtcbiAgQFZpZXdDaGlsZCgnbWVudScsIHsgc3RhdGljOiB0cnVlIH0pIG1lbnVQYW5lbCE6IE1hdE1lbnU7XG4gIEBWaWV3Q2hpbGQoTWF0TWVudVRyaWdnZXIpIG1lbnVUcmlnZ2VyITogTWF0TWVudVRyaWdnZXI7XG5cbiAgQElucHV0KCkgY29sdW1uczogTXR4R3JpZENvbHVtbltdID0gW107XG4gIEBJbnB1dCgpIHNlbGVjdGFibGUgPSB0cnVlO1xuICBASW5wdXQoKSBzZWxlY3RhYmxlQ2hlY2tlZDogJ3Nob3cnIHwgJ2hpZGUnID0gJ3Nob3cnO1xuICBASW5wdXQoKSBzb3J0YWJsZSA9IHRydWU7XG4gIEBJbnB1dCgpIHBpbm5hYmxlID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBnZXQgYnV0dG9uVGV4dCgpIHtcbiAgICBjb25zdCBkZWZhdWx0VGV4dCA9IGBDb2x1bW5zICR7dGhpcy5zZWxlY3RhYmxlQ2hlY2tlZCA9PT0gJ3Nob3cnID8gJ1Nob3duJyA6ICdIaWRkZW4nfWA7XG4gICAgcmV0dXJuIHRoaXMuX2J1dHRvblRleHQgPyB0aGlzLl9idXR0b25UZXh0IDogZGVmYXVsdFRleHQ7XG4gIH1cbiAgc2V0IGJ1dHRvblRleHQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2J1dHRvblRleHQgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF9idXR0b25UZXh0ID0gJyc7XG5cbiAgQElucHV0KCkgYnV0dG9uVHlwZTogTXR4R3JpZEJ1dHRvblR5cGUgPSAnc3Ryb2tlZCc7XG4gIEBJbnB1dCgpIGJ1dHRvbkNvbG9yOiBUaGVtZVBhbGV0dGU7XG4gIEBJbnB1dCgpIGJ1dHRvbkNsYXNzID0gJyc7XG4gIEBJbnB1dCgpIGJ1dHRvbkljb24gPSAnJztcblxuICBASW5wdXQoKSBzaG93SGVhZGVyID0gZmFsc2U7XG4gIEBJbnB1dCgpIGhlYWRlclRleHQgPSAnQ29sdW1ucyBIZWFkZXInO1xuICBASW5wdXQoKSBoZWFkZXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIHNob3dGb290ZXIgPSBmYWxzZTtcbiAgQElucHV0KCkgZm9vdGVyVGV4dCA9ICdDb2x1bW5zIEZvb3Rlcic7XG4gIEBJbnB1dCgpIGZvb3RlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAT3V0cHV0KCkgY29sdW1uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNdHhHcmlkQ29sdW1uW10+KCk7XG5cbiAgQElucHV0KClcbiAgZ2V0IHBpbk9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Bpbk9wdGlvbnM7XG4gIH1cbiAgc2V0IHBpbk9wdGlvbnModmFsdWU6IE10eEdyaWRDb2x1bW5QaW5PcHRpb25bXSkge1xuICAgIGlmICh2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9waW5PcHRpb25zID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX3Bpbk9wdGlvbnM6IE10eEdyaWRDb2x1bW5QaW5PcHRpb25bXSA9IFtcbiAgICB7IGxhYmVsOiAnUGluIExlZnQnLCB2YWx1ZTogJ2xlZnQnIH0sXG4gICAgeyBsYWJlbDogJ1BpbiBSaWdodCcsIHZhbHVlOiAncmlnaHQnIH0sXG4gICAgeyBsYWJlbDogJ05vIFBpbicsIHZhbHVlOiBudWxsIH0sXG4gIF07XG5cbiAgX2hhbmRsZURyb3BlZChlOiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5jb2x1bW5zLCBlLnByZXZpb3VzSW5kZXgsIGUuY3VycmVudEluZGV4KTtcbiAgICB0aGlzLmNvbHVtbkNoYW5nZS5lbWl0KHRoaXMuY29sdW1ucyk7XG4gIH1cblxuICBfaGFuZGxlQ2hlY2tlZChlOiBNYXRDaGVja2JveENoYW5nZSkge1xuICAgIHRoaXMuY29sdW1uQ2hhbmdlLmVtaXQodGhpcy5jb2x1bW5zKTtcbiAgfVxuXG4gIF9oYW5kbGVQaW5TZWxlY3QoY29sOiBNdHhHcmlkQ29sdW1uLCB2YWw6IE10eEdyaWRDb2x1bW5QaW5WYWx1ZSkge1xuICAgIGlmIChjb2wucGlubmVkICE9IHZhbCkge1xuICAgICAgY29sLnBpbm5lZCA9IHZhbDtcbiAgICAgIHRoaXMuY29sdW1uQ2hhbmdlLmVtaXQodGhpcy5jb2x1bW5zKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImJ1dHRvblR5cGVcIj5cclxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncmFpc2VkJ1wiPlxyXG4gICAgPGJ1dHRvbiBbbmdDbGFzc109XCJidXR0b25DbGFzc1wiIG1hdC1yYWlzZWQtYnV0dG9uIFtjb2xvcl09XCJidXR0b25Db2xvclwiXHJcbiAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XHJcbiAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImJ1dHRvbkljb25cIj57e2J1dHRvbkljb259fTwvbWF0LWljb24+IHt7YnV0dG9uVGV4dH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc3Ryb2tlZCdcIj5cclxuICAgIDxidXR0b24gW25nQ2xhc3NdPVwiYnV0dG9uQ2xhc3NcIiBtYXQtc3Ryb2tlZC1idXR0b24gW2NvbG9yXT1cImJ1dHRvbkNvbG9yXCJcclxuICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIj5cclxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwiYnV0dG9uSWNvblwiPnt7YnV0dG9uSWNvbn19PC9tYXQtaWNvbj4ge3tidXR0b25UZXh0fX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidmbGF0J1wiPlxyXG4gICAgPGJ1dHRvbiBbbmdDbGFzc109XCJidXR0b25DbGFzc1wiIG1hdC1mbGF0LWJ1dHRvbiBbY29sb3JdPVwiYnV0dG9uQ29sb3JcIlxyXG4gICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiPlxyXG4gICAgICA8bWF0LWljb24gKm5nSWY9XCJidXR0b25JY29uXCI+e3tidXR0b25JY29ufX08L21hdC1pY29uPiB7e2J1dHRvblRleHR9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ljb24nXCI+XHJcbiAgICA8YnV0dG9uIFtuZ0NsYXNzXT1cImJ1dHRvbkNsYXNzXCIgbWF0LWljb24tYnV0dG9uIFtjb2xvcl09XCJidXR0b25Db2xvclwiXHJcbiAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XHJcbiAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImJ1dHRvbkljb25cIj57e2J1dHRvbkljb259fTwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZmFiJ1wiPlxyXG4gICAgPGJ1dHRvbiBbbmdDbGFzc109XCJidXR0b25DbGFzc1wiIG1hdC1mYWIgW2NvbG9yXT1cImJ1dHRvbkNvbG9yXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIj5cclxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwiYnV0dG9uSWNvblwiPnt7YnV0dG9uSWNvbn19PC9tYXQtaWNvbj4ge3tidXR0b25UZXh0fX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtaW5pLWZhYidcIj5cclxuICAgIDxidXR0b24gW25nQ2xhc3NdPVwiYnV0dG9uQ2xhc3NcIiBtYXQtbWluaS1mYWIgW2NvbG9yXT1cImJ1dHRvbkNvbG9yXCJcclxuICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIj5cclxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwiYnV0dG9uSWNvblwiPnt7YnV0dG9uSWNvbn19PC9tYXQtaWNvbj4ge3tidXR0b25UZXh0fX1cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgIDxidXR0b24gW25nQ2xhc3NdPVwiYnV0dG9uQ2xhc3NcIiBtYXQtYnV0dG9uIFtjb2xvcl09XCJidXR0b25Db2xvclwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+XHJcbiAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImJ1dHRvbkljb25cIj57e2J1dHRvbkljb259fTwvbWF0LWljb24+IHt7YnV0dG9uVGV4dH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG48bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJtdHgtZ3JpZC1jb2x1bW4tbWVudVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1jb2x1bW4tbWVudS1jb250ZW50XCJcclxuICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1jb2x1bW4tbWVudS1oZWFkZXJcIiAqbmdJZj1cInNob3dIZWFkZXJcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImhlYWRlclRlbXBsYXRlXCIgW25nSWZFbHNlXT1cImRlZmF1bHRIZWFkZXJUcGxcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRIZWFkZXJUcGw+e3toZWFkZXJUZXh0fX08L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLWNvbHVtbi1tZW51LWJvZHlcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLWNvbHVtbi1tZW51LWxpc3RcIiAqbmdJZj1cInNvcnRhYmxlXCJcclxuICAgICAgICAgICBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cIl9oYW5kbGVEcm9wZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1jb2x1bW4tbWVudS1pdGVtXCIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcclxuICAgICAgICAgICAgIGNka0RyYWcgW2Nka0RyYWdEaXNhYmxlZF09XCJzZWxlY3RhYmxlQ2hlY2tlZCA9PT0gJ3Nob3cnPyAhY29sLnNob3cgOiBjb2wuaGlkZVwiPlxyXG4gICAgICAgICAgPHN2ZyBjbGFzcz1cIm10eC1ncmlkLWljb24gbXR4LWdyaWQtY29sdW1uLWRyYWctaGFuZGxlLWljb25cIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgd2lkdGg9XCIyNHB4XCIgaGVpZ2h0PVwiMjRweFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBmb2N1c2FibGU9XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICBkPVwiTTcsMTlWMTdIOVYxOUg3TTExLDE5VjE3SDEzVjE5SDExTTE1LDE5VjE3SDE3VjE5SDE1TTcsMTVWMTNIOVYxNUg3TTExLDE1VjEzSDEzVjE1SDExTTE1LDE1VjEzSDE3VjE1SDE1TTcsMTFWOUg5VjExSDdNMTEsMTFWOUgxM1YxMUgxMU0xNSwxMVY5SDE3VjExSDE1TTcsN1Y1SDlWN0g3TTExLDdWNUgxM1Y3SDExTTE1LDdWNUgxN1Y3SDE1WlwiPlxyXG4gICAgICAgICAgICA8L3BhdGg+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGVja2JveExpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29sIH1cIj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLWNvbHVtbi1tZW51LWxpc3RcIiAqbmdJZj1cIiFzb3J0YWJsZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1jb2x1bW4tbWVudS1pdGVtXCIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hlY2tib3hMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbCB9XCI+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1jb2x1bW4tbWVudS1mb290ZXJcIiAqbmdJZj1cInNob3dGb290ZXJcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImZvb3RlclRlbXBsYXRlXCIgW25nSWZFbHNlXT1cImRlZmF1bHRGb290ZXJUcGxcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRGb290ZXJUcGw+e3tmb290ZXJUZXh0fX08L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbWF0LW1lbnU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NoZWNrYm94TGlzdCBsZXQtY29sPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJwaW5uYWJsZVwiPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cIm10eC1ncmlkLWNvbHVtbi1waW4tYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJwaW5MaXN0XCI+XHJcbiAgICAgIDxzdmcgY2xhc3M9XCJtdHgtZ3JpZC1pY29uIG10eC1ncmlkLWNvbHVtbi1waW4taWNvblwiICpuZ0lmPVwiY29sLnBpbm5lZFwiXHJcbiAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cclxuICAgICAgICA8cGF0aCBkPVwiTTE2LDEyVjRIMTdWMkg3VjRIOFYxMkw2LDE0VjE2SDExLjJWMjJIMTIuOFYxNkgxOFYxNEwxNiwxMlpcIiAvPlxyXG4gICAgICA8L3N2Zz5cclxuICAgICAgPHN2ZyBjbGFzcz1cIm10eC1ncmlkLWljb24gbXR4LWdyaWQtY29sdW1uLXBpbi1vZmYtaWNvblwiICpuZ0lmPVwiIWNvbC5waW5uZWRcIlxyXG4gICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0cHhcIiBoZWlnaHQ9XCIyNHB4XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICBkPVwiTTIsNS4yN0wzLjI4LDRMMjAsMjAuNzJMMTguNzMsMjJMMTIuOCwxNi4wN1YyMkgxMS4yVjE2SDZWMTRMOCwxMlYxMS4yN0wyLDUuMjdNMTYsMTJMMTgsMTRWMTZIMTcuODJMOCw2LjE4VjRIN1YySDE3VjRIMTZWMTJaXCIgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxtYXQtbWVudSAjcGluTGlzdD1cIm1hdE1lbnVcIiBjbGFzcz1cIm10eC1ncmlkLWNvbHVtbi1waW4tbGlzdFwiPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwibXR4LWdyaWQtY29sdW1uLXBpbi1vcHRpb25cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwaW5PcHRpb25zXCIgbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlUGluU2VsZWN0KGNvbCwgaXRlbS52YWx1ZSlcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm10eC1ncmlkLWNvbHVtbi1waW4tb3B0aW9uLXBsYWNlaG9sZGVyXCI+XHJcbiAgICAgICAgICA8IS0tIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvZXFlcWVxIC0tPlxyXG4gICAgICAgICAgPHN2ZyBjbGFzcz1cIm10eC1ncmlkLWljb24gbXR4LWdyaWQtY29sdW1uLXBpbi1jaGVjay1pY29uXCIgKm5nSWY9XCJjb2wucGlubmVkPT1pdGVtLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0yMSw3TDksMTlMMy41LDEzLjVMNC45MSwxMi4wOUw5LDE2LjE3TDE5LjU5LDUuNTlMMjEsN1pcIiAvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXR4LWdyaWQtY29sdW1uLXBpbi1vcHRpb24tdGV4dFwiPnt7aXRlbS5sYWJlbCB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jfX08L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9tYXQtbWVudT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG1hdC1jaGVja2JveCBjbGFzcz1cIm10eC1ncmlkLWNvbHVtbi1tZW51LWl0ZW0tbGFiZWxcIiAqbmdJZj1cInNlbGVjdGFibGVcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2xbc2VsZWN0YWJsZUNoZWNrZWRdXCIgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIl9oYW5kbGVDaGVja2VkKCRldmVudClcIj5cclxuICAgIHt7Y29sLmhlYWRlciB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jfX1cclxuICA8L21hdC1jaGVja2JveD5cclxuICA8c3BhbiBjbGFzcz1cIm10eC1ncmlkLWNvbHVtbi1tZW51LWl0ZW0tbGFiZWxcIiAqbmdJZj1cIiFzZWxlY3RhYmxlXCI+XHJcbiAgICB7e2NvbC5oZWFkZXIgfCB0b09ic2VydmFibGUgfCBhc3luY319XHJcbiAgPC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -24,9 +24,9 @@ export class MatColumnResizeFlex extends AbstractMatColumnResize {
24
24
  this.notifier = notifier;
25
25
  }
26
26
  }
27
- /** @nocollapse */ MatColumnResizeFlex.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MatColumnResizeFlex, deps: [{ token: i1.ColumnResizeNotifier }, { token: i0.ElementRef }, { token: i1.HeaderRowEventDispatcher }, { token: i0.NgZone }, { token: i1.ColumnResizeNotifierSource }], target: i0.ɵɵFactoryTarget.Directive });
28
- /** @nocollapse */ MatColumnResizeFlex.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: MatColumnResizeFlex, selector: "mat-table[columnResize]", host: { classAttribute: "mat-column-resize-flex" }, providers: [...FLEX_PROVIDERS, { provide: ColumnResize, useExisting: MatColumnResizeFlex }], usesInheritance: true, ngImport: i0 });
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MatColumnResizeFlex, decorators: [{
27
+ /** @nocollapse */ MatColumnResizeFlex.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MatColumnResizeFlex, deps: [{ token: i1.ColumnResizeNotifier }, { token: i0.ElementRef }, { token: i1.HeaderRowEventDispatcher }, { token: i0.NgZone }, { token: i1.ColumnResizeNotifierSource }], target: i0.ɵɵFactoryTarget.Directive });
28
+ /** @nocollapse */ MatColumnResizeFlex.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: MatColumnResizeFlex, selector: "mat-table[columnResize]", host: { classAttribute: "mat-column-resize-flex" }, providers: [...FLEX_PROVIDERS, { provide: ColumnResize, useExisting: MatColumnResizeFlex }], usesInheritance: true, ngImport: i0 });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MatColumnResizeFlex, decorators: [{
30
30
  type: Directive,
31
31
  args: [{
32
32
  selector: 'mat-table[columnResize]',
@@ -24,9 +24,9 @@ export class MatColumnResize extends AbstractMatColumnResize {
24
24
  this.notifier = notifier;
25
25
  }
26
26
  }
27
- /** @nocollapse */ MatColumnResize.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MatColumnResize, deps: [{ token: i1.ColumnResizeNotifier }, { token: i0.ElementRef }, { token: i1.HeaderRowEventDispatcher }, { token: i0.NgZone }, { token: i1.ColumnResizeNotifierSource }], target: i0.ɵɵFactoryTarget.Directive });
28
- /** @nocollapse */ MatColumnResize.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: MatColumnResize, selector: "table[mat-table][columnResize]", host: { classAttribute: "mat-column-resize-table" }, providers: [...TABLE_PROVIDERS, { provide: ColumnResize, useExisting: MatColumnResize }], usesInheritance: true, ngImport: i0 });
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MatColumnResize, decorators: [{
27
+ /** @nocollapse */ MatColumnResize.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MatColumnResize, deps: [{ token: i1.ColumnResizeNotifier }, { token: i0.ElementRef }, { token: i1.HeaderRowEventDispatcher }, { token: i0.NgZone }, { token: i1.ColumnResizeNotifierSource }], target: i0.ɵɵFactoryTarget.Directive });
28
+ /** @nocollapse */ MatColumnResize.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: MatColumnResize, selector: "table[mat-table][columnResize]", host: { classAttribute: "mat-column-resize-table" }, providers: [...TABLE_PROVIDERS, { provide: ColumnResize, useExisting: MatColumnResize }], usesInheritance: true, ngImport: i0 });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MatColumnResize, decorators: [{
30
30
  type: Directive,
31
31
  args: [{
32
32
  selector: 'table[mat-table][columnResize]',
@@ -15,10 +15,10 @@ import * as i0 from "@angular/core";
15
15
  const ENTRY_COMMON_COMPONENTS = [MatColumnResizeOverlayHandle];
16
16
  export class MatColumnResizeCommonModule {
17
17
  }
18
- /** @nocollapse */ MatColumnResizeCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MatColumnResizeCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
19
- /** @nocollapse */ MatColumnResizeCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: MatColumnResizeCommonModule, declarations: [MatColumnResizeOverlayHandle], exports: [MatColumnResizeOverlayHandle] });
20
- /** @nocollapse */ MatColumnResizeCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MatColumnResizeCommonModule });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MatColumnResizeCommonModule, decorators: [{
18
+ /** @nocollapse */ MatColumnResizeCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MatColumnResizeCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
19
+ /** @nocollapse */ MatColumnResizeCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: MatColumnResizeCommonModule, declarations: [MatColumnResizeOverlayHandle], exports: [MatColumnResizeOverlayHandle] });
20
+ /** @nocollapse */ MatColumnResizeCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MatColumnResizeCommonModule });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MatColumnResizeCommonModule, decorators: [{
22
22
  type: NgModule,
23
23
  args: [{
24
24
  declarations: ENTRY_COMMON_COMPONENTS,
@@ -28,10 +28,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
28
28
  const IMPORTS = [OverlayModule, MatColumnResizeCommonModule];
29
29
  export class MatColumnResizeModule {
30
30
  }
31
- /** @nocollapse */ MatColumnResizeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MatColumnResizeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
32
- /** @nocollapse */ MatColumnResizeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: MatColumnResizeModule, declarations: [MatColumnResize, MatColumnResizeFlex, MatResizable], imports: [OverlayModule, MatColumnResizeCommonModule], exports: [MatColumnResize, MatColumnResizeFlex, MatResizable] });
33
- /** @nocollapse */ MatColumnResizeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MatColumnResizeModule, imports: [IMPORTS] });
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MatColumnResizeModule, decorators: [{
31
+ /** @nocollapse */ MatColumnResizeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MatColumnResizeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
32
+ /** @nocollapse */ MatColumnResizeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: MatColumnResizeModule, declarations: [MatColumnResize, MatColumnResizeFlex, MatResizable], imports: [OverlayModule, MatColumnResizeCommonModule], exports: [MatColumnResize, MatColumnResizeFlex, MatResizable] });
33
+ /** @nocollapse */ MatColumnResizeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MatColumnResizeModule, imports: [IMPORTS] });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MatColumnResizeModule, decorators: [{
35
35
  type: NgModule,
36
36
  args: [{
37
37
  imports: IMPORTS,
@@ -40,9 +40,9 @@ export class MatColumnResizeOverlayHandle extends ResizeOverlayHandle {
40
40
  });
41
41
  }
42
42
  }
43
- /** @nocollapse */ MatColumnResizeOverlayHandle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MatColumnResizeOverlayHandle, deps: [{ token: i1.CdkColumnDef }, { token: i2.ColumnResize }, { token: i3.Directionality }, { token: i0.ElementRef }, { token: i2.HeaderRowEventDispatcher }, { token: i0.NgZone }, { token: i2.ColumnResizeNotifierSource }, { token: i2.ResizeRef }, { token: _COALESCED_STYLE_SCHEDULER }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
44
- /** @nocollapse */ MatColumnResizeOverlayHandle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: MatColumnResizeOverlayHandle, selector: "ng-component", host: { classAttribute: "mat-column-resize-overlay-thumb" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MatColumnResizeOverlayHandle, decorators: [{
43
+ /** @nocollapse */ MatColumnResizeOverlayHandle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MatColumnResizeOverlayHandle, deps: [{ token: i1.CdkColumnDef }, { token: i2.ColumnResize }, { token: i3.Directionality }, { token: i0.ElementRef }, { token: i2.HeaderRowEventDispatcher }, { token: i0.NgZone }, { token: i2.ColumnResizeNotifierSource }, { token: i2.ResizeRef }, { token: _COALESCED_STYLE_SCHEDULER }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
44
+ /** @nocollapse */ MatColumnResizeOverlayHandle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: MatColumnResizeOverlayHandle, selector: "ng-component", host: { classAttribute: "mat-column-resize-overlay-thumb" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MatColumnResizeOverlayHandle, decorators: [{
46
46
  type: Component,
47
47
  args: [{
48
48
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -39,9 +39,9 @@ export class MatResizable extends AbstractMatResizable {
39
39
  this.isResizable = newValue == null || newValue === '' || newValue;
40
40
  }
41
41
  }
42
- /** @nocollapse */ MatResizable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MatResizable, deps: [{ token: i1.CdkColumnDef }, { token: i2.ColumnResize }, { token: i3.Directionality }, { token: DOCUMENT }, { token: i0.ElementRef }, { token: i2.HeaderRowEventDispatcher }, { token: i0.Injector }, { token: i0.NgZone }, { token: i4.Overlay }, { token: i2.ColumnResizeNotifierSource }, { token: i2.ResizeStrategy }, { token: _COALESCED_STYLE_SCHEDULER }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
43
- /** @nocollapse */ MatResizable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: MatResizable, selector: "mat-header-cell[resizable], th[mat-header-cell][resizable]", inputs: { minWidthPx: ["matResizableMinWidthPx", "minWidthPx"], maxWidthPx: ["matResizableMaxWidthPx", "maxWidthPx"], resizable: "resizable" }, host: { properties: { "class": "this.hasResizableClass" } }, usesInheritance: true, ngImport: i0 });
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MatResizable, decorators: [{
42
+ /** @nocollapse */ MatResizable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MatResizable, deps: [{ token: i1.CdkColumnDef }, { token: i2.ColumnResize }, { token: i3.Directionality }, { token: DOCUMENT }, { token: i0.ElementRef }, { token: i2.HeaderRowEventDispatcher }, { token: i0.Injector }, { token: i0.NgZone }, { token: i4.Overlay }, { token: i2.ColumnResizeNotifierSource }, { token: i2.ResizeStrategy }, { token: _COALESCED_STYLE_SCHEDULER }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
43
+ /** @nocollapse */ MatResizable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: MatResizable, selector: "mat-header-cell[resizable], th[mat-header-cell][resizable]", inputs: { minWidthPx: ["matResizableMinWidthPx", "minWidthPx"], maxWidthPx: ["matResizableMaxWidthPx", "maxWidthPx"], resizable: "resizable" }, host: { properties: { "class": "this.hasResizableClass" } }, usesInheritance: true, ngImport: i0 });
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MatResizable, decorators: [{
45
45
  type: Directive,
46
46
  args: [{
47
47
  selector: 'mat-header-cell[resizable], th[mat-header-cell][resizable]',