@ng-matero/extensions 12.5.3 → 13.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (559) hide show
  1. package/README.md +2 -16
  2. package/_all-color.scss +1 -1
  3. package/_all-theme.scss +2 -0
  4. package/_index.scss +3 -1
  5. package/_theming.scss +3 -1
  6. package/alert/_alert-theme.scss +2 -2
  7. package/alert/alert.component.d.ts +3 -0
  8. package/alert/alert.module.d.ts +6 -0
  9. package/alert/mtxAlert.d.ts +1 -0
  10. package/alert/package.json +5 -6
  11. package/button/button-loading.directive.d.ts +3 -0
  12. package/button/button.module.d.ts +8 -0
  13. package/button/mtxButton.d.ts +1 -0
  14. package/button/package.json +5 -6
  15. package/checkbox-group/checkbox-group.component.d.ts +3 -0
  16. package/checkbox-group/checkbox-group.module.d.ts +9 -0
  17. package/checkbox-group/mtxCheckboxGroup.d.ts +1 -0
  18. package/checkbox-group/package.json +5 -6
  19. package/colorpicker/_colorpicker-theme.import.scss +2 -0
  20. package/colorpicker/_colorpicker-theme.scss +43 -0
  21. package/colorpicker/colorpicker-animations.d.ts +8 -0
  22. package/colorpicker/colorpicker-content.scss +4 -0
  23. package/colorpicker/colorpicker-input.d.ts +92 -0
  24. package/colorpicker/colorpicker-module.d.ts +15 -0
  25. package/colorpicker/colorpicker-toggle.d.ts +38 -0
  26. package/colorpicker/colorpicker-toggle.scss +23 -0
  27. package/colorpicker/colorpicker.d.ts +131 -0
  28. package/{extensions.d.ts → colorpicker/mtxColorpicker.d.ts} +1 -0
  29. package/colorpicker/package.json +10 -0
  30. package/colorpicker/public-api.d.ts +5 -0
  31. package/column-resize/column-resize-directives/column-resize-flex.d.ts +3 -0
  32. package/column-resize/column-resize-directives/column-resize.d.ts +3 -0
  33. package/column-resize/column-resize-module.d.ts +6 -7
  34. package/column-resize/column-resize-notifier.d.ts +5 -7
  35. package/column-resize/column-resize.d.ts +3 -0
  36. package/column-resize/column-size-store.d.ts +3 -7
  37. package/column-resize/event-dispatcher.d.ts +3 -0
  38. package/column-resize/mtxColumnResize.d.ts +1 -0
  39. package/column-resize/overlay-handle.d.ts +3 -0
  40. package/column-resize/package.json +5 -6
  41. package/column-resize/resizable.d.ts +3 -0
  42. package/column-resize/resize-strategy.d.ts +7 -0
  43. package/core/datetime/datetime.module.d.ts +8 -0
  44. package/core/datetime/native-datetime-adapter.d.ts +3 -0
  45. package/core/density/private/_compatibility.scss +74 -0
  46. package/core/mtxCore.d.ts +1 -0
  47. package/core/package.json +5 -6
  48. package/{pipes/public-api.d.ts → core/pipes/index.d.ts} +0 -0
  49. package/core/pipes/pipes.module.d.ts +8 -0
  50. package/{pipes → core/pipes}/to-observable.pipe.d.ts +3 -0
  51. package/core/public-api.d.ts +1 -0
  52. package/core/style/_elevation.scss +197 -0
  53. package/core/style/_private.scss +41 -0
  54. package/core/style/_variables.scss +44 -0
  55. package/core/style/_vendor-prefixes.scss +60 -0
  56. package/core/theming/_palette.scss +746 -0
  57. package/core/theming/_theming.scss +430 -0
  58. package/core/typography/_typography-utils.scss +101 -0
  59. package/core/typography/_typography.scss +273 -0
  60. package/datetimepicker/_datetimepicker-theme.scss +17 -5
  61. package/datetimepicker/calendar-body.d.ts +3 -0
  62. package/datetimepicker/calendar-body.scss +5 -4
  63. package/datetimepicker/calendar.d.ts +6 -11
  64. package/datetimepicker/clock.d.ts +13 -9
  65. package/datetimepicker/datetimepicker-animations.d.ts +7 -5
  66. package/datetimepicker/datetimepicker-input.d.ts +7 -2
  67. package/datetimepicker/datetimepicker-module.d.ts +20 -0
  68. package/datetimepicker/datetimepicker-toggle.d.ts +20 -2
  69. package/datetimepicker/datetimepicker-toggle.scss +23 -0
  70. package/datetimepicker/datetimepicker-types.d.ts +1 -0
  71. package/datetimepicker/datetimepicker.d.ts +73 -25
  72. package/datetimepicker/month-view.d.ts +7 -4
  73. package/datetimepicker/mtxDatetimepicker.d.ts +1 -2
  74. package/datetimepicker/multi-year-view.d.ts +7 -4
  75. package/datetimepicker/package.json +5 -6
  76. package/datetimepicker/public-api.d.ts +4 -1
  77. package/datetimepicker/year-view.d.ts +7 -4
  78. package/dialog/{dialog.config.d.ts → dialog-config.d.ts} +0 -0
  79. package/dialog/dialog.component.d.ts +4 -1
  80. package/dialog/dialog.d.ts +4 -1
  81. package/dialog/dialog.module.d.ts +10 -0
  82. package/dialog/mtxDialog.d.ts +1 -0
  83. package/dialog/package.json +5 -6
  84. package/dialog/public-api.d.ts +2 -2
  85. package/esm2020/alert/alert.component.mjs +52 -0
  86. package/esm2020/alert/alert.module.mjs +18 -0
  87. package/{esm2015/alert/mtxAlert.js → esm2020/alert/mtxAlert.mjs} +0 -0
  88. package/{esm2015/alert/public-api.js → esm2020/alert/public-api.mjs} +0 -0
  89. package/esm2020/button/button-loading.directive.mjs +79 -0
  90. package/esm2020/button/button.module.mjs +20 -0
  91. package/{esm2015/button/mtxButton.js → esm2020/button/mtxButton.mjs} +0 -0
  92. package/{esm2015/button/public-api.js → esm2020/button/public-api.mjs} +0 -0
  93. package/esm2020/checkbox-group/checkbox-group.component.mjs +234 -0
  94. package/{esm2015/checkbox-group/checkbox-group.interface.js → esm2020/checkbox-group/checkbox-group.interface.mjs} +0 -0
  95. package/esm2020/checkbox-group/checkbox-group.module.mjs +21 -0
  96. package/{esm2015/checkbox-group/mtxCheckboxGroup.js → esm2020/checkbox-group/mtxCheckboxGroup.mjs} +0 -0
  97. package/{esm2015/checkbox-group/public-api.js → esm2020/checkbox-group/public-api.mjs} +0 -0
  98. package/esm2020/colorpicker/colorpicker-animations.mjs +16 -0
  99. package/esm2020/colorpicker/colorpicker-input.mjs +228 -0
  100. package/esm2020/colorpicker/colorpicker-module.mjs +65 -0
  101. package/esm2020/colorpicker/colorpicker-toggle.mjs +90 -0
  102. package/esm2020/colorpicker/colorpicker.mjs +363 -0
  103. package/esm2020/colorpicker/mtxColorpicker.mjs +5 -0
  104. package/esm2020/colorpicker/public-api.mjs +6 -0
  105. package/esm2020/column-resize/column-resize-directives/column-resize-flex.mjs +45 -0
  106. package/esm2020/column-resize/column-resize-directives/column-resize.mjs +45 -0
  107. package/{esm2015/column-resize/column-resize-directives/constants.js → esm2020/column-resize/column-resize-directives/constants.mjs} +0 -0
  108. package/esm2020/column-resize/column-resize-module.mjs +28 -0
  109. package/esm2020/column-resize/column-resize-notifier.mjs +47 -0
  110. package/esm2020/column-resize/column-resize.mjs +82 -0
  111. package/esm2020/column-resize/column-size-store.mjs +20 -0
  112. package/esm2020/column-resize/event-dispatcher.mjs +67 -0
  113. package/{esm2015/column-resize/mtxColumnResize.js → esm2020/column-resize/mtxColumnResize.mjs} +0 -0
  114. package/esm2020/column-resize/overlay-handle.mjs +146 -0
  115. package/{esm2015/column-resize/polyfill.js → esm2020/column-resize/polyfill.mjs} +0 -0
  116. package/{esm2015/column-resize/public-api.js → esm2020/column-resize/public-api.mjs} +0 -0
  117. package/esm2020/column-resize/resizable.mjs +199 -0
  118. package/{esm2015/column-resize/resize-ref.js → esm2020/column-resize/resize-ref.mjs} +0 -0
  119. package/esm2020/column-resize/resize-strategy.mjs +232 -0
  120. package/{esm2015/column-resize/selectors.js → esm2020/column-resize/selectors.mjs} +0 -0
  121. package/{esm2015/core/datetime/datetime-adapter.js → esm2020/core/datetime/datetime-adapter.mjs} +0 -0
  122. package/{esm2015/core/datetime/datetime-formats.js → esm2020/core/datetime/datetime-formats.mjs} +0 -0
  123. package/esm2020/core/datetime/datetime.module.mjs +42 -0
  124. package/{esm2015/core/datetime/index.js → esm2020/core/datetime/index.mjs} +0 -0
  125. package/esm2020/core/datetime/native-datetime-adapter.mjs +138 -0
  126. package/{esm2015/core/datetime/native-datetime-formats.js → esm2020/core/datetime/native-datetime-formats.mjs} +0 -0
  127. package/{esm2015/core/mtxCore.js → esm2020/core/mtxCore.mjs} +0 -0
  128. package/esm2020/core/pipes/index.mjs +3 -0
  129. package/esm2020/core/pipes/pipes.module.mjs +18 -0
  130. package/esm2020/core/pipes/to-observable.pipe.mjs +15 -0
  131. package/{esm2015/core/public-api.js → esm2020/core/public-api.mjs} +2 -1
  132. package/esm2020/datetimepicker/calendar-body.mjs +78 -0
  133. package/esm2020/datetimepicker/calendar.mjs +618 -0
  134. package/esm2020/datetimepicker/clock.mjs +277 -0
  135. package/esm2020/datetimepicker/datetimepicker-animations.mjs +44 -0
  136. package/{esm2015/datetimepicker/datetimepicker-errors.js → esm2020/datetimepicker/datetimepicker-errors.mjs} +0 -0
  137. package/{esm2015/datetimepicker/datetimepicker-filtertype.js → esm2020/datetimepicker/datetimepicker-filtertype.mjs} +0 -0
  138. package/esm2020/datetimepicker/datetimepicker-input.mjs +344 -0
  139. package/esm2020/datetimepicker/datetimepicker-module.mjs +75 -0
  140. package/esm2020/datetimepicker/datetimepicker-toggle.mjs +94 -0
  141. package/esm2020/datetimepicker/datetimepicker-types.mjs +2 -0
  142. package/esm2020/datetimepicker/datetimepicker.mjs +492 -0
  143. package/esm2020/datetimepicker/month-view.mjs +148 -0
  144. package/esm2020/datetimepicker/mtxDatetimepicker.mjs +5 -0
  145. package/esm2020/datetimepicker/multi-year-view.mjs +214 -0
  146. package/esm2020/datetimepicker/public-api.mjs +14 -0
  147. package/esm2020/datetimepicker/year-view.mjs +138 -0
  148. package/{esm2015/dialog/dialog.config.js → esm2020/dialog/dialog-config.mjs} +1 -1
  149. package/esm2020/dialog/dialog.component.mjs +33 -0
  150. package/esm2020/dialog/dialog.mjs +74 -0
  151. package/esm2020/dialog/dialog.module.mjs +24 -0
  152. package/{esm2015/dialog/mtxDialog.js → esm2020/dialog/mtxDialog.mjs} +0 -0
  153. package/esm2020/dialog/public-api.mjs +5 -0
  154. package/esm2020/form-group/form-group.component.mjs +37 -0
  155. package/esm2020/form-group/form-group.module.mjs +18 -0
  156. package/{esm2015/form-group/mtxFormGroup.js → esm2020/form-group/mtxFormGroup.mjs} +0 -0
  157. package/{esm2015/form-group/public-api.js → esm2020/form-group/public-api.mjs} +0 -0
  158. package/esm2020/grid/cell.component.mjs +108 -0
  159. package/esm2020/grid/column-menu.component.mjs +95 -0
  160. package/esm2020/grid/column-resize/column-resize-directives/column-resize-flex.mjs +37 -0
  161. package/esm2020/grid/column-resize/column-resize-directives/column-resize.mjs +37 -0
  162. package/{esm2015/grid/column-resize/column-resize-directives/common.js → esm2020/grid/column-resize/column-resize-directives/common.mjs} +0 -0
  163. package/esm2020/grid/column-resize/column-resize-module.mjs +42 -0
  164. package/esm2020/grid/column-resize/overlay-handle.mjs +60 -0
  165. package/{esm2015/grid/column-resize/resizable-directives/common.js → esm2020/grid/column-resize/resizable-directives/common.mjs} +0 -0
  166. package/esm2020/grid/column-resize/resizable-directives/resizable.mjs +62 -0
  167. package/esm2020/grid/column-resize/resize-strategy.mjs +42 -0
  168. package/esm2020/grid/expansion-toggle.directive.mjs +64 -0
  169. package/esm2020/grid/grid.component.mjs +556 -0
  170. package/{esm2015/grid/grid.interface.js → esm2020/grid/grid.interface.mjs} +0 -0
  171. package/esm2020/grid/grid.module.mjs +117 -0
  172. package/esm2020/grid/grid.service.mjs +44 -0
  173. package/{esm2015/grid/mtxGrid.js → esm2020/grid/mtxGrid.mjs} +0 -0
  174. package/esm2020/grid/public-api.mjs +16 -0
  175. package/esm2020/loader/loader.component.mjs +63 -0
  176. package/esm2020/loader/loader.module.mjs +20 -0
  177. package/{esm2015/loader/mtxLoader.js → esm2020/loader/mtxLoader.mjs} +0 -0
  178. package/{esm2015/loader/public-api.js → esm2020/loader/public-api.mjs} +0 -0
  179. package/esm2020/ng-matero-extensions.mjs +5 -0
  180. package/{esm2015/popover/mtxPopover.js → esm2020/popover/mtxPopover.mjs} +0 -0
  181. package/{esm2015/popover/popover-animations.js → esm2020/popover/popover-animations.mjs} +0 -0
  182. package/{esm2015/popover/popover-errors.js → esm2020/popover/popover-errors.mjs} +0 -0
  183. package/{esm2015/popover/popover-interfaces.js → esm2020/popover/popover-interfaces.mjs} +0 -0
  184. package/esm2020/popover/popover-module.mjs +22 -0
  185. package/esm2020/popover/popover-target.mjs +17 -0
  186. package/esm2020/popover/popover-trigger.mjs +441 -0
  187. package/{esm2015/popover/popover-types.js → esm2020/popover/popover-types.mjs} +0 -0
  188. package/esm2020/popover/popover.mjs +334 -0
  189. package/{esm2015/popover/public-api.js → esm2020/popover/public-api.mjs} +0 -0
  190. package/{esm2015/progress/mtxProgress.js → esm2020/progress/mtxProgress.mjs} +0 -0
  191. package/esm2020/progress/progress.component.mjs +55 -0
  192. package/esm2020/progress/progress.module.mjs +18 -0
  193. package/{esm2015/progress/public-api.js → esm2020/progress/public-api.mjs} +0 -0
  194. package/esm2020/public-api.mjs +5 -0
  195. package/{esm2015/select/mtxSelect.js → esm2020/select/mtxSelect.mjs} +0 -0
  196. package/{esm2015/select/option.component.js → esm2020/select/option.component.mjs} +18 -26
  197. package/{esm2015/select/public-api.js → esm2020/select/public-api.mjs} +0 -0
  198. package/esm2020/select/select.component.mjs +458 -0
  199. package/esm2020/select/select.module.mjs +74 -0
  200. package/esm2020/select/templates.directive.mjs +124 -0
  201. package/{esm2015/slider/mtxSlider.js → esm2020/slider/mtxSlider.mjs} +0 -0
  202. package/{esm2015/slider/public-api.js → esm2020/slider/public-api.mjs} +0 -0
  203. package/esm2020/slider/slider-module.mjs +19 -0
  204. package/esm2020/slider/slider.mjs +1115 -0
  205. package/{esm2015/split/interface.js → esm2020/split/interface.mjs} +0 -0
  206. package/{esm2015/split/mtxSplit.js → esm2020/split/mtxSplit.mjs} +0 -0
  207. package/{esm2015/split/public-api.js → esm2020/split/public-api.mjs} +0 -0
  208. package/esm2020/split/split-pane.directive.mjs +149 -0
  209. package/esm2020/split/split.component.mjs +619 -0
  210. package/esm2020/split/split.module.mjs +19 -0
  211. package/esm2020/split/utils.mjs +222 -0
  212. package/{esm2015/text3d/mtxText3d.js → esm2020/text3d/mtxText3d.mjs} +0 -0
  213. package/{esm2015/text3d/public-api.js → esm2020/text3d/public-api.mjs} +0 -0
  214. package/esm2020/text3d/text3d.component.mjs +45 -0
  215. package/esm2020/text3d/text3d.module.mjs +18 -0
  216. package/{esm2015/tooltip/mtxTooltip.js → esm2020/tooltip/mtxTooltip.mjs} +0 -0
  217. package/{esm2015/tooltip/public-api.js → esm2020/tooltip/public-api.mjs} +0 -0
  218. package/{esm2015/tooltip/tooltip-animations.js → esm2020/tooltip/tooltip-animations.mjs} +0 -0
  219. package/esm2020/tooltip/tooltip-module.mjs +23 -0
  220. package/esm2020/tooltip/tooltip.mjs +674 -0
  221. package/fesm2015/mtxAlert.mjs +74 -0
  222. package/fesm2015/mtxAlert.mjs.map +1 -0
  223. package/fesm2015/mtxButton.mjs +102 -0
  224. package/fesm2015/mtxButton.mjs.map +1 -0
  225. package/fesm2015/mtxCheckboxGroup.mjs +257 -0
  226. package/fesm2015/mtxCheckboxGroup.mjs.map +1 -0
  227. package/fesm2015/mtxColorpicker.mjs +754 -0
  228. package/fesm2015/mtxColorpicker.mjs.map +1 -0
  229. package/fesm2015/{mtxColumnResize.js → mtxColumnResize.mjs} +108 -145
  230. package/fesm2015/mtxColumnResize.mjs.map +1 -0
  231. package/fesm2015/mtxCore.mjs +362 -0
  232. package/fesm2015/mtxCore.mjs.map +1 -0
  233. package/fesm2015/mtxDatetimepicker.mjs +2474 -0
  234. package/fesm2015/mtxDatetimepicker.mjs.map +1 -0
  235. package/fesm2015/mtxDialog.mjs +128 -0
  236. package/fesm2015/mtxDialog.mjs.map +1 -0
  237. package/fesm2015/mtxFormGroup.mjs +59 -0
  238. package/fesm2015/mtxFormGroup.mjs.map +1 -0
  239. package/fesm2015/mtxGrid.mjs +1271 -0
  240. package/fesm2015/mtxGrid.mjs.map +1 -0
  241. package/fesm2015/mtxLoader.mjs +87 -0
  242. package/fesm2015/mtxLoader.mjs.map +1 -0
  243. package/fesm2015/mtxPopover.mjs +865 -0
  244. package/fesm2015/mtxPopover.mjs.map +1 -0
  245. package/fesm2015/mtxProgress.mjs +77 -0
  246. package/fesm2015/mtxProgress.mjs.map +1 -0
  247. package/fesm2015/mtxSelect.mjs +712 -0
  248. package/fesm2015/mtxSelect.mjs.map +1 -0
  249. package/fesm2015/mtxSlider.mjs +1139 -0
  250. package/fesm2015/mtxSlider.mjs.map +1 -0
  251. package/fesm2015/{mtxSplit.js → mtxSplit.mjs} +85 -98
  252. package/fesm2015/mtxSplit.mjs.map +1 -0
  253. package/fesm2015/mtxText3d.mjs +67 -0
  254. package/fesm2015/mtxText3d.mjs.map +1 -0
  255. package/fesm2015/{mtxTooltip.js → mtxTooltip.mjs} +85 -86
  256. package/fesm2015/mtxTooltip.mjs.map +1 -0
  257. package/fesm2015/ng-matero-extensions.mjs +9 -0
  258. package/fesm2015/ng-matero-extensions.mjs.map +1 -0
  259. package/fesm2020/mtxAlert.mjs +74 -0
  260. package/fesm2020/mtxAlert.mjs.map +1 -0
  261. package/fesm2020/mtxButton.mjs +102 -0
  262. package/fesm2020/mtxButton.mjs.map +1 -0
  263. package/fesm2020/mtxCheckboxGroup.mjs +257 -0
  264. package/fesm2020/mtxCheckboxGroup.mjs.map +1 -0
  265. package/fesm2020/mtxColorpicker.mjs +750 -0
  266. package/fesm2020/mtxColorpicker.mjs.map +1 -0
  267. package/fesm2020/mtxColumnResize.mjs +953 -0
  268. package/fesm2020/mtxColumnResize.mjs.map +1 -0
  269. package/{fesm2015/mtxCore.js → fesm2020/mtxCore.mjs} +75 -42
  270. package/fesm2020/mtxCore.mjs.map +1 -0
  271. package/fesm2020/mtxDatetimepicker.mjs +2462 -0
  272. package/fesm2020/mtxDatetimepicker.mjs.map +1 -0
  273. package/fesm2020/mtxDialog.mjs +129 -0
  274. package/fesm2020/mtxDialog.mjs.map +1 -0
  275. package/fesm2020/mtxFormGroup.mjs +59 -0
  276. package/fesm2020/mtxFormGroup.mjs.map +1 -0
  277. package/fesm2020/mtxGrid.mjs +1259 -0
  278. package/fesm2020/mtxGrid.mjs.map +1 -0
  279. package/fesm2020/mtxLoader.mjs +87 -0
  280. package/fesm2020/mtxLoader.mjs.map +1 -0
  281. package/{fesm2015/mtxPopover.js → fesm2020/mtxPopover.mjs} +120 -111
  282. package/fesm2020/mtxPopover.mjs.map +1 -0
  283. package/fesm2020/mtxProgress.mjs +77 -0
  284. package/fesm2020/mtxProgress.mjs.map +1 -0
  285. package/fesm2020/mtxSelect.mjs +709 -0
  286. package/fesm2020/mtxSelect.mjs.map +1 -0
  287. package/{fesm2015/mtxSlider.js → fesm2020/mtxSlider.mjs} +97 -94
  288. package/fesm2020/mtxSlider.mjs.map +1 -0
  289. package/fesm2020/mtxSplit.mjs +1007 -0
  290. package/fesm2020/mtxSplit.mjs.map +1 -0
  291. package/fesm2020/mtxText3d.mjs +67 -0
  292. package/fesm2020/mtxText3d.mjs.map +1 -0
  293. package/fesm2020/mtxTooltip.mjs +718 -0
  294. package/fesm2020/mtxTooltip.mjs.map +1 -0
  295. package/fesm2020/ng-matero-extensions.mjs +9 -0
  296. package/fesm2020/ng-matero-extensions.mjs.map +1 -0
  297. package/form-group/_form-group-theme.scss +1 -1
  298. package/form-group/form-group.component.d.ts +5 -4
  299. package/form-group/form-group.module.d.ts +6 -0
  300. package/form-group/mtxFormGroup.d.ts +1 -0
  301. package/form-group/package.json +5 -6
  302. package/grid/_grid-theme.scss +1 -1
  303. package/grid/cell.component.d.ts +3 -0
  304. package/grid/column-menu.component.d.ts +3 -0
  305. package/grid/column-menu.component.scss +1 -1
  306. package/grid/column-resize/_column-resize.scss +3 -3
  307. package/grid/column-resize/column-resize-directives/column-resize-flex.d.ts +3 -0
  308. package/grid/column-resize/column-resize-directives/column-resize.d.ts +3 -0
  309. package/grid/column-resize/column-resize-module.d.ts +12 -7
  310. package/grid/column-resize/overlay-handle.d.ts +3 -0
  311. package/grid/column-resize/resizable-directives/resizable.d.ts +3 -0
  312. package/grid/column-resize/resize-strategy.d.ts +3 -0
  313. package/grid/expansion-toggle.directive.d.ts +3 -0
  314. package/grid/grid.component.d.ts +20 -1
  315. package/grid/grid.module.d.ts +26 -0
  316. package/grid/grid.service.d.ts +3 -0
  317. package/grid/mtxGrid.d.ts +1 -0
  318. package/grid/package.json +5 -6
  319. package/grid/public-api.d.ts +0 -1
  320. package/loader/_loader-theme.scss +1 -1
  321. package/loader/loader.component.d.ts +7 -1
  322. package/loader/loader.module.d.ts +8 -0
  323. package/loader/mtxLoader.d.ts +1 -0
  324. package/loader/package.json +5 -6
  325. package/{color-picker/mtxColorPicker.d.ts → ng-matero-extensions.d.ts} +1 -0
  326. package/package.json +178 -15
  327. package/popover/_popover-theme.scss +1 -1
  328. package/popover/mtxPopover.d.ts +1 -0
  329. package/popover/package.json +5 -6
  330. package/popover/popover-module.d.ts +10 -0
  331. package/popover/popover-target.d.ts +3 -0
  332. package/popover/popover-trigger.d.ts +3 -0
  333. package/popover/popover.d.ts +3 -0
  334. package/progress/_progress-theme.scss +2 -2
  335. package/progress/mtxProgress.d.ts +1 -0
  336. package/progress/package.json +5 -6
  337. package/progress/progress.component.d.ts +3 -0
  338. package/progress/progress.module.d.ts +6 -0
  339. package/public-api.d.ts +2 -19
  340. package/select/_select-theme.scss +1 -1
  341. package/select/mtxSelect.d.ts +1 -0
  342. package/select/option.component.d.ts +3 -0
  343. package/select/package.json +5 -6
  344. package/select/select.component.d.ts +3 -0
  345. package/select/select.component.scss +1 -1
  346. package/select/select.module.d.ts +10 -0
  347. package/select/templates.directive.d.ts +23 -0
  348. package/slider/_slider-theme.scss +4 -4
  349. package/slider/mtxSlider.d.ts +1 -0
  350. package/slider/package.json +5 -6
  351. package/slider/slider-module.d.ts +7 -0
  352. package/slider/slider.d.ts +4 -1
  353. package/slider/slider.scss +7 -7
  354. package/split/_split-theme.scss +10 -3
  355. package/split/mtxSplit.d.ts +1 -0
  356. package/split/package.json +5 -6
  357. package/split/split-pane.directive.d.ts +3 -0
  358. package/split/split.component.d.ts +12 -1
  359. package/split/split.module.d.ts +7 -0
  360. package/text3d/_text3d-theme.scss +2 -2
  361. package/text3d/mtxText3d.d.ts +1 -0
  362. package/text3d/package.json +5 -6
  363. package/text3d/text3d.component.d.ts +3 -1
  364. package/text3d/text3d.module.d.ts +6 -0
  365. package/tooltip/_tooltip-theme.scss +3 -3
  366. package/tooltip/mtxTooltip.d.ts +1 -0
  367. package/tooltip/package.json +5 -6
  368. package/tooltip/tooltip-module.d.ts +10 -0
  369. package/tooltip/tooltip.d.ts +5 -0
  370. package/tooltip/tooltip.scss +1 -1
  371. package/alert/mtxAlert.metadata.json +0 -1
  372. package/bundles/extensions.umd.js +0 -164
  373. package/bundles/extensions.umd.js.map +0 -1
  374. package/bundles/mtxAlert.umd.js +0 -101
  375. package/bundles/mtxAlert.umd.js.map +0 -1
  376. package/bundles/mtxButton.umd.js +0 -119
  377. package/bundles/mtxButton.umd.js.map +0 -1
  378. package/bundles/mtxCheckboxGroup.umd.js +0 -284
  379. package/bundles/mtxCheckboxGroup.umd.js.map +0 -1
  380. package/bundles/mtxColorPicker.umd.js +0 -337
  381. package/bundles/mtxColorPicker.umd.js.map +0 -1
  382. package/bundles/mtxColumnResize.umd.js +0 -1339
  383. package/bundles/mtxColumnResize.umd.js.map +0 -1
  384. package/bundles/mtxCore.umd.js +0 -670
  385. package/bundles/mtxCore.umd.js.map +0 -1
  386. package/bundles/mtxDatetimepicker.umd.js +0 -2590
  387. package/bundles/mtxDatetimepicker.umd.js.map +0 -1
  388. package/bundles/mtxDialog.umd.js +0 -160
  389. package/bundles/mtxDialog.umd.js.map +0 -1
  390. package/bundles/mtxFormGroup.umd.js +0 -80
  391. package/bundles/mtxFormGroup.umd.js.map +0 -1
  392. package/bundles/mtxGrid.umd.js +0 -1581
  393. package/bundles/mtxGrid.umd.js.map +0 -1
  394. package/bundles/mtxLoader.umd.js +0 -104
  395. package/bundles/mtxLoader.umd.js.map +0 -1
  396. package/bundles/mtxPipes.umd.js +0 -44
  397. package/bundles/mtxPipes.umd.js.map +0 -1
  398. package/bundles/mtxPopover.umd.js +0 -1260
  399. package/bundles/mtxPopover.umd.js.map +0 -1
  400. package/bundles/mtxProgress.umd.js +0 -92
  401. package/bundles/mtxProgress.umd.js.map +0 -1
  402. package/bundles/mtxSelect.umd.js +0 -1097
  403. package/bundles/mtxSelect.umd.js.map +0 -1
  404. package/bundles/mtxSlider.umd.js +0 -1551
  405. package/bundles/mtxSlider.umd.js.map +0 -1
  406. package/bundles/mtxSplit.umd.js +0 -1432
  407. package/bundles/mtxSplit.umd.js.map +0 -1
  408. package/bundles/mtxText3d.umd.js +0 -92
  409. package/bundles/mtxText3d.umd.js.map +0 -1
  410. package/bundles/mtxTooltip.umd.js +0 -1081
  411. package/bundles/mtxTooltip.umd.js.map +0 -1
  412. package/button/mtxButton.metadata.json +0 -1
  413. package/checkbox-group/mtxCheckboxGroup.metadata.json +0 -1
  414. package/color-picker/color-picker.component.d.ts +0 -120
  415. package/color-picker/color-picker.module.d.ts +0 -2
  416. package/color-picker/mtxColorPicker.metadata.json +0 -1
  417. package/color-picker/package.json +0 -11
  418. package/color-picker/public-api.d.ts +0 -2
  419. package/column-resize/mtxColumnResize.metadata.json +0 -1
  420. package/core/mtxCore.metadata.json +0 -1
  421. package/datetimepicker/datetimepicker.module.d.ts +0 -2
  422. package/datetimepicker/mtxDatetimepicker.metadata.json +0 -1
  423. package/dialog/mtxDialog.metadata.json +0 -1
  424. package/esm2015/alert/alert.component.js +0 -63
  425. package/esm2015/alert/alert.module.js +0 -14
  426. package/esm2015/button/button-loading.directive.js +0 -89
  427. package/esm2015/button/button.module.js +0 -16
  428. package/esm2015/checkbox-group/checkbox-group.component.js +0 -235
  429. package/esm2015/checkbox-group/checkbox-group.module.js +0 -17
  430. package/esm2015/color-picker/color-picker.component.js +0 -268
  431. package/esm2015/color-picker/color-picker.module.js +0 -26
  432. package/esm2015/color-picker/mtxColorPicker.js +0 -5
  433. package/esm2015/color-picker/public-api.js +0 -3
  434. package/esm2015/column-resize/column-resize-directives/column-resize-flex.js +0 -54
  435. package/esm2015/column-resize/column-resize-directives/column-resize.js +0 -54
  436. package/esm2015/column-resize/column-resize-module.js +0 -24
  437. package/esm2015/column-resize/column-resize-notifier.js +0 -54
  438. package/esm2015/column-resize/column-resize.js +0 -80
  439. package/esm2015/column-resize/column-size-store.js +0 -18
  440. package/esm2015/column-resize/event-dispatcher.js +0 -75
  441. package/esm2015/column-resize/overlay-handle.js +0 -144
  442. package/esm2015/column-resize/resizable.js +0 -197
  443. package/esm2015/column-resize/resize-strategy.js +0 -245
  444. package/esm2015/core/datetime/datetime.module.js +0 -32
  445. package/esm2015/core/datetime/native-datetime-adapter.js +0 -144
  446. package/esm2015/datetimepicker/calendar-body.js +0 -75
  447. package/esm2015/datetimepicker/calendar.js +0 -629
  448. package/esm2015/datetimepicker/clock.js +0 -283
  449. package/esm2015/datetimepicker/datetimepicker-animations.js +0 -30
  450. package/esm2015/datetimepicker/datetimepicker-input.js +0 -333
  451. package/esm2015/datetimepicker/datetimepicker-toggle.js +0 -81
  452. package/esm2015/datetimepicker/datetimepicker.js +0 -411
  453. package/esm2015/datetimepicker/datetimepicker.module.js +0 -49
  454. package/esm2015/datetimepicker/month-view.js +0 -149
  455. package/esm2015/datetimepicker/mtxDatetimepicker.js +0 -7
  456. package/esm2015/datetimepicker/multi-year-view.js +0 -214
  457. package/esm2015/datetimepicker/public-api.js +0 -11
  458. package/esm2015/datetimepicker/year-view.js +0 -140
  459. package/esm2015/dialog/dialog.component.js +0 -40
  460. package/esm2015/dialog/dialog.js +0 -81
  461. package/esm2015/dialog/dialog.module.js +0 -21
  462. package/esm2015/dialog/public-api.js +0 -5
  463. package/esm2015/extensions-experimental.module.js +0 -13
  464. package/esm2015/extensions.js +0 -5
  465. package/esm2015/extensions.module.js +0 -40
  466. package/esm2015/form-group/form-group.component.js +0 -47
  467. package/esm2015/form-group/form-group.module.js +0 -14
  468. package/esm2015/grid/cell-selection.directive.js +0 -62
  469. package/esm2015/grid/cell.component.js +0 -115
  470. package/esm2015/grid/column-menu.component.js +0 -72
  471. package/esm2015/grid/column-resize/column-resize-directives/column-resize-flex.js +0 -47
  472. package/esm2015/grid/column-resize/column-resize-directives/column-resize.js +0 -47
  473. package/esm2015/grid/column-resize/column-resize-module.js +0 -36
  474. package/esm2015/grid/column-resize/overlay-handle.js +0 -68
  475. package/esm2015/grid/column-resize/resizable-directives/resizable.js +0 -75
  476. package/esm2015/grid/column-resize/resize-strategy.js +0 -45
  477. package/esm2015/grid/expansion-toggle.directive.js +0 -62
  478. package/esm2015/grid/grid.component.js +0 -418
  479. package/esm2015/grid/grid.module.js +0 -69
  480. package/esm2015/grid/grid.service.js +0 -50
  481. package/esm2015/grid/public-api.js +0 -17
  482. package/esm2015/loader/loader.component.js +0 -66
  483. package/esm2015/loader/loader.module.js +0 -16
  484. package/esm2015/pipes/mtxPipes.js +0 -5
  485. package/esm2015/pipes/pipes.module.js +0 -14
  486. package/esm2015/pipes/public-api.js +0 -3
  487. package/esm2015/pipes/to-observable.pipe.js +0 -12
  488. package/esm2015/popover/popover-module.js +0 -18
  489. package/esm2015/popover/popover-target.js +0 -24
  490. package/esm2015/popover/popover-trigger.js +0 -434
  491. package/esm2015/popover/popover.js +0 -326
  492. package/esm2015/progress/progress.component.js +0 -54
  493. package/esm2015/progress/progress.module.js +0 -14
  494. package/esm2015/public-api.js +0 -23
  495. package/esm2015/select/select.component.js +0 -380
  496. package/esm2015/select/select.module.js +0 -46
  497. package/esm2015/select/templates.directive.js +0 -211
  498. package/esm2015/slider/slider-module.js +0 -15
  499. package/esm2015/slider/slider.js +0 -1115
  500. package/esm2015/split/split-pane.directive.js +0 -156
  501. package/esm2015/split/split.component.js +0 -622
  502. package/esm2015/split/split.module.js +0 -15
  503. package/esm2015/split/utils.js +0 -227
  504. package/esm2015/text3d/text3d.component.js +0 -53
  505. package/esm2015/text3d/text3d.module.js +0 -14
  506. package/esm2015/tooltip/tooltip-module.js +0 -20
  507. package/esm2015/tooltip/tooltip.js +0 -681
  508. package/extensions-experimental.module.d.ts +0 -2
  509. package/extensions.metadata.json +0 -1
  510. package/extensions.module.d.ts +0 -2
  511. package/fesm2015/extensions.js +0 -80
  512. package/fesm2015/extensions.js.map +0 -1
  513. package/fesm2015/mtxAlert.js +0 -82
  514. package/fesm2015/mtxAlert.js.map +0 -1
  515. package/fesm2015/mtxButton.js +0 -108
  516. package/fesm2015/mtxButton.js.map +0 -1
  517. package/fesm2015/mtxCheckboxGroup.js +0 -255
  518. package/fesm2015/mtxCheckboxGroup.js.map +0 -1
  519. package/fesm2015/mtxColorPicker.js +0 -295
  520. package/fesm2015/mtxColorPicker.js.map +0 -1
  521. package/fesm2015/mtxColumnResize.js.map +0 -1
  522. package/fesm2015/mtxCore.js.map +0 -1
  523. package/fesm2015/mtxDatetimepicker.js +0 -2355
  524. package/fesm2015/mtxDatetimepicker.js.map +0 -1
  525. package/fesm2015/mtxDialog.js +0 -141
  526. package/fesm2015/mtxDialog.js.map +0 -1
  527. package/fesm2015/mtxFormGroup.js +0 -66
  528. package/fesm2015/mtxFormGroup.js.map +0 -1
  529. package/fesm2015/mtxGrid.js +0 -1186
  530. package/fesm2015/mtxGrid.js.map +0 -1
  531. package/fesm2015/mtxLoader.js +0 -87
  532. package/fesm2015/mtxLoader.js.map +0 -1
  533. package/fesm2015/mtxPipes.js +0 -31
  534. package/fesm2015/mtxPipes.js.map +0 -1
  535. package/fesm2015/mtxPopover.js.map +0 -1
  536. package/fesm2015/mtxProgress.js +0 -73
  537. package/fesm2015/mtxProgress.js.map +0 -1
  538. package/fesm2015/mtxSelect.js +0 -700
  539. package/fesm2015/mtxSelect.js.map +0 -1
  540. package/fesm2015/mtxSlider.js.map +0 -1
  541. package/fesm2015/mtxSplit.js.map +0 -1
  542. package/fesm2015/mtxText3d.js +0 -72
  543. package/fesm2015/mtxText3d.js.map +0 -1
  544. package/fesm2015/mtxTooltip.js.map +0 -1
  545. package/form-group/mtxFormGroup.metadata.json +0 -1
  546. package/grid/cell-selection.directive.d.ts +0 -17
  547. package/grid/mtxGrid.metadata.json +0 -1
  548. package/loader/mtxLoader.metadata.json +0 -1
  549. package/pipes/mtxPipes.d.ts +0 -4
  550. package/pipes/mtxPipes.metadata.json +0 -1
  551. package/pipes/package.json +0 -11
  552. package/pipes/pipes.module.d.ts +0 -2
  553. package/popover/mtxPopover.metadata.json +0 -1
  554. package/progress/mtxProgress.metadata.json +0 -1
  555. package/select/mtxSelect.metadata.json +0 -1
  556. package/slider/mtxSlider.metadata.json +0 -1
  557. package/split/mtxSplit.metadata.json +0 -1
  558. package/text3d/mtxText3d.metadata.json +0 -1
  559. package/tooltip/mtxTooltip.metadata.json +0 -1
