@ng-matero/extensions 15.5.1 → 16.0.0

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 (324) hide show
  1. package/alert/alert.d.ts +1 -1
  2. package/button/button-loading.d.ts +1 -1
  3. package/checkbox-group/checkbox-group.d.ts +1 -1
  4. package/colorpicker/colorpicker-input.d.ts +1 -1
  5. package/colorpicker/colorpicker-toggle.d.ts +1 -1
  6. package/colorpicker/colorpicker.d.ts +2 -2
  7. package/datetimepicker/calendar-body.d.ts +1 -1
  8. package/datetimepicker/calendar.d.ts +1 -1
  9. package/datetimepicker/clock.d.ts +1 -1
  10. package/datetimepicker/clock.scss +1 -4
  11. package/datetimepicker/datetimepicker-input.d.ts +1 -1
  12. package/datetimepicker/datetimepicker-toggle.d.ts +1 -1
  13. package/datetimepicker/datetimepicker.d.ts +2 -2
  14. package/datetimepicker/month-view.d.ts +1 -1
  15. package/datetimepicker/multi-year-view.d.ts +1 -1
  16. package/datetimepicker/time.d.ts +2 -2
  17. package/datetimepicker/year-view.d.ts +1 -1
  18. package/esm2022/alert/alert-module.mjs +19 -0
  19. package/esm2022/alert/alert.mjs +53 -0
  20. package/esm2022/button/button-loading.mjs +77 -0
  21. package/esm2022/button/button-module.mjs +21 -0
  22. package/esm2022/checkbox-group/checkbox-group-module.mjs +22 -0
  23. package/esm2022/checkbox-group/checkbox-group.mjs +234 -0
  24. package/esm2022/colorpicker/colorpicker-input.mjs +229 -0
  25. package/esm2022/colorpicker/colorpicker-module.mjs +64 -0
  26. package/esm2022/colorpicker/colorpicker-toggle.mjs +103 -0
  27. package/esm2022/colorpicker/colorpicker.mjs +367 -0
  28. package/esm2022/column-resize/column-resize-directives/column-resize-flex.mjs +46 -0
  29. package/esm2022/column-resize/column-resize-directives/column-resize.mjs +46 -0
  30. package/esm2022/column-resize/column-resize-module.mjs +29 -0
  31. package/esm2022/column-resize/column-resize-notifier.mjs +49 -0
  32. package/esm2022/column-resize/column-resize.mjs +83 -0
  33. package/esm2022/column-resize/column-size-store.mjs +21 -0
  34. package/esm2022/column-resize/event-dispatcher.mjs +68 -0
  35. package/esm2022/column-resize/overlay-handle.mjs +147 -0
  36. package/esm2022/column-resize/resizable.mjs +200 -0
  37. package/esm2022/column-resize/resize-strategy.mjs +235 -0
  38. package/{esm2020 → esm2022}/core/datetime/datetime-adapter.mjs +1 -1
  39. package/esm2022/core/datetime/datetime.module.mjs +44 -0
  40. package/esm2022/core/datetime/native-datetime-adapter.mjs +139 -0
  41. package/esm2022/core/pipes/is-template-ref.pipe.mjs +15 -0
  42. package/esm2022/core/pipes/pipes.module.mjs +20 -0
  43. package/esm2022/core/pipes/to-observable.pipe.mjs +16 -0
  44. package/esm2022/datetimepicker/calendar-body.mjs +79 -0
  45. package/esm2022/datetimepicker/calendar.mjs +672 -0
  46. package/esm2022/datetimepicker/clock.mjs +354 -0
  47. package/esm2022/datetimepicker/datetimepicker-input.mjs +350 -0
  48. package/esm2022/datetimepicker/datetimepicker-intl.mjs +64 -0
  49. package/esm2022/datetimepicker/datetimepicker-module.mjs +83 -0
  50. package/esm2022/datetimepicker/datetimepicker-toggle.mjs +106 -0
  51. package/esm2022/datetimepicker/datetimepicker.mjs +529 -0
  52. package/esm2022/datetimepicker/month-view.mjs +149 -0
  53. package/esm2022/datetimepicker/multi-year-view.mjs +215 -0
  54. package/esm2022/datetimepicker/time.mjs +458 -0
  55. package/esm2022/datetimepicker/year-view.mjs +139 -0
  56. package/esm2022/dialog/dialog-container.mjs +36 -0
  57. package/esm2022/dialog/dialog-module.mjs +25 -0
  58. package/esm2022/dialog/dialog.mjs +75 -0
  59. package/esm2022/drawer/drawer-container.mjs +253 -0
  60. package/esm2022/drawer/drawer-module.mjs +23 -0
  61. package/esm2022/drawer/drawer.mjs +167 -0
  62. package/esm2022/grid/cell.mjs +117 -0
  63. package/{esm2020 → esm2022}/grid/column-menu.mjs +6 -5
  64. package/esm2022/grid/column-resize/column-resize-directives/column-resize-flex.mjs +38 -0
  65. package/esm2022/grid/column-resize/column-resize-directives/column-resize.mjs +38 -0
  66. package/esm2022/grid/column-resize/column-resize-module.mjs +44 -0
  67. package/esm2022/grid/column-resize/overlay-handle.mjs +61 -0
  68. package/esm2022/grid/column-resize/resizable-directives/resizable.mjs +63 -0
  69. package/esm2022/grid/column-resize/resize-strategy.mjs +43 -0
  70. package/esm2022/grid/expansion-toggle.mjs +65 -0
  71. package/esm2022/grid/grid-module.mjs +137 -0
  72. package/esm2022/grid/grid-pipes.mjs +113 -0
  73. package/esm2022/grid/grid-utils.mjs +64 -0
  74. package/esm2022/grid/grid.mjs +630 -0
  75. package/esm2022/loader/loader-module.mjs +21 -0
  76. package/esm2022/loader/loader.mjs +70 -0
  77. package/esm2022/popover/popover-content.mjs +92 -0
  78. package/esm2022/popover/popover-module.mjs +25 -0
  79. package/esm2022/popover/popover-target.mjs +18 -0
  80. package/esm2022/popover/popover-trigger.mjs +472 -0
  81. package/esm2022/popover/popover.mjs +384 -0
  82. package/esm2022/progress/progress-module.mjs +19 -0
  83. package/esm2022/progress/progress.mjs +56 -0
  84. package/esm2022/select/option.mjs +58 -0
  85. package/esm2022/select/select-module.mjs +75 -0
  86. package/esm2022/select/select.mjs +561 -0
  87. package/esm2022/select/templates.mjs +135 -0
  88. package/esm2022/slider/slider-module.mjs +20 -0
  89. package/esm2022/slider/slider.mjs +1116 -0
  90. package/esm2022/split/split-module.mjs +20 -0
  91. package/esm2022/split/split-pane.mjs +150 -0
  92. package/esm2022/split/split.mjs +635 -0
  93. package/esm2022/tooltip/tooltip-module.mjs +25 -0
  94. package/esm2022/tooltip/tooltip.mjs +930 -0
  95. package/{fesm2020 → fesm2022}/mtxAlert.mjs +7 -7
  96. package/{fesm2020 → fesm2022}/mtxAlert.mjs.map +1 -1
  97. package/{fesm2020 → fesm2022}/mtxButton.mjs +7 -7
  98. package/{fesm2015 → fesm2022}/mtxButton.mjs.map +1 -1
  99. package/{fesm2020 → fesm2022}/mtxCheckboxGroup.mjs +13 -13
  100. package/{fesm2020 → fesm2022}/mtxCheckboxGroup.mjs.map +1 -1
  101. package/{fesm2020 → fesm2022}/mtxColorpicker.mjs +41 -41
  102. package/{fesm2020 → fesm2022}/mtxColorpicker.mjs.map +1 -1
  103. package/{fesm2020 → fesm2022}/mtxColumnResize.mjs +46 -46
  104. package/{fesm2015 → fesm2022}/mtxColumnResize.mjs.map +1 -1
  105. package/{fesm2020 → fesm2022}/mtxCore.mjs +26 -26
  106. package/fesm2022/mtxCore.mjs.map +1 -0
  107. package/{fesm2020 → fesm2022}/mtxDatetimepicker.mjs +84 -80
  108. package/fesm2022/mtxDatetimepicker.mjs.map +1 -0
  109. package/{fesm2020 → fesm2022}/mtxDialog.mjs +10 -10
  110. package/{fesm2015 → fesm2022}/mtxDialog.mjs.map +1 -1
  111. package/{fesm2020 → fesm2022}/mtxDrawer.mjs +10 -10
  112. package/{fesm2020 → fesm2022}/mtxDrawer.mjs.map +1 -1
  113. package/{fesm2020 → fesm2022}/mtxGrid.mjs +120 -120
  114. package/{fesm2020 → fesm2022}/mtxGrid.mjs.map +1 -1
  115. package/{fesm2020 → fesm2022}/mtxLoader.mjs +7 -7
  116. package/{fesm2020 → fesm2022}/mtxLoader.mjs.map +1 -1
  117. package/{fesm2020 → fesm2022}/mtxPopover.mjs +19 -19
  118. package/{fesm2020 → fesm2022}/mtxPopover.mjs.map +1 -1
  119. package/{fesm2020 → fesm2022}/mtxProgress.mjs +7 -7
  120. package/{fesm2015 → fesm2022}/mtxProgress.mjs.map +1 -1
  121. package/{fesm2020 → fesm2022}/mtxSelect.mjs +67 -67
  122. package/{fesm2015 → fesm2022}/mtxSelect.mjs.map +1 -1
  123. package/{fesm2020 → fesm2022}/mtxSlider.mjs +7 -7
  124. package/{fesm2020 → fesm2022}/mtxSlider.mjs.map +1 -1
  125. package/{fesm2020 → fesm2022}/mtxSplit.mjs +10 -10
  126. package/{fesm2020 → fesm2022}/mtxSplit.mjs.map +1 -1
  127. package/{fesm2020 → fesm2022}/mtxTooltip.mjs +16 -16
  128. package/{fesm2015 → fesm2022}/mtxTooltip.mjs.map +1 -1
  129. package/grid/cell.d.ts +1 -1
  130. package/grid/column-menu.d.ts +1 -1
  131. package/grid/column-resize/resizable-directives/resizable.d.ts +1 -1
  132. package/grid/expansion-toggle.d.ts +1 -1
  133. package/grid/grid.d.ts +2 -2
  134. package/loader/loader.d.ts +1 -1
  135. package/package.json +69 -109
  136. package/popover/popover-trigger.d.ts +1 -1
  137. package/popover/popover.d.ts +1 -1
  138. package/progress/progress.d.ts +1 -1
  139. package/select/option.d.ts +1 -1
  140. package/select/select.d.ts +1 -1
  141. package/slider/slider.d.ts +1 -1
  142. package/split/split-pane.d.ts +1 -1
  143. package/split/split.d.ts +1 -1
  144. package/tooltip/tooltip.d.ts +1 -1
  145. package/tooltip/tooltip.scss +1 -4
  146. package/esm2020/alert/alert-module.mjs +0 -18
  147. package/esm2020/alert/alert.mjs +0 -52
  148. package/esm2020/button/button-loading.mjs +0 -76
  149. package/esm2020/button/button-module.mjs +0 -20
  150. package/esm2020/checkbox-group/checkbox-group-module.mjs +0 -21
  151. package/esm2020/checkbox-group/checkbox-group.mjs +0 -233
  152. package/esm2020/colorpicker/colorpicker-input.mjs +0 -228
  153. package/esm2020/colorpicker/colorpicker-module.mjs +0 -63
  154. package/esm2020/colorpicker/colorpicker-toggle.mjs +0 -101
  155. package/esm2020/colorpicker/colorpicker.mjs +0 -365
  156. package/esm2020/column-resize/column-resize-directives/column-resize-flex.mjs +0 -45
  157. package/esm2020/column-resize/column-resize-directives/column-resize.mjs +0 -45
  158. package/esm2020/column-resize/column-resize-module.mjs +0 -28
  159. package/esm2020/column-resize/column-resize-notifier.mjs +0 -47
  160. package/esm2020/column-resize/column-resize.mjs +0 -82
  161. package/esm2020/column-resize/column-size-store.mjs +0 -20
  162. package/esm2020/column-resize/event-dispatcher.mjs +0 -67
  163. package/esm2020/column-resize/overlay-handle.mjs +0 -146
  164. package/esm2020/column-resize/resizable.mjs +0 -199
  165. package/esm2020/column-resize/resize-strategy.mjs +0 -232
  166. package/esm2020/core/datetime/datetime.module.mjs +0 -42
  167. package/esm2020/core/datetime/native-datetime-adapter.mjs +0 -138
  168. package/esm2020/core/pipes/is-template-ref.pipe.mjs +0 -14
  169. package/esm2020/core/pipes/pipes.module.mjs +0 -19
  170. package/esm2020/core/pipes/to-observable.pipe.mjs +0 -15
  171. package/esm2020/datetimepicker/calendar-body.mjs +0 -78
  172. package/esm2020/datetimepicker/calendar.mjs +0 -671
  173. package/esm2020/datetimepicker/clock.mjs +0 -349
  174. package/esm2020/datetimepicker/datetimepicker-input.mjs +0 -349
  175. package/esm2020/datetimepicker/datetimepicker-intl.mjs +0 -63
  176. package/esm2020/datetimepicker/datetimepicker-module.mjs +0 -82
  177. package/esm2020/datetimepicker/datetimepicker-toggle.mjs +0 -104
  178. package/esm2020/datetimepicker/datetimepicker.mjs +0 -527
  179. package/esm2020/datetimepicker/month-view.mjs +0 -148
  180. package/esm2020/datetimepicker/multi-year-view.mjs +0 -214
  181. package/esm2020/datetimepicker/time.mjs +0 -456
  182. package/esm2020/datetimepicker/year-view.mjs +0 -138
  183. package/esm2020/dialog/dialog-container.mjs +0 -35
  184. package/esm2020/dialog/dialog-module.mjs +0 -24
  185. package/esm2020/dialog/dialog.mjs +0 -74
  186. package/esm2020/drawer/drawer-container.mjs +0 -252
  187. package/esm2020/drawer/drawer-module.mjs +0 -22
  188. package/esm2020/drawer/drawer.mjs +0 -166
  189. package/esm2020/grid/cell.mjs +0 -116
  190. package/esm2020/grid/column-resize/column-resize-directives/column-resize-flex.mjs +0 -37
  191. package/esm2020/grid/column-resize/column-resize-directives/column-resize.mjs +0 -37
  192. package/esm2020/grid/column-resize/column-resize-module.mjs +0 -42
  193. package/esm2020/grid/column-resize/overlay-handle.mjs +0 -60
  194. package/esm2020/grid/column-resize/resizable-directives/resizable.mjs +0 -62
  195. package/esm2020/grid/column-resize/resize-strategy.mjs +0 -42
  196. package/esm2020/grid/expansion-toggle.mjs +0 -64
  197. package/esm2020/grid/grid-module.mjs +0 -136
  198. package/esm2020/grid/grid-pipes.mjs +0 -108
  199. package/esm2020/grid/grid-utils.mjs +0 -63
  200. package/esm2020/grid/grid.mjs +0 -628
  201. package/esm2020/loader/loader-module.mjs +0 -20
  202. package/esm2020/loader/loader.mjs +0 -69
  203. package/esm2020/popover/popover-content.mjs +0 -90
  204. package/esm2020/popover/popover-module.mjs +0 -24
  205. package/esm2020/popover/popover-target.mjs +0 -17
  206. package/esm2020/popover/popover-trigger.mjs +0 -471
  207. package/esm2020/popover/popover.mjs +0 -383
  208. package/esm2020/progress/progress-module.mjs +0 -18
  209. package/esm2020/progress/progress.mjs +0 -55
  210. package/esm2020/select/option.mjs +0 -57
  211. package/esm2020/select/select-module.mjs +0 -74
  212. package/esm2020/select/select.mjs +0 -560
  213. package/esm2020/select/templates.mjs +0 -124
  214. package/esm2020/slider/slider-module.mjs +0 -19
  215. package/esm2020/slider/slider.mjs +0 -1115
  216. package/esm2020/split/split-module.mjs +0 -19
  217. package/esm2020/split/split-pane.mjs +0 -149
  218. package/esm2020/split/split.mjs +0 -634
  219. package/esm2020/tooltip/tooltip-module.mjs +0 -24
  220. package/esm2020/tooltip/tooltip.mjs +0 -926
  221. package/fesm2015/mtxAlert.mjs +0 -74
  222. package/fesm2015/mtxAlert.mjs.map +0 -1
  223. package/fesm2015/mtxButton.mjs +0 -99
  224. package/fesm2015/mtxCheckboxGroup.mjs +0 -256
  225. package/fesm2015/mtxCheckboxGroup.mjs.map +0 -1
  226. package/fesm2015/mtxColorpicker.mjs +0 -767
  227. package/fesm2015/mtxColorpicker.mjs.map +0 -1
  228. package/fesm2015/mtxColumnResize.mjs +0 -959
  229. package/fesm2015/mtxCore.mjs +0 -374
  230. package/fesm2015/mtxCore.mjs.map +0 -1
  231. package/fesm2015/mtxDatetimepicker.mjs +0 -3164
  232. package/fesm2015/mtxDatetimepicker.mjs.map +0 -1
  233. package/fesm2015/mtxDialog.mjs +0 -130
  234. package/fesm2015/mtxDrawer.mjs +0 -578
  235. package/fesm2015/mtxDrawer.mjs.map +0 -1
  236. package/fesm2015/mtxGrid.mjs +0 -1514
  237. package/fesm2015/mtxGrid.mjs.map +0 -1
  238. package/fesm2015/mtxLoader.mjs +0 -93
  239. package/fesm2015/mtxLoader.mjs.map +0 -1
  240. package/fesm2015/mtxPopover.mjs +0 -1027
  241. package/fesm2015/mtxPopover.mjs.map +0 -1
  242. package/fesm2015/mtxProgress.mjs +0 -77
  243. package/fesm2015/mtxSelect.mjs +0 -814
  244. package/fesm2015/mtxSlider.mjs +0 -1139
  245. package/fesm2015/mtxSlider.mjs.map +0 -1
  246. package/fesm2015/mtxSplit.mjs +0 -1025
  247. package/fesm2015/mtxSplit.mjs.map +0 -1
  248. package/fesm2015/mtxTooltip.mjs +0 -982
  249. package/fesm2020/mtxButton.mjs.map +0 -1
  250. package/fesm2020/mtxColumnResize.mjs.map +0 -1
  251. package/fesm2020/mtxCore.mjs.map +0 -1
  252. package/fesm2020/mtxDatetimepicker.mjs.map +0 -1
  253. package/fesm2020/mtxDialog.mjs.map +0 -1
  254. package/fesm2020/mtxProgress.mjs.map +0 -1
  255. package/fesm2020/mtxSelect.mjs.map +0 -1
  256. package/fesm2020/mtxTooltip.mjs.map +0 -1
  257. package/fesm2020/ng-matero-extensions.mjs +0 -9
  258. package/fesm2020/ng-matero-extensions.mjs.map +0 -1
  259. /package/{esm2020 → esm2022}/alert/mtxAlert.mjs +0 -0
  260. /package/{esm2020 → esm2022}/alert/public-api.mjs +0 -0
  261. /package/{esm2020 → esm2022}/button/mtxButton.mjs +0 -0
  262. /package/{esm2020 → esm2022}/button/public-api.mjs +0 -0
  263. /package/{esm2020 → esm2022}/checkbox-group/interfaces.mjs +0 -0
  264. /package/{esm2020 → esm2022}/checkbox-group/mtxCheckboxGroup.mjs +0 -0
  265. /package/{esm2020 → esm2022}/checkbox-group/public-api.mjs +0 -0
  266. /package/{esm2020 → esm2022}/colorpicker/colorpicker-animations.mjs +0 -0
  267. /package/{esm2020 → esm2022}/colorpicker/mtxColorpicker.mjs +0 -0
  268. /package/{esm2020 → esm2022}/colorpicker/public-api.mjs +0 -0
  269. /package/{esm2020 → esm2022}/column-resize/column-resize-directives/constants.mjs +0 -0
  270. /package/{esm2020 → esm2022}/column-resize/mtxColumnResize.mjs +0 -0
  271. /package/{esm2020 → esm2022}/column-resize/polyfill.mjs +0 -0
  272. /package/{esm2020 → esm2022}/column-resize/public-api.mjs +0 -0
  273. /package/{esm2020 → esm2022}/column-resize/resize-ref.mjs +0 -0
  274. /package/{esm2020 → esm2022}/column-resize/selectors.mjs +0 -0
  275. /package/{esm2020 → esm2022}/core/datetime/datetime-formats.mjs +0 -0
  276. /package/{esm2020 → esm2022}/core/datetime/index.mjs +0 -0
  277. /package/{esm2020 → esm2022}/core/datetime/native-datetime-formats.mjs +0 -0
  278. /package/{esm2020 → esm2022}/core/mtxCore.mjs +0 -0
  279. /package/{esm2020 → esm2022}/core/pipes/index.mjs +0 -0
  280. /package/{esm2020 → esm2022}/core/public-api.mjs +0 -0
  281. /package/{esm2020 → esm2022}/datetimepicker/datetimepicker-animations.mjs +0 -0
  282. /package/{esm2020 → esm2022}/datetimepicker/datetimepicker-errors.mjs +0 -0
  283. /package/{esm2020 → esm2022}/datetimepicker/datetimepicker-filtertype.mjs +0 -0
  284. /package/{esm2020 → esm2022}/datetimepicker/datetimepicker-types.mjs +0 -0
  285. /package/{esm2020 → esm2022}/datetimepicker/mtxDatetimepicker.mjs +0 -0
  286. /package/{esm2020 → esm2022}/datetimepicker/public-api.mjs +0 -0
  287. /package/{esm2020 → esm2022}/dialog/dialog-config.mjs +0 -0
  288. /package/{esm2020 → esm2022}/dialog/mtxDialog.mjs +0 -0
  289. /package/{esm2020 → esm2022}/dialog/public-api.mjs +0 -0
  290. /package/{esm2020 → esm2022}/drawer/drawer-animation.mjs +0 -0
  291. /package/{esm2020 → esm2022}/drawer/drawer-config.mjs +0 -0
  292. /package/{esm2020 → esm2022}/drawer/drawer-ref.mjs +0 -0
  293. /package/{esm2020 → esm2022}/drawer/mtxDrawer.mjs +0 -0
  294. /package/{esm2020 → esm2022}/drawer/public-api.mjs +0 -0
  295. /package/{esm2020 → esm2022}/grid/column-resize/column-resize-directives/common.mjs +0 -0
  296. /package/{esm2020 → esm2022}/grid/column-resize/resizable-directives/common.mjs +0 -0
  297. /package/{esm2020 → esm2022}/grid/interfaces.mjs +0 -0
  298. /package/{esm2020 → esm2022}/grid/mtxGrid.mjs +0 -0
  299. /package/{esm2020 → esm2022}/grid/public-api.mjs +0 -0
  300. /package/{esm2020 → esm2022}/loader/mtxLoader.mjs +0 -0
  301. /package/{esm2020 → esm2022}/loader/public-api.mjs +0 -0
  302. /package/{esm2020 → esm2022}/ng-matero-extensions.mjs +0 -0
  303. /package/{esm2020 → esm2022}/popover/mtxPopover.mjs +0 -0
  304. /package/{esm2020 → esm2022}/popover/popover-animations.mjs +0 -0
  305. /package/{esm2020 → esm2022}/popover/popover-errors.mjs +0 -0
  306. /package/{esm2020 → esm2022}/popover/popover-interfaces.mjs +0 -0
  307. /package/{esm2020 → esm2022}/popover/popover-types.mjs +0 -0
  308. /package/{esm2020 → esm2022}/popover/public-api.mjs +0 -0
  309. /package/{esm2020 → esm2022}/progress/mtxProgress.mjs +0 -0
  310. /package/{esm2020 → esm2022}/progress/public-api.mjs +0 -0
  311. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  312. /package/{esm2020 → esm2022}/select/mtxSelect.mjs +0 -0
  313. /package/{esm2020 → esm2022}/select/public-api.mjs +0 -0
  314. /package/{esm2020 → esm2022}/slider/mtxSlider.mjs +0 -0
  315. /package/{esm2020 → esm2022}/slider/public-api.mjs +0 -0
  316. /package/{esm2020 → esm2022}/split/interfaces.mjs +0 -0
  317. /package/{esm2020 → esm2022}/split/mtxSplit.mjs +0 -0
  318. /package/{esm2020 → esm2022}/split/public-api.mjs +0 -0
  319. /package/{esm2020 → esm2022}/split/utils.mjs +0 -0
  320. /package/{esm2020 → esm2022}/tooltip/mtxTooltip.mjs +0 -0
  321. /package/{esm2020 → esm2022}/tooltip/public-api.mjs +0 -0
  322. /package/{esm2020 → esm2022}/tooltip/tooltip-animations.mjs +0 -0
  323. /package/{fesm2015 → fesm2022}/ng-matero-extensions.mjs +0 -0
  324. /package/{fesm2015 → fesm2022}/ng-matero-extensions.mjs.map +0 -0
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { Directive } from '@angular/core';
9
+ import { ColumnResize } from '../column-resize';
10
+ import { TABLE_PROVIDERS } from './constants';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "../column-resize-notifier";
13
+ import * as i2 from "../event-dispatcher";
14
+ import * as i3 from "@angular/cdk/table";
15
+ /**
16
+ * Explicitly enables column resizing for a table-based cdk-table.
17
+ * Individual columns must be annotated specifically.
18
+ */
19
+ class CdkColumnResize extends ColumnResize {
20
+ constructor(columnResizeNotifier, elementRef, eventDispatcher, ngZone, notifier, table) {
21
+ super();
22
+ this.columnResizeNotifier = columnResizeNotifier;
23
+ this.elementRef = elementRef;
24
+ this.eventDispatcher = eventDispatcher;
25
+ this.ngZone = ngZone;
26
+ this.notifier = notifier;
27
+ this.table = table;
28
+ }
29
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: CdkColumnResize, deps: [{ token: i1.ColumnResizeNotifier }, { token: i0.ElementRef }, { token: i2.HeaderRowEventDispatcher }, { token: i0.NgZone }, { token: i1.ColumnResizeNotifierSource }, { token: i3.CdkTable }], target: i0.ɵɵFactoryTarget.Directive }); }
30
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.3", type: CdkColumnResize, selector: "table[cdk-table][columnResize]", providers: [
31
+ ...TABLE_PROVIDERS,
32
+ { provide: ColumnResize, useExisting: CdkColumnResize },
33
+ ], usesInheritance: true, ngImport: i0 }); }
34
+ }
35
+ export { CdkColumnResize };
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: CdkColumnResize, decorators: [{
37
+ type: Directive,
38
+ args: [{
39
+ selector: 'table[cdk-table][columnResize]',
40
+ providers: [
41
+ ...TABLE_PROVIDERS,
42
+ { provide: ColumnResize, useExisting: CdkColumnResize },
43
+ ],
44
+ }]
45
+ }], ctorParameters: function () { return [{ type: i1.ColumnResizeNotifier }, { type: i0.ElementRef }, { type: i2.HeaderRowEventDispatcher }, { type: i0.NgZone }, { type: i1.ColumnResizeNotifierSource }, { type: i3.CdkTable }]; } });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXJlc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvY29sdW1uLXJlc2l6ZS9jb2x1bW4tcmVzaXplLWRpcmVjdGl2ZXMvY29sdW1uLXJlc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUc1RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFHOUMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUFFNUM7OztHQUdHO0FBQ0gsTUFPYSxlQUFnQixTQUFRLFlBQVk7SUFDL0MsWUFDYSxvQkFBMEMsRUFDMUMsVUFBbUMsRUFDekIsZUFBeUMsRUFDekMsTUFBYyxFQUNkLFFBQW9DLEVBQ3BDLEtBQXdCO1FBQzdDLEtBQUssRUFBRSxDQUFDO1FBTkcseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUN6QixvQkFBZSxHQUFmLGVBQWUsQ0FBMEI7UUFDekMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQTRCO1FBQ3BDLFVBQUssR0FBTCxLQUFLLENBQW1CO0lBRS9DLENBQUM7aUlBVFUsZUFBZTtxSEFBZixlQUFlLHlEQUxmO1lBQ1QsR0FBRyxlQUFlO1lBQ2xCLEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFDO1NBQ3REOztTQUVVLGVBQWU7MkZBQWYsZUFBZTtrQkFQM0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0NBQWdDO29CQUMxQyxTQUFTLEVBQUU7d0JBQ1QsR0FBRyxlQUFlO3dCQUNsQixFQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxpQkFBaUIsRUFBQztxQkFDdEQ7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Nka1RhYmxlfSBmcm9tICdAYW5ndWxhci9jZGsvdGFibGUnO1xuXG5pbXBvcnQge0NvbHVtblJlc2l6ZX0gZnJvbSAnLi4vY29sdW1uLXJlc2l6ZSc7XG5pbXBvcnQge0NvbHVtblJlc2l6ZU5vdGlmaWVyLCBDb2x1bW5SZXNpemVOb3RpZmllclNvdXJjZX0gZnJvbSAnLi4vY29sdW1uLXJlc2l6ZS1ub3RpZmllcic7XG5pbXBvcnQge0hlYWRlclJvd0V2ZW50RGlzcGF0Y2hlcn0gZnJvbSAnLi4vZXZlbnQtZGlzcGF0Y2hlcic7XG5pbXBvcnQge1RBQkxFX1BST1ZJREVSU30gZnJvbSAnLi9jb25zdGFudHMnO1xuXG4vKipcbiAqIEV4cGxpY2l0bHkgZW5hYmxlcyBjb2x1bW4gcmVzaXppbmcgZm9yIGEgdGFibGUtYmFzZWQgY2RrLXRhYmxlLlxuICogSW5kaXZpZHVhbCBjb2x1bW5zIG11c3QgYmUgYW5ub3RhdGVkIHNwZWNpZmljYWxseS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAndGFibGVbY2RrLXRhYmxlXVtjb2x1bW5SZXNpemVdJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgLi4uVEFCTEVfUFJPVklERVJTLFxuICAgIHtwcm92aWRlOiBDb2x1bW5SZXNpemUsIHVzZUV4aXN0aW5nOiBDZGtDb2x1bW5SZXNpemV9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDZGtDb2x1bW5SZXNpemUgZXh0ZW5kcyBDb2x1bW5SZXNpemUge1xuICBjb25zdHJ1Y3RvcihcbiAgICAgIHJlYWRvbmx5IGNvbHVtblJlc2l6ZU5vdGlmaWVyOiBDb2x1bW5SZXNpemVOb3RpZmllcixcbiAgICAgIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGV2ZW50RGlzcGF0Y2hlcjogSGVhZGVyUm93RXZlbnREaXNwYXRjaGVyLFxuICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IG5nWm9uZTogTmdab25lLFxuICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IG5vdGlmaWVyOiBDb2x1bW5SZXNpemVOb3RpZmllclNvdXJjZSxcbiAgICAgIHByb3RlY3RlZCByZWFkb25seSB0YWJsZTogQ2RrVGFibGU8dW5rbm93bj4pIHtcbiAgICBzdXBlcigpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { NgModule } from '@angular/core';
9
+ import { CdkColumnResize } from './column-resize-directives/column-resize';
10
+ import { CdkColumnResizeFlex } from './column-resize-directives/column-resize-flex';
11
+ import * as i0 from "@angular/core";
12
+ /**
13
+ * One of two NgModules for use with CdkColumnResize.
14
+ * When using this module, columns are not resizable by default.
15
+ */
16
+ class CdkColumnResizeModule {
17
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: CdkColumnResizeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
18
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.3", ngImport: i0, type: CdkColumnResizeModule, declarations: [CdkColumnResize, CdkColumnResizeFlex], exports: [CdkColumnResize, CdkColumnResizeFlex] }); }
19
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: CdkColumnResizeModule }); }
20
+ }
21
+ export { CdkColumnResizeModule };
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: CdkColumnResizeModule, decorators: [{
23
+ type: NgModule,
24
+ args: [{
25
+ declarations: [CdkColumnResize, CdkColumnResizeFlex],
26
+ exports: [CdkColumnResize, CdkColumnResizeFlex],
27
+ }]
28
+ }] });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXJlc2l6ZS1tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2NvbHVtbi1yZXNpemUvY29sdW1uLXJlc2l6ZS1tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0NBQStDLENBQUM7O0FBRXBGOzs7R0FHRztBQUNILE1BSWEscUJBQXFCO2lJQUFyQixxQkFBcUI7a0lBQXJCLHFCQUFxQixpQkFIakIsZUFBZSxFQUFFLG1CQUFtQixhQUN6QyxlQUFlLEVBQUUsbUJBQW1CO2tJQUVuQyxxQkFBcUI7O1NBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQUpqQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQztvQkFDcEQsT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFFLG1CQUFtQixDQUFDO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDZGtDb2x1bW5SZXNpemUgfSBmcm9tICcuL2NvbHVtbi1yZXNpemUtZGlyZWN0aXZlcy9jb2x1bW4tcmVzaXplJztcbmltcG9ydCB7IENka0NvbHVtblJlc2l6ZUZsZXggfSBmcm9tICcuL2NvbHVtbi1yZXNpemUtZGlyZWN0aXZlcy9jb2x1bW4tcmVzaXplLWZsZXgnO1xuXG4vKipcbiAqIE9uZSBvZiB0d28gTmdNb2R1bGVzIGZvciB1c2Ugd2l0aCBDZGtDb2x1bW5SZXNpemUuXG4gKiBXaGVuIHVzaW5nIHRoaXMgbW9kdWxlLCBjb2x1bW5zIGFyZSBub3QgcmVzaXphYmxlIGJ5IGRlZmF1bHQuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0Nka0NvbHVtblJlc2l6ZSwgQ2RrQ29sdW1uUmVzaXplRmxleF0sXG4gIGV4cG9ydHM6IFtDZGtDb2x1bW5SZXNpemUsIENka0NvbHVtblJlc2l6ZUZsZXhdLFxufSlcbmV4cG9ydCBjbGFzcyBDZGtDb2x1bW5SZXNpemVNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { Injectable } from '@angular/core';
9
+ import { Subject } from 'rxjs';
10
+ import * as i0 from "@angular/core";
11
+ /**
12
+ * Originating source of column resize events within a table.
13
+ * @docs-private
14
+ */
15
+ class ColumnResizeNotifierSource {
16
+ constructor() {
17
+ /** Emits when an in-progress resize is canceled. */
18
+ this.resizeCanceled = new Subject();
19
+ /** Emits when a resize is applied. */
20
+ this.resizeCompleted = new Subject();
21
+ /** Triggers a resize action. */
22
+ this.triggerResize = new Subject();
23
+ }
24
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ColumnResizeNotifierSource, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
25
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ColumnResizeNotifierSource }); }
26
+ }
27
+ export { ColumnResizeNotifierSource };
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ColumnResizeNotifierSource, decorators: [{
29
+ type: Injectable
30
+ }] });
31
+ /** Service for triggering column resizes imperatively or being notified of them. */
32
+ class ColumnResizeNotifier {
33
+ constructor(_source) {
34
+ this._source = _source;
35
+ /** Emits whenever a column is resized. */
36
+ this.resizeCompleted = this._source.resizeCompleted;
37
+ }
38
+ /** Instantly resizes the specified column. */
39
+ resize(columnId, size) {
40
+ this._source.triggerResize.next({ columnId, size, completeImmediately: true, isStickyColumn: true });
41
+ }
42
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ColumnResizeNotifier, deps: [{ token: ColumnResizeNotifierSource }], target: i0.ɵɵFactoryTarget.Injectable }); }
43
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ColumnResizeNotifier }); }
44
+ }
45
+ export { ColumnResizeNotifier };
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ColumnResizeNotifier, decorators: [{
47
+ type: Injectable
48
+ }], ctorParameters: function () { return [{ type: ColumnResizeNotifierSource }]; } });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXJlc2l6ZS1ub3RpZmllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvY29sdW1uLXJlc2l6ZS9jb2x1bW4tcmVzaXplLW5vdGlmaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFhLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUE2QnpDOzs7R0FHRztBQUNILE1BQ2EsMEJBQTBCO0lBRHZDO1FBRUUsb0RBQW9EO1FBQzNDLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQW9CLENBQUM7UUFFMUQsc0NBQXNDO1FBQzdCLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztRQUVyRCxnQ0FBZ0M7UUFDdkIsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBb0IsQ0FBQztLQUMxRDtpSUFUWSwwQkFBMEI7cUlBQTFCLDBCQUEwQjs7U0FBMUIsMEJBQTBCOzJGQUExQiwwQkFBMEI7a0JBRHRDLFVBQVU7O0FBWVgsb0ZBQW9GO0FBQ3BGLE1BQ2Esb0JBQW9CO0lBSS9CLFlBQTZCLE9BQW1DO1FBQW5DLFlBQU8sR0FBUCxPQUFPLENBQTRCO1FBSGhFLDBDQUEwQztRQUNqQyxvQkFBZSxHQUEyQixJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztJQUViLENBQUM7SUFFcEUsOENBQThDO0lBQzlDLE1BQU0sQ0FBQyxRQUFnQixFQUFFLElBQVk7UUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUMzQixFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7aUlBVlUsb0JBQW9CO3FJQUFwQixvQkFBb0I7O1NBQXBCLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuXG4vKiogSW5kaWNhdGVzIHRoZSB3aWR0aCBvZiBhIGNvbHVtbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uU2l6ZSB7XG4gIC8qKiBUaGUgSUQvbmFtZSBvZiB0aGUgY29sdW1uLCBhcyBkZWZpbmVkIGluIENka0NvbHVtbkRlZi4gKi9cbiAgcmVhZG9ubHkgY29sdW1uSWQ6IHN0cmluZztcblxuICAvKiogVGhlIHdpZHRoIGluIHBpeGVscyBvZiB0aGUgY29sdW1uLiAqL1xuICByZWFkb25seSBzaXplOiBudW1iZXI7XG5cbiAgLyoqIFRoZSB3aWR0aCBpbiBwaXhlbHMgb2YgdGhlIGNvbHVtbiBwcmlvciB0byB0aGlzIHVwZGF0ZSwgaWYga25vd24uICovXG4gIHJlYWRvbmx5IHByZXZpb3VzU2l6ZT86IG51bWJlcjtcbn1cblxuLyoqIEludGVyZmFjZSBkZXNjcmliaW5nIGNvbHVtbiBzaXplIGNoYW5nZXMuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtblNpemVBY3Rpb24gZXh0ZW5kcyBDb2x1bW5TaXplIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJlc2l6ZSBhY3Rpb24gc2hvdWxkIGJlIGFwcGxpZWQgaW5zdGFudGFuZW91c2x5LiBGYWxzZSBmb3IgZXZlbnRzIHRyaWdnZXJlZCBkdXJpbmdcbiAgICogYSBVSS10cmlnZ2VyZWQgcmVzaXplIChzdWNoIGFzIHdpdGggdGhlIG1vdXNlKSB1bnRpbCB0aGUgbW91c2UgYnV0dG9uIGlzIHJlbGVhc2VkLiBUcnVlXG4gICAqIGZvciBhbGwgcHJvZ3JhbWF0aWNhbGx5IHRyaWdnZXJlZCByZXNpemVzLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcGxldGVJbW1lZGlhdGVseT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJlc2l6ZSBhY3Rpb24gaXMgYmVpbmcgYXBwbGllZCB0byBhIHN0aWNreS9zdGlja3lFbmQgY29sdW1uLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNTdGlja3lDb2x1bW4/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9yaWdpbmF0aW5nIHNvdXJjZSBvZiBjb2x1bW4gcmVzaXplIGV2ZW50cyB3aXRoaW4gYSB0YWJsZS5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbHVtblJlc2l6ZU5vdGlmaWVyU291cmNlIHtcbiAgLyoqIEVtaXRzIHdoZW4gYW4gaW4tcHJvZ3Jlc3MgcmVzaXplIGlzIGNhbmNlbGVkLiAqL1xuICByZWFkb25seSByZXNpemVDYW5jZWxlZCA9IG5ldyBTdWJqZWN0PENvbHVtblNpemVBY3Rpb24+KCk7XG5cbiAgLyoqIEVtaXRzIHdoZW4gYSByZXNpemUgaXMgYXBwbGllZC4gKi9cbiAgcmVhZG9ubHkgcmVzaXplQ29tcGxldGVkID0gbmV3IFN1YmplY3Q8Q29sdW1uU2l6ZT4oKTtcblxuICAvKiogVHJpZ2dlcnMgYSByZXNpemUgYWN0aW9uLiAqL1xuICByZWFkb25seSB0cmlnZ2VyUmVzaXplID0gbmV3IFN1YmplY3Q8Q29sdW1uU2l6ZUFjdGlvbj4oKTtcbn1cblxuLyoqIFNlcnZpY2UgZm9yIHRyaWdnZXJpbmcgY29sdW1uIHJlc2l6ZXMgaW1wZXJhdGl2ZWx5IG9yIGJlaW5nIG5vdGlmaWVkIG9mIHRoZW0uICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29sdW1uUmVzaXplTm90aWZpZXIge1xuICAvKiogRW1pdHMgd2hlbmV2ZXIgYSBjb2x1bW4gaXMgcmVzaXplZC4gKi9cbiAgcmVhZG9ubHkgcmVzaXplQ29tcGxldGVkOiBPYnNlcnZhYmxlPENvbHVtblNpemU+ID0gdGhpcy5fc291cmNlLnJlc2l6ZUNvbXBsZXRlZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9zb3VyY2U6IENvbHVtblJlc2l6ZU5vdGlmaWVyU291cmNlKSB7fVxuXG4gIC8qKiBJbnN0YW50bHkgcmVzaXplcyB0aGUgc3BlY2lmaWVkIGNvbHVtbi4gKi9cbiAgcmVzaXplKGNvbHVtbklkOiBzdHJpbmcsIHNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3NvdXJjZS50cmlnZ2VyUmVzaXplLm5leHQoXG4gICAgICAgIHtjb2x1bW5JZCwgc2l6ZSwgY29tcGxldGVJbW1lZGlhdGVseTogdHJ1ZSwgaXNTdGlja3lDb2x1bW46IHRydWV9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,83 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { Directive } from '@angular/core';
9
+ import { fromEvent, merge, Subject } from 'rxjs';
10
+ import { filter, map, mapTo, pairwise, startWith, take, takeUntil } from 'rxjs/operators';
11
+ import { HEADER_CELL_SELECTOR, RESIZE_OVERLAY_SELECTOR } from './selectors';
12
+ import { closest, matches } from './polyfill';
13
+ import * as i0 from "@angular/core";
14
+ const HOVER_OR_ACTIVE_CLASS = 'cdk-column-resize-hover-or-active';
15
+ const WITH_RESIZED_COLUMN_CLASS = 'cdk-column-resize-with-resized-column';
16
+ let nextId = 0;
17
+ /**
18
+ * Base class for ColumnResize directives which attach to mat-table elements to
19
+ * provide common events and services for column resizing.
20
+ */
21
+ class ColumnResize {
22
+ constructor() {
23
+ this.destroyed = new Subject();
24
+ /** Unique ID for this table instance. */
25
+ this.selectorId = `${++nextId}`;
26
+ }
27
+ ngAfterViewInit() {
28
+ this.elementRef.nativeElement.classList.add(this.getUniqueCssClass());
29
+ this._listenForRowHoverEvents();
30
+ this._listenForResizeActivity();
31
+ this._listenForHoverActivity();
32
+ }
33
+ ngOnDestroy() {
34
+ this.destroyed.next();
35
+ this.destroyed.complete();
36
+ }
37
+ /** Gets the unique CSS class name for this table instance. */
38
+ getUniqueCssClass() {
39
+ return `cdk-column-resize-${this.selectorId}`;
40
+ }
41
+ /** Called when a column in the table is resized. Applies a css class to the table element. */
42
+ setResized() {
43
+ this.elementRef.nativeElement.classList.add(WITH_RESIZED_COLUMN_CLASS);
44
+ }
45
+ _listenForRowHoverEvents() {
46
+ this.ngZone.runOutsideAngular(() => {
47
+ const element = this.elementRef.nativeElement;
48
+ fromEvent(element, 'mouseover')
49
+ .pipe(map(event => closest(event.target, HEADER_CELL_SELECTOR)), takeUntil(this.destroyed))
50
+ .subscribe(this.eventDispatcher.headerCellHovered);
51
+ fromEvent(element, 'mouseleave')
52
+ .pipe(filter(event => !!event.relatedTarget &&
53
+ !matches(event.relatedTarget, RESIZE_OVERLAY_SELECTOR)), mapTo(null), takeUntil(this.destroyed))
54
+ .subscribe(this.eventDispatcher.headerCellHovered);
55
+ });
56
+ }
57
+ _listenForResizeActivity() {
58
+ merge(this.eventDispatcher.overlayHandleActiveForCell.pipe(mapTo(undefined)), this.notifier.triggerResize.pipe(mapTo(undefined)), this.notifier.resizeCompleted.pipe(mapTo(undefined)))
59
+ .pipe(take(1), takeUntil(this.destroyed))
60
+ .subscribe(() => {
61
+ this.setResized();
62
+ });
63
+ }
64
+ _listenForHoverActivity() {
65
+ this.eventDispatcher.headerRowHoveredOrActiveDistinct
66
+ .pipe(startWith(null), pairwise(), takeUntil(this.destroyed))
67
+ .subscribe(([previousRow, hoveredRow]) => {
68
+ if (hoveredRow) {
69
+ hoveredRow.classList.add(HOVER_OR_ACTIVE_CLASS);
70
+ }
71
+ if (previousRow) {
72
+ previousRow.classList.remove(HOVER_OR_ACTIVE_CLASS);
73
+ }
74
+ });
75
+ }
76
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ColumnResize, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
77
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.3", type: ColumnResize, ngImport: i0 }); }
78
+ }
79
+ export { ColumnResize };
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ColumnResize, decorators: [{
81
+ type: Directive
82
+ }] });
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXJlc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvY29sdW1uLXJlc2l6ZS9jb2x1bW4tcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBaUIsU0FBUyxFQUFpQyxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzFGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFFOUMsTUFBTSxxQkFBcUIsR0FBRyxtQ0FBbUMsQ0FBQztBQUNsRSxNQUFNLHlCQUF5QixHQUFHLHVDQUF1QyxDQUFDO0FBRTFFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmOzs7R0FHRztBQUNILE1BQ3NCLFlBQVk7SUFEbEM7UUFFcUIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFZbkQseUNBQXlDO1FBQ3RCLGVBQVUsR0FBRyxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUM7S0E0RS9DO0lBdkVDLGVBQWU7UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7UUFFdkUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLHVCQUF1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akMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE5nWm9uZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIG1lcmdlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgbWFwVG8sIHBhaXJ3aXNlLCBzdGFydFdpdGgsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ29sdW1uUmVzaXplTm90aWZpZXIsIENvbHVtblJlc2l6ZU5vdGlmaWVyU291cmNlIH0gZnJvbSAnLi9jb2x1bW4tcmVzaXplLW5vdGlmaWVyJztcbmltcG9ydCB7IEhFQURFUl9DRUxMX1NFTEVDVE9SLCBSRVNJWkVfT1ZFUkxBWV9TRUxFQ1RPUiB9IGZyb20gJy4vc2VsZWN0b3JzJztcbmltcG9ydCB7IEhlYWRlclJvd0V2ZW50RGlzcGF0Y2hlciB9IGZyb20gJy4vZXZlbnQtZGlzcGF0Y2hlcic7XG5pbXBvcnQgeyBjbG9zZXN0LCBtYXRjaGVzIH0gZnJvbSAnLi9wb2x5ZmlsbCc7XG5cbmNvbnN0IEhPVkVSX09SX0FDVElWRV9DTEFTUyA9ICdjZGstY29sdW1uLXJlc2l6ZS1ob3Zlci1vci1hY3RpdmUnO1xuY29uc3QgV0lUSF9SRVNJWkVEX0NPTFVNTl9DTEFTUyA9ICdjZGstY29sdW1uLXJlc2l6ZS13aXRoLXJlc2l6ZWQtY29sdW1uJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgQ29sdW1uUmVzaXplIGRpcmVjdGl2ZXMgd2hpY2ggYXR0YWNoIHRvIG1hdC10YWJsZSBlbGVtZW50cyB0b1xuICogcHJvdmlkZSBjb21tb24gZXZlbnRzIGFuZCBzZXJ2aWNlcyBmb3IgY29sdW1uIHJlc2l6aW5nLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb2x1bW5SZXNpemUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKiBQdWJsaWNseSBhY2Nlc3NpYmxlIGludGVyZmFjZSBmb3IgdHJpZ2dlcmluZyBhbmQgYmVpbmcgbm90aWZpZWQgb2YgcmVzaXplcy4gKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgY29sdW1uUmVzaXplTm90aWZpZXI6IENvbHVtblJlc2l6ZU5vdGlmaWVyO1xuXG4gIC8qIEVsZW1lbnRSZWYgdGhhdCB0aGlzIGRpcmVjdGl2ZSBpcyBhdHRhY2hlZCB0by4gRXhwb3NlZCBGb3IgdXNlIGJ5IGNvbHVtbi1sZXZlbCBkaXJlY3RpdmVzICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBldmVudERpc3BhdGNoZXI6IEhlYWRlclJvd0V2ZW50RGlzcGF0Y2hlcjtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRvbmx5IG5nWm9uZTogTmdab25lO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVhZG9ubHkgbm90aWZpZXI6IENvbHVtblJlc2l6ZU5vdGlmaWVyU291cmNlO1xuXG4gIC8qKiBVbmlxdWUgSUQgZm9yIHRoaXMgdGFibGUgaW5zdGFuY2UuICovXG4gIHByb3RlY3RlZCByZWFkb25seSBzZWxlY3RvcklkID0gYCR7KytuZXh0SWR9YDtcblxuICAvKiogVGhlIGlkIGF0dHJpYnV0ZSBvZiB0aGUgdGFibGUsIGlmIHNwZWNpZmllZC4gKi9cbiAgaWQ/OiBzdHJpbmc7XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IS5jbGFzc0xpc3QuYWRkKHRoaXMuZ2V0VW5pcXVlQ3NzQ2xhc3MoKSk7XG5cbiAgICB0aGlzLl9saXN0ZW5Gb3JSb3dIb3ZlckV2ZW50cygpO1xuICAgIHRoaXMuX2xpc3RlbkZvclJlc2l6ZUFjdGl2aXR5KCk7XG4gICAgdGhpcy5fbGlzdGVuRm9ySG92ZXJBY3Rpdml0eSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgdW5pcXVlIENTUyBjbGFzcyBuYW1lIGZvciB0aGlzIHRhYmxlIGluc3RhbmNlLiAqL1xuICBnZXRVbmlxdWVDc3NDbGFzcygpIHtcbiAgICByZXR1cm4gYGNkay1jb2x1bW4tcmVzaXplLSR7dGhpcy5zZWxlY3RvcklkfWA7XG4gIH1cblxuICAvKiogQ2FsbGVkIHdoZW4gYSBjb2x1bW4gaW4gdGhlIHRhYmxlIGlzIHJlc2l6ZWQuIEFwcGxpZXMgYSBjc3MgY2xhc3MgdG8gdGhlIHRhYmxlIGVsZW1lbnQuICovXG4gIHNldFJlc2l6ZWQoKSB7XG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQhLmNsYXNzTGlzdC5hZGQoV0lUSF9SRVNJWkVEX0NPTFVNTl9DTEFTUyk7XG4gIH1cblxuICBwcml2YXRlIF9saXN0ZW5Gb3JSb3dIb3ZlckV2ZW50cygpIHtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQhO1xuXG4gICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZWxlbWVudCwgJ21vdXNlb3ZlcicpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcChldmVudCA9PiBjbG9zZXN0KGV2ZW50LnRhcmdldCwgSEVBREVSX0NFTExfU0VMRUNUT1IpKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSh0aGlzLmV2ZW50RGlzcGF0Y2hlci5oZWFkZXJDZWxsSG92ZXJlZCk7XG4gICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZWxlbWVudCwgJ21vdXNlbGVhdmUnKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgICBldmVudCA9PlxuICAgICAgICAgICAgICAhIWV2ZW50LnJlbGF0ZWRUYXJnZXQgJiZcbiAgICAgICAgICAgICAgIW1hdGNoZXMoZXZlbnQucmVsYXRlZFRhcmdldCBhcyBFbGVtZW50LCBSRVNJWkVfT1ZFUkxBWV9TRUxFQ1RPUilcbiAgICAgICAgICApLFxuICAgICAgICAgIG1hcFRvKG51bGwpLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKHRoaXMuZXZlbnREaXNwYXRjaGVyLmhlYWRlckNlbGxIb3ZlcmVkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlbkZvclJlc2l6ZUFjdGl2aXR5KCkge1xuICAgIG1lcmdlKFxuICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXIub3ZlcmxheUhhbmRsZUFjdGl2ZUZvckNlbGwucGlwZShtYXBUbyh1bmRlZmluZWQpKSxcbiAgICAgIHRoaXMubm90aWZpZXIudHJpZ2dlclJlc2l6ZS5waXBlKG1hcFRvKHVuZGVmaW5lZCkpLFxuICAgICAgdGhpcy5ub3RpZmllci5yZXNpemVDb21wbGV0ZWQucGlwZShtYXBUbyh1bmRlZmluZWQpKVxuICAgIClcbiAgICAgIC5waXBlKHRha2UoMSksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRSZXNpemVkKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlbkZvckhvdmVyQWN0aXZpdHkoKSB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXIuaGVhZGVyUm93SG92ZXJlZE9yQWN0aXZlRGlzdGluY3RcbiAgICAgIC5waXBlKHN0YXJ0V2l0aChudWxsKSwgcGFpcndpc2UoKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSlcbiAgICAgIC5zdWJzY3JpYmUoKFtwcmV2aW91c1JvdywgaG92ZXJlZFJvd10pID0+IHtcbiAgICAgICAgaWYgKGhvdmVyZWRSb3cpIHtcbiAgICAgICAgICBob3ZlcmVkUm93LmNsYXNzTGlzdC5hZGQoSE9WRVJfT1JfQUNUSVZFX0NMQVNTKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJldmlvdXNSb3cpIHtcbiAgICAgICAgICBwcmV2aW91c1Jvdy5jbGFzc0xpc3QucmVtb3ZlKEhPVkVSX09SX0FDVElWRV9DTEFTUyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { Injectable } from '@angular/core';
9
+ import * as i0 from "@angular/core";
10
+ /**
11
+ * Can be provided by the host application to enable persistence of column resize state.
12
+ */
13
+ class ColumnSizeStore {
14
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ColumnSizeStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
15
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ColumnSizeStore }); }
16
+ }
17
+ export { ColumnSizeStore };
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ColumnSizeStore, decorators: [{
19
+ type: Injectable
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNpemUtc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2NvbHVtbi1yZXNpemUvY29sdW1uLXNpemUtc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFFekM7O0dBRUc7QUFDSCxNQUNzQixlQUFlO2lJQUFmLGVBQWU7cUlBQWYsZUFBZTs7U0FBZixlQUFlOzJGQUFmLGVBQWU7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBDYW4gYmUgcHJvdmlkZWQgYnkgdGhlIGhvc3QgYXBwbGljYXRpb24gdG8gZW5hYmxlIHBlcnNpc3RlbmNlIG9mIGNvbHVtbiByZXNpemUgc3RhdGUuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb2x1bW5TaXplU3RvcmUge1xuICAvKiogUmV0dXJucyB0aGUgcGVyc2lzdGVkIHNpemUgb2YgdGhlIHNwZWNpZmllZCBjb2x1bW4gaW4gdGhlIHNwZWNpZmllZCB0YWJsZS4gKi9cbiAgYWJzdHJhY3QgZ2V0U2l6ZSh0YWJsZUlkOiBzdHJpbmcsIGNvbHVtbklkOiBzdHJpbmcpOiBudW1iZXI7XG5cbiAgLyoqIFBlcnNpc3RzIHRoZSBzaXplIG9mIHRoZSBzcGVjaWZpZWQgY29sdW1uIGluIHRoZSBzcGVjaWZpZWQgdGFibGUuICovXG4gIGFic3RyYWN0IHNldFNpemUodGFibGVJZDogc3RyaW5nLCBjb2x1bW5JZDogc3RyaW5nKTogdm9pZDtcbn1cbiJdfQ==
@@ -0,0 +1,68 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { Injectable } from '@angular/core';
9
+ import { combineLatest, Observable, Subject } from 'rxjs';
10
+ import { distinctUntilChanged, map, share, skip, startWith } from 'rxjs/operators';
11
+ import { closest } from './polyfill';
12
+ import { HEADER_ROW_SELECTOR } from './selectors';
13
+ import * as i0 from "@angular/core";
14
+ /** Coordinates events between the column resize directives. */
15
+ class HeaderRowEventDispatcher {
16
+ constructor(_ngZone) {
17
+ this._ngZone = _ngZone;
18
+ /**
19
+ * Emits the currently hovered header cell or null when no header cells are hovered.
20
+ * Exposed publicly for events to feed in, but subscribers should use headerCellHoveredDistinct,
21
+ * defined below.
22
+ */
23
+ this.headerCellHovered = new Subject();
24
+ /**
25
+ * Emits the header cell for which a user-triggered resize is active or null
26
+ * when no resize is in progress.
27
+ */
28
+ this.overlayHandleActiveForCell = new Subject();
29
+ /** Distinct and shared version of headerCellHovered. */
30
+ this.headerCellHoveredDistinct = this.headerCellHovered.pipe(distinctUntilChanged(), share());
31
+ /**
32
+ * Emits the header that is currently hovered or hosting an active resize event (with active
33
+ * taking precedence).
34
+ */
35
+ this.headerRowHoveredOrActiveDistinct = combineLatest(this.headerCellHoveredDistinct.pipe(map(cell => closest(cell, HEADER_ROW_SELECTOR)), startWith(null), distinctUntilChanged()), this.overlayHandleActiveForCell.pipe(map(cell => closest(cell, HEADER_ROW_SELECTOR)), startWith(null), distinctUntilChanged())).pipe(skip(1), // Ignore initial [null, null] emission.
36
+ map(([hovered, active]) => active || hovered), distinctUntilChanged(), share());
37
+ this._headerRowHoveredOrActiveDistinctReenterZone = this.headerRowHoveredOrActiveDistinct.pipe(this._enterZone(), share());
38
+ // Optimization: Share row events observable with subsequent callers.
39
+ // At startup, calls will be sequential by row (and typically there's only one).
40
+ this._lastSeenRow = null;
41
+ this._lastSeenRowHover = null;
42
+ }
43
+ /**
44
+ * Emits whether the specified row should show its overlay controls.
45
+ * Emission occurs within the NgZone.
46
+ */
47
+ resizeOverlayVisibleForHeaderRow(row) {
48
+ if (row !== this._lastSeenRow) {
49
+ this._lastSeenRow = row;
50
+ this._lastSeenRowHover = this._headerRowHoveredOrActiveDistinctReenterZone.pipe(map(hoveredRow => hoveredRow === row), distinctUntilChanged(), share());
51
+ }
52
+ return this._lastSeenRowHover;
53
+ }
54
+ _enterZone() {
55
+ return (source) => new Observable(observer => source.subscribe({
56
+ next: value => this._ngZone.run(() => observer.next(value)),
57
+ error: err => observer.error(err),
58
+ complete: () => observer.complete(),
59
+ }));
60
+ }
61
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: HeaderRowEventDispatcher, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
62
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: HeaderRowEventDispatcher }); }
63
+ }
64
+ export { HeaderRowEventDispatcher };
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: HeaderRowEventDispatcher, decorators: [{
66
+ type: Injectable
67
+ }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtZGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvY29sdW1uLXJlc2l6ZS9ldmVudC1kaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBNEIsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVyQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBRWxELCtEQUErRDtBQUMvRCxNQUNhLHdCQUF3QjtJQWNuQyxZQUE2QixPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQWI1Qzs7OztXQUlHO1FBQ00sc0JBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQWtCLENBQUM7UUFFM0Q7OztXQUdHO1FBQ00sK0JBQTBCLEdBQUcsSUFBSSxPQUFPLEVBQWtCLENBQUM7UUFJcEUsd0RBQXdEO1FBQy9DLDhCQUF5QixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRWxHOzs7V0FHRztRQUNNLHFDQUFnQyxHQUFHLGFBQWEsQ0FDdkQsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FDakMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLEVBQy9DLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixvQkFBb0IsRUFBRSxDQUN2QixFQUNELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQ2xDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxFQUMvQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ2Ysb0JBQW9CLEVBQUUsQ0FDdkIsQ0FDRixDQUFDLElBQUksQ0FDSixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsd0NBQXdDO1FBQ2pELEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLEVBQzdDLG9CQUFvQixFQUFFLEVBQ3RCLEtBQUssRUFBRSxDQUNSLENBQUM7UUFFZSxpREFBNEMsR0FDM0QsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUV6RSxxRUFBcUU7UUFDckUsZ0ZBQWdGO1FBQ3hFLGlCQUFZLEdBQW1CLElBQUksQ0FBQztRQUNwQyxzQkFBaUIsR0FBK0IsSUFBSSxDQUFDO0lBakNkLENBQUM7SUFtQ2hEOzs7T0FHRztJQUNILGdDQUFnQyxDQUFDLEdBQVk7UUFDM0MsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQztZQUN4QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLDRDQUE0QyxDQUFDLElBQUksQ0FDN0UsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxLQUFLLEdBQUcsQ0FBQyxFQUNyQyxvQkFBb0IsRUFBRSxFQUN0QixLQUFLLEVBQUUsQ0FDUixDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQyxpQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0lBRU8sVUFBVTtRQUNoQixPQUFPLENBQUMsTUFBcUIsRUFBRSxFQUFFLENBQy9CLElBQUksVUFBVSxDQUFJLFFBQVEsQ0FBQyxFQUFFLENBQzNCLE1BQU0sQ0FBQyxTQUFTLENBQUM7WUFDZixJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNELEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1lBQ2pDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO1NBQ3BDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztpSUEzRVUsd0JBQXdCO3FJQUF4Qix3QkFBd0I7O1NBQXhCLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzaGFyZSwgc2tpcCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgY2xvc2VzdCB9IGZyb20gJy4vcG9seWZpbGwnO1xuXG5pbXBvcnQgeyBIRUFERVJfUk9XX1NFTEVDVE9SIH0gZnJvbSAnLi9zZWxlY3RvcnMnO1xuXG4vKiogQ29vcmRpbmF0ZXMgZXZlbnRzIGJldHdlZW4gdGhlIGNvbHVtbiByZXNpemUgZGlyZWN0aXZlcy4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIZWFkZXJSb3dFdmVudERpc3BhdGNoZXIge1xuICAvKipcbiAgICogRW1pdHMgdGhlIGN1cnJlbnRseSBob3ZlcmVkIGhlYWRlciBjZWxsIG9yIG51bGwgd2hlbiBubyBoZWFkZXIgY2VsbHMgYXJlIGhvdmVyZWQuXG4gICAqIEV4cG9zZWQgcHVibGljbHkgZm9yIGV2ZW50cyB0byBmZWVkIGluLCBidXQgc3Vic2NyaWJlcnMgc2hvdWxkIHVzZSBoZWFkZXJDZWxsSG92ZXJlZERpc3RpbmN0LFxuICAgKiBkZWZpbmVkIGJlbG93LlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZGVyQ2VsbEhvdmVyZWQgPSBuZXcgU3ViamVjdDxFbGVtZW50IHwgbnVsbD4oKTtcblxuICAvKipcbiAgICogRW1pdHMgdGhlIGhlYWRlciBjZWxsIGZvciB3aGljaCBhIHVzZXItdHJpZ2dlcmVkIHJlc2l6ZSBpcyBhY3RpdmUgb3IgbnVsbFxuICAgKiB3aGVuIG5vIHJlc2l6ZSBpcyBpbiBwcm9ncmVzcy5cbiAgICovXG4gIHJlYWRvbmx5IG92ZXJsYXlIYW5kbGVBY3RpdmVGb3JDZWxsID0gbmV3IFN1YmplY3Q8RWxlbWVudCB8IG51bGw+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBfbmdab25lOiBOZ1pvbmUpIHt9XG5cbiAgLyoqIERpc3RpbmN0IGFuZCBzaGFyZWQgdmVyc2lvbiBvZiBoZWFkZXJDZWxsSG92ZXJlZC4gKi9cbiAgcmVhZG9ubHkgaGVhZGVyQ2VsbEhvdmVyZWREaXN0aW5jdCA9IHRoaXMuaGVhZGVyQ2VsbEhvdmVyZWQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZSgpKTtcblxuICAvKipcbiAgICogRW1pdHMgdGhlIGhlYWRlciB0aGF0IGlzIGN1cnJlbnRseSBob3ZlcmVkIG9yIGhvc3RpbmcgYW4gYWN0aXZlIHJlc2l6ZSBldmVudCAod2l0aCBhY3RpdmVcbiAgICogdGFraW5nIHByZWNlZGVuY2UpLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZGVyUm93SG92ZXJlZE9yQWN0aXZlRGlzdGluY3QgPSBjb21iaW5lTGF0ZXN0KFxuICAgIHRoaXMuaGVhZGVyQ2VsbEhvdmVyZWREaXN0aW5jdC5waXBlKFxuICAgICAgbWFwKGNlbGwgPT4gY2xvc2VzdChjZWxsLCBIRUFERVJfUk9XX1NFTEVDVE9SKSksXG4gICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKSxcbiAgICB0aGlzLm92ZXJsYXlIYW5kbGVBY3RpdmVGb3JDZWxsLnBpcGUoXG4gICAgICBtYXAoY2VsbCA9PiBjbG9zZXN0KGNlbGwsIEhFQURFUl9ST1dfU0VMRUNUT1IpKSxcbiAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApXG4gICkucGlwZShcbiAgICBza2lwKDEpLCAvLyBJZ25vcmUgaW5pdGlhbCBbbnVsbCwgbnVsbF0gZW1pc3Npb24uXG4gICAgbWFwKChbaG92ZXJlZCwgYWN0aXZlXSkgPT4gYWN0aXZlIHx8IGhvdmVyZWQpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmUoKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2hlYWRlclJvd0hvdmVyZWRPckFjdGl2ZURpc3RpbmN0UmVlbnRlclpvbmUgPVxuICAgIHRoaXMuaGVhZGVyUm93SG92ZXJlZE9yQWN0aXZlRGlzdGluY3QucGlwZSh0aGlzLl9lbnRlclpvbmUoKSwgc2hhcmUoKSk7XG5cbiAgLy8gT3B0aW1pemF0aW9uOiBTaGFyZSByb3cgZXZlbnRzIG9ic2VydmFibGUgd2l0aCBzdWJzZXF1ZW50IGNhbGxlcnMuXG4gIC8vIEF0IHN0YXJ0dXAsIGNhbGxzIHdpbGwgYmUgc2VxdWVudGlhbCBieSByb3cgKGFuZCB0eXBpY2FsbHkgdGhlcmUncyBvbmx5IG9uZSkuXG4gIHByaXZhdGUgX2xhc3RTZWVuUm93OiBFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2xhc3RTZWVuUm93SG92ZXI6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogRW1pdHMgd2hldGhlciB0aGUgc3BlY2lmaWVkIHJvdyBzaG91bGQgc2hvdyBpdHMgb3ZlcmxheSBjb250cm9scy5cbiAgICogRW1pc3Npb24gb2NjdXJzIHdpdGhpbiB0aGUgTmdab25lLlxuICAgKi9cbiAgcmVzaXplT3ZlcmxheVZpc2libGVGb3JIZWFkZXJSb3cocm93OiBFbGVtZW50KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgaWYgKHJvdyAhPT0gdGhpcy5fbGFzdFNlZW5Sb3cpIHtcbiAgICAgIHRoaXMuX2xhc3RTZWVuUm93ID0gcm93O1xuICAgICAgdGhpcy5fbGFzdFNlZW5Sb3dIb3ZlciA9IHRoaXMuX2hlYWRlclJvd0hvdmVyZWRPckFjdGl2ZURpc3RpbmN0UmVlbnRlclpvbmUucGlwZShcbiAgICAgICAgbWFwKGhvdmVyZWRSb3cgPT4gaG92ZXJlZFJvdyA9PT0gcm93KSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgc2hhcmUoKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fbGFzdFNlZW5Sb3dIb3ZlciE7XG4gIH1cblxuICBwcml2YXRlIF9lbnRlclpvbmU8VD4oKTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPFQ+IHtcbiAgICByZXR1cm4gKHNvdXJjZTogT2JzZXJ2YWJsZTxUPikgPT5cbiAgICAgIG5ldyBPYnNlcnZhYmxlPFQ+KG9ic2VydmVyID0+XG4gICAgICAgIHNvdXJjZS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IHZhbHVlID0+IHRoaXMuX25nWm9uZS5ydW4oKCkgPT4gb2JzZXJ2ZXIubmV4dCh2YWx1ZSkpLFxuICAgICAgICAgIGVycm9yOiBlcnIgPT4gb2JzZXJ2ZXIuZXJyb3IoZXJyKSxcbiAgICAgICAgICBjb21wbGV0ZTogKCkgPT4gb2JzZXJ2ZXIuY29tcGxldGUoKSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,147 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { Directive } from '@angular/core';
9
+ import { coerceCssPixelValue } from '@angular/cdk/coercion';
10
+ import { ESCAPE } from '@angular/cdk/keycodes';
11
+ import { fromEvent, Subject, merge } from 'rxjs';
12
+ import { distinctUntilChanged, filter, map, mapTo, pairwise, startWith, takeUntil, } from 'rxjs/operators';
13
+ import { HEADER_CELL_SELECTOR } from './selectors';
14
+ import { closest } from './polyfill';
15
+ import * as i0 from "@angular/core";
16
+ // TODO: Take another look at using cdk drag drop. IIRC I ran into a couple
17
+ // good reasons for not using it but I don't remember what they were at this point.
18
+ /**
19
+ * Base class for a component shown over the edge of a resizable column that is responsible
20
+ * for handling column resize mouse events and displaying any visible UI on the column edge.
21
+ */
22
+ class ResizeOverlayHandle {
23
+ constructor() {
24
+ this.destroyed = new Subject();
25
+ }
26
+ ngAfterViewInit() {
27
+ this._listenForMouseEvents();
28
+ }
29
+ ngOnDestroy() {
30
+ this.destroyed.next();
31
+ this.destroyed.complete();
32
+ }
33
+ _listenForMouseEvents() {
34
+ this.ngZone.runOutsideAngular(() => {
35
+ fromEvent(this.elementRef.nativeElement, 'mouseenter')
36
+ .pipe(mapTo(this.resizeRef.origin.nativeElement), takeUntil(this.destroyed))
37
+ .subscribe(cell => this.eventDispatcher.headerCellHovered.next(cell));
38
+ fromEvent(this.elementRef.nativeElement, 'mouseleave')
39
+ .pipe(map(event => event.relatedTarget && closest(event.relatedTarget, HEADER_CELL_SELECTOR)), takeUntil(this.destroyed))
40
+ .subscribe(cell => this.eventDispatcher.headerCellHovered.next(cell));
41
+ fromEvent(this.elementRef.nativeElement, 'mousedown')
42
+ .pipe(takeUntil(this.destroyed))
43
+ .subscribe(mousedownEvent => {
44
+ this._dragStarted(mousedownEvent);
45
+ });
46
+ });
47
+ }
48
+ _dragStarted(mousedownEvent) {
49
+ // Only allow dragging using the left mouse button.
50
+ if (mousedownEvent.button !== 0) {
51
+ return;
52
+ }
53
+ const mouseup = fromEvent(this.document, 'mouseup');
54
+ const mousemove = fromEvent(this.document, 'mousemove');
55
+ const escape = fromEvent(this.document, 'keyup').pipe(filter(event => event.keyCode === ESCAPE));
56
+ const startX = mousedownEvent.screenX;
57
+ const initialSize = this._getOriginWidth();
58
+ let overlayOffset = 0;
59
+ let originOffset = this._getOriginOffset();
60
+ let size = initialSize;
61
+ let overshot = 0;
62
+ this.updateResizeActive(true);
63
+ mouseup.pipe(takeUntil(merge(escape, this.destroyed))).subscribe(({ screenX }) => {
64
+ this.styleScheduler.scheduleEnd(() => {
65
+ this._notifyResizeEnded(size, screenX !== startX);
66
+ });
67
+ });
68
+ escape.pipe(takeUntil(merge(mouseup, this.destroyed))).subscribe(() => {
69
+ this._notifyResizeEnded(initialSize);
70
+ });
71
+ mousemove
72
+ .pipe(map(({ screenX }) => screenX), startWith(startX), distinctUntilChanged(), pairwise(), takeUntil(merge(mouseup, escape, this.destroyed)))
73
+ .subscribe(([prevX, currX]) => {
74
+ let deltaX = currX - prevX;
75
+ // If the mouse moved further than the resize was able to match, limit the
76
+ // movement of the overlay to match the actual size and position of the origin.
77
+ if (overshot !== 0) {
78
+ if ((overshot < 0 && deltaX < 0) || (overshot > 0 && deltaX > 0)) {
79
+ overshot += deltaX;
80
+ return;
81
+ }
82
+ else {
83
+ const remainingOvershot = overshot + deltaX;
84
+ overshot =
85
+ overshot > 0 ? Math.max(remainingOvershot, 0) : Math.min(remainingOvershot, 0);
86
+ deltaX = remainingOvershot - overshot;
87
+ if (deltaX === 0) {
88
+ return;
89
+ }
90
+ }
91
+ }
92
+ let computedNewSize = size + (this._isLtr() ? deltaX : -deltaX);
93
+ computedNewSize = Math.min(Math.max(computedNewSize, this.resizeRef.minWidthPx, 0), this.resizeRef.maxWidthPx);
94
+ this.resizeNotifier.triggerResize.next({
95
+ columnId: this.columnDef.name,
96
+ size: computedNewSize,
97
+ previousSize: size,
98
+ isStickyColumn: this.columnDef.sticky || this.columnDef.stickyEnd,
99
+ });
100
+ this.styleScheduler.scheduleEnd(() => {
101
+ const originNewSize = this._getOriginWidth();
102
+ const originNewOffset = this._getOriginOffset();
103
+ const originOffsetDeltaX = originNewOffset - originOffset;
104
+ const originSizeDeltaX = originNewSize - size;
105
+ size = originNewSize;
106
+ originOffset = originNewOffset;
107
+ overshot += deltaX + (this._isLtr() ? -originSizeDeltaX : originSizeDeltaX);
108
+ overlayOffset += originOffsetDeltaX + (this._isLtr() ? originSizeDeltaX : 0);
109
+ this._updateOverlayOffset(overlayOffset);
110
+ });
111
+ });
112
+ }
113
+ updateResizeActive(active) {
114
+ this.eventDispatcher.overlayHandleActiveForCell.next(active ? this.resizeRef.origin.nativeElement : null);
115
+ }
116
+ _getOriginWidth() {
117
+ return this.resizeRef.origin.nativeElement.offsetWidth;
118
+ }
119
+ _getOriginOffset() {
120
+ return this.resizeRef.origin.nativeElement.offsetLeft;
121
+ }
122
+ _updateOverlayOffset(offset) {
123
+ this.resizeRef.overlayRef.overlayElement.style.transform = `translateX(${coerceCssPixelValue(offset)})`;
124
+ }
125
+ _isLtr() {
126
+ return this.directionality.value === 'ltr';
127
+ }
128
+ _notifyResizeEnded(size, completedSuccessfully = false) {
129
+ this.updateResizeActive(false);
130
+ this.ngZone.run(() => {
131
+ const sizeMessage = { columnId: this.columnDef.name, size };
132
+ if (completedSuccessfully) {
133
+ this.resizeNotifier.resizeCompleted.next(sizeMessage);
134
+ }
135
+ else {
136
+ this.resizeNotifier.resizeCanceled.next(sizeMessage);
137
+ }
138
+ });
139
+ }
140
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ResizeOverlayHandle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
141
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.3", type: ResizeOverlayHandle, ngImport: i0 }); }
142
+ }
143
+ export { ResizeOverlayHandle };
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: ResizeOverlayHandle, decorators: [{
145
+ type: Directive
146
+ }] });
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1oYW5kbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2NvbHVtbi1yZXNpemUvb3ZlcmxheS1oYW5kbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFpQixTQUFTLEVBQWlDLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILEtBQUssRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUluRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQUVyQywyRUFBMkU7QUFDM0UsbUZBQW1GO0FBQ25GOzs7R0FHRztBQUNILE1BQ3NCLG1CQUFtQjtJQUR6QztRQUVxQixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztLQTJLcEQ7SUEvSkMsZUFBZTtRQUNiLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDakMsU0FBUyxDQUFhLElBQUksQ0FB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QVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDNUQsSUFBSSxxQkFBcUIsRUFBRTtnQkFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3ZEO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUN0RDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztpSUEzS21CLG1CQUFtQjtxSEFBbkIsbUJBQW1COztTQUFuQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFEeEMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VDc3NQaXhlbFZhbHVlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgRVNDQVBFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENka0NvbHVtbkRlZiwgX0NvYWxlc2NlZFN0eWxlU2NoZWR1bGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RhYmxlJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCwgbWVyZ2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgbWFwVG8sXG4gIHBhaXJ3aXNlLFxuICBzdGFydFdpdGgsXG4gIHRha2VVbnRpbCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBIRUFERVJfQ0VMTF9TRUxFQ1RPUiB9IGZyb20gJy4vc2VsZWN0b3JzJztcbmltcG9ydCB7IENvbHVtblJlc2l6ZU5vdGlmaWVyU291cmNlIH0gZnJvbSAnLi9jb2x1bW4tcmVzaXplLW5vdGlmaWVyJztcbmltcG9ydCB7IEhlYWRlclJvd0V2ZW50RGlzcGF0Y2hlciB9IGZyb20gJy4vZXZlbnQtZGlzcGF0Y2hlcic7XG5pbXBvcnQgeyBSZXNpemVSZWYgfSBmcm9tICcuL3Jlc2l6ZS1yZWYnO1xuaW1wb3J0IHsgY2xvc2VzdCB9IGZyb20gJy4vcG9seWZpbGwnO1xuXG4vLyBUT0RPOiBUYWtlIGFub3RoZXIgbG9vayBhdCB1c2luZyBjZGsgZHJhZyBkcm9wLiBJSVJDIEkgcmFuIGludG8gYSBjb3VwbGVcbi8vIGdvb2QgcmVhc29ucyBmb3Igbm90IHVzaW5nIGl0IGJ1dCBJIGRvbid0IHJlbWVtYmVyIHdoYXQgdGhleSB3ZXJlIGF0IHRoaXMgcG9pbnQuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGEgY29tcG9uZW50IHNob3duIG92ZXIgdGhlIGVkZ2Ugb2YgYSByZXNpemFibGUgY29sdW1uIHRoYXQgaXMgcmVzcG9uc2libGVcbiAqIGZvciBoYW5kbGluZyBjb2x1bW4gcmVzaXplIG1vdXNlIGV2ZW50cyBhbmQgZGlzcGxheWluZyBhbnkgdmlzaWJsZSBVSSBvbiB0aGUgY29sdW1uIGVkZ2UuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJlc2l6ZU92ZXJsYXlIYW5kbGUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVhZG9ubHkgY29sdW1uRGVmOiBDZGtDb2x1bW5EZWY7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBkb2N1bWVudDogRG9jdW1lbnQ7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBkaXJlY3Rpb25hbGl0eTogRGlyZWN0aW9uYWxpdHk7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVhZG9ubHkgZXZlbnREaXNwYXRjaGVyOiBIZWFkZXJSb3dFdmVudERpc3BhdGNoZXI7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWFkb25seSBuZ1pvbmU6IE5nWm9uZTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRvbmx5IHJlc2l6ZU5vdGlmaWVyOiBDb2x1bW5SZXNpemVOb3RpZmllclNvdXJjZTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRvbmx5IHJlc2l6ZVJlZjogUmVzaXplUmVmO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVhZG9ubHkgc3R5bGVTY2hlZHVsZXI6IF9Db2FsZXNjZWRTdHlsZVNjaGVkdWxlcjtcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5fbGlzdGVuRm9yTW91c2VFdmVudHMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbGlzdGVuRm9yTW91c2VFdmVudHMoKSB7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50ISwgJ21vdXNlZW50ZXInKVxuICAgICAgICAucGlwZShtYXBUbyh0aGlzLnJlc2l6ZVJlZi5vcmlnaW4ubmF0aXZlRWxlbWVudCEpLCB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpKVxuICAgICAgICAuc3Vic2NyaWJlKGNlbGwgPT4gdGhpcy5ldmVudERpc3BhdGNoZXIuaGVhZGVyQ2VsbEhvdmVyZWQubmV4dChjZWxsKSk7XG5cbiAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCEsICdtb3VzZWxlYXZlJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKFxuICAgICAgICAgICAgZXZlbnQgPT5cbiAgICAgICAgICAgICAgZXZlbnQucmVsYXRlZFRhcmdldCAmJiBjbG9zZXN0KGV2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgRWxlbWVudCwgSEVBREVSX0NFTExfU0VMRUNUT1IpXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZShjZWxsID0+IHRoaXMuZXZlbnREaXNwYXRjaGVyLmhlYWRlckNlbGxIb3ZlcmVkLm5leHQoY2VsbCkpO1xuXG4gICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQhLCAnbW91c2Vkb3duJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkKSlcbiAgICAgICAgLnN1YnNjcmliZShtb3VzZWRvd25FdmVudCA9PiB7XG4gICAgICAgICAgdGhpcy5fZHJhZ1N0YXJ0ZWQobW91c2Vkb3duRXZlbnQpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2RyYWdTdGFydGVkKG1vdXNlZG93bkV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgLy8gT25seSBhbGxvdyBkcmFnZ2luZyB1c2luZyB0aGUgbGVmdCBtb3VzZSBidXR0b24uXG4gICAgaWYgKG1vdXNlZG93bkV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1vdXNldXAgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5kb2N1bWVudCwgJ21vdXNldXAnKTtcbiAgICBjb25zdCBtb3VzZW1vdmUgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5kb2N1bWVudCwgJ21vdXNlbW92ZScpO1xuICAgIGNvbnN0IGVzY2FwZSA9IGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pih0aGlzLmRvY3VtZW50LCAna2V5dXAnKS5waXBlKFxuICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50LmtleUNvZGUgPT09IEVTQ0FQRSlcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhcnRYID0gbW91c2Vkb3duRXZlbnQuc2NyZWVuWDtcblxuICAgIGNvbnN0IGluaXRpYWxTaXplID0gdGhpcy5fZ2V0T3JpZ2luV2lkdGgoKTtcbiAgICBsZXQgb3ZlcmxheU9mZnNldCA9IDA7XG4gICAgbGV0IG9yaWdpbk9mZnNldCA9IHRoaXMuX2dldE9yaWdpbk9mZnNldCgpO1xuICAgIGxldCBzaXplID0gaW5pdGlhbFNpemU7XG4gICAgbGV0IG92ZXJzaG90ID0gMDtcblxuICAgIHRoaXMudXBkYXRlUmVzaXplQWN0aXZlKHRydWUpO1xuXG4gICAgbW91c2V1cC5waXBlKHRha2VVbnRpbChtZXJnZShlc2NhcGUsIHRoaXMuZGVzdHJveWVkKSkpLnN1YnNjcmliZSgoeyBzY3JlZW5YIH0pID0+IHtcbiAgICAgIHRoaXMuc3R5bGVTY2hlZHVsZXIuc2NoZWR1bGVFbmQoKCkgPT4ge1xuICAgICAgICB0aGlzLl9ub3RpZnlSZXNpemVFbmRlZChzaXplLCBzY3JlZW5YICE9PSBzdGFydFgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBlc2NhcGUucGlwZSh0YWtlVW50aWwobWVyZ2UobW91c2V1cCwgdGhpcy5kZXN0cm95ZWQpKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX25vdGlmeVJlc2l6ZUVuZGVkKGluaXRpYWxTaXplKTtcbiAgICB9KTtcblxuICAgIG1vdXNlbW92ZVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoeyBzY3JlZW5YIH0pID0+IHNjcmVlblgpLFxuICAgICAgICBzdGFydFdpdGgoc3RhcnRYKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgcGFpcndpc2UoKSxcbiAgICAgICAgdGFrZVVudGlsKG1lcmdlKG1vdXNldXAsIGVzY2FwZSwgdGhpcy5kZXN0cm95ZWQpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoW3ByZXZYLCBjdXJyWF0pID0+IHtcbiAgICAgICAgbGV0IGRlbHRhWCA9IGN1cnJYIC0gcHJldlg7XG5cbiAgICAgICAgLy8gSWYgdGhlIG1vdXNlIG1vdmVkIGZ1cnRoZXIgdGhhbiB0aGUgcmVzaXplIHdhcyBhYmxlIHRvIG1hdGNoLCBsaW1pdCB0aGVcbiAgICAgICAgLy8gbW92ZW1lbnQgb2YgdGhlIG92ZXJsYXkgdG8gbWF0Y2ggdGhlIGFjdHVhbCBzaXplIGFuZCBwb3NpdGlvbiBvZiB0aGUgb3JpZ2luLlxuICAgICAgICBpZiAob3ZlcnNob3QgIT09IDApIHtcbiAgICAgICAgICBpZiAoKG92ZXJzaG90IDwgMCAmJiBkZWx0YVggPCAwKSB8fCAob3ZlcnNob3QgPiAwICYmIGRlbHRhWCA+IDApKSB7XG4gICAgICAgICAgICBvdmVyc2hvdCArPSBkZWx0YVg7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ092ZXJzaG90ID0gb3ZlcnNob3QgKyBkZWx0YVg7XG4gICAgICAgICAgICBvdmVyc2hvdCA9XG4gICAgICAgICAgICAgIG92ZXJzaG90ID4gMCA/IE1hdGgubWF4KHJlbWFpbmluZ092ZXJzaG90LCAwKSA6IE1hdGgubWluKHJlbWFpbmluZ092ZXJzaG90LCAwKTtcbiAgICAgICAgICAgIGRlbHRhWCA9IHJlbWFpbmluZ092ZXJzaG90IC0gb3ZlcnNob3Q7XG5cbiAgICAgICAgICAgIGlmIChkZWx0YVggPT09IDApIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjb21wdXRlZE5ld1NpemU6IG51bWJlciA9IHNpemUgKyAodGhpcy5faXNMdHIoKSA/IGRlbHRhWCA6IC1kZWx0YVgpO1xuICAgICAgICBjb21wdXRlZE5ld1NpemUgPSBNYXRoLm1pbihcbiAgICAgICAgICBNYXRoLm1heChjb21wdXRlZE5ld1NpemUsIHRoaXMucmVzaXplUmVmLm1pbldpZHRoUHgsIDApLFxuICAgICAgICAgIHRoaXMucmVzaXplUmVmLm1heFdpZHRoUHhcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnJlc2l6ZU5vdGlmaWVyLnRyaWdnZXJSZXNpemUubmV4dCh7XG4gICAgICAgICAgY29sdW1uSWQ6IHRoaXMuY29sdW1uRGVmLm5hbWUsXG4gICAgICAgICAgc2l6ZTogY29tcHV0ZWROZXdTaXplLFxuICAgICAgICAgIHByZXZpb3VzU2l6ZTogc2l6ZSxcbiAgICAgICAgICBpc1N0aWNreUNvbHVtbjogdGhpcy5jb2x1bW5EZWYuc3RpY2t5IHx8IHRoaXMuY29sdW1uRGVmLnN0aWNreUVuZCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zdHlsZVNjaGVkdWxlci5zY2hlZHVsZUVuZCgoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgb3JpZ2luTmV3U2l6ZSA9IHRoaXMuX2dldE9yaWdpbldpZHRoKCk7XG4gICAgICAgICAgY29uc3Qgb3JpZ2luTmV3T2Zmc2V0ID0gdGhpcy5fZ2V0T3JpZ2luT2Zmc2V0KCk7XG4gICAgICAgICAgY29uc3Qgb3JpZ2luT2Zmc2V0RGVsdGFYID0gb3JpZ2luTmV3T2Zmc2V0IC0gb3JpZ2luT2Zmc2V0O1xuICAgICAgICAgIGNvbnN0IG9yaWdpblNpemVEZWx0YVggPSBvcmlnaW5OZXdTaXplIC0gc2l6ZTtcbiAgICAgICAgICBzaXplID0gb3JpZ2luTmV3U2l6ZTtcbiAgICAgICAgICBvcmlnaW5PZmZzZXQgPSBvcmlnaW5OZXdPZmZzZXQ7XG5cbiAgICAgICAgICBvdmVyc2hvdCArPSBkZWx0YVggKyAodGhpcy5faXNMdHIoKSA/IC1vcmlnaW5TaXplRGVsdGFYIDogb3JpZ2luU2l6ZURlbHRhWCk7XG4gICAgICAgICAgb3ZlcmxheU9mZnNldCArPSBvcmlnaW5PZmZzZXREZWx0YVggKyAodGhpcy5faXNMdHIoKSA/IG9yaWdpblNpemVEZWx0YVggOiAwKTtcblxuICAgICAgICAgIHRoaXMuX3VwZGF0ZU92ZXJsYXlPZmZzZXQob3ZlcmxheU9mZnNldCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlUmVzaXplQWN0aXZlKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyLm92ZXJsYXlIYW5kbGVBY3RpdmVGb3JDZWxsLm5leHQoXG4gICAgICBhY3RpdmUgPyB0aGlzLnJlc2l6ZVJlZi5vcmlnaW4ubmF0aXZlRWxlbWVudCEgOiBudWxsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE9yaWdpbldpZHRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucmVzaXplUmVmLm9yaWdpbi5uYXRpdmVFbGVtZW50IS5vZmZzZXRXaWR0aDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE9yaWdpbk9mZnNldCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnJlc2l6ZVJlZi5vcmlnaW4ubmF0aXZlRWxlbWVudCEub2Zmc2V0TGVmdDtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZU92ZXJsYXlPZmZzZXQob2Zmc2V0OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZVJlZi5vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7Y29lcmNlQ3NzUGl4ZWxWYWx1ZShcbiAgICAgIG9mZnNldFxuICAgICl9KWA7XG4gIH1cblxuICBwcml2YXRlIF9pc0x0cigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaXJlY3Rpb25hbGl0eS52YWx1ZSA9PT0gJ2x0cic7XG4gIH1cblxuICBwcml2YXRlIF9ub3RpZnlSZXNpemVFbmRlZChzaXplOiBudW1iZXIsIGNvbXBsZXRlZFN1Y2Nlc3NmdWxseSA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVSZXNpemVBY3RpdmUoZmFsc2UpO1xuXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIGNvbnN0IHNpemVNZXNzYWdlID0geyBjb2x1bW5JZDogdGhpcy5jb2x1bW5EZWYubmFtZSwgc2l6ZSB9O1xuICAgICAgaWYgKGNvbXBsZXRlZFN1Y2Nlc3NmdWxseSkge1xuICAgICAgICB0aGlzLnJlc2l6ZU5vdGlmaWVyLnJlc2l6ZUNvbXBsZXRlZC5uZXh0KHNpemVNZXNzYWdlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVzaXplTm90aWZpZXIucmVzaXplQ2FuY2VsZWQubmV4dChzaXplTWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==