@ng-matero/extensions 15.5.0 → 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 (325) 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 +68 -68
  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/select/select.scss +0 -7
  142. package/slider/slider.d.ts +1 -1
  143. package/split/split-pane.d.ts +1 -1
  144. package/split/split.d.ts +1 -1
  145. package/tooltip/tooltip.d.ts +1 -1
  146. package/tooltip/tooltip.scss +1 -4
  147. package/esm2020/alert/alert-module.mjs +0 -18
  148. package/esm2020/alert/alert.mjs +0 -52
  149. package/esm2020/button/button-loading.mjs +0 -76
  150. package/esm2020/button/button-module.mjs +0 -20
  151. package/esm2020/checkbox-group/checkbox-group-module.mjs +0 -21
  152. package/esm2020/checkbox-group/checkbox-group.mjs +0 -233
  153. package/esm2020/colorpicker/colorpicker-input.mjs +0 -228
  154. package/esm2020/colorpicker/colorpicker-module.mjs +0 -63
  155. package/esm2020/colorpicker/colorpicker-toggle.mjs +0 -101
  156. package/esm2020/colorpicker/colorpicker.mjs +0 -365
  157. package/esm2020/column-resize/column-resize-directives/column-resize-flex.mjs +0 -45
  158. package/esm2020/column-resize/column-resize-directives/column-resize.mjs +0 -45
  159. package/esm2020/column-resize/column-resize-module.mjs +0 -28
  160. package/esm2020/column-resize/column-resize-notifier.mjs +0 -47
  161. package/esm2020/column-resize/column-resize.mjs +0 -82
  162. package/esm2020/column-resize/column-size-store.mjs +0 -20
  163. package/esm2020/column-resize/event-dispatcher.mjs +0 -67
  164. package/esm2020/column-resize/overlay-handle.mjs +0 -146
  165. package/esm2020/column-resize/resizable.mjs +0 -199
  166. package/esm2020/column-resize/resize-strategy.mjs +0 -232
  167. package/esm2020/core/datetime/datetime.module.mjs +0 -42
  168. package/esm2020/core/datetime/native-datetime-adapter.mjs +0 -138
  169. package/esm2020/core/pipes/is-template-ref.pipe.mjs +0 -14
  170. package/esm2020/core/pipes/pipes.module.mjs +0 -19
  171. package/esm2020/core/pipes/to-observable.pipe.mjs +0 -15
  172. package/esm2020/datetimepicker/calendar-body.mjs +0 -78
  173. package/esm2020/datetimepicker/calendar.mjs +0 -671
  174. package/esm2020/datetimepicker/clock.mjs +0 -349
  175. package/esm2020/datetimepicker/datetimepicker-input.mjs +0 -349
  176. package/esm2020/datetimepicker/datetimepicker-intl.mjs +0 -63
  177. package/esm2020/datetimepicker/datetimepicker-module.mjs +0 -82
  178. package/esm2020/datetimepicker/datetimepicker-toggle.mjs +0 -104
  179. package/esm2020/datetimepicker/datetimepicker.mjs +0 -527
  180. package/esm2020/datetimepicker/month-view.mjs +0 -148
  181. package/esm2020/datetimepicker/multi-year-view.mjs +0 -214
  182. package/esm2020/datetimepicker/time.mjs +0 -456
  183. package/esm2020/datetimepicker/year-view.mjs +0 -138
  184. package/esm2020/dialog/dialog-container.mjs +0 -35
  185. package/esm2020/dialog/dialog-module.mjs +0 -24
  186. package/esm2020/dialog/dialog.mjs +0 -74
  187. package/esm2020/drawer/drawer-container.mjs +0 -252
  188. package/esm2020/drawer/drawer-module.mjs +0 -22
  189. package/esm2020/drawer/drawer.mjs +0 -166
  190. package/esm2020/grid/cell.mjs +0 -116
  191. package/esm2020/grid/column-resize/column-resize-directives/column-resize-flex.mjs +0 -37
  192. package/esm2020/grid/column-resize/column-resize-directives/column-resize.mjs +0 -37
  193. package/esm2020/grid/column-resize/column-resize-module.mjs +0 -42
  194. package/esm2020/grid/column-resize/overlay-handle.mjs +0 -60
  195. package/esm2020/grid/column-resize/resizable-directives/resizable.mjs +0 -62
  196. package/esm2020/grid/column-resize/resize-strategy.mjs +0 -42
  197. package/esm2020/grid/expansion-toggle.mjs +0 -64
  198. package/esm2020/grid/grid-module.mjs +0 -136
  199. package/esm2020/grid/grid-pipes.mjs +0 -108
  200. package/esm2020/grid/grid-utils.mjs +0 -63
  201. package/esm2020/grid/grid.mjs +0 -628
  202. package/esm2020/loader/loader-module.mjs +0 -20
  203. package/esm2020/loader/loader.mjs +0 -69
  204. package/esm2020/popover/popover-content.mjs +0 -90
  205. package/esm2020/popover/popover-module.mjs +0 -24
  206. package/esm2020/popover/popover-target.mjs +0 -17
  207. package/esm2020/popover/popover-trigger.mjs +0 -471
  208. package/esm2020/popover/popover.mjs +0 -383
  209. package/esm2020/progress/progress-module.mjs +0 -18
  210. package/esm2020/progress/progress.mjs +0 -55
  211. package/esm2020/select/option.mjs +0 -57
  212. package/esm2020/select/select-module.mjs +0 -74
  213. package/esm2020/select/select.mjs +0 -560
  214. package/esm2020/select/templates.mjs +0 -124
  215. package/esm2020/slider/slider-module.mjs +0 -19
  216. package/esm2020/slider/slider.mjs +0 -1115
  217. package/esm2020/split/split-module.mjs +0 -19
  218. package/esm2020/split/split-pane.mjs +0 -149
  219. package/esm2020/split/split.mjs +0 -634
  220. package/esm2020/tooltip/tooltip-module.mjs +0 -24
  221. package/esm2020/tooltip/tooltip.mjs +0 -926
  222. package/fesm2015/mtxAlert.mjs +0 -74
  223. package/fesm2015/mtxAlert.mjs.map +0 -1
  224. package/fesm2015/mtxButton.mjs +0 -99
  225. package/fesm2015/mtxCheckboxGroup.mjs +0 -256
  226. package/fesm2015/mtxCheckboxGroup.mjs.map +0 -1
  227. package/fesm2015/mtxColorpicker.mjs +0 -767
  228. package/fesm2015/mtxColorpicker.mjs.map +0 -1
  229. package/fesm2015/mtxColumnResize.mjs +0 -959
  230. package/fesm2015/mtxCore.mjs +0 -374
  231. package/fesm2015/mtxCore.mjs.map +0 -1
  232. package/fesm2015/mtxDatetimepicker.mjs +0 -3164
  233. package/fesm2015/mtxDatetimepicker.mjs.map +0 -1
  234. package/fesm2015/mtxDialog.mjs +0 -130
  235. package/fesm2015/mtxDrawer.mjs +0 -578
  236. package/fesm2015/mtxDrawer.mjs.map +0 -1
  237. package/fesm2015/mtxGrid.mjs +0 -1514
  238. package/fesm2015/mtxGrid.mjs.map +0 -1
  239. package/fesm2015/mtxLoader.mjs +0 -93
  240. package/fesm2015/mtxLoader.mjs.map +0 -1
  241. package/fesm2015/mtxPopover.mjs +0 -1027
  242. package/fesm2015/mtxPopover.mjs.map +0 -1
  243. package/fesm2015/mtxProgress.mjs +0 -77
  244. package/fesm2015/mtxSelect.mjs +0 -814
  245. package/fesm2015/mtxSlider.mjs +0 -1139
  246. package/fesm2015/mtxSlider.mjs.map +0 -1
  247. package/fesm2015/mtxSplit.mjs +0 -1025
  248. package/fesm2015/mtxSplit.mjs.map +0 -1
  249. package/fesm2015/mtxTooltip.mjs +0 -982
  250. package/fesm2020/mtxButton.mjs.map +0 -1
  251. package/fesm2020/mtxColumnResize.mjs.map +0 -1
  252. package/fesm2020/mtxCore.mjs.map +0 -1
  253. package/fesm2020/mtxDatetimepicker.mjs.map +0 -1
  254. package/fesm2020/mtxDialog.mjs.map +0 -1
  255. package/fesm2020/mtxProgress.mjs.map +0 -1
  256. package/fesm2020/mtxSelect.mjs.map +0 -1
  257. package/fesm2020/mtxTooltip.mjs.map +0 -1
  258. package/fesm2020/ng-matero-extensions.mjs +0 -9
  259. package/fesm2020/ng-matero-extensions.mjs.map +0 -1
  260. /package/{esm2020 → esm2022}/alert/mtxAlert.mjs +0 -0
  261. /package/{esm2020 → esm2022}/alert/public-api.mjs +0 -0
  262. /package/{esm2020 → esm2022}/button/mtxButton.mjs +0 -0
  263. /package/{esm2020 → esm2022}/button/public-api.mjs +0 -0
  264. /package/{esm2020 → esm2022}/checkbox-group/interfaces.mjs +0 -0
  265. /package/{esm2020 → esm2022}/checkbox-group/mtxCheckboxGroup.mjs +0 -0
  266. /package/{esm2020 → esm2022}/checkbox-group/public-api.mjs +0 -0
  267. /package/{esm2020 → esm2022}/colorpicker/colorpicker-animations.mjs +0 -0
  268. /package/{esm2020 → esm2022}/colorpicker/mtxColorpicker.mjs +0 -0
  269. /package/{esm2020 → esm2022}/colorpicker/public-api.mjs +0 -0
  270. /package/{esm2020 → esm2022}/column-resize/column-resize-directives/constants.mjs +0 -0
  271. /package/{esm2020 → esm2022}/column-resize/mtxColumnResize.mjs +0 -0
  272. /package/{esm2020 → esm2022}/column-resize/polyfill.mjs +0 -0
  273. /package/{esm2020 → esm2022}/column-resize/public-api.mjs +0 -0
  274. /package/{esm2020 → esm2022}/column-resize/resize-ref.mjs +0 -0
  275. /package/{esm2020 → esm2022}/column-resize/selectors.mjs +0 -0
  276. /package/{esm2020 → esm2022}/core/datetime/datetime-formats.mjs +0 -0
  277. /package/{esm2020 → esm2022}/core/datetime/index.mjs +0 -0
  278. /package/{esm2020 → esm2022}/core/datetime/native-datetime-formats.mjs +0 -0
  279. /package/{esm2020 → esm2022}/core/mtxCore.mjs +0 -0
  280. /package/{esm2020 → esm2022}/core/pipes/index.mjs +0 -0
  281. /package/{esm2020 → esm2022}/core/public-api.mjs +0 -0
  282. /package/{esm2020 → esm2022}/datetimepicker/datetimepicker-animations.mjs +0 -0
  283. /package/{esm2020 → esm2022}/datetimepicker/datetimepicker-errors.mjs +0 -0
  284. /package/{esm2020 → esm2022}/datetimepicker/datetimepicker-filtertype.mjs +0 -0
  285. /package/{esm2020 → esm2022}/datetimepicker/datetimepicker-types.mjs +0 -0
  286. /package/{esm2020 → esm2022}/datetimepicker/mtxDatetimepicker.mjs +0 -0
  287. /package/{esm2020 → esm2022}/datetimepicker/public-api.mjs +0 -0
  288. /package/{esm2020 → esm2022}/dialog/dialog-config.mjs +0 -0
  289. /package/{esm2020 → esm2022}/dialog/mtxDialog.mjs +0 -0
  290. /package/{esm2020 → esm2022}/dialog/public-api.mjs +0 -0
  291. /package/{esm2020 → esm2022}/drawer/drawer-animation.mjs +0 -0
  292. /package/{esm2020 → esm2022}/drawer/drawer-config.mjs +0 -0
  293. /package/{esm2020 → esm2022}/drawer/drawer-ref.mjs +0 -0
  294. /package/{esm2020 → esm2022}/drawer/mtxDrawer.mjs +0 -0
  295. /package/{esm2020 → esm2022}/drawer/public-api.mjs +0 -0
  296. /package/{esm2020 → esm2022}/grid/column-resize/column-resize-directives/common.mjs +0 -0
  297. /package/{esm2020 → esm2022}/grid/column-resize/resizable-directives/common.mjs +0 -0
  298. /package/{esm2020 → esm2022}/grid/interfaces.mjs +0 -0
  299. /package/{esm2020 → esm2022}/grid/mtxGrid.mjs +0 -0
  300. /package/{esm2020 → esm2022}/grid/public-api.mjs +0 -0
  301. /package/{esm2020 → esm2022}/loader/mtxLoader.mjs +0 -0
  302. /package/{esm2020 → esm2022}/loader/public-api.mjs +0 -0
  303. /package/{esm2020 → esm2022}/ng-matero-extensions.mjs +0 -0
  304. /package/{esm2020 → esm2022}/popover/mtxPopover.mjs +0 -0
  305. /package/{esm2020 → esm2022}/popover/popover-animations.mjs +0 -0
  306. /package/{esm2020 → esm2022}/popover/popover-errors.mjs +0 -0
  307. /package/{esm2020 → esm2022}/popover/popover-interfaces.mjs +0 -0
  308. /package/{esm2020 → esm2022}/popover/popover-types.mjs +0 -0
  309. /package/{esm2020 → esm2022}/popover/public-api.mjs +0 -0
  310. /package/{esm2020 → esm2022}/progress/mtxProgress.mjs +0 -0
  311. /package/{esm2020 → esm2022}/progress/public-api.mjs +0 -0
  312. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  313. /package/{esm2020 → esm2022}/select/mtxSelect.mjs +0 -0
  314. /package/{esm2020 → esm2022}/select/public-api.mjs +0 -0
  315. /package/{esm2020 → esm2022}/slider/mtxSlider.mjs +0 -0
  316. /package/{esm2020 → esm2022}/slider/public-api.mjs +0 -0
  317. /package/{esm2020 → esm2022}/split/interfaces.mjs +0 -0
  318. /package/{esm2020 → esm2022}/split/mtxSplit.mjs +0 -0
  319. /package/{esm2020 → esm2022}/split/public-api.mjs +0 -0
  320. /package/{esm2020 → esm2022}/split/utils.mjs +0 -0
  321. /package/{esm2020 → esm2022}/tooltip/mtxTooltip.mjs +0 -0
  322. /package/{esm2020 → esm2022}/tooltip/public-api.mjs +0 -0
  323. /package/{esm2020 → esm2022}/tooltip/tooltip-animations.mjs +0 -0
  324. /package/{fesm2015 → fesm2022}/ng-matero-extensions.mjs +0 -0
  325. /package/{fesm2015 → fesm2022}/ng-matero-extensions.mjs.map +0 -0