@@ -0,0 +1,344 @@
1
+ import { Directive, EventEmitter, forwardRef, Inject, Input, Optional, Output, } from '@angular/core';
2
+ import { NG_VALIDATORS, NG_VALUE_ACCESSOR, Validators, } from '@angular/forms';
3
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
4
+ import { DOWN_ARROW } from '@angular/cdk/keycodes';
5
+ import { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';
6
+ import { Subscription } from 'rxjs';
7
+ import { MTX_DATETIME_FORMATS, } from '@ng-matero/extensions/core';
8
+ import { createMissingDateImplError } from './datetimepicker-errors';
9
+ import { MtxDatetimepickerFilterType } from './datetimepicker-filtertype';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@ng-matero/extensions/core";
12
+ import * as i2 from "@angular/material/form-field";
13
+ export const MAT_DATETIMEPICKER_VALUE_ACCESSOR = {
14
+ provide: NG_VALUE_ACCESSOR,
15
+ useExisting: forwardRef(() => MtxDatetimepickerInput),
16
+ multi: true,
17
+ };
18
+ export const MAT_DATETIMEPICKER_VALIDATORS = {
19
+ provide: NG_VALIDATORS,
20
+ useExisting: forwardRef(() => MtxDatetimepickerInput),
21
+ multi: true,
22
+ };
23
+ /**
24
+ * An event used for datetimepicker input and change events. We don't always have access to a native
25
+ * input or change event because the event may have been triggered by the user clicking on the
26
+ * calendar popup. For consistency, we always use MtxDatetimepickerInputEvent instead.
27
+ */
28
+ export class MtxDatetimepickerInputEvent {
29
+ constructor(target, targetElement) {
30
+ this.target = target;
31
+ this.targetElement = targetElement;
32
+ this.value = this.target.value;
33
+ }
34
+ }
35
+ /** Directive used to connect an input to a MtxDatetimepicker. */
36
+ export class MtxDatetimepickerInput {
37
+ constructor(_elementRef, _dateAdapter, _dateFormats, _formField) {
38
+ this._elementRef = _elementRef;
39
+ this._dateAdapter = _dateAdapter;
40
+ this._dateFormats = _dateFormats;
41
+ this._formField = _formField;
42
+ /** Emits when a `change` event is fired on this `<input>`. */
43
+ this.dateChange = new EventEmitter();
44
+ /** Emits when an `input` event is fired on this `<input>`. */
45
+ this.dateInput = new EventEmitter();
46
+ /** Emits when the value changes (either due to user input or programmatic change). */
47
+ this._valueChange = new EventEmitter();
48
+ /** Emits when the disabled state has changed */
49
+ this._disabledChange = new EventEmitter();
50
+ this._datetimepickerSubscription = Subscription.EMPTY;
51
+ this._localeSubscription = Subscription.EMPTY;
52
+ /** Whether the last value set on the input was valid. */
53
+ this._lastValueValid = false;
54
+ this._onTouched = () => { };
55
+ this._cvaOnChange = () => { };
56
+ this._validatorOnChange = () => { };
57
+ /** The form control validator for whether the input parses. */
58
+ this._parseValidator = () => {
59
+ return this._lastValueValid
60
+ ? null
61
+ : { mtxDatetimepickerParse: { text: this._elementRef.nativeElement.value } };
62
+ };
63
+ /** The form control validator for the min date. */
64
+ this._minValidator = (control) => {
65
+ const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));
66
+ return !this.min ||
67
+ !controlValue ||
68
+ this._dateAdapter.compareDatetime(this.min, controlValue) <= 0
69
+ ? null
70
+ : { mtxDatetimepickerMin: { min: this.min, actual: controlValue } };
71
+ };
72
+ /** The form control validator for the max date. */
73
+ this._maxValidator = (control) => {
74
+ const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));
75
+ return !this.max ||
76
+ !controlValue ||
77
+ this._dateAdapter.compareDatetime(this.max, controlValue) >= 0
78
+ ? null
79
+ : { mtxDatetimepickerMax: { max: this.max, actual: controlValue } };
80
+ };
81
+ /** The form control validator for the date filter. */
82
+ this._filterValidator = (control) => {
83
+ const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));
84
+ return !this._dateFilter ||
85
+ !controlValue ||
86
+ this._dateFilter(controlValue, MtxDatetimepickerFilterType.DATE)
87
+ ? null
88
+ : { mtxDatetimepickerFilter: true };
89
+ };
90
+ /** The combined form control validator for this input. */
91
+ this._validator = Validators.compose([
92
+ this._parseValidator,
93
+ this._minValidator,
94
+ this._maxValidator,
95
+ this._filterValidator,
96
+ ]);
97
+ if (!this._dateAdapter) {
98
+ throw createMissingDateImplError('DatetimeAdapter');
99
+ }
100
+ if (!this._dateFormats) {
101
+ throw createMissingDateImplError('MTX_DATETIME_FORMATS');
102
+ }
103
+ // Update the displayed date when the locale changes.
104
+ this._localeSubscription = _dateAdapter.localeChanges.subscribe(() => {
105
+ this.value = this._dateAdapter.deserialize(this.value);
106
+ });
107
+ }
108
+ /** The datetimepicker that this input is associated with. */
109
+ set mtxDatetimepicker(value) {
110
+ this.registerDatetimepicker(value);
111
+ }
112
+ set mtxDatetimepickerFilter(filter) {
113
+ this._dateFilter = filter;
114
+ this._validatorOnChange();
115
+ }
116
+ /** The value of the input. */
117
+ get value() {
118
+ return this._value;
119
+ }
120
+ set value(value) {
121
+ value = this._dateAdapter.deserialize(value);
122
+ this._lastValueValid = !value || this._dateAdapter.isValid(value);
123
+ value = this._dateAdapter.getValidDateOrNull(value);
124
+ const oldDate = this.value;
125
+ this._value = value;
126
+ this._formatValue(value);
127
+ // use timeout to ensure the datetimepicker is instantiated and we get the correct format
128
+ setTimeout(() => {
129
+ if (!this._dateAdapter.sameDatetime(oldDate, value)) {
130
+ this._valueChange.emit(value);
131
+ }
132
+ });
133
+ }
134
+ /** The minimum valid date. */
135
+ get min() {
136
+ return this._min;
137
+ }
138
+ set min(value) {
139
+ this._min = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
140
+ this._validatorOnChange();
141
+ }
142
+ /** The maximum valid date. */
143
+ get max() {
144
+ return this._max;
145
+ }
146
+ set max(value) {
147
+ this._max = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
148
+ this._validatorOnChange();
149
+ }
150
+ /** Whether the datetimepicker-input is disabled. */
151
+ get disabled() {
152
+ return !!this._disabled;
153
+ }
154
+ set disabled(value) {
155
+ const newValue = coerceBooleanProperty(value);
156
+ if (this._disabled !== newValue) {
157
+ this._disabled = newValue;
158
+ this._disabledChange.emit(newValue);
159
+ }
160
+ }
161
+ ngAfterContentInit() {
162
+ if (this._datetimepicker) {
163
+ this._datetimepickerSubscription = this._datetimepicker.selectedChanged.subscribe((selected) => {
164
+ this.value = selected;
165
+ this._cvaOnChange(selected);
166
+ this._onTouched();
167
+ this.dateInput.emit(new MtxDatetimepickerInputEvent(this, this._elementRef.nativeElement));
168
+ this.dateChange.emit(new MtxDatetimepickerInputEvent(this, this._elementRef.nativeElement));
169
+ });
170
+ }
171
+ }
172
+ ngOnDestroy() {
173
+ this._datetimepickerSubscription.unsubscribe();
174
+ this._localeSubscription.unsubscribe();
175
+ this._valueChange.complete();
176
+ this._disabledChange.complete();
177
+ }
178
+ registerOnValidatorChange(fn) {
179
+ this._validatorOnChange = fn;
180
+ }
181
+ validate(c) {
182
+ return this._validator ? this._validator(c) : null;
183
+ }
184
+ /**
185
+ * Gets the element that the datetimepicker popup should be connected to.
186
+ * @return The element to connect the popup to.
187
+ */
188
+ getConnectedOverlayOrigin() {
189
+ return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;
190
+ }
191
+ /** Gets the ID of an element that should be used a description for the calendar overlay. */
192
+ getOverlayLabelId() {
193
+ if (this._formField) {
194
+ return this._formField.getLabelId();
195
+ }
196
+ return this._elementRef.nativeElement.getAttribute('aria-labelledby');
197
+ }
198
+ // Implemented as part of ControlValueAccessor
199
+ writeValue(value) {
200
+ this.value = value;
201
+ }
202
+ // Implemented as part of ControlValueAccessor
203
+ registerOnChange(fn) {
204
+ this._cvaOnChange = fn;
205
+ }
206
+ // Implemented as part of ControlValueAccessor
207
+ registerOnTouched(fn) {
208
+ this._onTouched = fn;
209
+ }
210
+ // Implemented as part of ControlValueAccessor
211
+ setDisabledState(disabled) {
212
+ this.disabled = disabled;
213
+ }
214
+ _onKeydown(event) {
215
+ if (event.altKey && event.keyCode === DOWN_ARROW) {
216
+ this._datetimepicker.open();
217
+ event.preventDefault();
218
+ }
219
+ }
220
+ _onInput(value) {
221
+ let date = this._dateAdapter.parse(value, this.getParseFormat());
222
+ this._lastValueValid = !date || this._dateAdapter.isValid(date);
223
+ date = this._dateAdapter.getValidDateOrNull(date);
224
+ this._value = date;
225
+ this._cvaOnChange(date);
226
+ this._valueChange.emit(date);
227
+ this.dateInput.emit(new MtxDatetimepickerInputEvent(this, this._elementRef.nativeElement));
228
+ }
229
+ _onChange() {
230
+ this.dateChange.emit(new MtxDatetimepickerInputEvent(this, this._elementRef.nativeElement));
231
+ }
232
+ /** Handles blur events on the input. */
233
+ _onBlur() {
234
+ // Reformat the input only if we have a valid value.
235
+ if (this.value) {
236
+ this._formatValue(this.value);
237
+ }
238
+ this._onTouched();
239
+ }
240
+ registerDatetimepicker(value) {
241
+ if (value) {
242
+ this._datetimepicker = value;
243
+ this._datetimepicker._registerInput(this);
244
+ }
245
+ }
246
+ getDisplayFormat() {
247
+ switch (this._datetimepicker.type) {
248
+ case 'date':
249
+ return this._dateFormats.display.dateInput;
250
+ case 'datetime':
251
+ return this._dateFormats.display.datetimeInput;
252
+ case 'time':
253
+ return this._dateFormats.display.timeInput;
254
+ case 'month':
255
+ return this._dateFormats.display.monthInput;
256
+ }
257
+ }
258
+ getParseFormat() {
259
+ let parseFormat;
260
+ switch (this._datetimepicker.type) {
261
+ case 'date':
262
+ parseFormat = this._dateFormats.parse.dateInput;
263
+ break;
264
+ case 'datetime':
265
+ parseFormat = this._dateFormats.parse.datetimeInput;
266
+ break;
267
+ case 'time':
268
+ parseFormat = this._dateFormats.parse.timeInput;
269
+ break;
270
+ case 'month':
271
+ parseFormat = this._dateFormats.parse.monthInput;
272
+ break;
273
+ }
274
+ if (!parseFormat) {
275
+ parseFormat = this._dateFormats.parse.dateInput;
276
+ }
277
+ return parseFormat;
278
+ }
279
+ /** Formats a value and sets it on the input element. */
280
+ _formatValue(value) {
281
+ this._elementRef.nativeElement.value = value
282
+ ? this._dateAdapter.format(value, this.getDisplayFormat())
283
+ : '';
284
+ }
285
+ /** Returns the palette used by the input's form field, if any. */
286
+ getThemePalette() {
287
+ return this._formField ? this._formField.color : undefined;
288
+ }
289
+ }
290
+ /** @nocollapse */ /** @nocollapse */ MtxDatetimepickerInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxDatetimepickerInput, deps: [{ token: i0.ElementRef }, { token: i1.DatetimeAdapter, optional: true }, { token: MTX_DATETIME_FORMATS, optional: true }, { token: i2.MatFormField, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
291
+ /** @nocollapse */ /** @nocollapse */ MtxDatetimepickerInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: MtxDatetimepickerInput, selector: "input[mtxDatetimepicker]", inputs: { mtxDatetimepicker: "mtxDatetimepicker", mtxDatetimepickerFilter: "mtxDatetimepickerFilter", value: "value", min: "min", max: "max", disabled: "disabled" }, outputs: { dateChange: "dateChange", dateInput: "dateInput" }, host: { listeners: { "input": "_onInput($event.target.value)", "change": "_onChange()", "blur": "_onBlur()", "keydown": "_onKeydown($event)" }, properties: { "attr.aria-haspopup": "true", "attr.aria-owns": "(_datetimepicker?.opened && _datetimepicker.id) || null", "attr.min": "min ? _dateAdapter.toIso8601(min) : null", "attr.max": "max ? _dateAdapter.toIso8601(max) : null", "disabled": "disabled" } }, providers: [
292
+ MAT_DATETIMEPICKER_VALUE_ACCESSOR,
293
+ MAT_DATETIMEPICKER_VALIDATORS,
294
+ { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MtxDatetimepickerInput },
295
+ ], exportAs: ["mtxDatetimepickerInput"], ngImport: i0 });
296
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxDatetimepickerInput, decorators: [{
297
+ type: Directive,
298
+ args: [{
299
+ selector: 'input[mtxDatetimepicker]',
300
+ providers: [
301
+ MAT_DATETIMEPICKER_VALUE_ACCESSOR,
302
+ MAT_DATETIMEPICKER_VALIDATORS,
303
+ { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MtxDatetimepickerInput },
304
+ ],
305
+ host: {
306
+ '[attr.aria-haspopup]': 'true',
307
+ '[attr.aria-owns]': '(_datetimepicker?.opened && _datetimepicker.id) || null',
308
+ '[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',
309
+ '[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',
310
+ '[disabled]': 'disabled',
311
+ '(input)': '_onInput($event.target.value)',
312
+ '(change)': '_onChange()',
313
+ '(blur)': '_onBlur()',
314
+ '(keydown)': '_onKeydown($event)',
315
+ },
316
+ exportAs: 'mtxDatetimepickerInput',
317
+ }]
318
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DatetimeAdapter, decorators: [{
319
+ type: Optional
320
+ }] }, { type: undefined, decorators: [{
321
+ type: Optional
322
+ }, {
323
+ type: Inject,
324
+ args: [MTX_DATETIME_FORMATS]
325
+ }] }, { type: i2.MatFormField, decorators: [{
326
+ type: Optional
327
+ }] }]; }, propDecorators: { dateChange: [{
328
+ type: Output
329
+ }], dateInput: [{
330
+ type: Output
331
+ }], mtxDatetimepicker: [{
332
+ type: Input
333
+ }], mtxDatetimepickerFilter: [{
334
+ type: Input
335
+ }], value: [{
336
+ type: Input
337
+ }], min: [{
338
+ type: Input
339
+ }], max: [{
340
+ type: Input
341
+ }], disabled: [{
342
+ type: Input
343
+ }] } });
344
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWVwaWNrZXItaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2RhdGV0aW1lcGlja2VyL2RhdGV0aW1lcGlja2VyLWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLGFBQWEsRUFDYixpQkFBaUIsRUFJakIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFFTCxvQkFBb0IsR0FFckIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQUUxRSxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBUTtJQUNwRCxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUM7SUFDckQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQVE7SUFDaEQsT0FBTyxFQUFFLGFBQWE7SUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztJQUNy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SztnQkFZRixRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG4gIFZhbGlkYXRvckZuLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBET1dOX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTUFUX0lOUFVUX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIERhdGV0aW1lQWRhcHRlcixcbiAgTVRYX0RBVEVUSU1FX0ZPUk1BVFMsXG4gIE10eERhdGV0aW1lRm9ybWF0cyxcbn0gZnJvbSAnQG5nLW1hdGVyby9leHRlbnNpb25zL2NvcmUnO1xuaW1wb3J0IHsgTXR4RGF0ZXRpbWVwaWNrZXIgfSBmcm9tICcuL2RhdGV0aW1lcGlja2VyJztcbmltcG9ydCB7IGNyZWF0ZU1pc3NpbmdEYXRlSW1wbEVycm9yIH0gZnJvbSAnLi9kYXRldGltZXBpY2tlci1lcnJvcnMnO1xuaW1wb3J0IHsgTXR4RGF0ZXRpbWVwaWNrZXJGaWx0ZXJUeXBlIH0gZnJvbSAnLi9kYXRldGltZXBpY2tlci1maWx0ZXJ0eXBlJztcblxuZXhwb3J0IGNvbnN0IE1BVF9EQVRFVElNRVBJQ0tFUl9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTXR4RGF0ZXRpbWVwaWNrZXJJbnB1dCksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuZXhwb3J0IGNvbnN0IE1BVF9EQVRFVElNRVBJQ0tFUl9WQUxJREFUT1JTOiBhbnkgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE10eERhdGV0aW1lcGlja2VySW5wdXQpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbi8qKlxuICogQW4gZXZlbnQgdXNlZCBmb3IgZGF0ZXRpbWVwaWNrZXIgaW5wdXQgYW5kIGNoYW5nZSBldmVudHMuIFdlIGRvbid0IGFsd2F5cyBoYXZlIGFjY2VzcyB0byBhIG5hdGl2ZVxuICogaW5wdXQgb3IgY2hhbmdlIGV2ZW50IGJlY2F1c2UgdGhlIGV2ZW50IG1heSBoYXZlIGJlZW4gdHJpZ2dlcmVkIGJ5IHRoZSB1c2VyIGNsaWNraW5nIG9uIHRoZVxuICogY2FsZW5kYXIgcG9wdXAuIEZvciBjb25zaXN0ZW5jeSwgd2UgYWx3YXlzIHVzZSBNdHhEYXRldGltZXBpY2tlcklucHV0RXZlbnQgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNsYXNzIE10eERhdGV0aW1lcGlja2VySW5wdXRFdmVudDxEPiB7XG4gIC8qKiBUaGUgbmV3IHZhbHVlIGZvciB0aGUgdGFyZ2V0IGRhdGV0aW1lcGlja2VyIGlucHV0LiAqL1xuICB2YWx1ZTogRCB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHRhcmdldDogTXR4RGF0ZXRpbWVwaWNrZXJJbnB1dDxEPiwgcHVibGljIHRhcmdldEVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudGFyZ2V0LnZhbHVlO1xuICB9XG59XG5cbi8qKiBEaXJlY3RpdmUgdXNlZCB0byBjb25uZWN0IGFuIGlucHV0IHRvIGEgTXR4RGF0ZXRpbWVwaWNrZXIuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdpbnB1dFttdHhEYXRldGltZXBpY2tlcl0nLFxuICBwcm92aWRlcnM6IFtcbiAgICBNQVRfREFURVRJTUVQSUNLRVJfVkFMVUVfQUNDRVNTT1IsXG4gICAgTUFUX0RBVEVUSU1FUElDS0VSX1ZBTElEQVRPUlMsXG4gICAgeyBwcm92aWRlOiBNQVRfSU5QVVRfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBNdHhEYXRldGltZXBpY2tlcklucHV0IH0sXG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIuYXJpYS1oYXNwb3B1cF0nOiAndHJ1ZScsXG4gICAgJ1thdHRyLmFyaWEtb3duc10nOiAnKF9kYXRldGltZXBpY2tlcj8ub3BlbmVkICYmIF9kYXRldGltZXBpY2tlci5pZCkgfHwgbnVsbCcsXG4gICAgJ1thdHRyLm1pbl0nOiAnbWluID8gX2RhdGVBZGFwdGVyLnRvSXNvODYwMShtaW4pIDogbnVsbCcsXG4gICAgJ1thdHRyLm1heF0nOiAnbWF4ID8gX2RhdGVBZGFwdGVyLnRvSXNvODYwMShtYXgpIDogbnVsbCcsXG4gICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICcoaW5wdXQpJzogJ19vbklucHV0KCRldmVudC50YXJnZXQudmFsdWUpJyxcbiAgICAnKGNoYW5nZSknOiAnX29uQ2hhbmdlKCknLFxuICAgICcoYmx1ciknOiAnX29uQmx1cigpJyxcbiAgICAnKGtleWRvd24pJzogJ19vbktleWRvd24oJGV2ZW50KScsXG4gIH0sXG4gIGV4cG9ydEFzOiAnbXR4RGF0ZXRpbWVwaWNrZXJJbnB1dCcsXG59KVxuZXhwb3J0IGNsYXNzIE10eERhdGV0aW1lcGlja2VySW5wdXQ8RD5cbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBWYWxpZGF0b3JcbntcbiAgX2RhdGV0aW1lcGlja2VyITogTXR4RGF0ZXRpbWVwaWNrZXI8RD47XG5cbiAgX2RhdGVGaWx0ZXIhOiAoZGF0ZTogRCB8IG51bGwsIHR5cGU6IE10eERhdGV0aW1lcGlja2VyRmlsdGVyVHlwZSkgPT4gYm9vbGVhbjtcblxuICAvKiogRW1pdHMgd2hlbiBhIGBjaGFuZ2VgIGV2ZW50IGlzIGZpcmVkIG9uIHRoaXMgYDxpbnB1dD5gLiAqL1xuICBAT3V0cHV0KCkgZGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TXR4RGF0ZXRpbWVwaWNrZXJJbnB1dEV2ZW50PEQ+PigpO1xuXG4gIC8qKiBFbWl0cyB3aGVuIGFuIGBpbnB1dGAgZXZlbnQgaXMgZmlyZWQgb24gdGhpcyBgPGlucHV0PmAuICovXG4gIEBPdXRwdXQoKSBkYXRlSW5wdXQgPSBuZXcgRXZlbnRFbWl0dGVyPE10eERhdGV0aW1lcGlja2VySW5wdXRFdmVudDxEPj4oKTtcblxuICAvKiogRW1pdHMgd2hlbiB0aGUgdmFsdWUgY2hhbmdlcyAoZWl0aGVyIGR1ZSB0byB1c2VyIGlucHV0IG9yIHByb2dyYW1tYXRpYyBjaGFuZ2UpLiAqL1xuICBfdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEQgfCBudWxsPigpO1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSBkaXNhYmxlZCBzdGF0ZSBoYXMgY2hhbmdlZCAqL1xuICBfZGlzYWJsZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcHJpdmF0ZSBfZGF0ZXRpbWVwaWNrZXJTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgcHJpdmF0ZSBfbG9jYWxlU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBsYXN0IHZhbHVlIHNldCBvbiB0aGUgaW5wdXQgd2FzIHZhbGlkLiAqL1xuICBwcml2YXRlIF9sYXN0VmFsdWVWYWxpZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIF9kYXRlQWRhcHRlcjogRGF0ZXRpbWVBZGFwdGVyPEQ+LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTVRYX0RBVEVUSU1FX0ZPUk1BVFMpIHByaXZhdGUgX2RhdGVGb3JtYXRzOiBNdHhEYXRldGltZUZvcm1hdHMsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZm9ybUZpZWxkOiBNYXRGb3JtRmllbGRcbiAgKSB7XG4gICAgaWYgKCF0aGlzLl9kYXRlQWRhcHRlcikge1xuICAgICAgdGhyb3cgY3JlYXRlTWlzc2luZ0RhdGVJbXBsRXJyb3IoJ0RhdGV0aW1lQWRhcHRlcicpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX2RhdGVGb3JtYXRzKSB7XG4gICAgICB0aHJvdyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxFcnJvcignTVRYX0RBVEVUSU1FX0ZPUk1BVFMnKTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIGRpc3BsYXllZCBkYXRlIHdoZW4gdGhlIGxvY2FsZSBjaGFuZ2VzLlxuICAgIHRoaXMuX2xvY2FsZVN1YnNjcmlwdGlvbiA9IF9kYXRlQWRhcHRlci5sb2NhbGVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodGhpcy52YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogVGhlIGRhdGV0aW1lcGlja2VyIHRoYXQgdGhpcyBpbnB1dCBpcyBhc3NvY2lhdGVkIHdpdGguICovXG4gIEBJbnB1dCgpXG4gIHNldCBtdHhEYXRldGltZXBpY2tlcih2YWx1ZTogTXR4RGF0ZXRpbWVwaWNrZXI8RD4pIHtcbiAgICB0aGlzLnJlZ2lzdGVyRGF0ZXRpbWVwaWNrZXIodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IG10eERhdGV0aW1lcGlja2VyRmlsdGVyKFxuICAgIGZpbHRlcjogKGRhdGU6IEQgfCBudWxsLCB0eXBlOiBNdHhEYXRldGltZXBpY2tlckZpbHRlclR5cGUpID0+IGJvb2xlYW5cbiAgKSB7XG4gICAgdGhpcy5fZGF0ZUZpbHRlciA9IGZpbHRlcjtcbiAgICB0aGlzLl92YWxpZGF0b3JPbkNoYW5nZSgpO1xuICB9XG5cbiAgLyoqIFRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQuICovXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBEIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIHNldCB2YWx1ZSh2YWx1ZTogRCB8IG51bGwpIHtcbiAgICB2YWx1ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKTtcbiAgICB0aGlzLl9sYXN0VmFsdWVWYWxpZCA9ICF2YWx1ZSB8fCB0aGlzLl9kYXRlQWRhcHRlci5pc1ZhbGlkKHZhbHVlKTtcbiAgICB2YWx1ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldFZhbGlkRGF0ZU9yTnVsbCh2YWx1ZSk7XG4gICAgY29uc3Qgb2xkRGF0ZSA9IHRoaXMudmFsdWU7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLl9mb3JtYXRWYWx1ZSh2YWx1ZSk7XG5cbiAgICAvLyB1c2UgdGltZW91dCB0byBlbnN1cmUgdGhlIGRhdGV0aW1lcGlja2VyIGlzIGluc3RhbnRpYXRlZCBhbmQgd2UgZ2V0IHRoZSBjb3JyZWN0IGZvcm1hdFxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9kYXRlQWRhcHRlci5zYW1lRGF0ZXRpbWUob2xkRGF0ZSwgdmFsdWUpKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgX3ZhbHVlITogRCB8IG51bGw7XG5cbiAgLyoqIFRoZSBtaW5pbXVtIHZhbGlkIGRhdGUuICovXG4gIEBJbnB1dCgpXG4gIGdldCBtaW4oKTogRCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9taW47XG4gIH1cbiAgc2V0IG1pbih2YWx1ZTogRCB8IG51bGwpIHtcbiAgICB0aGlzLl9taW4gPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwodGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUodmFsdWUpKTtcbiAgICB0aGlzLl92YWxpZGF0b3JPbkNoYW5nZSgpO1xuICB9XG4gIHByaXZhdGUgX21pbiE6IEQgfCBudWxsO1xuXG4gIC8qKiBUaGUgbWF4aW11bSB2YWxpZCBkYXRlLiAqL1xuICBASW5wdXQoKVxuICBnZXQgbWF4KCk6IEQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4O1xuICB9XG4gIHNldCBtYXgodmFsdWU6IEQgfCBudWxsKSB7XG4gICAgdGhpcy5fbWF4ID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKHZhbHVlKSk7XG4gICAgdGhpcy5fdmFsaWRhdG9yT25DaGFuZ2UoKTtcbiAgfVxuICBwcml2YXRlIF9tYXghOiBEIHwgbnVsbDtcblxuICAvKiogV2hldGhlciB0aGUgZGF0ZXRpbWVwaWNrZXItaW5wdXQgaXMgZGlzYWJsZWQuICovXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5fZGlzYWJsZWQgIT09IG5ld1ZhbHVlKSB7XG4gICAgICB0aGlzLl9kaXNhYmxlZCA9IG5ld1ZhbHVlO1xuICAgICAgdGhpcy5fZGlzYWJsZWRDaGFuZ2UuZW1pdChuZXdWYWx1ZSk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkITogYm9vbGVhbjtcblxuICBfb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGlmICh0aGlzLl9kYXRldGltZXBpY2tlcikge1xuICAgICAgdGhpcy5fZGF0ZXRpbWVwaWNrZXJTdWJzY3JpcHRpb24gPSB0aGlzLl9kYXRldGltZXBpY2tlci5zZWxlY3RlZENoYW5nZWQuc3Vic2NyaWJlKFxuICAgICAgICAoc2VsZWN0ZWQ6IEQpID0+IHtcbiAgICAgICAgICB0aGlzLnZhbHVlID0gc2VsZWN0ZWQ7XG4gICAgICAgICAgdGhpcy5fY3ZhT25DaGFuZ2Uoc2VsZWN0ZWQpO1xuICAgICAgICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICAgICAgICAgIHRoaXMuZGF0ZUlucHV0LmVtaXQoXG4gICAgICAgICAgICBuZXcgTXR4RGF0ZXRpbWVwaWNrZXJJbnB1dEV2ZW50KHRoaXMsIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KFxuICAgICAgICAgICAgbmV3IE10eERhdGV0aW1lcGlja2VySW5wdXRFdmVudCh0aGlzLCB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9kYXRldGltZXBpY2tlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX2xvY2FsZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3ZhbHVlQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZGlzYWJsZWRDaGFuZ2UuY29tcGxldGUoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl92YWxpZGF0b3JPbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgdmFsaWRhdGUoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl92YWxpZGF0b3IgPyB0aGlzLl92YWxpZGF0b3IoYykgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGVsZW1lbnQgdGhhdCB0aGUgZGF0ZXRpbWVwaWNrZXIgcG9wdXAgc2hvdWxkIGJlIGNvbm5lY3RlZCB0by5cbiAgICogQHJldHVybiBUaGUgZWxlbWVudCB0byBjb25uZWN0IHRoZSBwb3B1cCB0by5cbiAgICovXG4gIGdldENvbm5lY3RlZE92ZXJsYXlPcmlnaW4oKTogRWxlbWVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1GaWVsZCA/IHRoaXMuX2Zvcm1GaWVsZC5nZXRDb25uZWN0ZWRPdmVybGF5T3JpZ2luKCkgOiB0aGlzLl9lbGVtZW50UmVmO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIElEIG9mIGFuIGVsZW1lbnQgdGhhdCBzaG91bGQgYmUgdXNlZCBhIGRlc2NyaXB0aW9uIGZvciB0aGUgY2FsZW5kYXIgb3ZlcmxheS4gKi9cbiAgZ2V0T3ZlcmxheUxhYmVsSWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuX2Zvcm1GaWVsZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1GaWVsZC5nZXRMYWJlbElkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScpO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3NvclxuICB3cml0ZVZhbHVlKHZhbHVlOiBEKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3NvclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX2N2YU9uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH1cblxuICBfb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmFsdEtleSAmJiBldmVudC5rZXlDb2RlID09PSBET1dOX0FSUk9XKSB7XG4gICAgICB0aGlzLl9kYXRldGltZXBpY2tlci5vcGVuKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIF9vbklucHV0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICBsZXQgZGF0ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLnBhcnNlKHZhbHVlLCB0aGlzLmdldFBhcnNlRm9ybWF0KCkpO1xuICAgIHRoaXMuX2xhc3RWYWx1ZVZhbGlkID0gIWRhdGUgfHwgdGhpcy5fZGF0ZUFkYXB0ZXIuaXNWYWxpZChkYXRlKTtcbiAgICBkYXRlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKGRhdGUpO1xuICAgIHRoaXMuX3ZhbHVlID0gZGF0ZTtcbiAgICB0aGlzLl9jdmFPbkNoYW5nZShkYXRlKTtcbiAgICB0aGlzLl92YWx1ZUNoYW5nZS5lbWl0KGRhdGUpO1xuICAgIHRoaXMuZGF0ZUlucHV0LmVtaXQobmV3IE10eERhdGV0aW1lcGlja2VySW5wdXRFdmVudCh0aGlzLCB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpKTtcbiAgfVxuXG4gIF9vbkNoYW5nZSgpIHtcbiAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdChuZXcgTXR4RGF0ZXRpbWVwaWNrZXJJbnB1dEV2ZW50KHRoaXMsIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkpO1xuICB9XG5cbiAgLyoqIEhhbmRsZXMgYmx1ciBldmVudHMgb24gdGhlIGlucHV0LiAqL1xuICBfb25CbHVyKCkge1xuICAgIC8vIFJlZm9ybWF0IHRoZSBpbnB1dCBvbmx5IGlmIHdlIGhhdmUgYSB2YWxpZCB2YWx1ZS5cbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5fZm9ybWF0VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyRGF0ZXRpbWVwaWNrZXIodmFsdWU6IE10eERhdGV0aW1lcGlja2VyPEQ+KSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9kYXRldGltZXBpY2tlciA9IHZhbHVlO1xuICAgICAgdGhpcy5fZGF0ZXRpbWVwaWNrZXIuX3JlZ2lzdGVySW5wdXQodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREaXNwbGF5Rm9ybWF0KCkge1xuICAgIHN3aXRjaCAodGhpcy5fZGF0ZXRpbWVwaWNrZXIudHlwZSkge1xuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlRm9ybWF0cy5kaXNwbGF5LmRhdGVJbnB1dDtcbiAgICAgIGNhc2UgJ2RhdGV0aW1lJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVGb3JtYXRzLmRpc3BsYXkuZGF0ZXRpbWVJbnB1dDtcbiAgICAgIGNhc2UgJ3RpbWUnOlxuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZUZvcm1hdHMuZGlzcGxheS50aW1lSW5wdXQ7XG4gICAgICBjYXNlICdtb250aCc6XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlRm9ybWF0cy5kaXNwbGF5Lm1vbnRoSW5wdXQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJzZUZvcm1hdCgpIHtcbiAgICBsZXQgcGFyc2VGb3JtYXQ7XG5cbiAgICBzd2l0Y2ggKHRoaXMuX2RhdGV0aW1lcGlja2VyLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICBwYXJzZUZvcm1hdCA9IHRoaXMuX2RhdGVGb3JtYXRzLnBhcnNlLmRhdGVJbnB1dDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkYXRldGltZSc6XG4gICAgICAgIHBhcnNlRm9ybWF0ID0gdGhpcy5fZGF0ZUZvcm1hdHMucGFyc2UuZGF0ZXRpbWVJbnB1dDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0aW1lJzpcbiAgICAgICAgcGFyc2VGb3JtYXQgPSB0aGlzLl9kYXRlRm9ybWF0cy5wYXJzZS50aW1lSW5wdXQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICBwYXJzZUZvcm1hdCA9IHRoaXMuX2RhdGVGb3JtYXRzLnBhcnNlLm1vbnRoSW5wdXQ7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAoIXBhcnNlRm9ybWF0KSB7XG4gICAgICBwYXJzZUZvcm1hdCA9IHRoaXMuX2RhdGVGb3JtYXRzLnBhcnNlLmRhdGVJbnB1dDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VGb3JtYXQ7XG4gIH1cblxuICBwcml2YXRlIF9jdmFPbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICBwcml2YXRlIF92YWxpZGF0b3JPbkNoYW5nZSA9ICgpID0+IHt9O1xuXG4gIC8qKiBUaGUgZm9ybSBjb250cm9sIHZhbGlkYXRvciBmb3Igd2hldGhlciB0aGUgaW5wdXQgcGFyc2VzLiAqL1xuICBwcml2YXRlIF9wYXJzZVZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSAoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIHJldHVybiB0aGlzLl9sYXN0VmFsdWVWYWxpZFxuICAgICAgPyBudWxsXG4gICAgICA6IHsgbXR4RGF0ZXRpbWVwaWNrZXJQYXJzZTogeyB0ZXh0OiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgfSB9O1xuICB9O1xuXG4gIC8qKiBUaGUgZm9ybSBjb250cm9sIHZhbGlkYXRvciBmb3IgdGhlIG1pbiBkYXRlLiAqL1xuICBwcml2YXRlIF9taW5WYWxpZGF0b3I6IFZhbGlkYXRvckZuID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBjb25zdCBjb250cm9sVmFsdWUgPSB0aGlzLl9kYXRlQWRhcHRlci5nZXRWYWxpZERhdGVPck51bGwoXG4gICAgICB0aGlzLl9kYXRlQWRhcHRlci5kZXNlcmlhbGl6ZShjb250cm9sLnZhbHVlKVxuICAgICk7XG4gICAgcmV0dXJuICF0aGlzLm1pbiB8fFxuICAgICAgIWNvbnRyb2xWYWx1ZSB8fFxuICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuY29tcGFyZURhdGV0aW1lKHRoaXMubWluLCBjb250cm9sVmFsdWUpIDw9IDBcbiAgICAgID8gbnVsbFxuICAgICAgOiB7IG10eERhdGV0aW1lcGlja2VyTWluOiB7IG1pbjogdGhpcy5taW4sIGFjdHVhbDogY29udHJvbFZhbHVlIH0gfTtcbiAgfTtcblxuICAvKiogVGhlIGZvcm0gY29udHJvbCB2YWxpZGF0b3IgZm9yIHRoZSBtYXggZGF0ZS4gKi9cbiAgcHJpdmF0ZSBfbWF4VmFsaWRhdG9yOiBWYWxpZGF0b3JGbiA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgY29uc3QgY29udHJvbFZhbHVlID0gdGhpcy5fZGF0ZUFkYXB0ZXIuZ2V0VmFsaWREYXRlT3JOdWxsKFxuICAgICAgdGhpcy5fZGF0ZUFkYXB0ZXIuZGVzZXJpYWxpemUoY29udHJvbC52YWx1ZSlcbiAgICApO1xuICAgIHJldHVybiAhdGhpcy5tYXggfHxcbiAgICAgICFjb250cm9sVmFsdWUgfHxcbiAgICAgIHRoaXMuX2RhdGVBZGFwdGVyLmNvbXBhcmVEYXRldGltZSh0aGlzLm1heCwgY29udHJvbFZhbHVlKSA+PSAwXG4gICAgICA/IG51bGxcbiAgICAgIDogeyBtdHhEYXRldGltZXBpY2tlck1heDogeyBtYXg6IHRoaXMubWF4LCBhY3R1YWw6IGNvbnRyb2xWYWx1ZSB9IH07XG4gIH07XG5cbiAgLyoqIFRoZSBmb3JtIGNvbnRyb2wgdmFsaWRhdG9yIGZvciB0aGUgZGF0ZSBmaWx0ZXIuICovXG4gIHByaXZhdGUgX2ZpbHRlclZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9IHRoaXMuX2RhdGVBZGFwdGVyLmdldFZhbGlkRGF0ZU9yTnVsbChcbiAgICAgIHRoaXMuX2RhdGVBZGFwdGVyLmRlc2VyaWFsaXplKGNvbnRyb2wudmFsdWUpXG4gICAgKTtcbiAgICByZXR1cm4gIXRoaXMuX2RhdGVGaWx0ZXIgfHxcbiAgICAgICFjb250cm9sVmFsdWUgfHxcbiAgICAgIHRoaXMuX2RhdGVGaWx0ZXIoY29udHJvbFZhbHVlLCBNdHhEYXRldGltZXBpY2tlckZpbHRlclR5cGUuREFURSlcbiAgICAgID8gbnVsbFxuICAgICAgOiB7IG10eERhdGV0aW1lcGlja2VyRmlsdGVyOiB0cnVlIH07XG4gIH07XG5cbiAgLyoqIFRoZSBjb21iaW5lZCBmb3JtIGNvbnRyb2wgdmFsaWRhdG9yIGZvciB0aGlzIGlucHV0LiAqL1xuICBwcml2YXRlIF92YWxpZGF0b3I6IFZhbGlkYXRvckZuIHwgbnVsbCA9IFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgdGhpcy5fcGFyc2VWYWxpZGF0b3IsXG4gICAgdGhpcy5fbWluVmFsaWRhdG9yLFxuICAgIHRoaXMuX21heFZhbGlkYXRvcixcbiAgICB0aGlzLl9maWx0ZXJWYWxpZGF0b3IsXG4gIF0pO1xuXG4gIC8qKiBGb3JtYXRzIGEgdmFsdWUgYW5kIHNldHMgaXQgb24gdGhlIGlucHV0IGVsZW1lbnQuICovXG4gIHByaXZhdGUgX2Zvcm1hdFZhbHVlKHZhbHVlOiBEIHwgbnVsbCkge1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlXG4gICAgICA/IHRoaXMuX2RhdGVBZGFwdGVyLmZvcm1hdCh2YWx1ZSwgdGhpcy5nZXREaXNwbGF5Rm9ybWF0KCkpXG4gICAgICA6ICcnO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHBhbGV0dGUgdXNlZCBieSB0aGUgaW5wdXQncyBmb3JtIGZpZWxkLCBpZiBhbnkuICovXG4gIGdldFRoZW1lUGFsZXR0ZSgpOiBUaGVtZVBhbGV0dGUge1xuICAgIHJldHVybiB0aGlzLl9mb3JtRmllbGQgPyB0aGlzLl9mb3JtRmllbGQuY29sb3IgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcbn1cbiJdfQ==
@@ -0,0 +1,75 @@
1
+ import { A11yModule } from '@angular/cdk/a11y';
2
+ import { OverlayModule } from '@angular/cdk/overlay';
3
+ import { PortalModule } from '@angular/cdk/portal';
4
+ import { CommonModule } from '@angular/common';
5
+ import { NgModule } from '@angular/core';
6
+ import { MatButtonModule } from '@angular/material/button';
7
+ import { MtxCalendar } from './calendar';
8
+ import { MtxCalendarBody } from './calendar-body';
9
+ import { MtxClock } from './clock';
10
+ import { MtxDatetimepicker, MtxDatetimepickerContent, MTX_DATETIMEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER, } from './datetimepicker';
11
+ import { MtxDatetimepickerInput } from './datetimepicker-input';
12
+ import { MtxDatetimepickerToggle, MtxDatetimepickerToggleIcon } from './datetimepicker-toggle';
13
+ import { MtxMonthView } from './month-view';
14
+ import { MtxYearView } from './year-view';
15
+ import { MtxMultiYearView } from './multi-year-view';
16
+ import * as i0 from "@angular/core";
17
+ export class MtxDatetimepickerModule {
18
+ }
19
+ /** @nocollapse */ /** @nocollapse */ MtxDatetimepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxDatetimepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
20
+ /** @nocollapse */ /** @nocollapse */ MtxDatetimepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxDatetimepickerModule, declarations: [MtxCalendar,
21
+ MtxCalendarBody,
22
+ MtxClock,
23
+ MtxDatetimepicker,
24
+ MtxDatetimepickerToggle,
25
+ MtxDatetimepickerToggleIcon,
26
+ MtxDatetimepickerInput,
27
+ MtxDatetimepickerContent,
28
+ MtxMonthView,
29
+ MtxYearView,
30
+ MtxMultiYearView], imports: [CommonModule, MatButtonModule, OverlayModule, A11yModule, PortalModule], exports: [MtxCalendar,
31
+ MtxCalendarBody,
32
+ MtxClock,
33
+ MtxDatetimepicker,
34
+ MtxDatetimepickerToggle,
35
+ MtxDatetimepickerToggleIcon,
36
+ MtxDatetimepickerInput,
37
+ MtxDatetimepickerContent,
38
+ MtxMonthView,
39
+ MtxYearView,
40
+ MtxMultiYearView] });
41
+ /** @nocollapse */ /** @nocollapse */ MtxDatetimepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxDatetimepickerModule, providers: [MTX_DATETIMEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [[CommonModule, MatButtonModule, OverlayModule, A11yModule, PortalModule]] });
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxDatetimepickerModule, decorators: [{
43
+ type: NgModule,
44
+ args: [{
45
+ imports: [CommonModule, MatButtonModule, OverlayModule, A11yModule, PortalModule],
46
+ declarations: [
47
+ MtxCalendar,
48
+ MtxCalendarBody,
49
+ MtxClock,
50
+ MtxDatetimepicker,
51
+ MtxDatetimepickerToggle,
52
+ MtxDatetimepickerToggleIcon,
53
+ MtxDatetimepickerInput,
54
+ MtxDatetimepickerContent,
55
+ MtxMonthView,
56
+ MtxYearView,
57
+ MtxMultiYearView,
58
+ ],
59
+ exports: [
60
+ MtxCalendar,
61
+ MtxCalendarBody,
62
+ MtxClock,
63
+ MtxDatetimepicker,
64
+ MtxDatetimepickerToggle,
65
+ MtxDatetimepickerToggleIcon,
66
+ MtxDatetimepickerInput,
67
+ MtxDatetimepickerContent,
68
+ MtxMonthView,
69
+ MtxYearView,
70
+ MtxMultiYearView,
71
+ ],
72
+ providers: [MTX_DATETIMEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER],
73
+ }]
74
+ }] });
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWVwaWNrZXItbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9kYXRldGltZXBpY2tlci9kYXRldGltZXBpY2tlci1tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbkMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsbURBQW1ELEdBQ3BELE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLDJCQUEyQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQWdDckQsTUFBTSxPQUFPLHVCQUF1Qjs7MEpBQXZCLHVCQUF1QjsySkFBdkIsdUJBQXVCLGlCQTNCaEMsV0FBVztRQUNYLGVBQWU7UUFDZixRQUFRO1FBQ1IsaUJBQWlCO1FBQ2pCLHVCQUF1QjtRQUN2QiwyQkFBMkI7UUFDM0Isc0JBQXNCO1FBQ3RCLHdCQUF3QjtRQUN4QixZQUFZO1FBQ1osV0FBVztRQUNYLGdCQUFnQixhQVpSLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxZQUFZLGFBZTlFLFdBQVc7UUFDWCxlQUFlO1FBQ2YsUUFBUTtRQUNSLGlCQUFpQjtRQUNqQix1QkFBdUI7UUFDdkIsMkJBQTJCO1FBQzNCLHNCQUFzQjtRQUN0Qix3QkFBd0I7UUFDeEIsWUFBWTtRQUNaLFdBQVc7UUFDWCxnQkFBZ0I7MkpBSVAsdUJBQXVCLGFBRnZCLENBQUMsbURBQW1ELENBQUMsWUEzQnZELENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFlBQVksQ0FBQzsyRkE2QnRFLHVCQUF1QjtrQkE5Qm5DLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFlBQVksQ0FBQztvQkFDakYsWUFBWSxFQUFFO3dCQUNaLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixRQUFRO3dCQUNSLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2QiwyQkFBMkI7d0JBQzNCLHNCQUFzQjt3QkFDdEIsd0JBQXdCO3dCQUN4QixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZ0JBQWdCO3FCQUNqQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsV0FBVzt3QkFDWCxlQUFlO3dCQUNmLFFBQVE7d0JBQ1IsaUJBQWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLDJCQUEyQjt3QkFDM0Isc0JBQXNCO3dCQUN0Qix3QkFBd0I7d0JBQ3hCLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxnQkFBZ0I7cUJBQ2pCO29CQUNELFNBQVMsRUFBRSxDQUFDLG1EQUFtRCxDQUFDO2lCQUNqRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgUG9ydGFsTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNdHhDYWxlbmRhciB9IGZyb20gJy4vY2FsZW5kYXInO1xuaW1wb3J0IHsgTXR4Q2FsZW5kYXJCb2R5IH0gZnJvbSAnLi9jYWxlbmRhci1ib2R5JztcbmltcG9ydCB7IE10eENsb2NrIH0gZnJvbSAnLi9jbG9jayc7XG5pbXBvcnQge1xuICBNdHhEYXRldGltZXBpY2tlcixcbiAgTXR4RGF0ZXRpbWVwaWNrZXJDb250ZW50LFxuICBNVFhfREFURVRJTUVQSUNLRVJfU0NST0xMX1NUUkFURUdZX0ZBQ1RPUllfUFJPVklERVIsXG59IGZyb20gJy4vZGF0ZXRpbWVwaWNrZXInO1xuaW1wb3J0IHsgTXR4RGF0ZXRpbWVwaWNrZXJJbnB1dCB9IGZyb20gJy4vZGF0ZXRpbWVwaWNrZXItaW5wdXQnO1xuaW1wb3J0IHsgTXR4RGF0ZXRpbWVwaWNrZXJUb2dnbGUsIE10eERhdGV0aW1lcGlja2VyVG9nZ2xlSWNvbiB9IGZyb20gJy4vZGF0ZXRpbWVwaWNrZXItdG9nZ2xlJztcbmltcG9ydCB7IE10eE1vbnRoVmlldyB9IGZyb20gJy4vbW9udGgtdmlldyc7XG5pbXBvcnQgeyBNdHhZZWFyVmlldyB9IGZyb20gJy4veWVhci12aWV3JztcbmltcG9ydCB7IE10eE11bHRpWWVhclZpZXcgfSBmcm9tICcuL211bHRpLXllYXItdmlldyc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgT3ZlcmxheU1vZHVsZSwgQTExeU1vZHVsZSwgUG9ydGFsTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgTXR4Q2FsZW5kYXIsXG4gICAgTXR4Q2FsZW5kYXJCb2R5LFxuICAgIE10eENsb2NrLFxuICAgIE10eERhdGV0aW1lcGlja2VyLFxuICAgIE10eERhdGV0aW1lcGlja2VyVG9nZ2xlLFxuICAgIE10eERhdGV0aW1lcGlja2VyVG9nZ2xlSWNvbixcbiAgICBNdHhEYXRldGltZXBpY2tlcklucHV0LFxuICAgIE10eERhdGV0aW1lcGlja2VyQ29udGVudCxcbiAgICBNdHhNb250aFZpZXcsXG4gICAgTXR4WWVhclZpZXcsXG4gICAgTXR4TXVsdGlZZWFyVmlldyxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIE10eENhbGVuZGFyLFxuICAgIE10eENhbGVuZGFyQm9keSxcbiAgICBNdHhDbG9jayxcbiAgICBNdHhEYXRldGltZXBpY2tlcixcbiAgICBNdHhEYXRldGltZXBpY2tlclRvZ2dsZSxcbiAgICBNdHhEYXRldGltZXBpY2tlclRvZ2dsZUljb24sXG4gICAgTXR4RGF0ZXRpbWVwaWNrZXJJbnB1dCxcbiAgICBNdHhEYXRldGltZXBpY2tlckNvbnRlbnQsXG4gICAgTXR4TW9udGhWaWV3LFxuICAgIE10eFllYXJWaWV3LFxuICAgIE10eE11bHRpWWVhclZpZXcsXG4gIF0sXG4gIHByb3ZpZGVyczogW01UWF9EQVRFVElNRVBJQ0tFUl9TQ1JPTExfU1RSQVRFR1lfRkFDVE9SWV9QUk9WSURFUl0sXG59KVxuZXhwb3J0IGNsYXNzIE10eERhdGV0aW1lcGlja2VyTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,94 @@
1
+ import { ChangeDetectionStrategy, Component, ContentChild, Directive, Input, ViewChild, ViewEncapsulation, } from '@angular/core';
2
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
+ import { merge, of as observableOf, Subscription } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/material/datepicker";
6
+ import * as i2 from "@angular/material/button";
7
+ import * as i3 from "@angular/common";
8
+ /** Can be used to override the icon of a `mtxDatetimepickerToggle`. */
9
+ export class MtxDatetimepickerToggleIcon {
10
+ }
11
+ /** @nocollapse */ /** @nocollapse */ MtxDatetimepickerToggleIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxDatetimepickerToggleIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
12
+ /** @nocollapse */ /** @nocollapse */ MtxDatetimepickerToggleIcon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: MtxDatetimepickerToggleIcon, selector: "[mtxDatetimepickerToggleIcon]", ngImport: i0 });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxDatetimepickerToggleIcon, decorators: [{
14
+ type: Directive,
15
+ args: [{
16
+ selector: '[mtxDatetimepickerToggleIcon]',
17
+ }]
18
+ }] });
19
+ export class MtxDatetimepickerToggle {
20
+ constructor(_intl, _changeDetectorRef) {
21
+ this._intl = _intl;
22
+ this._changeDetectorRef = _changeDetectorRef;
23
+ this._stateChanges = Subscription.EMPTY;
24
+ }
25
+ /** Whether the toggle button is disabled. */
26
+ get disabled() {
27
+ return this._disabled === undefined ? this.datetimepicker.disabled : !!this._disabled;
28
+ }
29
+ set disabled(value) {
30
+ this._disabled = coerceBooleanProperty(value);
31
+ }
32
+ ngOnChanges(changes) {
33
+ if (changes.datetimepicker) {
34
+ this._watchStateChanges();
35
+ }
36
+ }
37
+ ngOnDestroy() {
38
+ this._stateChanges.unsubscribe();
39
+ }
40
+ ngAfterContentInit() {
41
+ this._watchStateChanges();
42
+ }
43
+ _open(event) {
44
+ if (this.datetimepicker && !this.disabled) {
45
+ this.datetimepicker.open();
46
+ event.stopPropagation();
47
+ }
48
+ }
49
+ _watchStateChanges() {
50
+ const datetimepickerDisabled = this.datetimepicker
51
+ ? this.datetimepicker._disabledChange
52
+ : observableOf();
53
+ const inputDisabled = this.datetimepicker && this.datetimepicker.datetimepickerInput
54
+ ? this.datetimepicker.datetimepickerInput._disabledChange
55
+ : observableOf();
56
+ this._stateChanges.unsubscribe();
57
+ this._stateChanges = merge([
58
+ this._intl.changes,
59
+ datetimepickerDisabled,
60
+ inputDisabled,
61
+ ]).subscribe(() => this._changeDetectorRef.markForCheck());
62
+ }
63
+ }
64
+ /** @nocollapse */ /** @nocollapse */ MtxDatetimepickerToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxDatetimepickerToggle, deps: [{ token: i1.MatDatepickerIntl }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
65
+ /** @nocollapse */ /** @nocollapse */ MtxDatetimepickerToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.0", type: MtxDatetimepickerToggle, selector: "mtx-datetimepicker-toggle", inputs: { datetimepicker: ["for", "datetimepicker"], tabIndex: "tabIndex", disabled: "disabled", disableRipple: "disableRipple" }, host: { listeners: { "focus": "_button.focus()" }, properties: { "attr.tabindex": "disabled ? null : -1", "class.mtx-datetimepicker-toggle-active": "datetimepicker && datetimepicker.opened", "class.mat-accent": "datetimepicker && datetimepicker.color === \"accent\"", "class.mat-warn": "datetimepicker && datetimepicker.color === \"warn\"" }, classAttribute: "mtx-datetimepicker-toggle" }, queries: [{ propertyName: "_customIcon", first: true, predicate: MtxDatetimepickerToggleIcon, descendants: true }], viewQueries: [{ propertyName: "_button", first: true, predicate: ["button"], descendants: true }], exportAs: ["mtxDatetimepickerToggle"], usesOnChanges: true, ngImport: i0, template: "<button #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"datetimepicker ? 'dialog' : null\"\n [attr.aria-label]=\"_intl.openCalendarLabel\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [disabled]=\"disabled\"\n [disableRipple]=\"disableRipple\"\n (click)=\"_open($event)\">\n\n <ng-container *ngIf=\"!_customIcon\" [ngSwitch]=\"datetimepicker.type\">\n <svg *ngSwitchCase=\"'time'\"\n class=\"mtx-datetimepicker-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=\"M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z\">\n </path>\n </svg>\n <svg *ngSwitchCase=\"'datetime'\"\n class=\"mtx-datetimepicker-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=\"M15,13H16.5V15.82L18.94,17.23L18.19,18.53L15,16.69V13M19,8H5V19H9.67C9.24,18.09 9,17.07 9,16A7,7 0 0,1 16,9C17.07,9 18.09,9.24 19,9.67V8M5,21C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1H18V3H19A2,2 0 0,1 21,5V11.1C22.24,12.36 23,14.09 23,16A7,7 0 0,1 16,23C14.09,23 12.36,22.24 11.1,21H5M16,11.15A4.85,4.85 0 0,0 11.15,16C11.15,18.68 13.32,20.85 16,20.85A4.85,4.85 0 0,0 20.85,16C20.85,13.32 18.68,11.15 16,11.15Z\">\n </path>\n </svg>\n <svg *ngSwitchDefault\n class=\"mtx-datetimepicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\" />\n </svg>\n </ng-container>\n\n <ng-content select=\"[mtxDatetimepickerToggleIcon]\"></ng-content>\n</button>\n", styles: [".mat-form-field-appearance-legacy .mat-form-field-prefix .mtx-datetimepicker-toggle-default-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mtx-datetimepicker-toggle-default-icon{width:1em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mtx-datetimepicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mtx-datetimepicker-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-datetimepicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mtx-datetimepicker-toggle-default-icon{margin:auto}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxDatetimepickerToggle, decorators: [{
67
+ type: Component,
68
+ args: [{ selector: 'mtx-datetimepicker-toggle', host: {
69
+ 'class': 'mtx-datetimepicker-toggle',
70
+ // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the
71
+ // consumer may have provided, while still being able to receive focus.
72
+ '[attr.tabindex]': 'disabled ? null : -1',
73
+ '[class.mtx-datetimepicker-toggle-active]': 'datetimepicker && datetimepicker.opened',
74
+ '[class.mat-accent]': 'datetimepicker && datetimepicker.color === "accent"',
75
+ '[class.mat-warn]': 'datetimepicker && datetimepicker.color === "warn"',
76
+ '(focus)': '_button.focus()',
77
+ }, exportAs: 'mtxDatetimepickerToggle', encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<button #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"datetimepicker ? 'dialog' : null\"\n [attr.aria-label]=\"_intl.openCalendarLabel\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [disabled]=\"disabled\"\n [disableRipple]=\"disableRipple\"\n (click)=\"_open($event)\">\n\n <ng-container *ngIf=\"!_customIcon\" [ngSwitch]=\"datetimepicker.type\">\n <svg *ngSwitchCase=\"'time'\"\n class=\"mtx-datetimepicker-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=\"M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z\">\n </path>\n </svg>\n <svg *ngSwitchCase=\"'datetime'\"\n class=\"mtx-datetimepicker-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=\"M15,13H16.5V15.82L18.94,17.23L18.19,18.53L15,16.69V13M19,8H5V19H9.67C9.24,18.09 9,17.07 9,16A7,7 0 0,1 16,9C17.07,9 18.09,9.24 19,9.67V8M5,21C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1H18V3H19A2,2 0 0,1 21,5V11.1C22.24,12.36 23,14.09 23,16A7,7 0 0,1 16,23C14.09,23 12.36,22.24 11.1,21H5M16,11.15A4.85,4.85 0 0,0 11.15,16C11.15,18.68 13.32,20.85 16,20.85A4.85,4.85 0 0,0 20.85,16C20.85,13.32 18.68,11.15 16,11.15Z\">\n </path>\n </svg>\n <svg *ngSwitchDefault\n class=\"mtx-datetimepicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\" />\n </svg>\n </ng-container>\n\n <ng-content select=\"[mtxDatetimepickerToggleIcon]\"></ng-content>\n</button>\n", styles: [".mat-form-field-appearance-legacy .mat-form-field-prefix .mtx-datetimepicker-toggle-default-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mtx-datetimepicker-toggle-default-icon{width:1em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mtx-datetimepicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mtx-datetimepicker-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-datetimepicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mtx-datetimepicker-toggle-default-icon{margin:auto}\n"] }]
78
+ }], ctorParameters: function () { return [{ type: i1.MatDatepickerIntl }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { datetimepicker: [{
79
+ type: Input,
80
+ args: ['for']
81
+ }], tabIndex: [{
82
+ type: Input
83
+ }], disabled: [{
84
+ type: Input
85
+ }], disableRipple: [{
86
+ type: Input
87
+ }], _customIcon: [{
88
+ type: ContentChild,
89
+ args: [MtxDatetimepickerToggleIcon]
90
+ }], _button: [{
91
+ type: ViewChild,
92
+ args: ['button']
93
+ }] } });
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWVwaWNrZXItdG9nZ2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9kYXRldGltZXBpY2tlci9kYXRldGltZXBpY2tlci10b2dnbGUudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2RhdGV0aW1lcGlja2VyL2RhdGV0aW1lcGlja2VyLXRvZ2dsZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBQ1QsS0FBSyxFQUlMLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzVFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBRy9ELHVFQUF1RTtBQUl2RSxNQUFNLE9BQU8sMkJBQTJCOzs4SkFBM0IsMkJBQTJCO2tKQUEzQiwyQkFBMkI7MkZBQTNCLDJCQUEyQjtrQkFIdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsK0JBQStCO2lCQUMxQzs7QUFzQkQsTUFBTSxPQUFPLHVCQUF1QjtJQTRCbEMsWUFBbUIsS0FBd0IsRUFBVSxrQkFBcUM7UUFBdkUsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFBVSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBM0JsRixrQkFBYSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7SUEyQmtELENBQUM7SUFuQjlGLDZDQUE2QztJQUM3QyxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEYsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBY0QsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLGNBQWMsRUFBRTtZQUMxQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBWTtRQUNoQixJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQyxjQUFjO1lBQ2hELENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWU7WUFDckMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25CLE1BQU0sYUFBYSxHQUNqQixJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CO1lBQzVELENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLGVBQWU7WUFDekQsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXJCLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO1lBQ2xCLHNCQUFzQjtZQUN0QixhQUFhO1NBQ2QsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDOzswSkFsRVUsdUJBQXVCOzhJQUF2Qix1QkFBdUIsbW5CQXVCcEIsMkJBQTJCLCtNQ3BFM0MsNHFFQWdEQTsyRkRIYSx1QkFBdUI7a0JBbkJuQyxTQUFTOytCQUNFLDJCQUEyQixRQUcvQjt3QkFDSixPQUFPLEVBQUUsMkJBQTJCO3dCQUNwQyx3RkFBd0Y7d0JBQ3hGLHVFQUF1RTt3QkFDdkUsaUJBQWlCLEVBQUUsc0JBQXNCO3dCQUN6QywwQ0FBMEMsRUFBRSx5Q0FBeUM7d0JBQ3JGLG9CQUFvQixFQUFFLHFEQUFxRDt3QkFDM0Usa0JBQWtCLEVBQUUsbURBQW1EO3dCQUN2RSxTQUFTLEVBQUUsaUJBQWlCO3FCQUM3QixZQUNTLHlCQUF5QixpQkFDcEIsaUJBQWlCLENBQUMsSUFBSSx1QkFDaEIsS0FBSyxtQkFDVCx1QkFBdUIsQ0FBQyxNQUFNO3dJQU1qQyxjQUFjO3NCQUEzQixLQUFLO3VCQUFDLEtBQUs7Z0JBR0gsUUFBUTtzQkFBaEIsS0FBSztnQkFJRixRQUFRO3NCQURYLEtBQUs7Z0JBVUcsYUFBYTtzQkFBckIsS0FBSztnQkFHcUMsV0FBVztzQkFBckQsWUFBWTt1QkFBQywyQkFBMkI7Z0JBR3BCLE9BQU87c0JBQTNCLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VySW50bCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgbWVyZ2UsIG9mIGFzIG9ic2VydmFibGVPZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNdHhEYXRldGltZXBpY2tlciB9IGZyb20gJy4vZGF0ZXRpbWVwaWNrZXInO1xuXG4vKiogQ2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGljb24gb2YgYSBgbXR4RGF0ZXRpbWVwaWNrZXJUb2dnbGVgLiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW210eERhdGV0aW1lcGlja2VyVG9nZ2xlSWNvbl0nLFxufSlcbmV4cG9ydCBjbGFzcyBNdHhEYXRldGltZXBpY2tlclRvZ2dsZUljb24ge31cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXR4LWRhdGV0aW1lcGlja2VyLXRvZ2dsZScsXG4gIHRlbXBsYXRlVXJsOiAnZGF0ZXRpbWVwaWNrZXItdG9nZ2xlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRldGltZXBpY2tlci10b2dnbGUuc2NzcyddLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ210eC1kYXRldGltZXBpY2tlci10b2dnbGUnLFxuICAgIC8vIEFsd2F5cyBzZXQgdGhlIHRhYmluZGV4IHRvIC0xIHNvIHRoYXQgaXQgZG9lc24ndCBvdmVybGFwIHdpdGggYW55IGN1c3RvbSB0YWJpbmRleCB0aGVcbiAgICAvLyBjb25zdW1lciBtYXkgaGF2ZSBwcm92aWRlZCwgd2hpbGUgc3RpbGwgYmVpbmcgYWJsZSB0byByZWNlaXZlIGZvY3VzLlxuICAgICdbYXR0ci50YWJpbmRleF0nOiAnZGlzYWJsZWQgPyBudWxsIDogLTEnLFxuICAgICdbY2xhc3MubXR4LWRhdGV0aW1lcGlja2VyLXRvZ2dsZS1hY3RpdmVdJzogJ2RhdGV0aW1lcGlja2VyICYmIGRhdGV0aW1lcGlja2VyLm9wZW5lZCcsXG4gICAgJ1tjbGFzcy5tYXQtYWNjZW50XSc6ICdkYXRldGltZXBpY2tlciAmJiBkYXRldGltZXBpY2tlci5jb2xvciA9PT0gXCJhY2NlbnRcIicsXG4gICAgJ1tjbGFzcy5tYXQtd2Fybl0nOiAnZGF0ZXRpbWVwaWNrZXIgJiYgZGF0ZXRpbWVwaWNrZXIuY29sb3IgPT09IFwid2FyblwiJyxcbiAgICAnKGZvY3VzKSc6ICdfYnV0dG9uLmZvY3VzKCknLFxuICB9LFxuICBleHBvcnRBczogJ210eERhdGV0aW1lcGlja2VyVG9nZ2xlJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNdHhEYXRldGltZXBpY2tlclRvZ2dsZTxEPiBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfc3RhdGVDaGFuZ2VzID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gIC8qKiBEYXRldGltZXBpY2tlciBpbnN0YW5jZSB0aGF0IHRoZSBidXR0b24gd2lsbCB0b2dnbGUuICovXG4gIEBJbnB1dCgnZm9yJykgZGF0ZXRpbWVwaWNrZXIhOiBNdHhEYXRldGltZXBpY2tlcjxEPjtcblxuICAvKiogVGFiaW5kZXggZm9yIHRoZSB0b2dnbGUuICovXG4gIEBJbnB1dCgpIHRhYkluZGV4ITogbnVtYmVyO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSB0b2dnbGUgYnV0dG9uIGlzIGRpc2FibGVkLiAqL1xuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkID09PSB1bmRlZmluZWQgPyB0aGlzLmRhdGV0aW1lcGlja2VyLmRpc2FibGVkIDogISF0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQhOiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIHJpcHBsZXMgb24gdGhlIHRvZ2dsZSBzaG91bGQgYmUgZGlzYWJsZWQuICovXG4gIEBJbnB1dCgpIGRpc2FibGVSaXBwbGUhOiBib29sZWFuO1xuXG4gIC8qKiBDdXN0b20gaWNvbiBzZXQgYnkgdGhlIGNvbnN1bWVyLiAqL1xuICBAQ29udGVudENoaWxkKE10eERhdGV0aW1lcGlja2VyVG9nZ2xlSWNvbikgX2N1c3RvbUljb24hOiBNdHhEYXRldGltZXBpY2tlclRvZ2dsZUljb247XG5cbiAgLyoqIFVuZGVybHlpbmcgYnV0dG9uIGVsZW1lbnQuICovXG4gIEBWaWV3Q2hpbGQoJ2J1dHRvbicpIF9idXR0b24hOiBNYXRCdXR0b247XG5cbiAgY29uc3RydWN0b3IocHVibGljIF9pbnRsOiBNYXREYXRlcGlja2VySW50bCwgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5kYXRldGltZXBpY2tlcikge1xuICAgICAgdGhpcy5fd2F0Y2hTdGF0ZUNoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdGF0ZUNoYW5nZXMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLl93YXRjaFN0YXRlQ2hhbmdlcygpO1xuICB9XG5cbiAgX29wZW4oZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0ZXRpbWVwaWNrZXIgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuZGF0ZXRpbWVwaWNrZXIub3BlbigpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfd2F0Y2hTdGF0ZUNoYW5nZXMoKSB7XG4gICAgY29uc3QgZGF0ZXRpbWVwaWNrZXJEaXNhYmxlZCA9IHRoaXMuZGF0ZXRpbWVwaWNrZXJcbiAgICAgID8gdGhpcy5kYXRldGltZXBpY2tlci5fZGlzYWJsZWRDaGFuZ2VcbiAgICAgIDogb2JzZXJ2YWJsZU9mKCk7XG4gICAgY29uc3QgaW5wdXREaXNhYmxlZCA9XG4gICAgICB0aGlzLmRhdGV0aW1lcGlja2VyICYmIHRoaXMuZGF0ZXRpbWVwaWNrZXIuZGF0ZXRpbWVwaWNrZXJJbnB1dFxuICAgICAgICA/IHRoaXMuZGF0ZXRpbWVwaWNrZXIuZGF0ZXRpbWVwaWNrZXJJbnB1dC5fZGlzYWJsZWRDaGFuZ2VcbiAgICAgICAgOiBvYnNlcnZhYmxlT2YoKTtcblxuICAgIHRoaXMuX3N0YXRlQ2hhbmdlcy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3N0YXRlQ2hhbmdlcyA9IG1lcmdlKFtcbiAgICAgIHRoaXMuX2ludGwuY2hhbmdlcyxcbiAgICAgIGRhdGV0aW1lcGlja2VyRGlzYWJsZWQsXG4gICAgICBpbnB1dERpc2FibGVkLFxuICAgIF0pLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSk7XG4gIH1cblxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVSaXBwbGU6IEJvb2xlYW5JbnB1dDtcbn1cbiIsIjxidXR0b24gI2J1dHRvblxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwiZGF0ZXRpbWVwaWNrZXIgPyAnZGlhbG9nJyA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIl9pbnRsLm9wZW5DYWxlbmRhckxhYmVsXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IHRhYkluZGV4XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2Rpc2FibGVSaXBwbGVdPVwiZGlzYWJsZVJpcHBsZVwiXG4gICAgICAgIChjbGljayk9XCJfb3BlbigkZXZlbnQpXCI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFfY3VzdG9tSWNvblwiIFtuZ1N3aXRjaF09XCJkYXRldGltZXBpY2tlci50eXBlXCI+XG4gICAgPHN2ZyAqbmdTd2l0Y2hDYXNlPVwiJ3RpbWUnXCJcbiAgICAgICAgIGNsYXNzPVwibXR4LWRhdGV0aW1lcGlja2VyLXRvZ2dsZS1kZWZhdWx0LWljb25cIlxuICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICB3aWR0aD1cIjI0cHhcIlxuICAgICAgICAgaGVpZ2h0PVwiMjRweFwiXG4gICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICA8cGF0aFxuICAgICAgICAgICAgZD1cIk0xMiwyMEE4LDggMCAwLDAgMjAsMTJBOCw4IDAgMCwwIDEyLDRBOCw4IDAgMCwwIDQsMTJBOCw4IDAgMCwwIDEyLDIwTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJDNi40NywyMiAyLDE3LjUgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTEyLjUsN1YxMi4yNUwxNywxNC45MkwxNi4yNSwxNi4xNUwxMSwxM1Y3SDEyLjVaXCI+XG4gICAgICA8L3BhdGg+XG4gICAgPC9zdmc+XG4gICAgPHN2ZyAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGV0aW1lJ1wiXG4gICAgICAgICBjbGFzcz1cIm10eC1kYXRldGltZXBpY2tlci10b2dnbGUtZGVmYXVsdC1pY29uXCJcbiAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgd2lkdGg9XCIyNHB4XCJcbiAgICAgICAgIGhlaWdodD1cIjI0cHhcIlxuICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiPlxuICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMTUsMTNIMTYuNVYxNS44MkwxOC45NCwxNy4yM0wxOC4xOSwxOC41M0wxNSwxNi42OVYxM00xOSw4SDVWMTlIOS42N0M5LjI0LDE4LjA5IDksMTcuMDcgOSwxNkE3LDcgMCAwLDEgMTYsOUMxNy4wNyw5IDE4LjA5LDkuMjQgMTksOS42N1Y4TTUsMjFDMy44OSwyMSAzLDIwLjEgMywxOVY1QzMsMy44OSAzLjg5LDMgNSwzSDZWMUg4VjNIMTZWMUgxOFYzSDE5QTIsMiAwIDAsMSAyMSw1VjExLjFDMjIuMjQsMTIuMzYgMjMsMTQuMDkgMjMsMTZBNyw3IDAgMCwxIDE2LDIzQzE0LjA5LDIzIDEyLjM2LDIyLjI0IDExLjEsMjFINU0xNiwxMS4xNUE0Ljg1LDQuODUgMCAwLDAgMTEuMTUsMTZDMTEuMTUsMTguNjggMTMuMzIsMjAuODUgMTYsMjAuODVBNC44NSw0Ljg1IDAgMCwwIDIwLjg1LDE2QzIwLjg1LDEzLjMyIDE4LjY4LDExLjE1IDE2LDExLjE1WlwiPlxuICAgICAgPC9wYXRoPlxuICAgIDwvc3ZnPlxuICAgIDxzdmcgKm5nU3dpdGNoRGVmYXVsdFxuICAgICAgICAgY2xhc3M9XCJtdHgtZGF0ZXRpbWVwaWNrZXItdG9nZ2xlLWRlZmF1bHQtaWNvblwiXG4gICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgIHdpZHRoPVwiMjRweFwiXG4gICAgICAgICBoZWlnaHQ9XCIyNHB4XCJcbiAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIj5cbiAgICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIiAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3elwiIC8+XG4gICAgPC9zdmc+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIlttdHhEYXRldGltZXBpY2tlclRvZ2dsZUljb25dXCI+PC9uZy1jb250ZW50PlxuPC9idXR0b24+XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWVwaWNrZXItdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2RhdGV0aW1lcGlja2VyL2RhdGV0aW1lcGlja2VyLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBNdHhEYXRldGltZXBpY2tlclR5cGUgPSAnZGF0ZScgfCAndGltZScgfCAnbW9udGgnIHwgJ3llYXInIHwgJ2RhdGV0aW1lJztcbiJdfQ==