@@ -0,0 +1,103 @@
1
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
+ import { Attribute, ChangeDetectionStrategy, Component, ContentChild, Directive, Input, ViewChild, ViewEncapsulation, } from '@angular/core';
3
+ import { Subscription, of as observableOf, merge } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/material/button";
7
+ /** Can be used to override the icon of a `mtxColorpickerToggle`. */
8
+ class MtxColorpickerToggleIcon {
9
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: MtxColorpickerToggleIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.3", type: MtxColorpickerToggleIcon, selector: "[mtxColorpickerToggleIcon]", ngImport: i0 }); }
11
+ }
12
+ export { MtxColorpickerToggleIcon };
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: MtxColorpickerToggleIcon, decorators: [{
14
+ type: Directive,
15
+ args: [{
16
+ selector: '[mtxColorpickerToggleIcon]',
17
+ }]
18
+ }] });
19
+ class MtxColorpickerToggle {
20
+ /** Whether the toggle button is disabled. */
21
+ get disabled() {
22
+ if (this._disabled == null && this.picker) {
23
+ return this.picker.disabled;
24
+ }
25
+ return !!this._disabled;
26
+ }
27
+ set disabled(value) {
28
+ this._disabled = coerceBooleanProperty(value);
29
+ }
30
+ constructor(_changeDetectorRef, defaultTabIndex) {
31
+ this._changeDetectorRef = _changeDetectorRef;
32
+ this._stateChanges = Subscription.EMPTY;
33
+ const parsedTabIndex = Number(defaultTabIndex);
34
+ this.tabIndex = parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;
35
+ }
36
+ ngOnChanges(changes) {
37
+ if (changes.picker) {
38
+ this._watchStateChanges();
39
+ }
40
+ }
41
+ ngOnDestroy() {
42
+ this._stateChanges.unsubscribe();
43
+ }
44
+ ngAfterContentInit() {
45
+ this._watchStateChanges();
46
+ }
47
+ _open(event) {
48
+ if (this.picker && !this.disabled) {
49
+ this.picker.open();
50
+ event.stopPropagation();
51
+ }
52
+ }
53
+ _watchStateChanges() {
54
+ const pickerDisabled = this.picker ? this.picker._disabledChange : observableOf();
55
+ const inputDisabled = this.picker && this.picker.pickerInput
56
+ ? this.picker.pickerInput._disabledChange
57
+ : observableOf();
58
+ const pickerToggled = this.picker
59
+ ? merge(this.picker.openedStream, this.picker.closedStream)
60
+ : observableOf();
61
+ this._stateChanges.unsubscribe();
62
+ this._stateChanges = merge(pickerDisabled, inputDisabled, pickerToggled).subscribe(() => this._changeDetectorRef.markForCheck());
63
+ }
64
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: MtxColorpickerToggle, deps: [{ token: i0.ChangeDetectorRef }, { token: 'tabindex', attribute: true }], target: i0.ɵɵFactoryTarget.Component }); }
65
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: MtxColorpickerToggle, selector: "mtx-colorpicker-toggle", inputs: { picker: ["for", "picker"], tabIndex: "tabIndex", ariaLabel: ["aria-label", "ariaLabel"], disabled: "disabled", disableRipple: "disableRipple" }, host: { listeners: { "click": "_open($event)" }, properties: { "attr.tabindex": "null", "class.mtx-colorpicker-toggle-active": "picker && picker.opened", "class.mat-accent": "picker && picker.color === \"accent\"", "class.mat-warn": "picker && picker.color === \"warn\"" }, classAttribute: "mtx-colorpicker-toggle" }, queries: [{ propertyName: "_customIcon", first: true, predicate: MtxColorpickerToggleIcon, descendants: true }], viewQueries: [{ propertyName: "_button", first: true, predicate: ["button"], descendants: true }], exportAs: ["mtxColorpickerToggle"], usesOnChanges: true, ngImport: i0, template: "<button #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"picker ? 'dialog' : null\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [disabled]=\"disabled\"\n [disableRipple]=\"disableRipple\">\n\n <svg *ngIf=\"!_customIcon\"\n class=\"mtx-colorpicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\">\n <path\n d=\"M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z\" />\n </svg>\n\n <ng-content select=\"[mtxColorpickerToggleIcon]\"></ng-content>\n</button>\n", styles: [".mat-form-field-appearance-legacy .mat-form-field-prefix .mtx-colorpicker-toggle-default-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mtx-colorpicker-toggle-default-icon{width:1em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mtx-colorpicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mtx-colorpicker-toggle-default-icon{display:block;width:1.5em;height:1.5em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mtx-colorpicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mtx-colorpicker-toggle-default-icon{margin:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
66
+ }
67
+ export { MtxColorpickerToggle };
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: MtxColorpickerToggle, decorators: [{
69
+ type: Component,
70
+ args: [{ selector: 'mtx-colorpicker-toggle', host: {
71
+ 'class': 'mtx-colorpicker-toggle',
72
+ '[attr.tabindex]': 'null',
73
+ '[class.mtx-colorpicker-toggle-active]': 'picker && picker.opened',
74
+ '[class.mat-accent]': 'picker && picker.color === "accent"',
75
+ '[class.mat-warn]': 'picker && picker.color === "warn"',
76
+ // Bind the `click` on the host, rather than the inner `button`, so that we can call
77
+ // `stopPropagation` on it without affecting the user's `click` handlers. We need to stop
78
+ // it so that the input doesn't get focused automatically by the form field (See #21836).
79
+ '(click)': '_open($event)',
80
+ }, exportAs: 'mtxColorpickerToggle', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<button #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"picker ? 'dialog' : null\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [disabled]=\"disabled\"\n [disableRipple]=\"disableRipple\">\n\n <svg *ngIf=\"!_customIcon\"\n class=\"mtx-colorpicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\">\n <path\n d=\"M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z\" />\n </svg>\n\n <ng-content select=\"[mtxColorpickerToggleIcon]\"></ng-content>\n</button>\n", styles: [".mat-form-field-appearance-legacy .mat-form-field-prefix .mtx-colorpicker-toggle-default-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mtx-colorpicker-toggle-default-icon{width:1em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mtx-colorpicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mtx-colorpicker-toggle-default-icon{display:block;width:1.5em;height:1.5em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mtx-colorpicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mtx-colorpicker-toggle-default-icon{margin:auto}\n"] }]
81
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
82
+ type: Attribute,
83
+ args: ['tabindex']
84
+ }] }]; }, propDecorators: { picker: [{
85
+ type: Input,
86
+ args: ['for']
87
+ }], tabIndex: [{
88
+ type: Input
89
+ }], ariaLabel: [{
90
+ type: Input,
91
+ args: ['aria-label']
92
+ }], disabled: [{
93
+ type: Input
94
+ }], disableRipple: [{
95
+ type: Input
96
+ }], _customIcon: [{
97
+ type: ContentChild,
98
+ args: [MtxColorpickerToggleIcon]
99
+ }], _button: [{
100
+ type: ViewChild,
101
+ args: ['button']
102
+ }] } });
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXItdG9nZ2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9jb2xvcnBpY2tlci9jb2xvcnBpY2tlci10b2dnbGUudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2NvbG9ycGlja2VyL2NvbG9ycGlja2VyLXRvZ2dsZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBRUwsU0FBUyxFQUNULHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFDVCxLQUFLLEVBSUwsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsSUFBSSxZQUFZLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7O0FBRzNFLG9FQUFvRTtBQUNwRSxNQUdhLHdCQUF3QjtpSUFBeEIsd0JBQXdCO3FIQUF4Qix3QkFBd0I7O1NBQXhCLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQUhwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0QkFBNEI7aUJBQ3ZDOztBQUdELE1BbUJhLG9CQUFvQjtJQVkvQiw2Q0FBNkM7SUFDN0MsSUFDSSxRQUFRO1FBQ1YsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3pDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDN0I7UUFFRCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQVlELFlBQ1Usa0JBQXFDLEVBQ3RCLGVBQXVCO1FBRHRDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFuQ3ZDLGtCQUFhLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQztRQXNDekMsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsY0FBYyxJQUFJLGNBQWMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pGLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFZO1FBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsRixNQUFNLGFBQWEsR0FDakIsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVc7WUFDcEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGVBQWU7WUFDekMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3JCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNO1lBQy9CLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFDM0QsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRW5CLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQ3hCLGNBQWtDLEVBQ2xDLGFBQWlDLEVBQ2pDLGFBQWEsQ0FDZCxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO2lJQWhGVSxvQkFBb0IsbURBcUNsQixVQUFVO3FIQXJDWixvQkFBb0IsZ2tCQThCakIsd0JBQXdCLDRNQzNFeEMsaXJDQXNCQTs7U0R1QmEsb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBbkJoQyxTQUFTOytCQUNFLHdCQUF3QixRQUc1Qjt3QkFDSixPQUFPLEVBQUUsd0JBQXdCO3dCQUNqQyxpQkFBaUIsRUFBRSxNQUFNO3dCQUN6Qix1Q0FBdUMsRUFBRSx5QkFBeUI7d0JBQ2xFLG9CQUFvQixFQUFFLHFDQUFxQzt3QkFDM0Qsa0JBQWtCLEVBQUUsbUNBQW1DO3dCQUN2RCxvRkFBb0Y7d0JBQ3BGLHlGQUF5Rjt3QkFDekYseUZBQXlGO3dCQUN6RixTQUFTLEVBQUUsZUFBZTtxQkFDM0IsWUFDUyxzQkFBc0IsaUJBQ2pCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OzBCQXVDNUMsU0FBUzsyQkFBQyxVQUFVOzRDQWpDVCxNQUFNO3NCQUFuQixLQUFLO3VCQUFDLEtBQUs7Z0JBR0gsUUFBUTtzQkFBaEIsS0FBSztnQkFHZSxTQUFTO3NCQUE3QixLQUFLO3VCQUFDLFlBQVk7Z0JBSWYsUUFBUTtzQkFEWCxLQUFLO2dCQWNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR2tDLFdBQVc7c0JBQWxELFlBQVk7dUJBQUMsd0JBQXdCO2dCQUdqQixPQUFPO3NCQUEzQixTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIG9mIGFzIG9ic2VydmFibGVPZiwgbWVyZ2UsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE10eENvbG9ycGlja2VyIH0gZnJvbSAnLi9jb2xvcnBpY2tlcic7XG5cbi8qKiBDYW4gYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgaWNvbiBvZiBhIGBtdHhDb2xvcnBpY2tlclRvZ2dsZWAuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbXR4Q29sb3JwaWNrZXJUb2dnbGVJY29uXScsXG59KVxuZXhwb3J0IGNsYXNzIE10eENvbG9ycGlja2VyVG9nZ2xlSWNvbiB7fVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdHgtY29sb3JwaWNrZXItdG9nZ2xlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbG9ycGlja2VyLXRvZ2dsZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29sb3JwaWNrZXItdG9nZ2xlLnNjc3MnXSxcbiAgaG9zdDoge1xuICAgICdjbGFzcyc6ICdtdHgtY29sb3JwaWNrZXItdG9nZ2xlJyxcbiAgICAnW2F0dHIudGFiaW5kZXhdJzogJ251bGwnLFxuICAgICdbY2xhc3MubXR4LWNvbG9ycGlja2VyLXRvZ2dsZS1hY3RpdmVdJzogJ3BpY2tlciAmJiBwaWNrZXIub3BlbmVkJyxcbiAgICAnW2NsYXNzLm1hdC1hY2NlbnRdJzogJ3BpY2tlciAmJiBwaWNrZXIuY29sb3IgPT09IFwiYWNjZW50XCInLFxuICAgICdbY2xhc3MubWF0LXdhcm5dJzogJ3BpY2tlciAmJiBwaWNrZXIuY29sb3IgPT09IFwid2FyblwiJyxcbiAgICAvLyBCaW5kIHRoZSBgY2xpY2tgIG9uIHRoZSBob3N0LCByYXRoZXIgdGhhbiB0aGUgaW5uZXIgYGJ1dHRvbmAsIHNvIHRoYXQgd2UgY2FuIGNhbGxcbiAgICAvLyBgc3RvcFByb3BhZ2F0aW9uYCBvbiBpdCB3aXRob3V0IGFmZmVjdGluZyB0aGUgdXNlcidzIGBjbGlja2AgaGFuZGxlcnMuIFdlIG5lZWQgdG8gc3RvcFxuICAgIC8vIGl0IHNvIHRoYXQgdGhlIGlucHV0IGRvZXNuJ3QgZ2V0IGZvY3VzZWQgYXV0b21hdGljYWxseSBieSB0aGUgZm9ybSBmaWVsZCAoU2VlICMyMTgzNikuXG4gICAgJyhjbGljayknOiAnX29wZW4oJGV2ZW50KScsXG4gIH0sXG4gIGV4cG9ydEFzOiAnbXR4Q29sb3JwaWNrZXJUb2dnbGUnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTXR4Q29sb3JwaWNrZXJUb2dnbGUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX3N0YXRlQ2hhbmdlcyA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICAvKiogQ29sb3JwaWNrZXIgaW5zdGFuY2UgdGhhdCB0aGUgYnV0dG9uIHdpbGwgdG9nZ2xlLiAqL1xuICBASW5wdXQoJ2ZvcicpIHBpY2tlciE6IE10eENvbG9ycGlja2VyO1xuXG4gIC8qKiBUYWJpbmRleCBmb3IgdGhlIHRvZ2dsZS4gKi9cbiAgQElucHV0KCkgdGFiSW5kZXg6IG51bWJlciB8IG51bGw7XG5cbiAgLyoqIFNjcmVlbi1yZWFkZXIgbGFiZWwgZm9yIHRoZSBidXR0b24uICovXG4gIEBJbnB1dCgnYXJpYS1sYWJlbCcpIGFyaWFMYWJlbCE6IHN0cmluZztcblxuICAvKiogV2hldGhlciB0aGUgdG9nZ2xlIGJ1dHRvbiBpcyBkaXNhYmxlZC4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9kaXNhYmxlZCA9PSBudWxsICYmIHRoaXMucGlja2VyKSB7XG4gICAgICByZXR1cm4gdGhpcy5waWNrZXIuZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuICEhdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkITogYm9vbGVhbjtcblxuICAvKiogV2hldGhlciByaXBwbGVzIG9uIHRoZSB0b2dnbGUgc2hvdWxkIGJlIGRpc2FibGVkLiAqL1xuICBASW5wdXQoKSBkaXNhYmxlUmlwcGxlITogYm9vbGVhbjtcblxuICAvKiogQ3VzdG9tIGljb24gc2V0IGJ5IHRoZSBjb25zdW1lci4gKi9cbiAgQENvbnRlbnRDaGlsZChNdHhDb2xvcnBpY2tlclRvZ2dsZUljb24pIF9jdXN0b21JY29uITogTXR4Q29sb3JwaWNrZXJUb2dnbGVJY29uO1xuXG4gIC8qKiBVbmRlcmx5aW5nIGJ1dHRvbiBlbGVtZW50LiAqL1xuICBAVmlld0NoaWxkKCdidXR0b24nKSBfYnV0dG9uITogTWF0QnV0dG9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAQXR0cmlidXRlKCd0YWJpbmRleCcpIGRlZmF1bHRUYWJJbmRleDogc3RyaW5nXG4gICkge1xuICAgIGNvbnN0IHBhcnNlZFRhYkluZGV4ID0gTnVtYmVyKGRlZmF1bHRUYWJJbmRleCk7XG4gICAgdGhpcy50YWJJbmRleCA9IHBhcnNlZFRhYkluZGV4IHx8IHBhcnNlZFRhYkluZGV4ID09PSAwID8gcGFyc2VkVGFiSW5kZXggOiBudWxsO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnBpY2tlcikge1xuICAgICAgdGhpcy5fd2F0Y2hTdGF0ZUNoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdGF0ZUNoYW5nZXMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLl93YXRjaFN0YXRlQ2hhbmdlcygpO1xuICB9XG5cbiAgX29wZW4oZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGlja2VyICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnBpY2tlci5vcGVuKCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF93YXRjaFN0YXRlQ2hhbmdlcygpIHtcbiAgICBjb25zdCBwaWNrZXJEaXNhYmxlZCA9IHRoaXMucGlja2VyID8gdGhpcy5waWNrZXIuX2Rpc2FibGVkQ2hhbmdlIDogb2JzZXJ2YWJsZU9mKCk7XG4gICAgY29uc3QgaW5wdXREaXNhYmxlZCA9XG4gICAgICB0aGlzLnBpY2tlciAmJiB0aGlzLnBpY2tlci5waWNrZXJJbnB1dFxuICAgICAgICA/IHRoaXMucGlja2VyLnBpY2tlcklucHV0Ll9kaXNhYmxlZENoYW5nZVxuICAgICAgICA6IG9ic2VydmFibGVPZigpO1xuICAgIGNvbnN0IHBpY2tlclRvZ2dsZWQgPSB0aGlzLnBpY2tlclxuICAgICAgPyBtZXJnZSh0aGlzLnBpY2tlci5vcGVuZWRTdHJlYW0sIHRoaXMucGlja2VyLmNsb3NlZFN0cmVhbSlcbiAgICAgIDogb2JzZXJ2YWJsZU9mKCk7XG5cbiAgICB0aGlzLl9zdGF0ZUNoYW5nZXMudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9zdGF0ZUNoYW5nZXMgPSBtZXJnZShcbiAgICAgIHBpY2tlckRpc2FibGVkIGFzIE9ic2VydmFibGU8dm9pZD4sXG4gICAgICBpbnB1dERpc2FibGVkIGFzIE9ic2VydmFibGU8dm9pZD4sXG4gICAgICBwaWNrZXJUb2dnbGVkXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpO1xuICB9XG5cbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlUmlwcGxlOiBCb29sZWFuSW5wdXQ7XG59XG4iLCI8YnV0dG9uICNidXR0b25cbiAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cInBpY2tlciA/ICdkaWFsb2cnIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IHRhYkluZGV4XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2Rpc2FibGVSaXBwbGVdPVwiZGlzYWJsZVJpcHBsZVwiPlxuXG4gIDxzdmcgKm5nSWY9XCIhX2N1c3RvbUljb25cIlxuICAgICAgIGNsYXNzPVwibXR4LWNvbG9ycGlja2VyLXRvZ2dsZS1kZWZhdWx0LWljb25cIlxuICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgIHdpZHRoPVwiMjRweFwiXG4gICAgICAgaGVpZ2h0PVwiMjRweFwiXG4gICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIj5cbiAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNMTcuNSwxMkExLjUsMS41IDAgMCwxIDE2LDEwLjVBMS41LDEuNSAwIDAsMSAxNy41LDlBMS41LDEuNSAwIDAsMSAxOSwxMC41QTEuNSwxLjUgMCAwLDEgMTcuNSwxMk0xNC41LDhBMS41LDEuNSAwIDAsMSAxMyw2LjVBMS41LDEuNSAwIDAsMSAxNC41LDVBMS41LDEuNSAwIDAsMSAxNiw2LjVBMS41LDEuNSAwIDAsMSAxNC41LDhNOS41LDhBMS41LDEuNSAwIDAsMSA4LDYuNUExLjUsMS41IDAgMCwxIDkuNSw1QTEuNSwxLjUgMCAwLDEgMTEsNi41QTEuNSwxLjUgMCAwLDEgOS41LDhNNi41LDEyQTEuNSwxLjUgMCAwLDEgNSwxMC41QTEuNSwxLjUgMCAwLDEgNi41LDlBMS41LDEuNSAwIDAsMSA4LDEwLjVBMS41LDEuNSAwIDAsMSA2LjUsMTJNMTIsM0E5LDkgMCAwLDAgMywxMkE5LDkgMCAwLDAgMTIsMjFBMS41LDEuNSAwIDAsMCAxMy41LDE5LjVDMTMuNSwxOS4xMSAxMy4zNSwxOC43NiAxMy4xMSwxOC41QzEyLjg4LDE4LjIzIDEyLjczLDE3Ljg4IDEyLjczLDE3LjVBMS41LDEuNSAwIDAsMSAxNC4yMywxNkgxNkE1LDUgMCAwLDAgMjEsMTFDMjEsNi41OCAxNi45NywzIDEyLDNaXCIgLz5cbiAgPC9zdmc+XG5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW210eENvbG9ycGlja2VyVG9nZ2xlSWNvbl1cIj48L25nLWNvbnRlbnQ+XG48L2J1dHRvbj5cbiJdfQ==
@@ -0,0 +1,367 @@
1
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
+ import { ESCAPE, hasModifierKey, UP_ARROW } from '@angular/cdk/keycodes';
3
+ import { OverlayConfig, Overlay, } from '@angular/cdk/overlay';
4
+ import { ComponentPortal } from '@angular/cdk/portal';
5
+ import { DOCUMENT } from '@angular/common';
6
+ import { ChangeDetectionStrategy, Component, EventEmitter, Inject, InjectionToken, Input, Optional, Output, ViewEncapsulation, } from '@angular/core';
7
+ import { mixinColor } from '@angular/material/core';
8
+ import { Subject, Subscription, merge } from 'rxjs';
9
+ import { filter, take } from 'rxjs/operators';
10
+ import { mtxColorpickerAnimations } from './colorpicker-animations';
11
+ import { TinyColor } from '@ctrl/tinycolor';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@angular/common";
14
+ import * as i2 from "ngx-color/chrome";
15
+ import * as i3 from "@angular/cdk/overlay";
16
+ import * as i4 from "@angular/cdk/bidi";
17
+ /** Used to generate a unique ID for each colorpicker instance. */
18
+ let colorpickerUid = 0;
19
+ /** Injection token that determines the scroll handling while the panel is open. */
20
+ export const MTX_COLORPICKER_SCROLL_STRATEGY = new InjectionToken('mtx-colorpicker-scroll-strategy');
21
+ export function MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY(overlay) {
22
+ return () => overlay.scrollStrategies.reposition();
23
+ }
24
+ export const MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {
25
+ provide: MTX_COLORPICKER_SCROLL_STRATEGY,
26
+ deps: [Overlay],
27
+ useFactory: MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY,
28
+ };
29
+ // Boilerplate for applying mixins to MtxColorpickerContent.
30
+ /** @docs-private */
31
+ const _MtxColorpickerContentBase = mixinColor(class {
32
+ constructor(_elementRef) {
33
+ this._elementRef = _elementRef;
34
+ }
35
+ });
36
+ class MtxColorpickerContent extends _MtxColorpickerContentBase {
37
+ constructor(elementRef, _changeDetectorRef) {
38
+ super(elementRef);
39
+ this._changeDetectorRef = _changeDetectorRef;
40
+ /** Current state of the animation. */
41
+ this._animationState = 'enter-dropdown';
42
+ /** Emits when an animation has finished. */
43
+ this._animationDone = new Subject();
44
+ }
45
+ _startExitAnimation() {
46
+ this._animationState = 'void';
47
+ this._changeDetectorRef.markForCheck();
48
+ }
49
+ ngOnDestroy() {
50
+ this._animationDone.complete();
51
+ }
52
+ getColorString(e) {
53
+ return {
54
+ hex: e.color.rgb.a === 1 ? e.color.hex : new TinyColor(e.color.rgb).toHex8String(),
55
+ rgb: new TinyColor(e.color.rgb).toRgbString(),
56
+ hsl: new TinyColor(e.color.hsl).toHslString(),
57
+ hsv: new TinyColor(e.color.hsv).toHsvString(),
58
+ }[this.picker.format];
59
+ }
60
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: MtxColorpickerContent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
61
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: MtxColorpickerContent, selector: "mtx-colorpicker-content", inputs: { color: "color" }, host: { listeners: { "@transformPanel.done": "_animationDone.next()" }, properties: { "@transformPanel": "_animationState" }, classAttribute: "mtx-colorpicker-content" }, exportAs: ["mtxColorpickerContent"], usesInheritance: true, ngImport: i0, template: "<ng-template [ngIf]=\"picker.content\" [ngIfElse]=\"default\"\n [ngTemplateOutlet]=\"picker.content\">\n</ng-template>\n<ng-template #default>\n <color-chrome [color]=\"picker.selected\"\n (onChangeComplete)=\"picker.select(getColorString($event))\">\n </color-chrome>\n</ng-template>\n", styles: [".mtx-colorpicker-content{display:block;border-radius:4px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ChromeComponent, selector: "color-chrome", inputs: ["disableAlpha"] }], animations: [mtxColorpickerAnimations.transformPanel], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
62
+ }
63
+ export { MtxColorpickerContent };
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: MtxColorpickerContent, decorators: [{
65
+ type: Component,
66
+ args: [{ selector: 'mtx-colorpicker-content', host: {
67
+ 'class': 'mtx-colorpicker-content',
68
+ '[@transformPanel]': '_animationState',
69
+ '(@transformPanel.done)': '_animationDone.next()',
70
+ }, animations: [mtxColorpickerAnimations.transformPanel], exportAs: 'mtxColorpickerContent', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['color'], template: "<ng-template [ngIf]=\"picker.content\" [ngIfElse]=\"default\"\n [ngTemplateOutlet]=\"picker.content\">\n</ng-template>\n<ng-template #default>\n <color-chrome [color]=\"picker.selected\"\n (onChangeComplete)=\"picker.select(getColorString($event))\">\n </color-chrome>\n</ng-template>\n", styles: [".mtx-colorpicker-content{display:block;border-radius:4px}\n"] }]
71
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; } });
72
+ class MtxColorpicker {
73
+ get disabled() {
74
+ return this._disabled === undefined && this.pickerInput
75
+ ? this.pickerInput.disabled
76
+ : !!this._disabled;
77
+ }
78
+ set disabled(value) {
79
+ const newValue = coerceBooleanProperty(value);
80
+ if (newValue !== this._disabled) {
81
+ this._disabled = newValue;
82
+ this._disabledChange.next(newValue);
83
+ }
84
+ }
85
+ /**
86
+ * Whether to restore focus to the previously-focused element when the panel is closed.
87
+ * Note that automatic focus restoration is an accessibility feature and it is recommended that
88
+ * you provide your own equivalent, if you decide to turn it off.
89
+ */
90
+ get restoreFocus() {
91
+ return this._restoreFocus;
92
+ }
93
+ set restoreFocus(value) {
94
+ this._restoreFocus = coerceBooleanProperty(value);
95
+ }
96
+ /** Whether the panel is open. */
97
+ get opened() {
98
+ return this._opened;
99
+ }
100
+ set opened(value) {
101
+ coerceBooleanProperty(value) ? this.open() : this.close();
102
+ }
103
+ /** Color palette to use on the colorpicker's panel. */
104
+ get color() {
105
+ return this._color || (this.pickerInput ? this.pickerInput.getThemePalette() : undefined);
106
+ }
107
+ set color(value) {
108
+ this._color = value;
109
+ }
110
+ /** The input and output color format. */
111
+ get format() {
112
+ return this._format || this.pickerInput.format;
113
+ }
114
+ set format(value) {
115
+ this._format = value;
116
+ }
117
+ /** The currently selected color. */
118
+ get selected() {
119
+ return this._validSelected;
120
+ }
121
+ set selected(value) {
122
+ this._validSelected = value;
123
+ }
124
+ constructor(_overlay, _ngZone, _viewContainerRef, scrollStrategy, _dir, _document) {
125
+ this._overlay = _overlay;
126
+ this._ngZone = _ngZone;
127
+ this._viewContainerRef = _viewContainerRef;
128
+ this._dir = _dir;
129
+ this._document = _document;
130
+ this._inputStateChanges = Subscription.EMPTY;
131
+ /** Emits when the colorpicker has been opened. */
132
+ this.openedStream = new EventEmitter();
133
+ /** Emits when the colorpicker has been closed. */
134
+ this.closedStream = new EventEmitter();
135
+ /** Preferred position of the colorpicker in the X axis. */
136
+ this.xPosition = 'start';
137
+ /** Preferred position of the colorpicker in the Y axis. */
138
+ this.yPosition = 'below';
139
+ this._restoreFocus = true;
140
+ this._opened = false;
141
+ /** The id for the colorpicker panel. */
142
+ this.id = `mtx-colorpicker-${colorpickerUid++}`;
143
+ this._validSelected = '';
144
+ /** The element that was focused before the colorpicker was opened. */
145
+ this._focusedElementBeforeOpen = null;
146
+ /** Unique class that will be added to the backdrop so that the test harnesses can look it up. */
147
+ this._backdropHarnessClass = `${this.id}-backdrop`;
148
+ /** Emits when the datepicker is disabled. */
149
+ this._disabledChange = new Subject();
150
+ /** Emits new selected color when selected color changes. */
151
+ this._selectedChanged = new Subject();
152
+ this._scrollStrategy = scrollStrategy;
153
+ }
154
+ ngOnChanges() { }
155
+ ngOnDestroy() {
156
+ this._destroyOverlay();
157
+ this.close();
158
+ this._inputStateChanges.unsubscribe();
159
+ this._disabledChange.complete();
160
+ }
161
+ /** Selects the given color. */
162
+ select(nextVal) {
163
+ const oldValue = this.selected;
164
+ this.selected = nextVal;
165
+ // TODO: `nextVal` should compare with `oldValue`
166
+ this._selectedChanged.next(nextVal);
167
+ }
168
+ /**
169
+ * Register an input with this colorpicker.
170
+ * @param input The colorpicker input to register with this colorpicker.
171
+ */
172
+ registerInput(input) {
173
+ if (this.pickerInput) {
174
+ throw Error('A Colorpicker can only be associated with a single input.');
175
+ }
176
+ this.pickerInput = input;
177
+ this._inputStateChanges = input._valueChange.subscribe((value) => (this.selected = value));
178
+ }
179
+ /** Open the panel. */
180
+ open() {
181
+ if (this._opened || this.disabled) {
182
+ return;
183
+ }
184
+ if (!this.pickerInput) {
185
+ throw Error('Attempted to open an Colorpicker with no associated input.');
186
+ }
187
+ if (this._document) {
188
+ this._focusedElementBeforeOpen = this._document.activeElement;
189
+ }
190
+ this._openOverlay();
191
+ this._opened = true;
192
+ this.openedStream.emit();
193
+ }
194
+ /** Close the panel. */
195
+ close() {
196
+ if (!this._opened) {
197
+ return;
198
+ }
199
+ if (this._componentRef) {
200
+ const instance = this._componentRef.instance;
201
+ instance._startExitAnimation();
202
+ instance._animationDone.pipe(take(1)).subscribe(() => this._destroyOverlay());
203
+ }
204
+ const completeClose = () => {
205
+ // The `_opened` could've been reset already if
206
+ // we got two events in quick succession.
207
+ if (this._opened) {
208
+ this._opened = false;
209
+ this.closedStream.emit();
210
+ this._focusedElementBeforeOpen = null;
211
+ }
212
+ };
213
+ if (this._restoreFocus &&
214
+ this._focusedElementBeforeOpen &&
215
+ typeof this._focusedElementBeforeOpen.focus === 'function') {
216
+ // Because IE moves focus asynchronously, we can't count on it being restored before we've
217
+ // marked the colorpicker as closed. If the event fires out of sequence and the element that
218
+ // we're refocusing opens the colorpicker on focus, the user could be stuck with not being
219
+ // able to close the panel at all. We work around it by making the logic, that marks
220
+ // the colorpicker as closed, async as well.
221
+ this._focusedElementBeforeOpen.focus();
222
+ setTimeout(completeClose);
223
+ }
224
+ else {
225
+ completeClose();
226
+ }
227
+ }
228
+ /** Forwards relevant values from the colorpicker to the colorpicker content inside the overlay. */
229
+ _forwardContentValues(instance) {
230
+ instance.picker = this;
231
+ instance.color = this.color;
232
+ }
233
+ /** Open the colopicker as a popup. */
234
+ _openOverlay() {
235
+ this._destroyOverlay();
236
+ const labelId = this.pickerInput.getOverlayLabelId();
237
+ const portal = new ComponentPortal(MtxColorpickerContent, this._viewContainerRef);
238
+ const overlayRef = (this._overlayRef = this._overlay.create(new OverlayConfig({
239
+ positionStrategy: this._getDropdownStrategy(),
240
+ hasBackdrop: true,
241
+ backdropClass: ['mat-overlay-transparent-backdrop', this._backdropHarnessClass],
242
+ direction: this._dir,
243
+ scrollStrategy: this._scrollStrategy(),
244
+ panelClass: `mtx-colorpicker-popup`,
245
+ })));
246
+ const overlayElement = overlayRef.overlayElement;
247
+ overlayElement.setAttribute('role', 'dialog');
248
+ if (labelId) {
249
+ overlayElement.setAttribute('aria-labelledby', labelId);
250
+ }
251
+ this._getCloseStream(overlayRef).subscribe(event => {
252
+ if (event) {
253
+ event.preventDefault();
254
+ }
255
+ this.close();
256
+ });
257
+ this._componentRef = overlayRef.attach(portal);
258
+ this._forwardContentValues(this._componentRef.instance);
259
+ // Update the position once the panel has rendered. Only relevant in dropdown mode.
260
+ this._ngZone.onStable.pipe(take(1)).subscribe(() => overlayRef.updatePosition());
261
+ }
262
+ /** Destroys the current overlay. */
263
+ _destroyOverlay() {
264
+ if (this._overlayRef) {
265
+ this._overlayRef.dispose();
266
+ this._overlayRef = this._componentRef = null;
267
+ }
268
+ }
269
+ /** Gets a position strategy that will open the panel as a dropdown. */
270
+ _getDropdownStrategy() {
271
+ const strategy = this._overlay
272
+ .position()
273
+ .flexibleConnectedTo(this.pickerInput.getConnectedOverlayOrigin())
274
+ .withTransformOriginOn('.mtx-colorpicker-content')
275
+ .withFlexibleDimensions(false)
276
+ .withViewportMargin(8)
277
+ .withLockedPosition();
278
+ return this._setConnectedPositions(strategy);
279
+ }
280
+ /** Sets the positions of the colorpicker in dropdown mode based on the current configuration. */
281
+ _setConnectedPositions(strategy) {
282
+ const primaryX = this.xPosition === 'end' ? 'end' : 'start';
283
+ const secondaryX = primaryX === 'start' ? 'end' : 'start';
284
+ const primaryY = this.yPosition === 'above' ? 'bottom' : 'top';
285
+ const secondaryY = primaryY === 'top' ? 'bottom' : 'top';
286
+ return strategy.withPositions([
287
+ {
288
+ originX: primaryX,
289
+ originY: secondaryY,
290
+ overlayX: primaryX,
291
+ overlayY: primaryY,
292
+ },
293
+ {
294
+ originX: primaryX,
295
+ originY: primaryY,
296
+ overlayX: primaryX,
297
+ overlayY: secondaryY,
298
+ },
299
+ {
300
+ originX: secondaryX,
301
+ originY: secondaryY,
302
+ overlayX: secondaryX,
303
+ overlayY: primaryY,
304
+ },
305
+ {
306
+ originX: secondaryX,
307
+ originY: primaryY,
308
+ overlayX: secondaryX,
309
+ overlayY: secondaryY,
310
+ },
311
+ ]);
312
+ }
313
+ /** Gets an observable that will emit when the overlay is supposed to be closed. */
314
+ _getCloseStream(overlayRef) {
315
+ return merge(overlayRef.backdropClick(), overlayRef.detachments(), overlayRef.keydownEvents().pipe(filter(event => {
316
+ // Closing on alt + up is only valid when there's an input associated with the colorpicker.
317
+ return ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||
318
+ (this.pickerInput && hasModifierKey(event, 'altKey') && event.keyCode === UP_ARROW));
319
+ })));
320
+ }
321
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: MtxColorpicker, deps: [{ token: i3.Overlay }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: MTX_COLORPICKER_SCROLL_STRATEGY }, { token: i4.Directionality, optional: true }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
322
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.3", type: MtxColorpicker, selector: "mtx-colorpicker", inputs: { content: "content", disabled: "disabled", xPosition: "xPosition", yPosition: "yPosition", restoreFocus: "restoreFocus", opened: "opened", color: "color", format: "format" }, outputs: { openedStream: "opened", closedStream: "closed" }, exportAs: ["mtxColorpicker"], usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
323
+ }
324
+ export { MtxColorpicker };
325
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: MtxColorpicker, decorators: [{
326
+ type: Component,
327
+ args: [{
328
+ selector: 'mtx-colorpicker',
329
+ template: '',
330
+ exportAs: 'mtxColorpicker',
331
+ changeDetection: ChangeDetectionStrategy.OnPush,
332
+ encapsulation: ViewEncapsulation.None,
333
+ }]
334
+ }], ctorParameters: function () { return [{ type: i3.Overlay }, { type: i0.NgZone }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
335
+ type: Inject,
336
+ args: [MTX_COLORPICKER_SCROLL_STRATEGY]
337
+ }] }, { type: i4.Directionality, decorators: [{
338
+ type: Optional
339
+ }] }, { type: undefined, decorators: [{
340
+ type: Optional
341
+ }, {
342
+ type: Inject,
343
+ args: [DOCUMENT]
344
+ }] }]; }, propDecorators: { content: [{
345
+ type: Input
346
+ }], openedStream: [{
347
+ type: Output,
348
+ args: ['opened']
349
+ }], closedStream: [{
350
+ type: Output,
351
+ args: ['closed']
352
+ }], disabled: [{
353
+ type: Input
354
+ }], xPosition: [{
355
+ type: Input
356
+ }], yPosition: [{
357
+ type: Input
358
+ }], restoreFocus: [{
359
+ type: Input
360
+ }], opened: [{
361
+ type: Input
362
+ }], color: [{
363
+ type: Input
364
+ }], format: [{
365
+ type: Input
366
+ }] } });
367
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2NvbG9ycGlja2VyL2NvbG9ycGlja2VyLnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9jb2xvcnBpY2tlci9jb2xvcnBpY2tlci1jb250ZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pFLE9BQU8sRUFFTCxhQUFhLEVBQ2IsT0FBTyxHQUdSLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFHVCxZQUFZLEVBQ1osTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFHTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFZLFVBQVUsRUFBZ0IsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUtwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQUU1QyxrRUFBa0U7QUFDbEUsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBRXZCLG1GQUFt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QU07dUJBQUMsUUFBUTtnQkFFSCxRQUFRO3NCQUFwQixLQUFLO2dCQWlCTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQVNGLFlBQVk7c0JBRGYsS0FBSztnQkFXRixNQUFNO3NCQURULEtBQUs7Z0JBY0YsS0FBSztzQkFEUixLQUFLO2dCQVdGLE1BQU07c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRVNDQVBFLCBoYXNNb2RpZmllcktleSwgVVBfQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgU2Nyb2xsU3RyYXRlZ3ksXG4gIE92ZXJsYXlDb25maWcsXG4gIE92ZXJsYXksXG4gIE92ZXJsYXlSZWYsXG4gIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50UmVmLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQ29sb3IsIG1peGluQ29sb3IsIFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgbXR4Q29sb3JwaWNrZXJBbmltYXRpb25zIH0gZnJvbSAnLi9jb2xvcnBpY2tlci1hbmltYXRpb25zJztcbmltcG9ydCB7IENvbG9yRm9ybWF0LCBNdHhDb2xvcnBpY2tlcklucHV0IH0gZnJvbSAnLi9jb2xvcnBpY2tlci1pbnB1dCc7XG5cbmltcG9ydCB7IENvbG9yRXZlbnQgfSBmcm9tICduZ3gtY29sb3InO1xuXG5pbXBvcnQgeyBUaW55Q29sb3IgfSBmcm9tICdAY3RybC90aW55Y29sb3InO1xuXG4vKiogVXNlZCB0byBnZW5lcmF0ZSBhIHVuaXF1ZSBJRCBmb3IgZWFjaCBjb2xvcnBpY2tlciBpbnN0YW5jZS4gKi9cbmxldCBjb2xvcnBpY2tlclVpZCA9IDA7XG5cbi8qKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBkZXRlcm1pbmVzIHRoZSBzY3JvbGwgaGFuZGxpbmcgd2hpbGUgdGhlIHBhbmVsIGlzIG9wZW4uICovXG5leHBvcnQgY29uc3QgTVRYX0NPTE9SUElDS0VSX1NDUk9MTF9TVFJBVEVHWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjwoKSA9PiBTY3JvbGxTdHJhdGVneT4oXG4gICdtdHgtY29sb3JwaWNrZXItc2Nyb2xsLXN0cmF0ZWd5J1xuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIE1UWF9DT0xPUlBJQ0tFUl9TQ1JPTExfU1RSQVRFR1lfRkFDVE9SWShvdmVybGF5OiBPdmVybGF5KTogKCkgPT4gU2Nyb2xsU3RyYXRlZ3kge1xuICByZXR1cm4gKCkgPT4gb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKTtcbn1cblxuLyoqIFBvc3NpYmxlIHBvc2l0aW9ucyBmb3IgdGhlIGNvbG9ycGlja2VyIGRyb3Bkb3duIGFsb25nIHRoZSBYIGF4aXMuICovXG5leHBvcnQgdHlwZSBDb2xvcnBpY2tlckRyb3Bkb3duUG9zaXRpb25YID0gJ3N0YXJ0JyB8ICdlbmQnO1xuXG4vKiogUG9zc2libGUgcG9zaXRpb25zIGZvciB0aGUgY29sb3JwaWNrZXIgZHJvcGRvd24gYWxvbmcgdGhlIFkgYXhpcy4gKi9cbmV4cG9ydCB0eXBlIENvbG9ycGlja2VyRHJvcGRvd25Qb3NpdGlvblkgPSAnYWJvdmUnIHwgJ2JlbG93JztcblxuZXhwb3J0IGNvbnN0IE1UWF9DT0xPUlBJQ0tFUl9TQ1JPTExfU1RSQVRFR1lfRkFDVE9SWV9QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogTVRYX0NPTE9SUElDS0VSX1NDUk9MTF9TVFJBVEVHWSxcbiAgZGVwczogW092ZXJsYXldLFxuICB1c2VGYWN0b3J5OiBNVFhfQ09MT1JQSUNLRVJfU0NST0xMX1NUUkFURUdZX0ZBQ1RPUlksXG59O1xuXG4vLyBCb2lsZXJwbGF0ZSBmb3IgYXBwbHlpbmcgbWl4aW5zIHRvIE10eENvbG9ycGlja2VyQ29udGVudC5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5jb25zdCBfTXR4Q29sb3JwaWNrZXJDb250ZW50QmFzZSA9IG1peGluQ29sb3IoXG4gIGNsYXNzIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG4gIH1cbik7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ210eC1jb2xvcnBpY2tlci1jb250ZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbG9ycGlja2VyLWNvbnRlbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydjb2xvcnBpY2tlci1jb250ZW50LnNjc3MnXSxcbiAgaG9zdDoge1xuICAgICdjbGFzcyc6ICdtdHgtY29sb3JwaWNrZXItY29udGVudCcsXG4gICAgJ1tAdHJhbnNmb3JtUGFuZWxdJzogJ19hbmltYXRpb25TdGF0ZScsXG4gICAgJyhAdHJhbnNmb3JtUGFuZWwuZG9uZSknOiAnX2FuaW1hdGlvbkRvbmUubmV4dCgpJyxcbiAgfSxcbiAgYW5pbWF0aW9uczogW210eENvbG9ycGlja2VyQW5pbWF0aW9ucy50cmFuc2Zvcm1QYW5lbF0sXG4gIGV4cG9ydEFzOiAnbXR4Q29sb3JwaWNrZXJDb250ZW50JyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGlucHV0czogWydjb2xvciddLFxufSlcbmV4cG9ydCBjbGFzcyBNdHhDb2xvcnBpY2tlckNvbnRlbnRcbiAgZXh0ZW5kcyBfTXR4Q29sb3JwaWNrZXJDb250ZW50QmFzZVxuICBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQ2FuQ29sb3JcbntcbiAgcGlja2VyITogTXR4Q29sb3JwaWNrZXI7XG5cbiAgLyoqIEN1cnJlbnQgc3RhdGUgb2YgdGhlIGFuaW1hdGlvbi4gKi9cbiAgX2FuaW1hdGlvblN0YXRlOiAnZW50ZXItZHJvcGRvd24nIHwgJ3ZvaWQnID0gJ2VudGVyLWRyb3Bkb3duJztcblxuICAvKiogRW1pdHMgd2hlbiBhbiBhbmltYXRpb24gaGFzIGZpbmlzaGVkLiAqL1xuICByZWFkb25seSBfYW5pbWF0aW9uRG9uZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoZWxlbWVudFJlZik7XG4gIH1cblxuICBfc3RhcnRFeGl0QW5pbWF0aW9uKCkge1xuICAgIHRoaXMuX2FuaW1hdGlvblN0YXRlID0gJ3ZvaWQnO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fYW5pbWF0aW9uRG9uZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZ2V0Q29sb3JTdHJpbmcoZTogQ29sb3JFdmVudCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhleDogZS5jb2xvci5yZ2IuYSA9PT0gMSA/IGUuY29sb3IuaGV4IDogbmV3IFRpbnlDb2xvcihlLmNvbG9yLnJnYikudG9IZXg4U3RyaW5nKCksXG4gICAgICByZ2I6IG5ldyBUaW55Q29sb3IoZS5jb2xvci5yZ2IpLnRvUmdiU3RyaW5nKCksXG4gICAgICBoc2w6IG5ldyBUaW55Q29sb3IoZS5jb2xvci5oc2wpLnRvSHNsU3RyaW5nKCksXG4gICAgICBoc3Y6IG5ldyBUaW55Q29sb3IoZS5jb2xvci5oc3YpLnRvSHN2U3RyaW5nKCksXG4gICAgfVt0aGlzLnBpY2tlci5mb3JtYXRdO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ210eC1jb2xvcnBpY2tlcicsXG4gIHRlbXBsYXRlOiAnJyxcbiAgZXhwb3J0QXM6ICdtdHhDb2xvcnBpY2tlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBNdHhDb2xvcnBpY2tlciBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfc2Nyb2xsU3RyYXRlZ3k6ICgpID0+IFNjcm9sbFN0cmF0ZWd5O1xuICBwcml2YXRlIF9pbnB1dFN0YXRlQ2hhbmdlcyA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICAvKiogQ3VzdG9tIGNvbG9ycGlja2VyIGNvbnRlbnQgc2V0IGJ5IHRoZSBjb25zdW1lci4gKi9cbiAgQElucHV0KCkgY29udGVudCE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqIEVtaXRzIHdoZW4gdGhlIGNvbG9ycGlja2VyIGhhcyBiZWVuIG9wZW5lZC4gKi9cbiAgQE91dHB1dCgnb3BlbmVkJykgb3BlbmVkU3RyZWFtOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqIEVtaXRzIHdoZW4gdGhlIGNvbG9ycGlja2VyIGhhcyBiZWVuIGNsb3NlZC4gKi9cbiAgQE91dHB1dCgnY2xvc2VkJykgY2xvc2VkU3RyZWFtOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQElucHV0KCkgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZCA9PT0gdW5kZWZpbmVkICYmIHRoaXMucGlja2VySW5wdXRcbiAgICAgID8gdGhpcy5waWNrZXJJbnB1dC5kaXNhYmxlZFxuICAgICAgOiAhIXRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcblxuICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVkID0gbmV3VmFsdWU7XG4gICAgICB0aGlzLl9kaXNhYmxlZENoYW5nZS5uZXh0KG5ld1ZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQhOiBib29sZWFuO1xuXG4gIC8qKiBQcmVmZXJyZWQgcG9zaXRpb24gb2YgdGhlIGNvbG9ycGlja2VyIGluIHRoZSBYIGF4aXMuICovXG4gIEBJbnB1dCgpXG4gIHhQb3NpdGlvbjogQ29sb3JwaWNrZXJEcm9wZG93blBvc2l0aW9uWCA9ICdzdGFydCc7XG5cbiAgLyoqIFByZWZlcnJlZCBwb3NpdGlvbiBvZiB0aGUgY29sb3JwaWNrZXIgaW4gdGhlIFkgYXhpcy4gKi9cbiAgQElucHV0KClcbiAgeVBvc2l0aW9uOiBDb2xvcnBpY2tlckRyb3Bkb3duUG9zaXRpb25ZID0gJ2JlbG93JztcblxuICAvKipcbiAgICogV2hldGhlciB0byByZXN0b3JlIGZvY3VzIHRvIHRoZSBwcmV2aW91c2x5LWZvY3VzZWQgZWxlbWVudCB3aGVuIHRoZSBwYW5lbCBpcyBjbG9zZWQuXG4gICAqIE5vdGUgdGhhdCBhdXRvbWF0aWMgZm9jdXMgcmVzdG9yYXRpb24gaXMgYW4gYWNjZXNzaWJpbGl0eSBmZWF0dXJlIGFuZCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0XG4gICAqIHlvdSBwcm92aWRlIHlvdXIgb3duIGVxdWl2YWxlbnQsIGlmIHlvdSBkZWNpZGUgdG8gdHVybiBpdCBvZmYuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgcmVzdG9yZUZvY3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXN0b3JlRm9jdXM7XG4gIH1cbiAgc2V0IHJlc3RvcmVGb2N1cyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Jlc3RvcmVGb2N1cyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfcmVzdG9yZUZvY3VzID0gdHJ1ZTtcblxuICAvKiogV2hldGhlciB0aGUgcGFuZWwgaXMgb3Blbi4gKi9cbiAgQElucHV0KClcbiAgZ2V0IG9wZW5lZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fb3BlbmVkO1xuICB9XG4gIHNldCBvcGVuZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpID8gdGhpcy5vcGVuKCkgOiB0aGlzLmNsb3NlKCk7XG4gIH1cbiAgcHJpdmF0ZSBfb3BlbmVkID0gZmFsc2U7XG5cbiAgLyoqIFRoZSBpZCBmb3IgdGhlIGNvbG9ycGlja2VyIHBhbmVsLiAqL1xuICBpZCA9IGBtdHgtY29sb3JwaWNrZXItJHtjb2xvcnBpY2tlclVpZCsrfWA7XG5cbiAgLyoqIENvbG9yIHBhbGV0dGUgdG8gdXNlIG9uIHRoZSBjb2xvcnBpY2tlcidzIHBhbmVsLiAqL1xuICBASW5wdXQoKVxuICBnZXQgY29sb3IoKTogVGhlbWVQYWxldHRlIHtcbiAgICByZXR1cm4gdGhpcy5fY29sb3IgfHwgKHRoaXMucGlja2VySW5wdXQgPyB0aGlzLnBpY2tlcklucHV0LmdldFRoZW1lUGFsZXR0ZSgpIDogdW5kZWZpbmVkKTtcbiAgfVxuICBzZXQgY29sb3IodmFsdWU6IFRoZW1lUGFsZXR0ZSkge1xuICAgIHRoaXMuX2NvbG9yID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfY29sb3I6IFRoZW1lUGFsZXR0ZTtcblxuICAvKiogVGhlIGlucHV0IGFuZCBvdXRwdXQgY29sb3IgZm9ybWF0LiAqL1xuICBASW5wdXQoKVxuICBnZXQgZm9ybWF0KCk6IENvbG9yRm9ybWF0IHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybWF0IHx8IHRoaXMucGlja2VySW5wdXQuZm9ybWF0O1xuICB9XG4gIHNldCBmb3JtYXQodmFsdWU6IENvbG9yRm9ybWF0KSB7XG4gICAgdGhpcy5fZm9ybWF0ID0gdmFsdWU7XG4gIH1cbiAgX2Zvcm1hdCE6IENvbG9yRm9ybWF0O1xuXG4gIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIGNvbG9yLiAqL1xuICBnZXQgc2VsZWN0ZWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRTZWxlY3RlZDtcbiAgfVxuICBzZXQgc2VsZWN0ZWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3ZhbGlkU2VsZWN0ZWQgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF92YWxpZFNlbGVjdGVkOiBzdHJpbmcgPSAnJztcblxuICAvKiogQSByZWZlcmVuY2UgdG8gdGhlIG92ZXJsYXkgd2hlbiB0aGUgcGlja2VyIGlzIG9wZW5lZCBhcyBhIHBvcHVwLiAqL1xuICBwcml2YXRlIF9vdmVybGF5UmVmITogT3ZlcmxheVJlZiB8IG51bGw7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50IGluc3RhbmNlIHJlbmRlcmVkIGluIHRoZSBvdmVybGF5LiAqL1xuICBwcml2YXRlIF9jb21wb25lbnRSZWYhOiBDb21wb25lbnRSZWY8TXR4Q29sb3JwaWNrZXJDb250ZW50PiB8IG51bGw7XG5cbiAgLyoqIFRoZSBlbGVtZW50IHRoYXQgd2FzIGZvY3VzZWQgYmVmb3JlIHRoZSBjb2xvcnBpY2tlciB3YXMgb3BlbmVkLiAqL1xuICBwcml2YXRlIF9mb2N1c2VkRWxlbWVudEJlZm9yZU9wZW46IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFVuaXF1ZSBjbGFzcyB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGJhY2tkcm9wIHNvIHRoYXQgdGhlIHRlc3QgaGFybmVzc2VzIGNhbiBsb29rIGl0IHVwLiAqL1xuICBwcml2YXRlIF9iYWNrZHJvcEhhcm5lc3NDbGFzcyA9IGAke3RoaXMuaWR9LWJhY2tkcm9wYDtcblxuICAvKiogVGhlIGlucHV0IGVsZW1lbnQgdGhpcyBjb2xvcnBpY2tlciBpcyBhc3NvY2lhdGVkIHdpdGguICovXG4gIHBpY2tlcklucHV0ITogTXR4Q29sb3JwaWNrZXJJbnB1dDtcblxuICAvKiogRW1pdHMgd2hlbiB0aGUgZGF0ZXBpY2tlciBpcyBkaXNhYmxlZC4gKi9cbiAgcmVhZG9ubHkgX2Rpc2FibGVkQ2hhbmdlID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAvKiogRW1pdHMgbmV3IHNlbGVjdGVkIGNvbG9yIHdoZW4gc2VsZWN0ZWQgY29sb3IgY2hhbmdlcy4gKi9cbiAgcmVhZG9ubHkgX3NlbGVjdGVkQ2hhbmdlZCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9vdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgQEluamVjdChNVFhfQ09MT1JQSUNLRVJfU0NST0xMX1NUUkFURUdZKSBzY3JvbGxTdHJhdGVneTogYW55LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RpcjogRGlyZWN0aW9uYWxpdHksXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueVxuICApIHtcbiAgICB0aGlzLl9zY3JvbGxTdHJhdGVneSA9IHNjcm9sbFN0cmF0ZWd5O1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7fVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICAgIHRoaXMuX2lucHV0U3RhdGVDaGFuZ2VzLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fZGlzYWJsZWRDaGFuZ2UuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKiBTZWxlY3RzIHRoZSBnaXZlbiBjb2xvci4gKi9cbiAgc2VsZWN0KG5leHRWYWw6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5zZWxlY3RlZDtcbiAgICB0aGlzLnNlbGVjdGVkID0gbmV4dFZhbDtcblxuICAgIC8vIFRPRE86IGBuZXh0VmFsYCBzaG91bGQgY29tcGFyZSB3aXRoIGBvbGRWYWx1ZWBcbiAgICB0aGlzLl9zZWxlY3RlZENoYW5nZWQubmV4dChuZXh0VmFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhbiBpbnB1dCB3aXRoIHRoaXMgY29sb3JwaWNrZXIuXG4gICAqIEBwYXJhbSBpbnB1dCBUaGUgY29sb3JwaWNrZXIgaW5wdXQgdG8gcmVnaXN0ZXIgd2l0aCB0aGlzIGNvbG9ycGlja2VyLlxuICAgKi9cbiAgcmVnaXN0ZXJJbnB1dChpbnB1dDogTXR4Q29sb3JwaWNrZXJJbnB1dCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBpY2tlcklucHV0KSB7XG4gICAgICB0aHJvdyBFcnJvcignQSBDb2xvcnBpY2tlciBjYW4gb25seSBiZSBhc3NvY2lhdGVkIHdpdGggYSBzaW5nbGUgaW5wdXQuJyk7XG4gICAgfVxuICAgIHRoaXMucGlja2VySW5wdXQgPSBpbnB1dDtcbiAgICB0aGlzLl9pbnB1dFN0YXRlQ2hhbmdlcyA9IGlucHV0Ll92YWx1ZUNoYW5nZS5zdWJzY3JpYmUoXG4gICAgICAodmFsdWU6IHN0cmluZykgPT4gKHRoaXMuc2VsZWN0ZWQgPSB2YWx1ZSlcbiAgICApO1xuICB9XG5cbiAgLyoqIE9wZW4gdGhlIHBhbmVsLiAqL1xuICBvcGVuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9vcGVuZWQgfHwgdGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMucGlja2VySW5wdXQpIHtcbiAgICAgIHRocm93IEVycm9yKCdBdHRlbXB0ZWQgdG8gb3BlbiBhbiBDb2xvcnBpY2tlciB3aXRoIG5vIGFzc29jaWF0ZWQgaW5wdXQuJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2RvY3VtZW50KSB7XG4gICAgICB0aGlzLl9mb2N1c2VkRWxlbWVudEJlZm9yZU9wZW4gPSB0aGlzLl9kb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIHRoaXMuX29wZW5PdmVybGF5KCk7XG4gICAgdGhpcy5fb3BlbmVkID0gdHJ1ZTtcbiAgICB0aGlzLm9wZW5lZFN0cmVhbS5lbWl0KCk7XG4gIH1cblxuICAvKiogQ2xvc2UgdGhlIHBhbmVsLiAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX29wZW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb21wb25lbnRSZWYpIHtcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgICAgaW5zdGFuY2UuX3N0YXJ0RXhpdEFuaW1hdGlvbigpO1xuICAgICAgaW5zdGFuY2UuX2FuaW1hdGlvbkRvbmUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fZGVzdHJveU92ZXJsYXkoKSk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGxldGVDbG9zZSA9ICgpID0+IHtcbiAgICAgIC8vIFRoZSBgX29wZW5lZGAgY291bGQndmUgYmVlbiByZXNldCBhbHJlYWR5IGlmXG4gICAgICAvLyB3ZSBnb3QgdHdvIGV2ZW50cyBpbiBxdWljayBzdWNjZXNzaW9uLlxuICAgICAgaWYgKHRoaXMuX29wZW5lZCkge1xuICAgICAgICB0aGlzLl9vcGVuZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jbG9zZWRTdHJlYW0uZW1pdCgpO1xuICAgICAgICB0aGlzLl9mb2N1c2VkRWxlbWVudEJlZm9yZU9wZW4gPSBudWxsO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLl9yZXN0b3JlRm9jdXMgJiZcbiAgICAgIHRoaXMuX2ZvY3VzZWRFbGVtZW50QmVmb3JlT3BlbiAmJlxuICAgICAgdHlwZW9mIHRoaXMuX2ZvY3VzZWRFbGVtZW50QmVmb3JlT3Blbi5mb2N1cyA9PT0gJ2Z1bmN0aW9uJ1xuICAgICkge1xuICAgICAgLy8gQmVjYXVzZSBJRSBtb3ZlcyBmb2N1cyBhc3luY2hyb25vdXNseSwgd2UgY2FuJ3QgY291bnQgb24gaXQgYmVpbmcgcmVzdG9yZWQgYmVmb3JlIHdlJ3ZlXG4gICAgICAvLyBtYXJrZWQgdGhlIGNvbG9ycGlja2VyIGFzIGNsb3NlZC4gSWYgdGhlIGV2ZW50IGZpcmVzIG91dCBvZiBzZXF1ZW5jZSBhbmQgdGhlIGVsZW1lbnQgdGhhdFxuICAgICAgLy8gd2UncmUgcmVmb2N1c2luZyBvcGVucyB0aGUgY29sb3JwaWNrZXIgb24gZm9jdXMsIHRoZSB1c2VyIGNvdWxkIGJlIHN0dWNrIHdpdGggbm90IGJlaW5nXG4gICAgICAvLyBhYmxlIHRvIGNsb3NlIHRoZSBwYW5lbCBhdCBhbGwuIFdlIHdvcmsgYXJvdW5kIGl0IGJ5IG1ha2luZyB0aGUgbG9naWMsIHRoYXQgbWFya3NcbiAgICAgIC8vIHRoZSBjb2xvcnBpY2tlciBhcyBjbG9zZWQsIGFzeW5jIGFzIHdlbGwuXG4gICAgICB0aGlzLl9mb2N1c2VkRWxlbWVudEJlZm9yZU9wZW4uZm9jdXMoKTtcbiAgICAgIHNldFRpbWVvdXQoY29tcGxldGVDbG9zZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbXBsZXRlQ2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICAvKiogRm9yd2FyZHMgcmVsZXZhbnQgdmFsdWVzIGZyb20gdGhlIGNvbG9ycGlja2VyIHRvIHRoZSBjb2xvcnBpY2tlciBjb250ZW50IGluc2lkZSB0aGUgb3ZlcmxheS4gKi9cbiAgcHJvdGVjdGVkIF9mb3J3YXJkQ29udGVudFZhbHVlcyhpbnN0YW5jZTogTXR4Q29sb3JwaWNrZXJDb250ZW50KSB7XG4gICAgaW5zdGFuY2UucGlja2VyID0gdGhpcztcbiAgICBpbnN0YW5jZS5jb2xvciA9IHRoaXMuY29sb3I7XG4gIH1cblxuICAvKiogT3BlbiB0aGUgY29sb3BpY2tlciBhcyBhIHBvcHVwLiAqL1xuICBwcml2YXRlIF9vcGVuT3ZlcmxheSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95T3ZlcmxheSgpO1xuXG4gICAgY29uc3QgbGFiZWxJZCA9IHRoaXMucGlja2VySW5wdXQuZ2V0T3ZlcmxheUxhYmVsSWQoKTtcbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsPE10eENvbG9ycGlja2VyQ29udGVudD4oXG4gICAgICBNdHhDb2xvcnBpY2tlckNvbnRlbnQsXG4gICAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmXG4gICAgKTtcbiAgICBjb25zdCBvdmVybGF5UmVmID0gKHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZShcbiAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5fZ2V0RHJvcGRvd25TdHJhdGVneSgpLFxuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgYmFja2Ryb3BDbGFzczogWydtYXQtb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsIHRoaXMuX2JhY2tkcm9wSGFybmVzc0NsYXNzXSxcbiAgICAgICAgZGlyZWN0aW9uOiB0aGlzLl9kaXIsXG4gICAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLl9zY3JvbGxTdHJhdGVneSgpLFxuICAgICAgICBwYW5lbENsYXNzOiBgbXR4LWNvbG9ycGlja2VyLXBvcHVwYCxcbiAgICAgIH0pXG4gICAgKSk7XG4gICAgY29uc3Qgb3ZlcmxheUVsZW1lbnQgPSBvdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50O1xuICAgIG92ZXJsYXlFbGVtZW50LnNldEF0dHJpYnV0ZSgncm9sZScsICdkaWFsb2cnKTtcblxuICAgIGlmIChsYWJlbElkKSB7XG4gICAgICBvdmVybGF5RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScsIGxhYmVsSWQpO1xuICAgIH1cblxuICAgIHRoaXMuX2dldENsb3NlU3RyZWFtKG92ZXJsYXlSZWYpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IG92ZXJsYXlSZWYuYXR0YWNoKHBvcnRhbCk7XG4gICAgdGhpcy5fZm9yd2FyZENvbnRlbnRWYWx1ZXModGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlKTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgcG9zaXRpb24gb25jZSB0aGUgcGFuZWwgaGFzIHJlbmRlcmVkLiBPbmx5IHJlbGV2YW50IGluIGRyb3Bkb3duIG1vZGUuXG4gICAgdGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IG92ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKSk7XG4gIH1cblxuICAvKiogRGVzdHJveXMgdGhlIGN1cnJlbnQgb3ZlcmxheS4gKi9cbiAgcHJpdmF0ZSBfZGVzdHJveU92ZXJsYXkoKSB7XG4gICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX2NvbXBvbmVudFJlZiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqIEdldHMgYSBwb3NpdGlvbiBzdHJhdGVneSB0aGF0IHdpbGwgb3BlbiB0aGUgcGFuZWwgYXMgYSBkcm9wZG93bi4gKi9cbiAgcHJpdmF0ZSBfZ2V0RHJvcGRvd25TdHJhdGVneSgpIHtcbiAgICBjb25zdCBzdHJhdGVneSA9IHRoaXMuX292ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLnBpY2tlcklucHV0LmdldENvbm5lY3RlZE92ZXJsYXlPcmlnaW4oKSlcbiAgICAgIC53aXRoVHJhbnNmb3JtT3JpZ2luT24oJy5tdHgtY29sb3JwaWNrZXItY29udGVudCcpXG4gICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgIC53aXRoVmlld3BvcnRNYXJnaW4oOClcbiAgICAgIC53aXRoTG9ja2VkUG9zaXRpb24oKTtcblxuICAgIHJldHVybiB0aGlzLl9zZXRDb25uZWN0ZWRQb3NpdGlvbnMoc3RyYXRlZ3kpO1xuICB9XG5cbiAgLyoqIFNldHMgdGhlIHBvc2l0aW9ucyBvZiB0aGUgY29sb3JwaWNrZXIgaW4gZHJvcGRvd24gbW9kZSBiYXNlZCBvbiB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLiAqL1xuICBwcml2YXRlIF9zZXRDb25uZWN0ZWRQb3NpdGlvbnMoc3RyYXRlZ3k6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSkge1xuICAgIGNvbnN0IHByaW1hcnlYID0gdGhpcy54UG9zaXRpb24gPT09ICdlbmQnID8gJ2VuZCcgOiAnc3RhcnQnO1xuICAgIGNvbnN0IHNlY29uZGFyeVggPSBwcmltYXJ5WCA9PT0gJ3N0YXJ0JyA/ICdlbmQnIDogJ3N0YXJ0JztcbiAgICBjb25zdCBwcmltYXJ5WSA9IHRoaXMueVBvc2l0aW9uID09PSAnYWJvdmUnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgICBjb25zdCBzZWNvbmRhcnlZID0gcHJpbWFyeVkgPT09ICd0b3AnID8gJ2JvdHRvbScgOiAndG9wJztcblxuICAgIHJldHVybiBzdHJhdGVneS53aXRoUG9zaXRpb25zKFtcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogcHJpbWFyeVgsXG4gICAgICAgIG9yaWdpblk6IHNlY29uZGFyeVksXG4gICAgICAgIG92ZXJsYXlYOiBwcmltYXJ5WCxcbiAgICAgICAgb3ZlcmxheVk6IHByaW1hcnlZLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogcHJpbWFyeVgsXG4gICAgICAgIG9yaWdpblk6IHByaW1hcnlZLFxuICAgICAgICBvdmVybGF5WDogcHJpbWFyeVgsXG4gICAgICAgIG92ZXJsYXlZOiBzZWNvbmRhcnlZLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogc2Vjb25kYXJ5WCxcbiAgICAgICAgb3JpZ2luWTogc2Vjb25kYXJ5WSxcbiAgICAgICAgb3ZlcmxheVg6IHNlY29uZGFyeVgsXG4gICAgICAgIG92ZXJsYXlZOiBwcmltYXJ5WSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6IHNlY29uZGFyeVgsXG4gICAgICAgIG9yaWdpblk6IHByaW1hcnlZLFxuICAgICAgICBvdmVybGF5WDogc2Vjb25kYXJ5WCxcbiAgICAgICAgb3ZlcmxheVk6IHNlY29uZGFyeVksXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG5cbiAgLyoqIEdldHMgYW4gb2JzZXJ2YWJsZSB0aGF0IHdpbGwgZW1pdCB3aGVuIHRoZSBvdmVybGF5IGlzIHN1cHBvc2VkIHRvIGJlIGNsb3NlZC4gKi9cbiAgcHJpdmF0ZSBfZ2V0Q2xvc2VTdHJlYW0ob3ZlcmxheVJlZjogT3ZlcmxheVJlZikge1xuICAgIHJldHVybiBtZXJnZShcbiAgICAgIG92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLFxuICAgICAgb3ZlcmxheVJlZi5kZXRhY2htZW50cygpLFxuICAgICAgb3ZlcmxheVJlZi5rZXlkb3duRXZlbnRzKCkucGlwZShcbiAgICAgICAgZmlsdGVyKGV2ZW50ID0+IHtcbiAgICAgICAgICAvLyBDbG9zaW5nIG9uIGFsdCArIHVwIGlzIG9ubHkgdmFsaWQgd2hlbiB0aGVyZSdzIGFuIGlucHV0IGFzc29jaWF0ZWQgd2l0aCB0aGUgY29sb3JwaWNrZXIuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChldmVudC5rZXlDb2RlID09PSBFU0NBUEUgJiYgIWhhc01vZGlmaWVyS2V5KGV2ZW50KSkgfHxcbiAgICAgICAgICAgICh0aGlzLnBpY2tlcklucHV0ICYmIGhhc01vZGlmaWVyS2V5KGV2ZW50LCAnYWx0S2V5JykgJiYgZXZlbnQua2V5Q29kZSA9PT0gVVBfQVJST1cpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG59XG4iLCI8bmctdGVtcGxhdGUgW25nSWZdPVwicGlja2VyLmNvbnRlbnRcIiBbbmdJZkVsc2VdPVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicGlja2VyLmNvbnRlbnRcIj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2RlZmF1bHQ+XG4gIDxjb2xvci1jaHJvbWUgW2NvbG9yXT1cInBpY2tlci5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgKG9uQ2hhbmdlQ29tcGxldGUpPVwicGlja2VyLnNlbGVjdChnZXRDb2xvclN0cmluZygkZXZlbnQpKVwiPlxuICA8L2NvbG9yLWNocm9tZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -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 { FLEX_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 flexbox-based cdk-table.
17
+ * Individual columns must be annotated specifically.
18
+ */
19
+ class CdkColumnResizeFlex 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: CdkColumnResizeFlex, 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: CdkColumnResizeFlex, selector: "cdk-table[columnResize]", providers: [
31
+ ...FLEX_PROVIDERS,
32
+ { provide: ColumnResize, useExisting: CdkColumnResizeFlex },
33
+ ], usesInheritance: true, ngImport: i0 }); }
34
+ }
35
+ export { CdkColumnResizeFlex };
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.3", ngImport: i0, type: CdkColumnResizeFlex, decorators: [{
37
+ type: Directive,
38
+ args: [{
39
+ selector: 'cdk-table[columnResize]',
40
+ providers: [
41
+ ...FLEX_PROVIDERS,
42
+ { provide: ColumnResize, useExisting: CdkColumnResizeFlex },
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXJlc2l6ZS1mbGV4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9jb2x1bW4tcmVzaXplL2NvbHVtbi1yZXNpemUtZGlyZWN0aXZlcy9jb2x1bW4tcmVzaXplLWZsZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFHNUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRzlDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxhQUFhLENBQUM7Ozs7O0FBRTNDOzs7R0FHRztBQUNILE1BT2EsbUJBQW9CLFNBQVEsWUFBWTtJQUNuRCxZQUNhLG9CQUEwQyxFQUMxQyxVQUFtQyxFQUN6QixlQUF5QyxFQUN6QyxNQUFjLEVBQ2QsUUFBb0MsRUFDcEMsS0FBd0I7UUFDN0MsS0FBSyxFQUFFLENBQUM7UUFORyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ3pCLG9CQUFlLEdBQWYsZUFBZSxDQUEwQjtRQUN6QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBNEI7UUFDcEMsVUFBSyxHQUFMLEtBQUssQ0FBbUI7SUFFL0MsQ0FBQztpSUFUVSxtQkFBbUI7cUhBQW5CLG1CQUFtQixrREFMbkI7WUFDVCxHQUFHLGNBQWM7WUFDakIsRUFBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBQztTQUMxRDs7U0FFVSxtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFQL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxTQUFTLEVBQUU7d0JBQ1QsR0FBRyxjQUFjO3dCQUNqQixFQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxxQkFBcUIsRUFBQztxQkFDMUQ7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Nka1RhYmxlfSBmcm9tICdAYW5ndWxhci9jZGsvdGFibGUnO1xuXG5pbXBvcnQge0NvbHVtblJlc2l6ZX0gZnJvbSAnLi4vY29sdW1uLXJlc2l6ZSc7XG5pbXBvcnQge0NvbHVtblJlc2l6ZU5vdGlmaWVyLCBDb2x1bW5SZXNpemVOb3RpZmllclNvdXJjZX0gZnJvbSAnLi4vY29sdW1uLXJlc2l6ZS1ub3RpZmllcic7XG5pbXBvcnQge0hlYWRlclJvd0V2ZW50RGlzcGF0Y2hlcn0gZnJvbSAnLi4vZXZlbnQtZGlzcGF0Y2hlcic7XG5pbXBvcnQge0ZMRVhfUFJPVklERVJTfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbi8qKlxuICogRXhwbGljaXRseSBlbmFibGVzIGNvbHVtbiByZXNpemluZyBmb3IgYSBmbGV4Ym94LWJhc2VkIGNkay10YWJsZS5cbiAqIEluZGl2aWR1YWwgY29sdW1ucyBtdXN0IGJlIGFubm90YXRlZCBzcGVjaWZpY2FsbHkuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2Nkay10YWJsZVtjb2x1bW5SZXNpemVdJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgLi4uRkxFWF9QUk9WSURFUlMsXG4gICAge3Byb3ZpZGU6IENvbHVtblJlc2l6ZSwgdXNlRXhpc3Rpbmc6IENka0NvbHVtblJlc2l6ZUZsZXh9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDZGtDb2x1bW5SZXNpemVGbGV4IGV4dGVuZHMgQ29sdW1uUmVzaXplIHtcbiAgY29uc3RydWN0b3IoXG4gICAgICByZWFkb25seSBjb2x1bW5SZXNpemVOb3RpZmllcjogQ29sdW1uUmVzaXplTm90aWZpZXIsXG4gICAgICByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgIHByb3RlY3RlZCByZWFkb25seSBldmVudERpc3BhdGNoZXI6IEhlYWRlclJvd0V2ZW50RGlzcGF0Y2hlcixcbiAgICAgIHByb3RlY3RlZCByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgIHByb3RlY3RlZCByZWFkb25seSBub3RpZmllcjogQ29sdW1uUmVzaXplTm90aWZpZXJTb3VyY2UsXG4gICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFibGU6IENka1RhYmxlPHVua25vd24+KSB7XG4gICAgc3VwZXIoKTtcbiAgfVxufVxuIl19