@ptsecurity/mosaic 13.6.0 → 13.6.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 (298) hide show
  1. package/_theming.scss +28 -15
  2. package/_visual.scss +4 -3
  3. package/datepicker/datepicker.component.d.ts +10 -10
  4. package/design-tokens/legacy-2017/tokens/components/radio.json5 +1 -0
  5. package/design-tokens/legacy-2017/tokens/properties/colors.json5 +1 -0
  6. package/design-tokens/legacy-2017/tokens.d.ts +1 -0
  7. package/design-tokens/pt-2022/tokens/components/form-field.json5 +1 -1
  8. package/design-tokens/pt-2022/tokens/components/link.json5 +2 -2
  9. package/design-tokens/pt-2022/tokens/components/radio.json5 +1 -0
  10. package/design-tokens/pt-2022/tokens/properties/colors.json5 +2 -0
  11. package/design-tokens/pt-2022/tokens.d.ts +4 -3
  12. package/esm2020/autocomplete/autocomplete-origin.directive.mjs +4 -4
  13. package/esm2020/autocomplete/autocomplete-trigger.directive.mjs +4 -4
  14. package/esm2020/autocomplete/autocomplete.component.mjs +4 -4
  15. package/esm2020/autocomplete/autocomplete.module.mjs +5 -5
  16. package/esm2020/button/button.component.mjs +7 -7
  17. package/esm2020/button/button.module.mjs +5 -5
  18. package/esm2020/button-toggle/button-toggle.component.mjs +7 -7
  19. package/esm2020/button-toggle/button-toggle.module.mjs +5 -5
  20. package/esm2020/card/card.component.mjs +4 -4
  21. package/esm2020/card/card.module.mjs +5 -5
  22. package/esm2020/checkbox/checkbox-module.mjs +5 -5
  23. package/esm2020/checkbox/checkbox-required-validator.mjs +4 -4
  24. package/esm2020/checkbox/checkbox.mjs +4 -4
  25. package/esm2020/core/common-behaviors/common-module.mjs +5 -5
  26. package/esm2020/core/error/error-options.mjs +7 -7
  27. package/esm2020/core/formatters/date/formatter.mjs +4 -4
  28. package/esm2020/core/formatters/index.mjs +5 -5
  29. package/esm2020/core/formatters/number/formatter.mjs +5 -5
  30. package/esm2020/core/forms/forms-module.mjs +5 -5
  31. package/esm2020/core/forms/forms.directive.mjs +7 -7
  32. package/esm2020/core/highlight/highlight.pipe.mjs +4 -4
  33. package/esm2020/core/highlight/index.mjs +5 -5
  34. package/esm2020/core/line/line.mjs +8 -8
  35. package/esm2020/core/option/action.mjs +4 -4
  36. package/esm2020/core/option/optgroup.mjs +4 -4
  37. package/esm2020/core/option/option-module.mjs +5 -5
  38. package/esm2020/core/option/option.mjs +4 -4
  39. package/esm2020/core/pop-up/pop-up-trigger.mjs +4 -4
  40. package/esm2020/core/pop-up/pop-up.mjs +4 -4
  41. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +4 -4
  42. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +5 -5
  43. package/esm2020/core/services/measure-scrollbar.service.mjs +4 -4
  44. package/esm2020/datepicker/calendar-body.component.mjs +4 -4
  45. package/esm2020/datepicker/calendar.component.mjs +7 -7
  46. package/esm2020/datepicker/datepicker-input.directive.mjs +12 -10
  47. package/esm2020/datepicker/datepicker-intl.mjs +4 -4
  48. package/esm2020/datepicker/datepicker-module.mjs +5 -5
  49. package/esm2020/datepicker/datepicker-toggle.component.mjs +7 -7
  50. package/esm2020/datepicker/datepicker.component.mjs +13 -17
  51. package/esm2020/datepicker/month-view.component.mjs +4 -4
  52. package/esm2020/datepicker/multi-year-view.component.mjs +4 -4
  53. package/esm2020/datepicker/year-view.component.mjs +4 -4
  54. package/esm2020/design-tokens/legacy-2017/tokens.mjs +2 -1
  55. package/esm2020/design-tokens/pt-2022/tokens.mjs +5 -4
  56. package/esm2020/divider/divider.component.mjs +4 -4
  57. package/esm2020/divider/divider.module.mjs +5 -5
  58. package/esm2020/dl/dl.component.mjs +10 -10
  59. package/esm2020/dl/dl.module.mjs +5 -5
  60. package/esm2020/dropdown/dropdown-content.directive.mjs +4 -4
  61. package/esm2020/dropdown/dropdown-item.component.mjs +4 -4
  62. package/esm2020/dropdown/dropdown-trigger.directive.mjs +4 -4
  63. package/esm2020/dropdown/dropdown.component.mjs +4 -4
  64. package/esm2020/dropdown/dropdown.module.mjs +5 -5
  65. package/esm2020/form-field/cleaner.mjs +4 -4
  66. package/esm2020/form-field/form-field.mjs +13 -13
  67. package/esm2020/form-field/form-field.module.mjs +5 -5
  68. package/esm2020/form-field/hint.mjs +4 -4
  69. package/esm2020/form-field/password-hint.mjs +4 -4
  70. package/esm2020/form-field/prefix.mjs +4 -4
  71. package/esm2020/form-field/stepper.mjs +4 -4
  72. package/esm2020/form-field/suffix.mjs +4 -4
  73. package/esm2020/icon/icon.component.mjs +7 -7
  74. package/esm2020/icon/icon.module.mjs +5 -5
  75. package/esm2020/input/input-number-validators.mjs +7 -7
  76. package/esm2020/input/input-number.mjs +4 -4
  77. package/esm2020/input/input-password.mjs +7 -7
  78. package/esm2020/input/input.mjs +7 -7
  79. package/esm2020/input/input.module.mjs +5 -5
  80. package/esm2020/link/link.component.mjs +4 -4
  81. package/esm2020/link/link.module.mjs +5 -5
  82. package/esm2020/list/list-selection.component.mjs +7 -7
  83. package/esm2020/list/list.component.mjs +7 -7
  84. package/esm2020/list/list.module.mjs +5 -5
  85. package/esm2020/modal/css-unit.pipe.mjs +4 -4
  86. package/esm2020/modal/modal-control.service.mjs +4 -4
  87. package/esm2020/modal/modal.component.mjs +4 -4
  88. package/esm2020/modal/modal.directive.mjs +13 -13
  89. package/esm2020/modal/modal.module.mjs +5 -5
  90. package/esm2020/modal/modal.service.mjs +4 -4
  91. package/esm2020/navbar/navbar-item.component.mjs +31 -31
  92. package/esm2020/navbar/navbar.component.mjs +10 -10
  93. package/esm2020/navbar/navbar.module.mjs +5 -5
  94. package/esm2020/navbar/vertical-navbar.component.mjs +4 -4
  95. package/esm2020/popover/popover-confirm.component.mjs +7 -7
  96. package/esm2020/popover/popover.component.mjs +7 -7
  97. package/esm2020/popover/popover.module.mjs +5 -5
  98. package/esm2020/progress-bar/progress-bar.component.mjs +4 -4
  99. package/esm2020/progress-bar/progress-bar.module.mjs +5 -5
  100. package/esm2020/progress-spinner/progress-spinner.component.mjs +4 -4
  101. package/esm2020/progress-spinner/progress-spinner.module.mjs +5 -5
  102. package/esm2020/radio/radio.component.mjs +8 -8
  103. package/esm2020/radio/radio.module.mjs +5 -5
  104. package/esm2020/select/select-option.directive.mjs +4 -4
  105. package/esm2020/select/select.component.mjs +24 -14
  106. package/esm2020/select/select.module.mjs +5 -5
  107. package/esm2020/sidebar/sidebar.component.mjs +10 -10
  108. package/esm2020/sidebar/sidebar.module.mjs +5 -5
  109. package/esm2020/sidepanel/sidepanel-container.component.mjs +4 -4
  110. package/esm2020/sidepanel/sidepanel-directives.mjs +16 -16
  111. package/esm2020/sidepanel/sidepanel.module.mjs +5 -5
  112. package/esm2020/sidepanel/sidepanel.service.mjs +4 -4
  113. package/esm2020/splitter/splitter.component.mjs +13 -13
  114. package/esm2020/splitter/splitter.module.mjs +5 -5
  115. package/esm2020/table/table.component.mjs +4 -4
  116. package/esm2020/table/table.module.mjs +5 -5
  117. package/esm2020/tabs/paginated-tab-header.mjs +4 -4
  118. package/esm2020/tabs/tab-body.component.mjs +7 -7
  119. package/esm2020/tabs/tab-content.directive.mjs +4 -4
  120. package/esm2020/tabs/tab-group.component.mjs +19 -19
  121. package/esm2020/tabs/tab-header.component.mjs +4 -4
  122. package/esm2020/tabs/tab-label-wrapper.directive.mjs +4 -4
  123. package/esm2020/tabs/tab-label.directive.mjs +4 -4
  124. package/esm2020/tabs/tab-nav-bar/tab-nav-bar.mjs +7 -7
  125. package/esm2020/tabs/tab.component.mjs +4 -4
  126. package/esm2020/tabs/tabs.module.mjs +5 -5
  127. package/esm2020/tags/tag-input.mjs +4 -4
  128. package/esm2020/tags/tag-list.component.mjs +4 -4
  129. package/esm2020/tags/tag.component.mjs +13 -13
  130. package/esm2020/tags/tag.module.mjs +5 -5
  131. package/esm2020/textarea/textarea.component.mjs +4 -4
  132. package/esm2020/textarea/textarea.module.mjs +5 -5
  133. package/esm2020/timepicker/timepicker.directive.mjs +8 -19
  134. package/esm2020/timepicker/timepicker.module.mjs +5 -5
  135. package/esm2020/toggle/toggle.component.mjs +4 -4
  136. package/esm2020/toggle/toggle.module.mjs +5 -5
  137. package/esm2020/tooltip/tooltip.component.mjs +13 -13
  138. package/esm2020/tooltip/tooltip.module.mjs +5 -5
  139. package/esm2020/tree/node.mjs +4 -4
  140. package/esm2020/tree/outlet.mjs +4 -4
  141. package/esm2020/tree/padding.directive.mjs +12 -9
  142. package/esm2020/tree/toggle.mjs +10 -10
  143. package/esm2020/tree/tree-base.mjs +7 -7
  144. package/esm2020/tree/tree-option.component.mjs +22 -10
  145. package/esm2020/tree/tree-selection.component.mjs +4 -4
  146. package/esm2020/tree/tree.mjs +4 -4
  147. package/esm2020/tree/tree.module.mjs +5 -5
  148. package/esm2020/tree-select/tree-select.component.mjs +21 -11
  149. package/esm2020/tree-select/tree-select.module.mjs +5 -5
  150. package/fesm2015/ptsecurity-mosaic-autocomplete.mjs +13 -13
  151. package/fesm2015/ptsecurity-mosaic-autocomplete.mjs.map +1 -1
  152. package/fesm2015/ptsecurity-mosaic-button-toggle.mjs +10 -10
  153. package/fesm2015/ptsecurity-mosaic-button-toggle.mjs.map +1 -1
  154. package/fesm2015/ptsecurity-mosaic-button.mjs +10 -10
  155. package/fesm2015/ptsecurity-mosaic-button.mjs.map +1 -1
  156. package/fesm2015/ptsecurity-mosaic-card.mjs +7 -7
  157. package/fesm2015/ptsecurity-mosaic-card.mjs.map +1 -1
  158. package/fesm2015/ptsecurity-mosaic-checkbox.mjs +10 -10
  159. package/fesm2015/ptsecurity-mosaic-checkbox.mjs.map +1 -1
  160. package/fesm2015/ptsecurity-mosaic-core.mjs +74 -74
  161. package/fesm2015/ptsecurity-mosaic-core.mjs.map +1 -1
  162. package/fesm2015/ptsecurity-mosaic-datepicker.mjs +54 -56
  163. package/fesm2015/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  164. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs +7 -4
  165. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  166. package/fesm2015/ptsecurity-mosaic-divider.mjs +7 -7
  167. package/fesm2015/ptsecurity-mosaic-divider.mjs.map +1 -1
  168. package/fesm2015/ptsecurity-mosaic-dl.mjs +13 -13
  169. package/fesm2015/ptsecurity-mosaic-dl.mjs.map +1 -1
  170. package/fesm2015/ptsecurity-mosaic-dropdown.mjs +16 -16
  171. package/fesm2015/ptsecurity-mosaic-dropdown.mjs.map +1 -1
  172. package/fesm2015/ptsecurity-mosaic-form-field.mjs +34 -34
  173. package/fesm2015/ptsecurity-mosaic-form-field.mjs.map +1 -1
  174. package/fesm2015/ptsecurity-mosaic-icon.mjs +10 -10
  175. package/fesm2015/ptsecurity-mosaic-icon.mjs.map +1 -1
  176. package/fesm2015/ptsecurity-mosaic-input.mjs +25 -25
  177. package/fesm2015/ptsecurity-mosaic-input.mjs.map +1 -1
  178. package/fesm2015/ptsecurity-mosaic-link.mjs +7 -7
  179. package/fesm2015/ptsecurity-mosaic-link.mjs.map +1 -1
  180. package/fesm2015/ptsecurity-mosaic-list.mjs +16 -16
  181. package/fesm2015/ptsecurity-mosaic-list.mjs.map +1 -1
  182. package/fesm2015/ptsecurity-mosaic-modal.mjs +28 -28
  183. package/fesm2015/ptsecurity-mosaic-modal.mjs.map +1 -1
  184. package/fesm2015/ptsecurity-mosaic-navbar.mjs +46 -46
  185. package/fesm2015/ptsecurity-mosaic-navbar.mjs.map +1 -1
  186. package/fesm2015/ptsecurity-mosaic-popover.mjs +16 -16
  187. package/fesm2015/ptsecurity-mosaic-popover.mjs.map +1 -1
  188. package/fesm2015/ptsecurity-mosaic-progress-bar.mjs +7 -7
  189. package/fesm2015/ptsecurity-mosaic-progress-bar.mjs.map +1 -1
  190. package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs +7 -7
  191. package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs.map +1 -1
  192. package/fesm2015/ptsecurity-mosaic-radio.mjs +11 -11
  193. package/fesm2015/ptsecurity-mosaic-radio.mjs.map +1 -1
  194. package/fesm2015/ptsecurity-mosaic-select.mjs +30 -20
  195. package/fesm2015/ptsecurity-mosaic-select.mjs.map +1 -1
  196. package/fesm2015/ptsecurity-mosaic-sidebar.mjs +13 -13
  197. package/fesm2015/ptsecurity-mosaic-sidebar.mjs.map +1 -1
  198. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs +25 -25
  199. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  200. package/fesm2015/ptsecurity-mosaic-splitter.mjs +16 -16
  201. package/fesm2015/ptsecurity-mosaic-splitter.mjs.map +1 -1
  202. package/fesm2015/ptsecurity-mosaic-table.mjs +7 -7
  203. package/fesm2015/ptsecurity-mosaic-table.mjs.map +1 -1
  204. package/fesm2015/ptsecurity-mosaic-tabs.mjs +52 -52
  205. package/fesm2015/ptsecurity-mosaic-tabs.mjs.map +1 -1
  206. package/fesm2015/ptsecurity-mosaic-tags.mjs +22 -22
  207. package/fesm2015/ptsecurity-mosaic-tags.mjs.map +1 -1
  208. package/fesm2015/ptsecurity-mosaic-textarea.mjs +7 -7
  209. package/fesm2015/ptsecurity-mosaic-textarea.mjs.map +1 -1
  210. package/fesm2015/ptsecurity-mosaic-timepicker.mjs +11 -22
  211. package/fesm2015/ptsecurity-mosaic-timepicker.mjs.map +1 -1
  212. package/fesm2015/ptsecurity-mosaic-toggle.mjs +7 -7
  213. package/fesm2015/ptsecurity-mosaic-toggle.mjs.map +1 -1
  214. package/fesm2015/ptsecurity-mosaic-tooltip.mjs +16 -16
  215. package/fesm2015/ptsecurity-mosaic-tooltip.mjs.map +1 -1
  216. package/fesm2015/ptsecurity-mosaic-tree-select.mjs +24 -14
  217. package/fesm2015/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  218. package/fesm2015/ptsecurity-mosaic-tree.mjs +168 -155
  219. package/fesm2015/ptsecurity-mosaic-tree.mjs.map +1 -1
  220. package/fesm2020/ptsecurity-mosaic-autocomplete.mjs +13 -13
  221. package/fesm2020/ptsecurity-mosaic-autocomplete.mjs.map +1 -1
  222. package/fesm2020/ptsecurity-mosaic-button-toggle.mjs +10 -10
  223. package/fesm2020/ptsecurity-mosaic-button-toggle.mjs.map +1 -1
  224. package/fesm2020/ptsecurity-mosaic-button.mjs +10 -10
  225. package/fesm2020/ptsecurity-mosaic-button.mjs.map +1 -1
  226. package/fesm2020/ptsecurity-mosaic-card.mjs +7 -7
  227. package/fesm2020/ptsecurity-mosaic-card.mjs.map +1 -1
  228. package/fesm2020/ptsecurity-mosaic-checkbox.mjs +10 -10
  229. package/fesm2020/ptsecurity-mosaic-checkbox.mjs.map +1 -1
  230. package/fesm2020/ptsecurity-mosaic-core.mjs +74 -74
  231. package/fesm2020/ptsecurity-mosaic-core.mjs.map +1 -1
  232. package/fesm2020/ptsecurity-mosaic-datepicker.mjs +54 -56
  233. package/fesm2020/ptsecurity-mosaic-datepicker.mjs.map +1 -1
  234. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs +7 -4
  235. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs.map +1 -1
  236. package/fesm2020/ptsecurity-mosaic-divider.mjs +7 -7
  237. package/fesm2020/ptsecurity-mosaic-divider.mjs.map +1 -1
  238. package/fesm2020/ptsecurity-mosaic-dl.mjs +13 -13
  239. package/fesm2020/ptsecurity-mosaic-dl.mjs.map +1 -1
  240. package/fesm2020/ptsecurity-mosaic-dropdown.mjs +16 -16
  241. package/fesm2020/ptsecurity-mosaic-dropdown.mjs.map +1 -1
  242. package/fesm2020/ptsecurity-mosaic-form-field.mjs +34 -34
  243. package/fesm2020/ptsecurity-mosaic-form-field.mjs.map +1 -1
  244. package/fesm2020/ptsecurity-mosaic-icon.mjs +10 -10
  245. package/fesm2020/ptsecurity-mosaic-icon.mjs.map +1 -1
  246. package/fesm2020/ptsecurity-mosaic-input.mjs +25 -25
  247. package/fesm2020/ptsecurity-mosaic-input.mjs.map +1 -1
  248. package/fesm2020/ptsecurity-mosaic-link.mjs +7 -7
  249. package/fesm2020/ptsecurity-mosaic-link.mjs.map +1 -1
  250. package/fesm2020/ptsecurity-mosaic-list.mjs +16 -16
  251. package/fesm2020/ptsecurity-mosaic-list.mjs.map +1 -1
  252. package/fesm2020/ptsecurity-mosaic-modal.mjs +28 -28
  253. package/fesm2020/ptsecurity-mosaic-modal.mjs.map +1 -1
  254. package/fesm2020/ptsecurity-mosaic-navbar.mjs +46 -46
  255. package/fesm2020/ptsecurity-mosaic-navbar.mjs.map +1 -1
  256. package/fesm2020/ptsecurity-mosaic-popover.mjs +16 -16
  257. package/fesm2020/ptsecurity-mosaic-popover.mjs.map +1 -1
  258. package/fesm2020/ptsecurity-mosaic-progress-bar.mjs +7 -7
  259. package/fesm2020/ptsecurity-mosaic-progress-bar.mjs.map +1 -1
  260. package/fesm2020/ptsecurity-mosaic-progress-spinner.mjs +7 -7
  261. package/fesm2020/ptsecurity-mosaic-progress-spinner.mjs.map +1 -1
  262. package/fesm2020/ptsecurity-mosaic-radio.mjs +11 -11
  263. package/fesm2020/ptsecurity-mosaic-radio.mjs.map +1 -1
  264. package/fesm2020/ptsecurity-mosaic-select.mjs +30 -20
  265. package/fesm2020/ptsecurity-mosaic-select.mjs.map +1 -1
  266. package/fesm2020/ptsecurity-mosaic-sidebar.mjs +13 -13
  267. package/fesm2020/ptsecurity-mosaic-sidebar.mjs.map +1 -1
  268. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs +25 -25
  269. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  270. package/fesm2020/ptsecurity-mosaic-splitter.mjs +16 -16
  271. package/fesm2020/ptsecurity-mosaic-splitter.mjs.map +1 -1
  272. package/fesm2020/ptsecurity-mosaic-table.mjs +7 -7
  273. package/fesm2020/ptsecurity-mosaic-table.mjs.map +1 -1
  274. package/fesm2020/ptsecurity-mosaic-tabs.mjs +52 -52
  275. package/fesm2020/ptsecurity-mosaic-tabs.mjs.map +1 -1
  276. package/fesm2020/ptsecurity-mosaic-tags.mjs +22 -22
  277. package/fesm2020/ptsecurity-mosaic-tags.mjs.map +1 -1
  278. package/fesm2020/ptsecurity-mosaic-textarea.mjs +7 -7
  279. package/fesm2020/ptsecurity-mosaic-textarea.mjs.map +1 -1
  280. package/fesm2020/ptsecurity-mosaic-timepicker.mjs +11 -22
  281. package/fesm2020/ptsecurity-mosaic-timepicker.mjs.map +1 -1
  282. package/fesm2020/ptsecurity-mosaic-toggle.mjs +7 -7
  283. package/fesm2020/ptsecurity-mosaic-toggle.mjs.map +1 -1
  284. package/fesm2020/ptsecurity-mosaic-tooltip.mjs +16 -16
  285. package/fesm2020/ptsecurity-mosaic-tooltip.mjs.map +1 -1
  286. package/fesm2020/ptsecurity-mosaic-tree-select.mjs +24 -14
  287. package/fesm2020/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  288. package/fesm2020/ptsecurity-mosaic-tree.mjs +165 -152
  289. package/fesm2020/ptsecurity-mosaic-tree.mjs.map +1 -1
  290. package/form-field/form-field.d.ts +2 -2
  291. package/package.json +4 -4
  292. package/prebuilt-themes/dark-theme.css +1 -1
  293. package/prebuilt-themes/default-theme.css +1 -1
  294. package/select/select.component.d.ts +3 -0
  295. package/timepicker/timepicker.directive.d.ts +0 -1
  296. package/tree/padding.directive.d.ts +7 -5
  297. package/tree/tree-option.component.d.ts +6 -2
  298. package/tree-select/tree-select.component.d.ts +3 -0
@@ -203,9 +203,9 @@ class McTextarea extends McTextareaMixinBase {
203
203
  return validity && validity.badInput;
204
204
  }
205
205
  }
206
- /** @nocollapse */ /** @nocollapse */ McTextarea.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTextarea, deps: [{ token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: MC_VALIDATION, optional: true }, { token: i1.NgModel, optional: true, self: true }, { token: i1.FormGroupDirective, optional: true }, { token: i2.ErrorStateMatcher }, { token: MC_TEXTAREA_VALUE_ACCESSOR, optional: true, self: true }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
207
- /** @nocollapse */ /** @nocollapse */ McTextarea.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.7", type: McTextarea, selector: "textarea[mcTextarea]", inputs: { canGrow: "canGrow", errorStateMatcher: "errorStateMatcher", disabled: "disabled", id: "id", placeholder: "placeholder", required: "required", value: "value" }, host: { listeners: { "blur": "focusChanged(false)", "focus": "focusChanged(true)" }, properties: { "class.mc-textarea-resizable": "!canGrow", "attr.id": "id", "attr.placeholder": "placeholder", "attr.aria-invalid": "errorState", "attr.disabled": "disabled || null", "attr.required": "required" }, classAttribute: "mc-textarea" }, providers: [{ provide: McFormFieldControl, useExisting: McTextarea }], exportAs: ["mcTextarea"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
208
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTextarea, decorators: [{
206
+ /** @nocollapse */ /** @nocollapse */ McTextarea.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTextarea, deps: [{ token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: i1.NgForm, optional: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: MC_VALIDATION, optional: true }, { token: i1.NgModel, optional: true, self: true }, { token: i1.FormGroupDirective, optional: true }, { token: i2.ErrorStateMatcher }, { token: MC_TEXTAREA_VALUE_ACCESSOR, optional: true, self: true }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
207
+ /** @nocollapse */ /** @nocollapse */ McTextarea.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: McTextarea, selector: "textarea[mcTextarea]", inputs: { canGrow: "canGrow", errorStateMatcher: "errorStateMatcher", disabled: "disabled", id: "id", placeholder: "placeholder", required: "required", value: "value" }, host: { listeners: { "blur": "focusChanged(false)", "focus": "focusChanged(true)" }, properties: { "class.mc-textarea-resizable": "!canGrow", "attr.id": "id", "attr.placeholder": "placeholder", "attr.aria-invalid": "errorState", "attr.disabled": "disabled || null", "attr.required": "required" }, classAttribute: "mc-textarea" }, providers: [{ provide: McFormFieldControl, useExisting: McTextarea }], exportAs: ["mcTextarea"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
208
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTextarea, decorators: [{
209
209
  type: Directive,
210
210
  args: [{
211
211
  selector: 'textarea[mcTextarea]',
@@ -272,10 +272,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImpor
272
272
 
273
273
  class McTextareaModule {
274
274
  }
275
- /** @nocollapse */ /** @nocollapse */ McTextareaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTextareaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
276
- /** @nocollapse */ /** @nocollapse */ McTextareaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTextareaModule, declarations: [McTextarea], imports: [CommonModule, A11yModule, McCommonModule, FormsModule], exports: [McTextarea] });
277
- /** @nocollapse */ /** @nocollapse */ McTextareaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTextareaModule, imports: [[CommonModule, A11yModule, McCommonModule, FormsModule]] });
278
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTextareaModule, decorators: [{
275
+ /** @nocollapse */ /** @nocollapse */ McTextareaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTextareaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
276
+ /** @nocollapse */ /** @nocollapse */ McTextareaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTextareaModule, declarations: [McTextarea], imports: [CommonModule, A11yModule, McCommonModule, FormsModule], exports: [McTextarea] });
277
+ /** @nocollapse */ /** @nocollapse */ McTextareaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTextareaModule, imports: [[CommonModule, A11yModule, McCommonModule, FormsModule]] });
278
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTextareaModule, decorators: [{
279
279
  type: NgModule,
280
280
  args: [{
281
281
  imports: [CommonModule, A11yModule, McCommonModule, FormsModule],
@@ -1 +1 @@
1
- {"version":3,"file":"ptsecurity-mosaic-textarea.mjs","sources":["../../../packages/mosaic/textarea/textarea.component.ts","../../../packages/mosaic/textarea/textarea.module.ts","../../../packages/mosaic/textarea/ptsecurity-mosaic-textarea.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport {\r\n Directive, DoCheck, ElementRef, Inject,\r\n Input, OnChanges, OnDestroy, Optional,\r\n Self, InjectionToken, NgZone, OnInit,\r\n AfterContentInit,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { FormGroupDirective, NG_VALIDATORS, NgControl, NgForm, NgModel, Validator } from '@angular/forms';\r\nimport {\r\n CanUpdateErrorState,\r\n CanUpdateErrorStateCtor,\r\n ErrorStateMatcher,\r\n MC_VALIDATION,\r\n McValidationOptions,\r\n setMosaicValidation,\r\n mixinErrorState\r\n} from '@ptsecurity/mosaic/core';\r\nimport { McFormFieldControl } from '@ptsecurity/mosaic/form-field';\r\nimport { fromEvent, Subscription, Subject } from 'rxjs';\r\n\r\n\r\nexport const MC_TEXTAREA_VALUE_ACCESSOR = new InjectionToken<{ value: any }>('MC_TEXTAREA_VALUE_ACCESSOR');\r\n\r\nlet nextUniqueId = 0;\r\n\r\n\r\nexport class McTextareaBase {\r\n constructor(\r\n public defaultErrorStateMatcher: ErrorStateMatcher,\r\n public parentForm: NgForm,\r\n public parentFormGroup: FormGroupDirective,\r\n public ngControl: NgControl\r\n ) {}\r\n}\r\n\r\n// tslint:disable-next-line:naming-convention\r\nexport const McTextareaMixinBase: CanUpdateErrorStateCtor & typeof McTextareaBase = mixinErrorState(McTextareaBase);\r\n\r\n@Directive({\r\n selector: 'textarea[mcTextarea]',\r\n exportAs: 'mcTextarea',\r\n host: {\r\n class: 'mc-textarea',\r\n '[class.mc-textarea-resizable]': '!canGrow',\r\n\r\n '[attr.id]': 'id',\r\n '[attr.placeholder]': 'placeholder',\r\n '[attr.aria-invalid]': 'errorState',\r\n '[attr.disabled]': 'disabled || null',\r\n '[attr.required]': 'required',\r\n\r\n '(blur)': 'focusChanged(false)',\r\n '(focus)': 'focusChanged(true)'\r\n },\r\n providers: [{ provide: McFormFieldControl, useExisting: McTextarea }]\r\n})\r\nexport class McTextarea extends McTextareaMixinBase implements McFormFieldControl<any>, OnInit, OnChanges,\r\n OnDestroy, DoCheck, CanUpdateErrorState, AfterContentInit {\r\n\r\n @Input() canGrow: boolean = true;\r\n\r\n /** An object used to control when error messages are shown. */\r\n @Input() errorStateMatcher: ErrorStateMatcher;\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n focused: boolean = false;\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n controlType: string = 'textarea';\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n @Input()\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this.uid;\r\n }\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n @Input() placeholder: string;\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n @Input()\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n }\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n @Input()\r\n get value(): string {\r\n return this.valueAccessor.value;\r\n }\r\n\r\n set value(value: string) {\r\n if (value !== this.value) {\r\n this.valueAccessor.value = value;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n protected uid = `mc-textsrea-${nextUniqueId++}`;\r\n protected previousNativeValue: any;\r\n private _disabled = false;\r\n private _id: string;\r\n private _required = false;\r\n\r\n private valueAccessor: { value: any };\r\n private growSubscription: Subscription;\r\n\r\n private lineHeight: number = 0;\r\n private freeRowsHeight: number = 0;\r\n private minHeight: number = 0;\r\n\r\n constructor(\r\n protected elementRef: ElementRef,\r\n @Optional() @Self() public ngControl: NgControl,\r\n @Optional() parentForm: NgForm,\r\n @Optional() @Self() @Inject(NG_VALIDATORS) public rawValidators: Validator[],\r\n @Optional() @Inject(MC_VALIDATION) private mcValidation: McValidationOptions,\r\n @Optional() @Self() public ngModel: NgModel,\r\n @Optional() parentFormGroup: FormGroupDirective,\r\n defaultErrorStateMatcher: ErrorStateMatcher,\r\n @Optional() @Self() @Inject(MC_TEXTAREA_VALUE_ACCESSOR) inputValueAccessor: any,\r\n private ngZone: NgZone,\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);\r\n // If no input value accessor was explicitly specified, use the element as the textarea value\r\n // accessor.\r\n this.valueAccessor = inputValueAccessor || this.elementRef.nativeElement;\r\n\r\n this.previousNativeValue = this.value;\r\n\r\n // Force setter to be called in case id was not specified.\r\n this.id = this.id;\r\n\r\n const growObserver = fromEvent(elementRef.nativeElement, 'input');\r\n\r\n this.growSubscription = growObserver.subscribe(this.grow.bind(this));\r\n }\r\n\r\n ngOnInit() {\r\n setTimeout(() => this.grow(), 0);\r\n this.lineHeight = parseInt(getComputedStyle(this.elementRef.nativeElement).lineHeight!, 10);\r\n\r\n const paddingTop = parseInt(getComputedStyle(this.elementRef.nativeElement).paddingTop!, 10);\r\n const paddingBottom = parseInt(getComputedStyle(this.elementRef.nativeElement).paddingBottom!, 10);\r\n\r\n // tslint:disable-next-line:no-magic-numbers\r\n this.minHeight = this.lineHeight * 2 + paddingTop + paddingBottom;\r\n this.freeRowsHeight = this.lineHeight;\r\n }\r\n\r\n ngOnChanges() {\r\n this.stateChanges.next();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.stateChanges.complete();\r\n this.growSubscription.unsubscribe();\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.ngControl) { return; }\r\n\r\n if (this.mcValidation.useValidation) {\r\n setMosaicValidation(this, this.changeDetectorRef);\r\n }\r\n }\r\n\r\n ngDoCheck() {\r\n if (this.ngControl) {\r\n // We need to re-evaluate this on every change detection cycle, because there are some\r\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\r\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\r\n this.updateErrorState();\r\n }\r\n\r\n // We need to dirty-check the native element's value, because there are some cases where\r\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\r\n // updating the value using `emitEvent: false`).\r\n this.dirtyCheckNativeValue();\r\n }\r\n\r\n /** Grow textarea height to avoid vertical scroll */\r\n grow() {\r\n if (!this.canGrow) {\r\n return;\r\n }\r\n\r\n this.ngZone.runOutsideAngular(() => {\r\n const textarea = this.elementRef.nativeElement;\r\n\r\n const outerHeight = parseInt(window.getComputedStyle(textarea).height!, 10);\r\n const diff = outerHeight - textarea.clientHeight;\r\n\r\n textarea.style.minHeight = 0; // this line is important to height recalculation\r\n\r\n const height = Math.max(this.minHeight, +textarea.scrollHeight + diff + this.freeRowsHeight);\r\n textarea.style.minHeight = `${height}px`;\r\n });\r\n }\r\n\r\n /** Focuses the textarea. */\r\n focus(): void {\r\n this.elementRef.nativeElement.focus();\r\n }\r\n\r\n /** Callback for the cases where the focused state of the textarea changes. */\r\n focusChanged(isFocused: boolean) {\r\n if (isFocused !== this.focused) {\r\n this.focused = isFocused;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n get empty(): boolean {\r\n return !this.elementRef.nativeElement.value && !this.isBadInput();\r\n }\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n onContainerClick() {\r\n this.focus();\r\n }\r\n\r\n /** Does some manual dirty checking on the native textarea `value` property. */\r\n protected dirtyCheckNativeValue() {\r\n const newValue = this.value;\r\n\r\n if (this.previousNativeValue !== newValue) {\r\n this.previousNativeValue = newValue;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n /** Checks whether the textarea is invalid based on the native validation. */\r\n protected isBadInput(): boolean {\r\n // The `validity` property won't be present on platform-server.\r\n const validity = (this.elementRef.nativeElement as HTMLTextAreaElement).validity;\r\n\r\n return validity && validity.badInput;\r\n }\r\n\r\n}\r\n","import { A11yModule } from '@angular/cdk/a11y';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { McCommonModule } from '@ptsecurity/mosaic/core';\r\n\r\nimport { McTextarea } from './textarea.component';\r\n\r\n\r\n@NgModule({\r\n imports: [CommonModule, A11yModule, McCommonModule, FormsModule],\r\n exports: [McTextarea],\r\n declarations: [McTextarea]\r\n})\r\nexport class McTextareaModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ptsecurity-mosaic-textarea.mjs","sources":["../../../packages/mosaic/textarea/textarea.component.ts","../../../packages/mosaic/textarea/textarea.module.ts","../../../packages/mosaic/textarea/ptsecurity-mosaic-textarea.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport {\r\n Directive, DoCheck, ElementRef, Inject,\r\n Input, OnChanges, OnDestroy, Optional,\r\n Self, InjectionToken, NgZone, OnInit,\r\n AfterContentInit,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { FormGroupDirective, NG_VALIDATORS, NgControl, NgForm, NgModel, Validator } from '@angular/forms';\r\nimport {\r\n CanUpdateErrorState,\r\n CanUpdateErrorStateCtor,\r\n ErrorStateMatcher,\r\n MC_VALIDATION,\r\n McValidationOptions,\r\n setMosaicValidation,\r\n mixinErrorState\r\n} from '@ptsecurity/mosaic/core';\r\nimport { McFormFieldControl } from '@ptsecurity/mosaic/form-field';\r\nimport { fromEvent, Subscription, Subject } from 'rxjs';\r\n\r\n\r\nexport const MC_TEXTAREA_VALUE_ACCESSOR = new InjectionToken<{ value: any }>('MC_TEXTAREA_VALUE_ACCESSOR');\r\n\r\nlet nextUniqueId = 0;\r\n\r\n\r\nexport class McTextareaBase {\r\n constructor(\r\n public defaultErrorStateMatcher: ErrorStateMatcher,\r\n public parentForm: NgForm,\r\n public parentFormGroup: FormGroupDirective,\r\n public ngControl: NgControl\r\n ) {}\r\n}\r\n\r\n// tslint:disable-next-line:naming-convention\r\nexport const McTextareaMixinBase: CanUpdateErrorStateCtor & typeof McTextareaBase = mixinErrorState(McTextareaBase);\r\n\r\n@Directive({\r\n selector: 'textarea[mcTextarea]',\r\n exportAs: 'mcTextarea',\r\n host: {\r\n class: 'mc-textarea',\r\n '[class.mc-textarea-resizable]': '!canGrow',\r\n\r\n '[attr.id]': 'id',\r\n '[attr.placeholder]': 'placeholder',\r\n '[attr.aria-invalid]': 'errorState',\r\n '[attr.disabled]': 'disabled || null',\r\n '[attr.required]': 'required',\r\n\r\n '(blur)': 'focusChanged(false)',\r\n '(focus)': 'focusChanged(true)'\r\n },\r\n providers: [{ provide: McFormFieldControl, useExisting: McTextarea }]\r\n})\r\nexport class McTextarea extends McTextareaMixinBase implements McFormFieldControl<any>, OnInit, OnChanges,\r\n OnDestroy, DoCheck, CanUpdateErrorState, AfterContentInit {\r\n\r\n @Input() canGrow: boolean = true;\r\n\r\n /** An object used to control when error messages are shown. */\r\n @Input() errorStateMatcher: ErrorStateMatcher;\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n focused: boolean = false;\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n controlType: string = 'textarea';\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n @Input()\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this.uid;\r\n }\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n @Input() placeholder: string;\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n @Input()\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n }\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n @Input()\r\n get value(): string {\r\n return this.valueAccessor.value;\r\n }\r\n\r\n set value(value: string) {\r\n if (value !== this.value) {\r\n this.valueAccessor.value = value;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n protected uid = `mc-textsrea-${nextUniqueId++}`;\r\n protected previousNativeValue: any;\r\n private _disabled = false;\r\n private _id: string;\r\n private _required = false;\r\n\r\n private valueAccessor: { value: any };\r\n private growSubscription: Subscription;\r\n\r\n private lineHeight: number = 0;\r\n private freeRowsHeight: number = 0;\r\n private minHeight: number = 0;\r\n\r\n constructor(\r\n protected elementRef: ElementRef,\r\n @Optional() @Self() public ngControl: NgControl,\r\n @Optional() parentForm: NgForm,\r\n @Optional() @Self() @Inject(NG_VALIDATORS) public rawValidators: Validator[],\r\n @Optional() @Inject(MC_VALIDATION) private mcValidation: McValidationOptions,\r\n @Optional() @Self() public ngModel: NgModel,\r\n @Optional() parentFormGroup: FormGroupDirective,\r\n defaultErrorStateMatcher: ErrorStateMatcher,\r\n @Optional() @Self() @Inject(MC_TEXTAREA_VALUE_ACCESSOR) inputValueAccessor: any,\r\n private ngZone: NgZone,\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n super(defaultErrorStateMatcher, parentForm, parentFormGroup, ngControl);\r\n // If no input value accessor was explicitly specified, use the element as the textarea value\r\n // accessor.\r\n this.valueAccessor = inputValueAccessor || this.elementRef.nativeElement;\r\n\r\n this.previousNativeValue = this.value;\r\n\r\n // Force setter to be called in case id was not specified.\r\n this.id = this.id;\r\n\r\n const growObserver = fromEvent(elementRef.nativeElement, 'input');\r\n\r\n this.growSubscription = growObserver.subscribe(this.grow.bind(this));\r\n }\r\n\r\n ngOnInit() {\r\n setTimeout(() => this.grow(), 0);\r\n this.lineHeight = parseInt(getComputedStyle(this.elementRef.nativeElement).lineHeight!, 10);\r\n\r\n const paddingTop = parseInt(getComputedStyle(this.elementRef.nativeElement).paddingTop!, 10);\r\n const paddingBottom = parseInt(getComputedStyle(this.elementRef.nativeElement).paddingBottom!, 10);\r\n\r\n // tslint:disable-next-line:no-magic-numbers\r\n this.minHeight = this.lineHeight * 2 + paddingTop + paddingBottom;\r\n this.freeRowsHeight = this.lineHeight;\r\n }\r\n\r\n ngOnChanges() {\r\n this.stateChanges.next();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.stateChanges.complete();\r\n this.growSubscription.unsubscribe();\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.ngControl) { return; }\r\n\r\n if (this.mcValidation.useValidation) {\r\n setMosaicValidation(this, this.changeDetectorRef);\r\n }\r\n }\r\n\r\n ngDoCheck() {\r\n if (this.ngControl) {\r\n // We need to re-evaluate this on every change detection cycle, because there are some\r\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\r\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\r\n this.updateErrorState();\r\n }\r\n\r\n // We need to dirty-check the native element's value, because there are some cases where\r\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\r\n // updating the value using `emitEvent: false`).\r\n this.dirtyCheckNativeValue();\r\n }\r\n\r\n /** Grow textarea height to avoid vertical scroll */\r\n grow() {\r\n if (!this.canGrow) {\r\n return;\r\n }\r\n\r\n this.ngZone.runOutsideAngular(() => {\r\n const textarea = this.elementRef.nativeElement;\r\n\r\n const outerHeight = parseInt(window.getComputedStyle(textarea).height!, 10);\r\n const diff = outerHeight - textarea.clientHeight;\r\n\r\n textarea.style.minHeight = 0; // this line is important to height recalculation\r\n\r\n const height = Math.max(this.minHeight, +textarea.scrollHeight + diff + this.freeRowsHeight);\r\n textarea.style.minHeight = `${height}px`;\r\n });\r\n }\r\n\r\n /** Focuses the textarea. */\r\n focus(): void {\r\n this.elementRef.nativeElement.focus();\r\n }\r\n\r\n /** Callback for the cases where the focused state of the textarea changes. */\r\n focusChanged(isFocused: boolean) {\r\n if (isFocused !== this.focused) {\r\n this.focused = isFocused;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n get empty(): boolean {\r\n return !this.elementRef.nativeElement.value && !this.isBadInput();\r\n }\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n onContainerClick() {\r\n this.focus();\r\n }\r\n\r\n /** Does some manual dirty checking on the native textarea `value` property. */\r\n protected dirtyCheckNativeValue() {\r\n const newValue = this.value;\r\n\r\n if (this.previousNativeValue !== newValue) {\r\n this.previousNativeValue = newValue;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n /** Checks whether the textarea is invalid based on the native validation. */\r\n protected isBadInput(): boolean {\r\n // The `validity` property won't be present on platform-server.\r\n const validity = (this.elementRef.nativeElement as HTMLTextAreaElement).validity;\r\n\r\n return validity && validity.badInput;\r\n }\r\n\r\n}\r\n","import { A11yModule } from '@angular/cdk/a11y';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { McCommonModule } from '@ptsecurity/mosaic/core';\r\n\r\nimport { McTextarea } from './textarea.component';\r\n\r\n\r\n@NgModule({\r\n imports: [CommonModule, A11yModule, McCommonModule, FormsModule],\r\n exports: [McTextarea],\r\n declarations: [McTextarea]\r\n})\r\nexport class McTextareaModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -115,13 +115,13 @@ class McTimepicker {
115
115
  };
116
116
  this.minValidator = (control) => {
117
117
  const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));
118
- return (!this.min || !controlValue || this.compareTime(this.min, controlValue) <= 0) ?
118
+ return !this.min || !controlValue || this.dateAdapter.compareDateTime(this.min, controlValue) <= 0 ?
119
119
  null :
120
120
  { mcTimepickerLowerThenMin: { min: this.min, actual: controlValue } };
121
121
  };
122
122
  this.maxValidator = (control) => {
123
123
  const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));
124
- return (!this.max || !controlValue || this.compareTime(this.max, controlValue) >= 0) ?
124
+ return !this.max || !controlValue || this.dateAdapter.compareDateTime(this.max, controlValue) >= 0 ?
125
125
  null :
126
126
  { mcTimepickerHigherThenMax: { max: this.max, actual: controlValue } };
127
127
  };
@@ -603,19 +603,6 @@ class McTimepicker {
603
603
  const resultDate = this.dateAdapter.createDateTime(this.dateAdapter.getYear(date), this.dateAdapter.getMonth(date), this.dateAdapter.getDate(date), hours, minutes || 0, seconds || 0, this.dateAdapter.getMilliseconds(date));
604
604
  return this.getValidDateOrNull(resultDate);
605
605
  }
606
- compareTime(first, second) {
607
- const result = this.dateAdapter.getHours(first) - this.dateAdapter.getHours(second) ||
608
- this.dateAdapter.getMinutes(first) - this.dateAdapter.getMinutes(second);
609
- if (TimeFormats.HHmm === this.format) {
610
- return result;
611
- }
612
- else if (TimeFormats.HHmmss === this.format) {
613
- return result || this.dateAdapter.getSeconds(first) - this.dateAdapter.getSeconds(second);
614
- }
615
- else {
616
- throw Error(`Unknown format: ${this.format}`);
617
- }
618
- }
619
606
  getValidDateOrNull(obj) {
620
607
  return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;
621
608
  }
@@ -631,18 +618,20 @@ class McTimepicker {
631
618
  return;
632
619
  }
633
620
  this.control = control;
621
+ this.control.valueChanges
622
+ .subscribe((value) => this._value = value);
634
623
  if (this.mcValidation.useValidation) {
635
624
  setMosaicValidationForCustomFormControl(this, this.changeDetectorRef);
636
625
  }
637
626
  }
638
627
  }
639
- /** @nocollapse */ /** @nocollapse */ McTimepicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTimepicker, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: MC_VALIDATION, optional: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i2.DateAdapter, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
640
- /** @nocollapse */ /** @nocollapse */ McTimepicker.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.7", type: McTimepicker, selector: "input[mcTimepicker]", inputs: { placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", format: "format", min: "min", max: "max", value: "value", mcValidationTooltip: "mcValidationTooltip" }, outputs: { incorrectInput: "incorrectInput" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "paste": "onPaste($event)", "keydown": "onKeyDown($event)" }, properties: { "attr.id": "id", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "attr.required": "required", "attr.size": "getSize()", "attr.autocomplete": "\"off\"" }, classAttribute: "mc-input mc-timepicker" }, providers: [
628
+ /** @nocollapse */ /** @nocollapse */ McTimepicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTimepicker, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: MC_VALIDATION, optional: true }, { token: i1.NgForm, optional: true }, { token: i1.FormGroupDirective, optional: true }, { token: i2.DateAdapter, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
629
+ /** @nocollapse */ /** @nocollapse */ McTimepicker.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: McTimepicker, selector: "input[mcTimepicker]", inputs: { placeholder: "placeholder", disabled: "disabled", id: "id", required: "required", format: "format", min: "min", max: "max", value: "value", mcValidationTooltip: "mcValidationTooltip" }, outputs: { incorrectInput: "incorrectInput" }, host: { listeners: { "blur": "onBlur()", "focus": "focusChanged(true)", "paste": "onPaste($event)", "keydown": "onKeyDown($event)" }, properties: { "attr.id": "id", "attr.placeholder": "placeholder", "attr.disabled": "disabled || null", "attr.required": "required", "attr.size": "getSize()", "attr.autocomplete": "\"off\"" }, classAttribute: "mc-input mc-timepicker" }, providers: [
641
630
  MC_TIMEPICKER_VALIDATORS,
642
631
  MC_TIMEPICKER_VALUE_ACCESSOR,
643
632
  { provide: McFormFieldControl, useExisting: McTimepicker }
644
633
  ], exportAs: ["mcTimepicker"], ngImport: i0 });
645
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTimepicker, decorators: [{
634
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTimepicker, decorators: [{
646
635
  type: Directive,
647
636
  args: [{
648
637
  selector: 'input[mcTimepicker]',
@@ -703,18 +692,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImpor
703
692
 
704
693
  class McTimepickerModule {
705
694
  }
706
- /** @nocollapse */ /** @nocollapse */ McTimepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTimepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
707
- /** @nocollapse */ /** @nocollapse */ McTimepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTimepickerModule, declarations: [McTimepicker], imports: [CommonModule,
695
+ /** @nocollapse */ /** @nocollapse */ McTimepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTimepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
696
+ /** @nocollapse */ /** @nocollapse */ McTimepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTimepickerModule, declarations: [McTimepicker], imports: [CommonModule,
708
697
  A11yModule,
709
698
  PlatformModule,
710
699
  FormsModule], exports: [McTimepicker] });
711
- /** @nocollapse */ /** @nocollapse */ McTimepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTimepickerModule, imports: [[
700
+ /** @nocollapse */ /** @nocollapse */ McTimepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTimepickerModule, imports: [[
712
701
  CommonModule,
713
702
  A11yModule,
714
703
  PlatformModule,
715
704
  FormsModule
716
705
  ]] });
717
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McTimepickerModule, decorators: [{
706
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McTimepickerModule, decorators: [{
718
707
  type: NgModule,
719
708
  args: [{
720
709
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"ptsecurity-mosaic-timepicker.mjs","sources":["../../../packages/mosaic/timepicker/timepicker.constants.ts","../../../packages/mosaic/timepicker/timepicker.directive.ts","../../../packages/mosaic/timepicker/timepicker.module.ts","../../../packages/mosaic/timepicker/ptsecurity-mosaic-timepicker.ts"],"sourcesContent":["// tslint:disable:naming-convention\r\nexport enum TimeParts {\r\n hours,\r\n minutes,\r\n seconds\r\n}\r\n\r\nexport enum TimeFormats {\r\n HHmmss = 'HH:mm:ss',\r\n HHmm = 'HH:mm'\r\n}\r\n\r\nexport const TIMEFORMAT_PLACEHOLDERS: { [timeFormat: string]: string } = {\r\n [TimeFormats.HHmmss]: 'чч:мм:сс',\r\n [TimeFormats.HHmm]: 'чч:мм'\r\n};\r\n\r\nexport const DEFAULT_TIME_FORMAT: TimeFormats = TimeFormats.HHmm;\r\n\r\nexport const HOURS_MINUTES_SECONDS_REGEXP = /^([0-1][0-9]|2[0-3]):?([0-5][0-9]):?([0-5][0-9])?$/;\r\nexport const HOURS_MINUTES_REGEXP = /^([0-1][0-9]|2[0-3]):?([0-5][0-9])?$/;\r\nexport const HOURS_ONLY_REGEXP = /^([0-1][0-9]|2[0-3]):?$/;\r\nexport const AM_PM_FORMAT_REGEXP = /^([0-1]?[0-9]):([0-5]?[0-9]) ([ap][m]?$)/i;\r\n\r\nexport const SECONDS_PER_MINUTE: number = 59;\r\nexport const MINUTES_PER_HOUR: number = 59;\r\nexport const HOURS_PER_DAY: number = 23;\r\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport {\r\n ChangeDetectorRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n Renderer2\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormGroupDirective,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n NgForm,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n Validators\r\n} from '@angular/forms';\r\nimport { DateAdapter } from '@ptsecurity/cdk/datetime';\r\nimport {\r\n DOWN_ARROW,\r\n UP_ARROW,\r\n HOME,\r\n END,\r\n LEFT_ARROW,\r\n RIGHT_ARROW,\r\n PAGE_DOWN,\r\n PAGE_UP,\r\n SPACE,\r\n DELETE,\r\n BACKSPACE,\r\n hasModifierKey,\r\n isLetterKey,\r\n isVerticalMovement,\r\n isHorizontalMovement,\r\n TAB\r\n} from '@ptsecurity/cdk/keycodes';\r\nimport {\r\n MC_VALIDATION,\r\n McValidationOptions,\r\n setMosaicValidationForCustomFormControl,\r\n validationTooltipHideDelay,\r\n validationTooltipShowDelay\r\n} from '@ptsecurity/mosaic/core';\r\nimport { McFormFieldControl } from '@ptsecurity/mosaic/form-field';\r\nimport { McWarningTooltipTrigger } from '@ptsecurity/mosaic/tooltip';\r\nimport { noop, Subject } from 'rxjs';\r\n\r\nimport {\r\n DEFAULT_TIME_FORMAT,\r\n HOURS_PER_DAY,\r\n HOURS_MINUTES_REGEXP,\r\n HOURS_MINUTES_SECONDS_REGEXP,\r\n HOURS_ONLY_REGEXP,\r\n MINUTES_PER_HOUR,\r\n SECONDS_PER_MINUTE,\r\n TIMEFORMAT_PLACEHOLDERS,\r\n TimeFormats,\r\n TimeParts,\r\n AM_PM_FORMAT_REGEXP\r\n} from './timepicker.constants';\r\n\r\n\r\n/** @docs-private */\r\nexport const MC_TIMEPICKER_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => McTimepicker),\r\n multi: true\r\n};\r\n\r\n/** @docs-private */\r\nexport const MC_TIMEPICKER_VALIDATORS: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => McTimepicker),\r\n multi: true\r\n};\r\n\r\n\r\nlet uniqueComponentIdSuffix: number = 0;\r\n\r\nconst shortFormatSize: number = 5;\r\nconst fullFormatSize: number = 8;\r\n\r\n\r\n@Directive({\r\n selector: 'input[mcTimepicker]',\r\n exportAs: 'mcTimepicker',\r\n host: {\r\n class: 'mc-input mc-timepicker',\r\n // Native input properties that are overwritten by Angular inputs need to be synced with\r\n // the native input element. Otherwise property bindings for those don't work.\r\n '[attr.id]': 'id',\r\n '[attr.placeholder]': 'placeholder',\r\n '[attr.disabled]': 'disabled || null',\r\n '[attr.required]': 'required',\r\n '[attr.size]': 'getSize()',\r\n '[attr.autocomplete]': '\"off\"',\r\n\r\n '(blur)': 'onBlur()',\r\n '(focus)': 'focusChanged(true)',\r\n\r\n '(paste)': 'onPaste($event)',\r\n\r\n '(keydown)': 'onKeyDown($event)'\r\n },\r\n providers: [\r\n MC_TIMEPICKER_VALIDATORS,\r\n MC_TIMEPICKER_VALUE_ACCESSOR,\r\n { provide: McFormFieldControl, useExisting: McTimepicker }\r\n ]\r\n})\r\nexport class McTimepicker<D> implements McFormFieldControl<D>, ControlValueAccessor, Validator, OnDestroy {\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n\r\n readonly errorState: boolean;\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n focused: boolean = false;\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n controlType: string = 'timepicker';\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n @Input()\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n\r\n this.defaultPlaceholder = false;\r\n }\r\n\r\n private _placeholder = TIMEFORMAT_PLACEHOLDERS[DEFAULT_TIME_FORMAT];\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n\r\n // Browsers may not fire the blur event if the input is disabled too quickly.\r\n // Reset from here to ensure that the element doesn't become stuck.\r\n if (this.focused) {\r\n this.focused = false;\r\n }\r\n\r\n this.stateChanges.next();\r\n }\r\n\r\n private _disabled: boolean;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this.uid;\r\n }\r\n\r\n private _id: string;\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n @Input()\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n }\r\n\r\n private _required: boolean;\r\n\r\n @Input()\r\n get format(): TimeFormats {\r\n return this._format;\r\n }\r\n\r\n set format(formatValue: TimeFormats) {\r\n this._format = Object\r\n .keys(TimeFormats)\r\n .map((timeFormatKey) => TimeFormats[timeFormatKey])\r\n .indexOf(formatValue) > -1 ? formatValue : DEFAULT_TIME_FORMAT;\r\n\r\n if (this.defaultPlaceholder) {\r\n this._placeholder = TIMEFORMAT_PLACEHOLDERS[this._format];\r\n }\r\n\r\n if (this.value) {\r\n this.updateView();\r\n }\r\n }\r\n\r\n private _format: TimeFormats = DEFAULT_TIME_FORMAT;\r\n\r\n @Input()\r\n get min(): D | null {\r\n return this._min;\r\n }\r\n\r\n set min(value: D | null) {\r\n this._min = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n this.validatorOnChange();\r\n }\r\n\r\n private _min: D | null = null;\r\n\r\n @Input()\r\n get max(): D | null {\r\n return this._max;\r\n }\r\n\r\n set max(value: D | null) {\r\n this._max = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n this.validatorOnChange();\r\n }\r\n\r\n private _max: D | null = null;\r\n\r\n @Input()\r\n get value(): D | null {\r\n return this._value;\r\n }\r\n\r\n set value(value: D | null) {\r\n const newValue = this.dateAdapter.deserialize(value);\r\n\r\n this.lastValueValid = !newValue || this.dateAdapter.isValid(newValue);\r\n\r\n this._value = this.getValidDateOrNull(newValue);\r\n\r\n this.updateView();\r\n }\r\n\r\n private _value: D | null;\r\n\r\n @Input()\r\n set mcValidationTooltip(tooltip: McWarningTooltipTrigger) {\r\n if (!tooltip) { return; }\r\n\r\n tooltip.enterDelay = validationTooltipShowDelay;\r\n tooltip.trigger = 'manual';\r\n\r\n tooltip.initListeners();\r\n\r\n this.incorrectInput.subscribe(() => {\r\n if (tooltip.isOpen) { return; }\r\n\r\n tooltip.show();\r\n\r\n setTimeout(() => tooltip.hide(), validationTooltipHideDelay);\r\n });\r\n }\r\n\r\n @Output() incorrectInput = new EventEmitter<void>();\r\n\r\n get hasSelection(): boolean {\r\n return this.selectionStart !== this.selectionEnd;\r\n }\r\n\r\n get isFullFormat(): boolean {\r\n return this.format === TimeFormats.HHmmss;\r\n }\r\n\r\n get isShortFormat(): boolean {\r\n return this.format === TimeFormats.HHmm;\r\n }\r\n\r\n get viewValue(): string {\r\n return this.elementRef.nativeElement.value;\r\n }\r\n\r\n get ngControl(): any {\r\n return this.control;\r\n }\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n get empty(): boolean {\r\n return !this.viewValue && !this.isBadInput();\r\n }\r\n\r\n get selectionStart(): number | null {\r\n return this.elementRef.nativeElement.selectionStart;\r\n }\r\n\r\n set selectionStart(value: number | null) {\r\n this.elementRef.nativeElement.selectionStart = value;\r\n }\r\n\r\n get selectionEnd(): number | null {\r\n return this.elementRef.nativeElement.selectionEnd;\r\n }\r\n\r\n set selectionEnd(value: number | null) {\r\n this.elementRef.nativeElement.selectionEnd = value;\r\n }\r\n\r\n private readonly uid = `mc-timepicker-${uniqueComponentIdSuffix++}`;\r\n\r\n private readonly validator: ValidatorFn | null;\r\n\r\n private lastValueValid = false;\r\n\r\n private control: AbstractControl;\r\n\r\n private defaultPlaceholder = true;\r\n\r\n private onChange: (value: any) => void;\r\n private onTouched: () => void;\r\n\r\n constructor(\r\n private elementRef: ElementRef,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private renderer: Renderer2,\r\n @Optional() @Inject(MC_VALIDATION) private mcValidation: McValidationOptions,\r\n @Optional() public parentForm: NgForm,\r\n @Optional() public parentFormGroup: FormGroupDirective,\r\n @Optional() private dateAdapter: DateAdapter<any>\r\n ) {\r\n if (!this.dateAdapter) {\r\n throw Error(`McTimepicker: No provider found for DateAdapter. You must import one of the existing ` +\r\n `modules at your application root or provide a custom implementation or use exists ones.`);\r\n }\r\n\r\n this.validator = Validators.compose([this.parseValidator, this.minValidator, this.maxValidator]);\r\n\r\n this.onChange = noop;\r\n\r\n // Force setter to be called in case id was not specified.\r\n this.id = this.id;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n }\r\n\r\n getSize(): number {\r\n return this.isFullFormat ? fullFormatSize : shortFormatSize;\r\n }\r\n\r\n focus(): void {\r\n this.elementRef.nativeElement.focus();\r\n }\r\n\r\n focusChanged(isFocused: boolean): void {\r\n if (isFocused !== this.focused) {\r\n this.focused = isFocused;\r\n this.onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onBlur() {\r\n this.focusChanged(false);\r\n\r\n this.setViewValue(this.formatUserPaste(this.viewValue));\r\n\r\n this.onInput();\r\n }\r\n\r\n onPaste($event) {\r\n $event.preventDefault();\r\n\r\n const value = this.formatUserPaste($event.clipboardData.getData('text'));\r\n\r\n const newTimeObj = this.getDateFromTimeString(value);\r\n\r\n if (!newTimeObj) { return; }\r\n\r\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.format));\r\n\r\n this.value = newTimeObj;\r\n this.onChange(newTimeObj);\r\n this.stateChanges.next();\r\n }\r\n\r\n onInput = () => {\r\n const formattedValue = this.formatUserInput(this.viewValue);\r\n\r\n const newTimeObj = this.getDateFromTimeString(formattedValue);\r\n this.lastValueValid = !!newTimeObj;\r\n\r\n if (!newTimeObj) {\r\n if (!this.viewValue) {\r\n this.onChange(null);\r\n } else {\r\n this.control.updateValueAndValidity();\r\n }\r\n\r\n return;\r\n }\r\n\r\n const selectionStart = this.selectionStart;\r\n const selectionEnd = this.selectionEnd;\r\n\r\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.format));\r\n\r\n this.selectionStart = selectionStart;\r\n this.selectionEnd = selectionEnd;\r\n\r\n this.createSelectionOfTimeComponentInInput((selectionStart as number) + 1);\r\n\r\n this.value = newTimeObj;\r\n this.onChange(newTimeObj);\r\n this.stateChanges.next();\r\n }\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n onContainerClick() {\r\n this.focus();\r\n }\r\n\r\n onKeyDown(event: KeyboardEvent): void {\r\n // tslint:disable-next-line: deprecation\r\n const keyCode = event.keyCode;\r\n\r\n if (isLetterKey(event) && !event.ctrlKey && !event.metaKey) {\r\n event.preventDefault();\r\n\r\n this.incorrectInput.emit();\r\n } else if (\r\n (hasModifierKey(event) && (isVerticalMovement(event) || isHorizontalMovement(event))) ||\r\n event.ctrlKey || event.metaKey ||\r\n [DELETE, BACKSPACE, TAB].includes(keyCode)\r\n ) {\r\n noop();\r\n } else if (keyCode === SPACE) {\r\n this.spaceKeyHandler(event);\r\n } else if ([HOME, PAGE_UP].includes(keyCode)) {\r\n this.createSelectionOfTimeComponentInInput(0);\r\n } else if ([END, PAGE_DOWN].includes(keyCode)) {\r\n this.createSelectionOfTimeComponentInInput(this.viewValue.length);\r\n } else if ([UP_ARROW, DOWN_ARROW].includes(keyCode)) {\r\n event.preventDefault();\r\n\r\n this.verticalArrowKeyHandler(keyCode);\r\n } else if ([LEFT_ARROW, RIGHT_ARROW].includes(keyCode)) {\r\n this.horizontalArrowKeyHandler(keyCode);\r\n } else if (/^\\D$/.test(event.key)) {\r\n event.preventDefault();\r\n\r\n const newValue = this.getNewValue(event.key, this.selectionStart as number);\r\n const formattedValue = this.replaceSymbols(newValue);\r\n\r\n if (newValue !== formattedValue) {\r\n this.setViewValue(formattedValue);\r\n\r\n setTimeout(this.onInput);\r\n } else {\r\n this.incorrectInput.emit();\r\n }\r\n } else {\r\n setTimeout(this.onInput);\r\n }\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n this.setControl(control);\r\n\r\n return this.validator ? this.validator(control) : null;\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.validatorOnChange = fn;\r\n }\r\n\r\n writeValue(value: D | null): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(fn: (value: D) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n private formatUserPaste(value: string) {\r\n if (value.match(AM_PM_FORMAT_REGEXP)) { return value; }\r\n\r\n const match: RegExpMatchArray | null = value.match(\r\n /^(\\D+)?(?<hours>\\d+)?(\\D+)?(\\D+)?(?<minutes>\\d+)?(\\D+)?(\\D+)?(?<seconds>\\d+)?(\\D+)?$/\r\n );\r\n\r\n if (!match?.groups?.hours) {\r\n this.setViewValue(value);\r\n\r\n return value;\r\n }\r\n\r\n return this.replaceNumbers(Object.values(match.groups)\r\n // tslint:disable-next-line:no-magic-numbers\r\n .map((group) => (group || '').padStart(2, '0'))\r\n .join(':')\r\n );\r\n }\r\n\r\n private formatUserInput(value: string): string {\r\n return this.replaceNumbers(this.replaceSymbols(value));\r\n }\r\n\r\n private replaceSymbols(value: string): string {\r\n let formattedValue: string = value;\r\n\r\n const match: RegExpMatchArray | null = value.match(/^(\\d\\d:){0,2}(?<number>[0-9])(?<symbol>\\W)(:\\d\\d){0,2}$/);\r\n\r\n if (match?.groups) {\r\n const { number, symbol } = match.groups;\r\n\r\n formattedValue = value.replace(number + symbol, `0${number}`);\r\n }\r\n\r\n return formattedValue;\r\n }\r\n\r\n private replaceNumbers(value: string): string {\r\n let formattedValue: string = value;\r\n\r\n const match: RegExpMatchArray | null = value.match(/^(?<hours>\\d{0,4}):?(?<minutes>\\d{0,4}):?(?<seconds>\\d{0,4})$/);\r\n\r\n if (match?.groups) {\r\n const { hours, minutes, seconds } = match.groups;\r\n\r\n if (hours.length && parseInt(hours) > HOURS_PER_DAY) {\r\n formattedValue = formattedValue.replace(hours, HOURS_PER_DAY.toString());\r\n }\r\n\r\n if (minutes.length && parseInt(minutes) > MINUTES_PER_HOUR) {\r\n formattedValue = formattedValue.replace(minutes, MINUTES_PER_HOUR.toString());\r\n }\r\n\r\n if (seconds.length && parseInt(seconds) > SECONDS_PER_MINUTE) {\r\n formattedValue = formattedValue.replace(seconds, SECONDS_PER_MINUTE.toString());\r\n }\r\n }\r\n\r\n return formattedValue;\r\n }\r\n\r\n /** Checks whether the input is invalid based on the native validation. */\r\n private isBadInput(): boolean {\r\n const validity = (<HTMLInputElement> this.elementRef.nativeElement).validity;\r\n\r\n return validity && validity.badInput;\r\n }\r\n\r\n private spaceKeyHandler(event: KeyboardEvent) {\r\n event.preventDefault();\r\n\r\n if (this.selectionStart === this.selectionEnd) {\r\n const value = this.getNewValue(event.key, this.selectionStart as number);\r\n const formattedValue = this.replaceSymbols(value);\r\n\r\n if (value !== formattedValue) {\r\n this.setViewValue(formattedValue);\r\n\r\n setTimeout(this.onInput);\r\n }\r\n } else if (this.selectionStart !== this.selectionEnd) {\r\n\r\n let cursorPos = this.selectionStart as number;\r\n\r\n const nextDividerPos: number = this.viewValue.indexOf(':', cursorPos);\r\n\r\n cursorPos = nextDividerPos ? nextDividerPos + 1 : 0;\r\n\r\n this.createSelectionOfTimeComponentInInput(cursorPos);\r\n }\r\n }\r\n\r\n private getNewValue(key: string, position: number) {\r\n return [this.viewValue.slice(0, position), key, this.viewValue.slice(position)].join('');\r\n }\r\n\r\n private verticalArrowKeyHandler(keyCode: number): void {\r\n if (!this.value) { return; }\r\n\r\n let changedTime;\r\n\r\n const newEditParams = this.getTimeEditMetrics(this.selectionStart as number);\r\n\r\n if (keyCode === UP_ARROW) {\r\n changedTime = this.incrementTime(this.value, newEditParams.modifiedTimePart);\r\n }\r\n\r\n if (keyCode === DOWN_ARROW) {\r\n changedTime = this.decrementTime(this.value, newEditParams.modifiedTimePart);\r\n }\r\n\r\n this.value = changedTime;\r\n\r\n this.selectionStart = newEditParams.cursorStartPosition;\r\n this.selectionEnd = newEditParams.cursorEndPosition;\r\n\r\n this.onChange(changedTime);\r\n this.stateChanges.next();\r\n }\r\n\r\n private horizontalArrowKeyHandler(keyCode: number): void {\r\n if (!this.value) { return; }\r\n\r\n let cursorPos = this.selectionStart as number;\r\n\r\n if (keyCode === LEFT_ARROW) {\r\n cursorPos = cursorPos === 0 ? this.viewValue.length : cursorPos - 1;\r\n } else if (keyCode === RIGHT_ARROW) {\r\n const nextDividerPos: number = this.viewValue.indexOf(':', cursorPos);\r\n\r\n cursorPos = nextDividerPos ? nextDividerPos + 1 : 0;\r\n }\r\n\r\n this.createSelectionOfTimeComponentInInput(cursorPos);\r\n }\r\n\r\n private createSelectionOfTimeComponentInInput(cursorPos: number): void {\r\n setTimeout(() => {\r\n const newEditParams = this.getTimeEditMetrics(cursorPos);\r\n\r\n this.selectionStart = newEditParams.cursorStartPosition;\r\n this.selectionEnd = newEditParams.cursorEndPosition;\r\n });\r\n }\r\n\r\n private incrementTime(dateVal: D, whatToIncrement: TimeParts = TimeParts.seconds): D {\r\n let hours = this.dateAdapter.getHours(dateVal);\r\n let minutes = this.dateAdapter.getMinutes(dateVal);\r\n let seconds = this.dateAdapter.getSeconds(dateVal);\r\n\r\n switch (whatToIncrement) {\r\n case TimeParts.hours:\r\n hours++;\r\n break;\r\n case TimeParts.minutes:\r\n minutes++;\r\n break;\r\n case TimeParts.seconds:\r\n seconds++;\r\n break;\r\n default:\r\n }\r\n\r\n if (seconds > SECONDS_PER_MINUTE) { seconds = 0; }\r\n\r\n if (minutes > MINUTES_PER_HOUR) { minutes = 0; }\r\n\r\n if (hours > HOURS_PER_DAY) { hours = 0; }\r\n\r\n return this.dateAdapter.createDateTime(\r\n this.dateAdapter.getYear(this.value),\r\n this.dateAdapter.getMonth(this.value),\r\n this.dateAdapter.getDate(this.value),\r\n hours,\r\n minutes,\r\n seconds,\r\n this.dateAdapter.getMilliseconds(this.value)\r\n );\r\n }\r\n\r\n private decrementTime(dateVal: D, whatToDecrement: TimeParts = TimeParts.seconds): D {\r\n let hours = this.dateAdapter.getHours(dateVal);\r\n let minutes = this.dateAdapter.getMinutes(dateVal);\r\n let seconds = this.dateAdapter.getSeconds(dateVal);\r\n\r\n switch (whatToDecrement) {\r\n case TimeParts.hours:\r\n hours--;\r\n break;\r\n case TimeParts.minutes:\r\n minutes--;\r\n break;\r\n case TimeParts.seconds:\r\n seconds--;\r\n break;\r\n default:\r\n }\r\n\r\n if (seconds < 0) { seconds = SECONDS_PER_MINUTE; }\r\n\r\n if (minutes < 0) { minutes = MINUTES_PER_HOUR; }\r\n\r\n if (hours < 0) { hours = HOURS_PER_DAY; }\r\n\r\n return this.dateAdapter.createDateTime(\r\n this.dateAdapter.getYear(this.value),\r\n this.dateAdapter.getMonth(this.value),\r\n this.dateAdapter.getDate(this.value),\r\n hours,\r\n minutes,\r\n seconds,\r\n this.dateAdapter.getMilliseconds(this.value)\r\n );\r\n }\r\n\r\n /**\r\n * @description Get params for arrow-keys (up/down) time valie edit.\r\n * @param cursorPosition Current cursor position in timeString\r\n */\r\n private getTimeEditMetrics(cursorPosition: number): {\r\n modifiedTimePart: TimeParts;\r\n cursorStartPosition: number;\r\n cursorEndPosition: number;\r\n } {\r\n const timeString: string = this.viewValue;\r\n let modifiedTimePart: TimeParts;\r\n let cursorStartPosition: number;\r\n let cursorEndPosition: number;\r\n\r\n const hoursIndex = 0;\r\n const minutesIndex = timeString.indexOf(':', hoursIndex + 1);\r\n const secondsIndex = minutesIndex !== -1 ? timeString.indexOf(':', minutesIndex + 1) : -1;\r\n\r\n if (secondsIndex !== -1 && cursorPosition > secondsIndex) {\r\n modifiedTimePart = TimeParts.seconds;\r\n cursorStartPosition = secondsIndex + 1;\r\n cursorEndPosition = timeString.length;\r\n } else if (minutesIndex !== -1 && cursorPosition > minutesIndex) {\r\n modifiedTimePart = TimeParts.minutes;\r\n cursorStartPosition = minutesIndex + 1;\r\n cursorEndPosition = secondsIndex > -1 ? secondsIndex : timeString.length;\r\n } else {\r\n modifiedTimePart = TimeParts.hours;\r\n cursorStartPosition = hoursIndex;\r\n cursorEndPosition = minutesIndex !== -1 ? minutesIndex : timeString.length;\r\n }\r\n\r\n return { modifiedTimePart, cursorStartPosition, cursorEndPosition };\r\n }\r\n\r\n /**\r\n * @description Create time string for displaying inside input element of UI\r\n */\r\n private getTimeStringFromDate(value: D | null, timeFormat: TimeFormats): string {\r\n if (!value || !this.dateAdapter.isValid(value)) { return ''; }\r\n\r\n return this.dateAdapter.format(value, timeFormat);\r\n }\r\n\r\n private getDateFromTimeString(timeString: string): D | null {\r\n if (!timeString) { return null; }\r\n\r\n const HMS = timeString.match(HOURS_MINUTES_SECONDS_REGEXP);\r\n const HM = timeString.match(HOURS_MINUTES_REGEXP);\r\n const H = timeString.match(HOURS_ONLY_REGEXP);\r\n const amPm = timeString.match(AM_PM_FORMAT_REGEXP);\r\n\r\n let hours: number = 0;\r\n let minutes: number = 0;\r\n let seconds: number = 0;\r\n\r\n // tslint:disable:no-magic-numbers\r\n if (amPm) {\r\n hours = Number(amPm[1]);\r\n minutes = Number(amPm[2]);\r\n\r\n if (/[p]/i.test(amPm[3]) || (/[a]/i.test(amPm[3]) && hours === 12)) {\r\n hours += 12;\r\n }\r\n } else if (HMS) {\r\n hours = Number(HMS[1]);\r\n minutes = Number(HMS[2]);\r\n seconds = Number(HMS[3]);\r\n } else if (HM) {\r\n hours = Number(HM[1]);\r\n minutes = Number(HM[2]);\r\n } else if (H) {\r\n hours = Number(H[1]);\r\n } else {\r\n return null;\r\n }\r\n // tslint:enable\r\n const date = this.value || this.dateAdapter.today();\r\n\r\n const resultDate = this.dateAdapter.createDateTime(\r\n this.dateAdapter.getYear(date),\r\n this.dateAdapter.getMonth(date),\r\n this.dateAdapter.getDate(date),\r\n hours,\r\n minutes || 0,\r\n seconds || 0,\r\n this.dateAdapter.getMilliseconds(date)\r\n );\r\n\r\n return this.getValidDateOrNull(resultDate);\r\n }\r\n\r\n private parseValidator: ValidatorFn = (): ValidationErrors | null => {\r\n return this.focused ||\r\n this.empty ||\r\n this.lastValueValid ? null : { mcTimepickerParse: { text: this.viewValue } };\r\n }\r\n\r\n private minValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\r\n\r\n return (!this.min || !controlValue || this.compareTime(this.min, controlValue) <= 0) ?\r\n null :\r\n { mcTimepickerLowerThenMin: { min: this.min, actual: controlValue } };\r\n }\r\n\r\n private maxValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\r\n\r\n return (!this.max || !controlValue || this.compareTime(this.max, controlValue) >= 0) ?\r\n null :\r\n { mcTimepickerHigherThenMax: { max: this.max, actual: controlValue } };\r\n }\r\n\r\n private compareTime(first: D, second: D): number {\r\n const result = this.dateAdapter.getHours(first) - this.dateAdapter.getHours(second) ||\r\n this.dateAdapter.getMinutes(first) - this.dateAdapter.getMinutes(second);\r\n\r\n if (TimeFormats.HHmm === this.format) {\r\n return result;\r\n } else if (TimeFormats.HHmmss === this.format) {\r\n return result || this.dateAdapter.getSeconds(first) - this.dateAdapter.getSeconds(second);\r\n } else {\r\n throw Error(`Unknown format: ${this.format}`);\r\n }\r\n }\r\n\r\n private getValidDateOrNull(obj: any): D | null {\r\n return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n\r\n private setViewValue(value: string) {\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);\r\n }\r\n\r\n private updateView() {\r\n const formattedValue = this.getTimeStringFromDate(this.value, this.format);\r\n\r\n this.setViewValue(formattedValue);\r\n }\r\n\r\n private setControl(control: AbstractControl) {\r\n if (this.control) { return; }\r\n\r\n this.control = control;\r\n\r\n if (this.mcValidation.useValidation) {\r\n setMosaicValidationForCustomFormControl(this, this.changeDetectorRef);\r\n }\r\n }\r\n\r\n // tslint:disable-next-line:no-empty\r\n private validatorOnChange = () => {};\r\n}\r\n","import { A11yModule } from '@angular/cdk/a11y';\r\nimport { PlatformModule } from '@angular/cdk/platform';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { McTimepicker } from './timepicker.directive';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n A11yModule,\r\n PlatformModule,\r\n FormsModule\r\n ],\r\n declarations: [McTimepicker],\r\n exports: [McTimepicker]\r\n})\r\nexport class McTimepickerModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;IACY,UAIX;AAJD,CAAA,UAAY,SAAS,EAAA;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,SAAA,CAAA,SAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,SAAA,CAAA,SAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACX,CAAC,EAJW,SAAS,KAAT,SAAS,GAIpB,EAAA,CAAA,CAAA,CAAA;IAEW,YAGX;AAHD,CAAA,UAAY,WAAW,EAAA;AACnB,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,UAAmB,CAAA;AACnB,IAAA,WAAA,CAAA,MAAA,CAAA,GAAA,OAAc,CAAA;AAClB,CAAC,EAHW,WAAW,KAAX,WAAW,GAGtB,EAAA,CAAA,CAAA,CAAA;AAEY,MAAA,uBAAuB,GAAqC;AACrE,IAAA,CAAC,WAAW,CAAC,MAAM,GAAG,UAAU;AAChC,IAAA,CAAC,WAAW,CAAC,IAAI,GAAG,OAAO;EAC7B;AAEW,MAAA,mBAAmB,GAAgB,WAAW,CAAC,KAAK;AAE1D,MAAM,4BAA4B,GAAG,qDAAqD;AAC1F,MAAM,oBAAoB,GAAG,uCAAuC;AACpE,MAAM,iBAAiB,GAAG,0BAA0B;AACpD,MAAM,mBAAmB,GAAG,4CAA4C;AAExE,MAAM,kBAAkB,GAAW,GAAG;AACtC,MAAM,gBAAgB,GAAW,GAAG;AACpC,MAAM,aAAa,GAAW;;AC6CrC;AACa,MAAA,4BAA4B,GAAQ;AAC7C,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,YAAY,CAAC;AAC3C,IAAA,KAAK,EAAE,IAAI;EACb;AAEF;AACa,MAAA,wBAAwB,GAAQ;AACzC,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,YAAY,CAAC;AAC3C,IAAA,KAAK,EAAE,IAAI;EACb;AAGF,IAAI,uBAAuB,GAAW,CAAC,CAAC;AAExC,MAAM,eAAe,GAAW,CAAC,CAAC;AAClC,MAAM,cAAc,GAAW,CAAC,CAAC;MA8BpB,YAAY,CAAA;AA+NrB,IAAA,WAAA,CACY,UAAsB,EACtB,iBAAoC,EACpC,QAAmB,EACgB,YAAiC,EACzD,UAAkB,EAClB,eAAmC,EAClC,WAA6B,EAAA;QANzC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACgB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAqB;QACzD,IAAU,CAAA,UAAA,GAAV,UAAU,CAAQ;QAClB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAoB;QAClC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAkB;AArOrD;;;AAGG;AACM,QAAA,IAAA,CAAA,YAAY,GAAkB,IAAI,OAAO,EAAQ,CAAC;AAI3D;;;AAGG;QACH,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;AAEzB;;;AAGG;QACH,IAAW,CAAA,WAAA,GAAW,YAAY,CAAC;AAiB3B,QAAA,IAAA,CAAA,YAAY,GAAG,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;QAmE5D,IAAO,CAAA,OAAA,GAAgB,mBAAmB,CAAC;QAY3C,IAAI,CAAA,IAAA,GAAa,IAAI,CAAC;QAYtB,IAAI,CAAA,IAAA,GAAa,IAAI,CAAC;AAqCpB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAQ,CAAC;AA8CnC,QAAA,IAAA,CAAA,GAAG,GAAG,CAAA,cAAA,EAAiB,uBAAuB,EAAE,EAAE,CAAC;QAI5D,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QAIvB,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC;QAuElC,IAAO,CAAA,OAAA,GAAG,MAAK;YACX,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE5D,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,UAAU,CAAC;YAEnC,IAAI,CAAC,UAAU,EAAE;AACb,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACjB,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvB,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;AACzC,iBAAA;gBAED,OAAO;AACV,aAAA;AAED,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;AAC3C,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AAEvC,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAEvE,YAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AACrC,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AAEjC,YAAA,IAAI,CAAC,qCAAqC,CAAE,cAAyB,GAAG,CAAC,CAAC,CAAC;AAE3E,YAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC7B,SAAC,CAAA;QAoYO,IAAc,CAAA,cAAA,GAAgB,MAA8B;YAChE,OAAO,IAAI,CAAC,OAAO;AACf,gBAAA,IAAI,CAAC,KAAK;gBACV,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;AACrF,SAAC,CAAA;AAEO,QAAA,IAAA,CAAA,YAAY,GAAgB,CAAC,OAAwB,KAA6B;AACtF,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAE1F,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC;AAC/E,gBAAA,IAAI;AACJ,gBAAA,EAAE,wBAAwB,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;AAC9E,SAAC,CAAA;AAEO,QAAA,IAAA,CAAA,YAAY,GAAgB,CAAC,OAAwB,KAA6B;AACtF,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAE1F,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC;AAC/E,gBAAA,IAAI;AACJ,gBAAA,EAAE,yBAAyB,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC;AAC/E,SAAC,CAAA;;AAwCO,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAK,GAAG,CAAC;AAthBjC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB,MAAM,KAAK,CAAC,CAAuF,qFAAA,CAAA;AAC/F,gBAAA,CAAA,uFAAA,CAAyF,CAAC,CAAC;AAClG,SAAA;QAED,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AAEjG,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;;AAGrB,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;KACrB;AA9ND;;;AAGG;AACH,IAAA,IACI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;IAED,IAAI,WAAW,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAE1B,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;KACnC;AAID,IAAA,IACI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,IAAI,QAAQ,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;;;QAI9C,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,SAAA;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC5B;AAID,IAAA,IACI,EAAE,GAAA;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;KACnB;IAED,IAAI,EAAE,CAAC,KAAa,EAAA;QAChB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC;KAChC;AAID;;;AAGG;AACH,IAAA,IACI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,IAAI,QAAQ,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACjD;AAID,IAAA,IACI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IAED,IAAI,MAAM,CAAC,WAAwB,EAAA;QAC/B,IAAI,CAAC,OAAO,GAAG,MAAM;aAChB,IAAI,CAAC,WAAW,CAAC;aACjB,GAAG,CAAC,CAAC,aAAa,KAAK,WAAW,CAAC,aAAa,CAAC,CAAC;AAClD,aAAA,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,GAAG,mBAAmB,CAAC;QAEnE,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,YAAY,GAAG,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7D,SAAA;QAED,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,SAAA;KACJ;AAID,IAAA,IACI,GAAG,GAAA;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;IAED,IAAI,GAAG,CAAC,KAAe,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;AAID,IAAA,IACI,GAAG,GAAA;QACH,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;IAED,IAAI,GAAG,CAAC,KAAe,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;AAID,IAAA,IACI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;IAED,IAAI,KAAK,CAAC,KAAe,EAAA;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAErD,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEtE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;IAID,IACI,mBAAmB,CAAC,OAAgC,EAAA;QACpD,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO;AAAE,SAAA;AAEzB,QAAA,OAAO,CAAC,UAAU,GAAG,0BAA0B,CAAC;AAChD,QAAA,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC;QAE3B,OAAO,CAAC,aAAa,EAAE,CAAC;AAExB,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAK;YAC/B,IAAI,OAAO,CAAC,MAAM,EAAE;gBAAE,OAAO;AAAE,aAAA;YAE/B,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,UAAU,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,0BAA0B,CAAC,CAAC;AACjE,SAAC,CAAC,CAAC;KACN;AAID,IAAA,IAAI,YAAY,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,YAAY,CAAC;KACpD;AAED,IAAA,IAAI,YAAY,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC;KAC7C;AAED,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,IAAI,CAAC;KAC3C;AAED,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC;KAC9C;AAED,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED;;;AAGG;AACH,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;KAChD;AAED,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC;KACvD;IAED,IAAI,cAAc,CAAC,KAAoB,EAAA;QACnC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,GAAG,KAAK,CAAC;KACxD;AAED,IAAA,IAAI,YAAY,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC;KACrD;IAED,IAAI,YAAY,CAAC,KAAoB,EAAA;QACjC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,GAAG,KAAK,CAAC;KACtD;IAqCD,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KAChC;IAED,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,YAAY,GAAG,cAAc,GAAG,eAAe,CAAC;KAC/D;IAED,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KACzC;AAED,IAAA,YAAY,CAAC,SAAkB,EAAA;AAC3B,QAAA,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;YACzB,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAC5B,SAAA;KACJ;IAED,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAEzB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAExD,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;AAED,IAAA,OAAO,CAAC,MAAM,EAAA;QACV,MAAM,CAAC,cAAc,EAAE,CAAC;AAExB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAEzE,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAErD,IAAI,CAAC,UAAU,EAAE;YAAE,OAAO;AAAE,SAAA;AAE5B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAEvE,QAAA,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC5B;AAiCD;;;AAGG;IACH,gBAAgB,GAAA;QACZ,IAAI,CAAC,KAAK,EAAE,CAAC;KAChB;AAED,IAAA,SAAS,CAAC,KAAoB,EAAA;;AAE1B,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAE9B,QAAA,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YACxD,KAAK,CAAC,cAAc,EAAE,CAAC;AAEvB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAC9B,SAAA;AAAM,aAAA,IACH,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,kBAAkB,CAAC,KAAK,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACpF,YAAA,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;YAC9B,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC5C;AACE,YAAA,IAAI,EAAE,CAAC;AACV,SAAA;aAAM,IAAI,OAAO,KAAK,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAA;aAAM,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC1C,YAAA,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC;AACjD,SAAA;aAAM,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC3C,IAAI,CAAC,qCAAqC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACrE,SAAA;aAAM,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YACjD,KAAK,CAAC,cAAc,EAAE,CAAC;AAEvB,YAAA,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACzC,SAAA;aAAM,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACpD,YAAA,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAC3C,SAAA;aAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC/B,KAAK,CAAC,cAAc,EAAE,CAAC;AAEvB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,cAAwB,CAAC,CAAC;YAC5E,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAErD,IAAI,QAAQ,KAAK,cAAc,EAAE;AAC7B,gBAAA,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;AAElC,gBAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5B,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAC9B,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5B,SAAA;KACJ;AAED,IAAA,QAAQ,CAAC,OAAwB,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAEzB,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;KAC1D;AAED,IAAA,yBAAyB,CAAC,EAAc,EAAA;AACpC,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;KAC/B;AAED,IAAA,UAAU,CAAC,KAAe,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;AAED,IAAA,gBAAgB,CAAC,EAAsB,EAAA;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;AAED,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACvB;AAED,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;KAC9B;AAEO,IAAA,eAAe,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE;AAAE,YAAA,OAAO,KAAK,CAAC;AAAE,SAAA;QAEvD,MAAM,KAAK,GAA4B,KAAK,CAAC,KAAK,CAC9C,sFAAsF,CACzF,CAAC;AAEF,QAAA,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAEzB,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;;AAEjD,aAAA,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9C,aAAA,IAAI,CAAC,GAAG,CAAC,CACb,CAAC;KACL;AAEO,IAAA,eAAe,CAAC,KAAa,EAAA;QACjC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;KAC1D;AAEO,IAAA,cAAc,CAAC,KAAa,EAAA;QAChC,IAAI,cAAc,GAAW,KAAK,CAAC;QAEnC,MAAM,KAAK,GAA4B,KAAK,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAE9G,IAAI,KAAK,EAAE,MAAM,EAAE;YACf,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;AAExC,YAAA,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAC,CAAC;AACjE,SAAA;AAED,QAAA,OAAO,cAAc,CAAC;KACzB;AAEO,IAAA,cAAc,CAAC,KAAa,EAAA;QAChC,IAAI,cAAc,GAAW,KAAK,CAAC;QAEnC,MAAM,KAAK,GAA4B,KAAK,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAEpH,IAAI,KAAK,EAAE,MAAM,EAAE;YACf,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;YAEjD,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,aAAa,EAAE;AACjD,gBAAA,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5E,aAAA;YAED,IAAI,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,gBAAgB,EAAE;AACxD,gBAAA,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjF,aAAA;YAED,IAAI,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,kBAAkB,EAAE;AAC1D,gBAAA,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnF,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,cAAc,CAAC;KACzB;;IAGO,UAAU,GAAA;QACd,MAAM,QAAQ,GAAuB,IAAI,CAAC,UAAU,CAAC,aAAc,CAAC,QAAQ,CAAC;AAE7E,QAAA,OAAO,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC;KACxC;AAEO,IAAA,eAAe,CAAC,KAAoB,EAAA;QACxC,KAAK,CAAC,cAAc,EAAE,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,YAAY,EAAE;AAC3C,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,cAAwB,CAAC,CAAC;YACzE,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAElD,IAAI,KAAK,KAAK,cAAc,EAAE;AAC1B,gBAAA,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;AAElC,gBAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5B,aAAA;AACJ,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,YAAY,EAAE;AAElD,YAAA,IAAI,SAAS,GAAG,IAAI,CAAC,cAAwB,CAAC;AAE9C,YAAA,MAAM,cAAc,GAAW,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAEtE,YAAA,SAAS,GAAG,cAAc,GAAG,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC;AAEpD,YAAA,IAAI,CAAC,qCAAqC,CAAC,SAAS,CAAC,CAAC;AACzD,SAAA;KACJ;IAEO,WAAW,CAAC,GAAW,EAAE,QAAgB,EAAA;AAC7C,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC5F;AAEO,IAAA,uBAAuB,CAAC,OAAe,EAAA;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO;AAAE,SAAA;AAE5B,QAAA,IAAI,WAAW,CAAC;QAEhB,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAwB,CAAC,CAAC;QAE7E,IAAI,OAAO,KAAK,QAAQ,EAAE;AACtB,YAAA,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAChF,SAAA;QAED,IAAI,OAAO,KAAK,UAAU,EAAE;AACxB,YAAA,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAChF,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;AAEzB,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,mBAAmB,CAAC;AACxD,QAAA,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,iBAAiB,CAAC;AAEpD,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC5B;AAEO,IAAA,yBAAyB,CAAC,OAAe,EAAA;AAC7C,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO;AAAE,SAAA;AAE5B,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,cAAwB,CAAC;QAE9C,IAAI,OAAO,KAAK,UAAU,EAAE;AACxB,YAAA,SAAS,GAAG,SAAS,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC;AACvE,SAAA;aAAM,IAAI,OAAO,KAAK,WAAW,EAAE;AAChC,YAAA,MAAM,cAAc,GAAW,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAEtE,YAAA,SAAS,GAAG,cAAc,GAAG,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC;AACvD,SAAA;AAED,QAAA,IAAI,CAAC,qCAAqC,CAAC,SAAS,CAAC,CAAC;KACzD;AAEO,IAAA,qCAAqC,CAAC,SAAiB,EAAA;QAC3D,UAAU,CAAC,MAAK;YACZ,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAEzD,YAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,mBAAmB,CAAC;AACxD,YAAA,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,iBAAiB,CAAC;AACxD,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,aAAa,CAAC,OAAU,EAAE,eAA6B,GAAA,SAAS,CAAC,OAAO,EAAA;QAC5E,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAEnD,QAAA,QAAQ,eAAe;YACnB,KAAK,SAAS,CAAC,KAAK;AAChB,gBAAA,KAAK,EAAE,CAAC;gBACR,MAAM;YACV,KAAK,SAAS,CAAC,OAAO;AAClB,gBAAA,OAAO,EAAE,CAAC;gBACV,MAAM;YACV,KAAK,SAAS,CAAC,OAAO;AAClB,gBAAA,OAAO,EAAE,CAAC;gBACV,MAAM;YACV,QAAQ;AACX,SAAA;QAED,IAAI,OAAO,GAAG,kBAAkB,EAAE;YAAE,OAAO,GAAG,CAAC,CAAC;AAAE,SAAA;QAElD,IAAI,OAAO,GAAG,gBAAgB,EAAE;YAAE,OAAO,GAAG,CAAC,CAAC;AAAE,SAAA;QAEhD,IAAI,KAAK,GAAG,aAAa,EAAE;YAAE,KAAK,GAAG,CAAC,CAAC;AAAE,SAAA;QAEzC,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAClC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EACpC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EACrC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EACpC,KAAK,EACL,OAAO,EACP,OAAO,EACP,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAC/C,CAAC;KACL;AAEO,IAAA,aAAa,CAAC,OAAU,EAAE,eAA6B,GAAA,SAAS,CAAC,OAAO,EAAA;QAC5E,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAEnD,QAAA,QAAQ,eAAe;YACnB,KAAK,SAAS,CAAC,KAAK;AAChB,gBAAA,KAAK,EAAE,CAAC;gBACR,MAAM;YACV,KAAK,SAAS,CAAC,OAAO;AAClB,gBAAA,OAAO,EAAE,CAAC;gBACV,MAAM;YACV,KAAK,SAAS,CAAC,OAAO;AAClB,gBAAA,OAAO,EAAE,CAAC;gBACV,MAAM;YACV,QAAQ;AACX,SAAA;QAED,IAAI,OAAO,GAAG,CAAC,EAAE;YAAE,OAAO,GAAG,kBAAkB,CAAC;AAAE,SAAA;QAElD,IAAI,OAAO,GAAG,CAAC,EAAE;YAAE,OAAO,GAAG,gBAAgB,CAAC;AAAE,SAAA;QAEhD,IAAI,KAAK,GAAG,CAAC,EAAE;YAAE,KAAK,GAAG,aAAa,CAAC;AAAE,SAAA;QAEzC,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAClC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EACpC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EACrC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EACpC,KAAK,EACL,OAAO,EACP,OAAO,EACP,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAC/C,CAAC;KACL;AAED;;;AAGG;AACK,IAAA,kBAAkB,CAAC,cAAsB,EAAA;AAK7C,QAAA,MAAM,UAAU,GAAW,IAAI,CAAC,SAAS,CAAC;AAC1C,QAAA,IAAI,gBAA2B,CAAC;AAChC,QAAA,IAAI,mBAA2B,CAAC;AAChC,QAAA,IAAI,iBAAyB,CAAC;QAE9B,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,QAAA,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,YAAY,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAE1F,IAAI,YAAY,KAAK,CAAC,CAAC,IAAI,cAAc,GAAG,YAAY,EAAE;AACtD,YAAA,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC;AACrC,YAAA,mBAAmB,GAAG,YAAY,GAAG,CAAC,CAAC;AACvC,YAAA,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC;AACzC,SAAA;aAAM,IAAI,YAAY,KAAK,CAAC,CAAC,IAAI,cAAc,GAAG,YAAY,EAAE;AAC7D,YAAA,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC;AACrC,YAAA,mBAAmB,GAAG,YAAY,GAAG,CAAC,CAAC;AACvC,YAAA,iBAAiB,GAAG,YAAY,GAAG,CAAC,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC;AAC5E,SAAA;AAAM,aAAA;AACH,YAAA,gBAAgB,GAAG,SAAS,CAAC,KAAK,CAAC;YACnC,mBAAmB,GAAG,UAAU,CAAC;AACjC,YAAA,iBAAiB,GAAG,YAAY,KAAK,CAAC,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC;AAC9E,SAAA;AAED,QAAA,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC;KACvE;AAED;;AAEG;IACK,qBAAqB,CAAC,KAAe,EAAE,UAAuB,EAAA;AAClE,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAAE,YAAA,OAAO,EAAE,CAAC;AAAE,SAAA;QAE9D,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;KACrD;AAEO,IAAA,qBAAqB,CAAC,UAAkB,EAAA;QAC5C,IAAI,CAAC,UAAU,EAAE;AAAE,YAAA,OAAO,IAAI,CAAC;AAAE,SAAA;QAEjC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC3D,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAEnD,IAAI,KAAK,GAAW,CAAC,CAAC;QACtB,IAAI,OAAO,GAAW,CAAC,CAAC;QACxB,IAAI,OAAO,GAAW,CAAC,CAAC;;AAGxB,QAAA,IAAI,IAAI,EAAE;YACN,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACxB,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAE1B,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,EAAE;gBAChE,KAAK,IAAI,EAAE,CAAC;AACf,aAAA;AACJ,SAAA;AAAM,aAAA,IAAI,GAAG,EAAE;YACZ,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAA;AAAM,aAAA,IAAI,EAAE,EAAE;YACX,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACtB,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,SAAA;AAAM,aAAA,IAAI,CAAC,EAAE;YACV,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;;AAED,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAEpD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAC9C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAC9B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC/B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAC9B,KAAK,EACL,OAAO,IAAI,CAAC,EACZ,OAAO,IAAI,CAAC,EACZ,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,CACzC,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;KAC9C;IAwBO,WAAW,CAAC,KAAQ,EAAE,MAAS,EAAA;AACnC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC/E,YAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAE7E,QAAA,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE;AAClC,YAAA,OAAO,MAAM,CAAC;AACjB,SAAA;AAAM,aAAA,IAAI,WAAW,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;AAC3C,YAAA,OAAO,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC7F,SAAA;AAAM,aAAA;YACH,MAAM,KAAK,CAAC,CAAmB,gBAAA,EAAA,IAAI,CAAC,MAAM,CAAA,CAAE,CAAC,CAAC;AACjD,SAAA;KACJ;AAEO,IAAA,kBAAkB,CAAC,GAAQ,EAAA;QAC/B,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC;KAC/F;AAEO,IAAA,YAAY,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;KAC5E;IAEO,UAAU,GAAA;AACd,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAE3E,QAAA,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;KACrC;AAEO,IAAA,UAAU,CAAC,OAAwB,EAAA;QACvC,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO;AAAE,SAAA;AAE7B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAEvB,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;AACjC,YAAA,uCAAuC,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACzE,SAAA;KACJ;;AA3vBQ,sCAAA,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,sGAmOG,aAAa,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAnO5B,sCAAA,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EANV,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,SAAA,EAAA;QACP,wBAAwB;QACxB,4BAA4B;AAC5B,QAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,YAAY,EAAE;AAC7D,KAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAEQ,YAAY,EAAA,UAAA,EAAA,CAAA;kBA3BxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,wBAAwB;;;AAG/B,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,oBAAoB,EAAE,aAAa;AACnC,wBAAA,iBAAiB,EAAE,kBAAkB;AACrC,wBAAA,iBAAiB,EAAE,UAAU;AAC7B,wBAAA,aAAa,EAAE,WAAW;AAC1B,wBAAA,qBAAqB,EAAE,OAAO;AAE9B,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,SAAS,EAAE,oBAAoB;AAE/B,wBAAA,SAAS,EAAE,iBAAiB;AAE5B,wBAAA,WAAW,EAAE,mBAAmB;AACnC,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACP,wBAAwB;wBACxB,4BAA4B;AAC5B,wBAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,cAAc,EAAE;AAC7D,qBAAA;AACJ,iBAAA,CAAA;;0BAoOQ,QAAQ;;0BAAI,MAAM;2BAAC,aAAa,CAAA;;0BAChC,QAAQ;;0BACR,QAAQ;;0BACR,QAAQ;4CA5MT,WAAW,EAAA,CAAA;sBADd,KAAK;gBAcF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAoBF,EAAE,EAAA,CAAA;sBADL,KAAK;gBAgBF,QAAQ,EAAA,CAAA;sBADX,KAAK;gBAYF,MAAM,EAAA,CAAA;sBADT,KAAK;gBAuBF,GAAG,EAAA,CAAA;sBADN,KAAK;gBAaF,GAAG,EAAA,CAAA;sBADN,KAAK;gBAaF,KAAK,EAAA,CAAA;sBADR,KAAK;gBAkBF,mBAAmB,EAAA,CAAA;sBADtB,KAAK;gBAkBI,cAAc,EAAA,CAAA;sBAAvB,MAAM;;;MCxQE,kBAAkB,CAAA;;qJAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;sJAAlB,kBAAkB,EAAA,YAAA,EAAA,CAHZ,YAAY,CAAA,EAAA,OAAA,EAAA,CALvB,YAAY;QACZ,UAAU;QACV,cAAc;AACd,QAAA,WAAW,aAGL,YAAY,CAAA,EAAA,CAAA,CAAA;AAEb,sCAAA,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EATlB,OAAA,EAAA,CAAA;YACL,YAAY;YACZ,UAAU;YACV,cAAc;YACd,WAAW;AACd,SAAA,CAAA,EAAA,CAAA,CAAA;2FAIQ,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAV9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,UAAU;wBACV,cAAc;wBACd,WAAW;AACd,qBAAA;oBACD,YAAY,EAAE,CAAC,YAAY,CAAC;oBAC5B,OAAO,EAAE,CAAC,YAAY,CAAC;AAC1B,iBAAA,CAAA;;;AClBD;;AAEG;;;;"}
1
+ {"version":3,"file":"ptsecurity-mosaic-timepicker.mjs","sources":["../../../packages/mosaic/timepicker/timepicker.constants.ts","../../../packages/mosaic/timepicker/timepicker.directive.ts","../../../packages/mosaic/timepicker/timepicker.module.ts","../../../packages/mosaic/timepicker/ptsecurity-mosaic-timepicker.ts"],"sourcesContent":["// tslint:disable:naming-convention\r\nexport enum TimeParts {\r\n hours,\r\n minutes,\r\n seconds\r\n}\r\n\r\nexport enum TimeFormats {\r\n HHmmss = 'HH:mm:ss',\r\n HHmm = 'HH:mm'\r\n}\r\n\r\nexport const TIMEFORMAT_PLACEHOLDERS: { [timeFormat: string]: string } = {\r\n [TimeFormats.HHmmss]: 'чч:мм:сс',\r\n [TimeFormats.HHmm]: 'чч:мм'\r\n};\r\n\r\nexport const DEFAULT_TIME_FORMAT: TimeFormats = TimeFormats.HHmm;\r\n\r\nexport const HOURS_MINUTES_SECONDS_REGEXP = /^([0-1][0-9]|2[0-3]):?([0-5][0-9]):?([0-5][0-9])?$/;\r\nexport const HOURS_MINUTES_REGEXP = /^([0-1][0-9]|2[0-3]):?([0-5][0-9])?$/;\r\nexport const HOURS_ONLY_REGEXP = /^([0-1][0-9]|2[0-3]):?$/;\r\nexport const AM_PM_FORMAT_REGEXP = /^([0-1]?[0-9]):([0-5]?[0-9]) ([ap][m]?$)/i;\r\n\r\nexport const SECONDS_PER_MINUTE: number = 59;\r\nexport const MINUTES_PER_HOUR: number = 59;\r\nexport const HOURS_PER_DAY: number = 23;\r\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport {\r\n ChangeDetectorRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n Renderer2\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormGroupDirective,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n NgForm,\r\n ValidationErrors,\r\n Validator,\r\n ValidatorFn,\r\n Validators\r\n} from '@angular/forms';\r\nimport { DateAdapter } from '@ptsecurity/cdk/datetime';\r\nimport {\r\n DOWN_ARROW,\r\n UP_ARROW,\r\n HOME,\r\n END,\r\n LEFT_ARROW,\r\n RIGHT_ARROW,\r\n PAGE_DOWN,\r\n PAGE_UP,\r\n SPACE,\r\n DELETE,\r\n BACKSPACE,\r\n hasModifierKey,\r\n isLetterKey,\r\n isVerticalMovement,\r\n isHorizontalMovement,\r\n TAB\r\n} from '@ptsecurity/cdk/keycodes';\r\nimport {\r\n MC_VALIDATION,\r\n McValidationOptions,\r\n setMosaicValidationForCustomFormControl,\r\n validationTooltipHideDelay,\r\n validationTooltipShowDelay\r\n} from '@ptsecurity/mosaic/core';\r\nimport { McFormFieldControl } from '@ptsecurity/mosaic/form-field';\r\nimport { McWarningTooltipTrigger } from '@ptsecurity/mosaic/tooltip';\r\nimport { noop, Subject } from 'rxjs';\r\n\r\nimport {\r\n DEFAULT_TIME_FORMAT,\r\n HOURS_PER_DAY,\r\n HOURS_MINUTES_REGEXP,\r\n HOURS_MINUTES_SECONDS_REGEXP,\r\n HOURS_ONLY_REGEXP,\r\n MINUTES_PER_HOUR,\r\n SECONDS_PER_MINUTE,\r\n TIMEFORMAT_PLACEHOLDERS,\r\n TimeFormats,\r\n TimeParts,\r\n AM_PM_FORMAT_REGEXP\r\n} from './timepicker.constants';\r\n\r\n\r\n/** @docs-private */\r\nexport const MC_TIMEPICKER_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => McTimepicker),\r\n multi: true\r\n};\r\n\r\n/** @docs-private */\r\nexport const MC_TIMEPICKER_VALIDATORS: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => McTimepicker),\r\n multi: true\r\n};\r\n\r\n\r\nlet uniqueComponentIdSuffix: number = 0;\r\n\r\nconst shortFormatSize: number = 5;\r\nconst fullFormatSize: number = 8;\r\n\r\n\r\n@Directive({\r\n selector: 'input[mcTimepicker]',\r\n exportAs: 'mcTimepicker',\r\n host: {\r\n class: 'mc-input mc-timepicker',\r\n // Native input properties that are overwritten by Angular inputs need to be synced with\r\n // the native input element. Otherwise property bindings for those don't work.\r\n '[attr.id]': 'id',\r\n '[attr.placeholder]': 'placeholder',\r\n '[attr.disabled]': 'disabled || null',\r\n '[attr.required]': 'required',\r\n '[attr.size]': 'getSize()',\r\n '[attr.autocomplete]': '\"off\"',\r\n\r\n '(blur)': 'onBlur()',\r\n '(focus)': 'focusChanged(true)',\r\n\r\n '(paste)': 'onPaste($event)',\r\n\r\n '(keydown)': 'onKeyDown($event)'\r\n },\r\n providers: [\r\n MC_TIMEPICKER_VALIDATORS,\r\n MC_TIMEPICKER_VALUE_ACCESSOR,\r\n { provide: McFormFieldControl, useExisting: McTimepicker }\r\n ]\r\n})\r\nexport class McTimepicker<D> implements McFormFieldControl<D>, ControlValueAccessor, Validator, OnDestroy {\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n\r\n readonly errorState: boolean;\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n focused: boolean = false;\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n controlType: string = 'timepicker';\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n @Input()\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n\r\n this.defaultPlaceholder = false;\r\n }\r\n\r\n private _placeholder = TIMEFORMAT_PLACEHOLDERS[DEFAULT_TIME_FORMAT];\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n\r\n // Browsers may not fire the blur event if the input is disabled too quickly.\r\n // Reset from here to ensure that the element doesn't become stuck.\r\n if (this.focused) {\r\n this.focused = false;\r\n }\r\n\r\n this.stateChanges.next();\r\n }\r\n\r\n private _disabled: boolean;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this.uid;\r\n }\r\n\r\n private _id: string;\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n @Input()\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n }\r\n\r\n private _required: boolean;\r\n\r\n @Input()\r\n get format(): TimeFormats {\r\n return this._format;\r\n }\r\n\r\n set format(formatValue: TimeFormats) {\r\n this._format = Object\r\n .keys(TimeFormats)\r\n .map((timeFormatKey) => TimeFormats[timeFormatKey])\r\n .indexOf(formatValue) > -1 ? formatValue : DEFAULT_TIME_FORMAT;\r\n\r\n if (this.defaultPlaceholder) {\r\n this._placeholder = TIMEFORMAT_PLACEHOLDERS[this._format];\r\n }\r\n\r\n if (this.value) {\r\n this.updateView();\r\n }\r\n }\r\n\r\n private _format: TimeFormats = DEFAULT_TIME_FORMAT;\r\n\r\n @Input()\r\n get min(): D | null {\r\n return this._min;\r\n }\r\n\r\n set min(value: D | null) {\r\n this._min = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n this.validatorOnChange();\r\n }\r\n\r\n private _min: D | null = null;\r\n\r\n @Input()\r\n get max(): D | null {\r\n return this._max;\r\n }\r\n\r\n set max(value: D | null) {\r\n this._max = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\r\n this.validatorOnChange();\r\n }\r\n\r\n private _max: D | null = null;\r\n\r\n @Input()\r\n get value(): D | null {\r\n return this._value;\r\n }\r\n\r\n set value(value: D | null) {\r\n const newValue = this.dateAdapter.deserialize(value);\r\n\r\n this.lastValueValid = !newValue || this.dateAdapter.isValid(newValue);\r\n\r\n this._value = this.getValidDateOrNull(newValue);\r\n\r\n this.updateView();\r\n }\r\n\r\n private _value: D | null;\r\n\r\n @Input()\r\n set mcValidationTooltip(tooltip: McWarningTooltipTrigger) {\r\n if (!tooltip) { return; }\r\n\r\n tooltip.enterDelay = validationTooltipShowDelay;\r\n tooltip.trigger = 'manual';\r\n\r\n tooltip.initListeners();\r\n\r\n this.incorrectInput.subscribe(() => {\r\n if (tooltip.isOpen) { return; }\r\n\r\n tooltip.show();\r\n\r\n setTimeout(() => tooltip.hide(), validationTooltipHideDelay);\r\n });\r\n }\r\n\r\n @Output() incorrectInput = new EventEmitter<void>();\r\n\r\n get hasSelection(): boolean {\r\n return this.selectionStart !== this.selectionEnd;\r\n }\r\n\r\n get isFullFormat(): boolean {\r\n return this.format === TimeFormats.HHmmss;\r\n }\r\n\r\n get isShortFormat(): boolean {\r\n return this.format === TimeFormats.HHmm;\r\n }\r\n\r\n get viewValue(): string {\r\n return this.elementRef.nativeElement.value;\r\n }\r\n\r\n get ngControl(): any {\r\n return this.control;\r\n }\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n get empty(): boolean {\r\n return !this.viewValue && !this.isBadInput();\r\n }\r\n\r\n get selectionStart(): number | null {\r\n return this.elementRef.nativeElement.selectionStart;\r\n }\r\n\r\n set selectionStart(value: number | null) {\r\n this.elementRef.nativeElement.selectionStart = value;\r\n }\r\n\r\n get selectionEnd(): number | null {\r\n return this.elementRef.nativeElement.selectionEnd;\r\n }\r\n\r\n set selectionEnd(value: number | null) {\r\n this.elementRef.nativeElement.selectionEnd = value;\r\n }\r\n\r\n private readonly uid = `mc-timepicker-${uniqueComponentIdSuffix++}`;\r\n\r\n private readonly validator: ValidatorFn | null;\r\n\r\n private lastValueValid = false;\r\n\r\n private control: AbstractControl;\r\n\r\n private defaultPlaceholder = true;\r\n\r\n private onChange: (value: any) => void;\r\n private onTouched: () => void;\r\n\r\n constructor(\r\n private elementRef: ElementRef,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private renderer: Renderer2,\r\n @Optional() @Inject(MC_VALIDATION) private mcValidation: McValidationOptions,\r\n @Optional() public parentForm: NgForm,\r\n @Optional() public parentFormGroup: FormGroupDirective,\r\n @Optional() private dateAdapter: DateAdapter<any>\r\n ) {\r\n if (!this.dateAdapter) {\r\n throw Error(`McTimepicker: No provider found for DateAdapter. You must import one of the existing ` +\r\n `modules at your application root or provide a custom implementation or use exists ones.`);\r\n }\r\n\r\n this.validator = Validators.compose([this.parseValidator, this.minValidator, this.maxValidator]);\r\n\r\n this.onChange = noop;\r\n\r\n // Force setter to be called in case id was not specified.\r\n this.id = this.id;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n }\r\n\r\n getSize(): number {\r\n return this.isFullFormat ? fullFormatSize : shortFormatSize;\r\n }\r\n\r\n focus(): void {\r\n this.elementRef.nativeElement.focus();\r\n }\r\n\r\n focusChanged(isFocused: boolean): void {\r\n if (isFocused !== this.focused) {\r\n this.focused = isFocused;\r\n this.onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onBlur() {\r\n this.focusChanged(false);\r\n\r\n this.setViewValue(this.formatUserPaste(this.viewValue));\r\n\r\n this.onInput();\r\n }\r\n\r\n onPaste($event) {\r\n $event.preventDefault();\r\n\r\n const value = this.formatUserPaste($event.clipboardData.getData('text'));\r\n\r\n const newTimeObj = this.getDateFromTimeString(value);\r\n\r\n if (!newTimeObj) { return; }\r\n\r\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.format));\r\n\r\n this.value = newTimeObj;\r\n this.onChange(newTimeObj);\r\n this.stateChanges.next();\r\n }\r\n\r\n onInput = () => {\r\n const formattedValue = this.formatUserInput(this.viewValue);\r\n\r\n const newTimeObj = this.getDateFromTimeString(formattedValue);\r\n this.lastValueValid = !!newTimeObj;\r\n\r\n if (!newTimeObj) {\r\n if (!this.viewValue) {\r\n this.onChange(null);\r\n } else {\r\n this.control.updateValueAndValidity();\r\n }\r\n\r\n return;\r\n }\r\n\r\n const selectionStart = this.selectionStart;\r\n const selectionEnd = this.selectionEnd;\r\n\r\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.format));\r\n\r\n this.selectionStart = selectionStart;\r\n this.selectionEnd = selectionEnd;\r\n\r\n this.createSelectionOfTimeComponentInInput((selectionStart as number) + 1);\r\n\r\n this.value = newTimeObj;\r\n this.onChange(newTimeObj);\r\n this.stateChanges.next();\r\n }\r\n\r\n /**\r\n * Implemented as part of McFormFieldControl.\r\n * @docs-private\r\n */\r\n onContainerClick() {\r\n this.focus();\r\n }\r\n\r\n onKeyDown(event: KeyboardEvent): void {\r\n // tslint:disable-next-line: deprecation\r\n const keyCode = event.keyCode;\r\n\r\n if (isLetterKey(event) && !event.ctrlKey && !event.metaKey) {\r\n event.preventDefault();\r\n\r\n this.incorrectInput.emit();\r\n } else if (\r\n (hasModifierKey(event) && (isVerticalMovement(event) || isHorizontalMovement(event))) ||\r\n event.ctrlKey || event.metaKey ||\r\n [DELETE, BACKSPACE, TAB].includes(keyCode)\r\n ) {\r\n noop();\r\n } else if (keyCode === SPACE) {\r\n this.spaceKeyHandler(event);\r\n } else if ([HOME, PAGE_UP].includes(keyCode)) {\r\n this.createSelectionOfTimeComponentInInput(0);\r\n } else if ([END, PAGE_DOWN].includes(keyCode)) {\r\n this.createSelectionOfTimeComponentInInput(this.viewValue.length);\r\n } else if ([UP_ARROW, DOWN_ARROW].includes(keyCode)) {\r\n event.preventDefault();\r\n\r\n this.verticalArrowKeyHandler(keyCode);\r\n } else if ([LEFT_ARROW, RIGHT_ARROW].includes(keyCode)) {\r\n this.horizontalArrowKeyHandler(keyCode);\r\n } else if (/^\\D$/.test(event.key)) {\r\n event.preventDefault();\r\n\r\n const newValue = this.getNewValue(event.key, this.selectionStart as number);\r\n const formattedValue = this.replaceSymbols(newValue);\r\n\r\n if (newValue !== formattedValue) {\r\n this.setViewValue(formattedValue);\r\n\r\n setTimeout(this.onInput);\r\n } else {\r\n this.incorrectInput.emit();\r\n }\r\n } else {\r\n setTimeout(this.onInput);\r\n }\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n this.setControl(control);\r\n\r\n return this.validator ? this.validator(control) : null;\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.validatorOnChange = fn;\r\n }\r\n\r\n writeValue(value: D | null): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(fn: (value: D) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n private formatUserPaste(value: string) {\r\n if (value.match(AM_PM_FORMAT_REGEXP)) { return value; }\r\n\r\n const match: RegExpMatchArray | null = value.match(\r\n /^(\\D+)?(?<hours>\\d+)?(\\D+)?(\\D+)?(?<minutes>\\d+)?(\\D+)?(\\D+)?(?<seconds>\\d+)?(\\D+)?$/\r\n );\r\n\r\n if (!match?.groups?.hours) {\r\n this.setViewValue(value);\r\n\r\n return value;\r\n }\r\n\r\n return this.replaceNumbers(Object.values(match.groups)\r\n // tslint:disable-next-line:no-magic-numbers\r\n .map((group) => (group || '').padStart(2, '0'))\r\n .join(':')\r\n );\r\n }\r\n\r\n private formatUserInput(value: string): string {\r\n return this.replaceNumbers(this.replaceSymbols(value));\r\n }\r\n\r\n private replaceSymbols(value: string): string {\r\n let formattedValue: string = value;\r\n\r\n const match: RegExpMatchArray | null = value.match(/^(\\d\\d:){0,2}(?<number>[0-9])(?<symbol>\\W)(:\\d\\d){0,2}$/);\r\n\r\n if (match?.groups) {\r\n const { number, symbol } = match.groups;\r\n\r\n formattedValue = value.replace(number + symbol, `0${number}`);\r\n }\r\n\r\n return formattedValue;\r\n }\r\n\r\n private replaceNumbers(value: string): string {\r\n let formattedValue: string = value;\r\n\r\n const match: RegExpMatchArray | null = value.match(/^(?<hours>\\d{0,4}):?(?<minutes>\\d{0,4}):?(?<seconds>\\d{0,4})$/);\r\n\r\n if (match?.groups) {\r\n const { hours, minutes, seconds } = match.groups;\r\n\r\n if (hours.length && parseInt(hours) > HOURS_PER_DAY) {\r\n formattedValue = formattedValue.replace(hours, HOURS_PER_DAY.toString());\r\n }\r\n\r\n if (minutes.length && parseInt(minutes) > MINUTES_PER_HOUR) {\r\n formattedValue = formattedValue.replace(minutes, MINUTES_PER_HOUR.toString());\r\n }\r\n\r\n if (seconds.length && parseInt(seconds) > SECONDS_PER_MINUTE) {\r\n formattedValue = formattedValue.replace(seconds, SECONDS_PER_MINUTE.toString());\r\n }\r\n }\r\n\r\n return formattedValue;\r\n }\r\n\r\n /** Checks whether the input is invalid based on the native validation. */\r\n private isBadInput(): boolean {\r\n const validity = (<HTMLInputElement> this.elementRef.nativeElement).validity;\r\n\r\n return validity && validity.badInput;\r\n }\r\n\r\n private spaceKeyHandler(event: KeyboardEvent) {\r\n event.preventDefault();\r\n\r\n if (this.selectionStart === this.selectionEnd) {\r\n const value = this.getNewValue(event.key, this.selectionStart as number);\r\n const formattedValue = this.replaceSymbols(value);\r\n\r\n if (value !== formattedValue) {\r\n this.setViewValue(formattedValue);\r\n\r\n setTimeout(this.onInput);\r\n }\r\n } else if (this.selectionStart !== this.selectionEnd) {\r\n\r\n let cursorPos = this.selectionStart as number;\r\n\r\n const nextDividerPos: number = this.viewValue.indexOf(':', cursorPos);\r\n\r\n cursorPos = nextDividerPos ? nextDividerPos + 1 : 0;\r\n\r\n this.createSelectionOfTimeComponentInInput(cursorPos);\r\n }\r\n }\r\n\r\n private getNewValue(key: string, position: number) {\r\n return [this.viewValue.slice(0, position), key, this.viewValue.slice(position)].join('');\r\n }\r\n\r\n private verticalArrowKeyHandler(keyCode: number): void {\r\n if (!this.value) { return; }\r\n\r\n let changedTime;\r\n\r\n const newEditParams = this.getTimeEditMetrics(this.selectionStart as number);\r\n\r\n if (keyCode === UP_ARROW) {\r\n changedTime = this.incrementTime(this.value, newEditParams.modifiedTimePart);\r\n }\r\n\r\n if (keyCode === DOWN_ARROW) {\r\n changedTime = this.decrementTime(this.value, newEditParams.modifiedTimePart);\r\n }\r\n\r\n this.value = changedTime;\r\n\r\n this.selectionStart = newEditParams.cursorStartPosition;\r\n this.selectionEnd = newEditParams.cursorEndPosition;\r\n\r\n this.onChange(changedTime);\r\n this.stateChanges.next();\r\n }\r\n\r\n private horizontalArrowKeyHandler(keyCode: number): void {\r\n if (!this.value) { return; }\r\n\r\n let cursorPos = this.selectionStart as number;\r\n\r\n if (keyCode === LEFT_ARROW) {\r\n cursorPos = cursorPos === 0 ? this.viewValue.length : cursorPos - 1;\r\n } else if (keyCode === RIGHT_ARROW) {\r\n const nextDividerPos: number = this.viewValue.indexOf(':', cursorPos);\r\n\r\n cursorPos = nextDividerPos ? nextDividerPos + 1 : 0;\r\n }\r\n\r\n this.createSelectionOfTimeComponentInInput(cursorPos);\r\n }\r\n\r\n private createSelectionOfTimeComponentInInput(cursorPos: number): void {\r\n setTimeout(() => {\r\n const newEditParams = this.getTimeEditMetrics(cursorPos);\r\n\r\n this.selectionStart = newEditParams.cursorStartPosition;\r\n this.selectionEnd = newEditParams.cursorEndPosition;\r\n });\r\n }\r\n\r\n private incrementTime(dateVal: D, whatToIncrement: TimeParts = TimeParts.seconds): D {\r\n let hours = this.dateAdapter.getHours(dateVal);\r\n let minutes = this.dateAdapter.getMinutes(dateVal);\r\n let seconds = this.dateAdapter.getSeconds(dateVal);\r\n\r\n switch (whatToIncrement) {\r\n case TimeParts.hours:\r\n hours++;\r\n break;\r\n case TimeParts.minutes:\r\n minutes++;\r\n break;\r\n case TimeParts.seconds:\r\n seconds++;\r\n break;\r\n default:\r\n }\r\n\r\n if (seconds > SECONDS_PER_MINUTE) { seconds = 0; }\r\n\r\n if (minutes > MINUTES_PER_HOUR) { minutes = 0; }\r\n\r\n if (hours > HOURS_PER_DAY) { hours = 0; }\r\n\r\n return this.dateAdapter.createDateTime(\r\n this.dateAdapter.getYear(this.value),\r\n this.dateAdapter.getMonth(this.value),\r\n this.dateAdapter.getDate(this.value),\r\n hours,\r\n minutes,\r\n seconds,\r\n this.dateAdapter.getMilliseconds(this.value)\r\n );\r\n }\r\n\r\n private decrementTime(dateVal: D, whatToDecrement: TimeParts = TimeParts.seconds): D {\r\n let hours = this.dateAdapter.getHours(dateVal);\r\n let minutes = this.dateAdapter.getMinutes(dateVal);\r\n let seconds = this.dateAdapter.getSeconds(dateVal);\r\n\r\n switch (whatToDecrement) {\r\n case TimeParts.hours:\r\n hours--;\r\n break;\r\n case TimeParts.minutes:\r\n minutes--;\r\n break;\r\n case TimeParts.seconds:\r\n seconds--;\r\n break;\r\n default:\r\n }\r\n\r\n if (seconds < 0) { seconds = SECONDS_PER_MINUTE; }\r\n\r\n if (minutes < 0) { minutes = MINUTES_PER_HOUR; }\r\n\r\n if (hours < 0) { hours = HOURS_PER_DAY; }\r\n\r\n return this.dateAdapter.createDateTime(\r\n this.dateAdapter.getYear(this.value),\r\n this.dateAdapter.getMonth(this.value),\r\n this.dateAdapter.getDate(this.value),\r\n hours,\r\n minutes,\r\n seconds,\r\n this.dateAdapter.getMilliseconds(this.value)\r\n );\r\n }\r\n\r\n /**\r\n * @description Get params for arrow-keys (up/down) time valie edit.\r\n * @param cursorPosition Current cursor position in timeString\r\n */\r\n private getTimeEditMetrics(cursorPosition: number): {\r\n modifiedTimePart: TimeParts;\r\n cursorStartPosition: number;\r\n cursorEndPosition: number;\r\n } {\r\n const timeString: string = this.viewValue;\r\n let modifiedTimePart: TimeParts;\r\n let cursorStartPosition: number;\r\n let cursorEndPosition: number;\r\n\r\n const hoursIndex = 0;\r\n const minutesIndex = timeString.indexOf(':', hoursIndex + 1);\r\n const secondsIndex = minutesIndex !== -1 ? timeString.indexOf(':', minutesIndex + 1) : -1;\r\n\r\n if (secondsIndex !== -1 && cursorPosition > secondsIndex) {\r\n modifiedTimePart = TimeParts.seconds;\r\n cursorStartPosition = secondsIndex + 1;\r\n cursorEndPosition = timeString.length;\r\n } else if (minutesIndex !== -1 && cursorPosition > minutesIndex) {\r\n modifiedTimePart = TimeParts.minutes;\r\n cursorStartPosition = minutesIndex + 1;\r\n cursorEndPosition = secondsIndex > -1 ? secondsIndex : timeString.length;\r\n } else {\r\n modifiedTimePart = TimeParts.hours;\r\n cursorStartPosition = hoursIndex;\r\n cursorEndPosition = minutesIndex !== -1 ? minutesIndex : timeString.length;\r\n }\r\n\r\n return { modifiedTimePart, cursorStartPosition, cursorEndPosition };\r\n }\r\n\r\n /**\r\n * @description Create time string for displaying inside input element of UI\r\n */\r\n private getTimeStringFromDate(value: D | null, timeFormat: TimeFormats): string {\r\n if (!value || !this.dateAdapter.isValid(value)) { return ''; }\r\n\r\n return this.dateAdapter.format(value, timeFormat);\r\n }\r\n\r\n private getDateFromTimeString(timeString: string): D | null {\r\n if (!timeString) { return null; }\r\n\r\n const HMS = timeString.match(HOURS_MINUTES_SECONDS_REGEXP);\r\n const HM = timeString.match(HOURS_MINUTES_REGEXP);\r\n const H = timeString.match(HOURS_ONLY_REGEXP);\r\n const amPm = timeString.match(AM_PM_FORMAT_REGEXP);\r\n\r\n let hours: number = 0;\r\n let minutes: number = 0;\r\n let seconds: number = 0;\r\n\r\n // tslint:disable:no-magic-numbers\r\n if (amPm) {\r\n hours = Number(amPm[1]);\r\n minutes = Number(amPm[2]);\r\n\r\n if (/[p]/i.test(amPm[3]) || (/[a]/i.test(amPm[3]) && hours === 12)) {\r\n hours += 12;\r\n }\r\n } else if (HMS) {\r\n hours = Number(HMS[1]);\r\n minutes = Number(HMS[2]);\r\n seconds = Number(HMS[3]);\r\n } else if (HM) {\r\n hours = Number(HM[1]);\r\n minutes = Number(HM[2]);\r\n } else if (H) {\r\n hours = Number(H[1]);\r\n } else {\r\n return null;\r\n }\r\n // tslint:enable\r\n const date = this.value || this.dateAdapter.today();\r\n\r\n const resultDate = this.dateAdapter.createDateTime(\r\n this.dateAdapter.getYear(date),\r\n this.dateAdapter.getMonth(date),\r\n this.dateAdapter.getDate(date),\r\n hours,\r\n minutes || 0,\r\n seconds || 0,\r\n this.dateAdapter.getMilliseconds(date)\r\n );\r\n\r\n return this.getValidDateOrNull(resultDate);\r\n }\r\n\r\n private parseValidator: ValidatorFn = (): ValidationErrors | null => {\r\n return this.focused ||\r\n this.empty ||\r\n this.lastValueValid ? null : { mcTimepickerParse: { text: this.viewValue } };\r\n }\r\n\r\n private minValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\r\n\r\n return !this.min || !controlValue || this.dateAdapter.compareDateTime(this.min, controlValue) <= 0 ?\r\n null :\r\n { mcTimepickerLowerThenMin: { min: this.min, actual: controlValue } };\r\n }\r\n\r\n private maxValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n const controlValue = this.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\r\n\r\n return !this.max || !controlValue || this.dateAdapter.compareDateTime(this.max, controlValue) >= 0 ?\r\n null :\r\n { mcTimepickerHigherThenMax: { max: this.max, actual: controlValue } };\r\n }\r\n\r\n private getValidDateOrNull(obj: any): D | null {\r\n return (this.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n\r\n private setViewValue(value: string) {\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);\r\n }\r\n\r\n private updateView() {\r\n const formattedValue = this.getTimeStringFromDate(this.value, this.format);\r\n\r\n this.setViewValue(formattedValue);\r\n }\r\n\r\n private setControl(control: AbstractControl) {\r\n if (this.control) { return; }\r\n\r\n this.control = control;\r\n\r\n this.control.valueChanges\r\n .subscribe((value) => this._value = value);\r\n\r\n if (this.mcValidation.useValidation) {\r\n setMosaicValidationForCustomFormControl(this, this.changeDetectorRef);\r\n }\r\n }\r\n\r\n // tslint:disable-next-line:no-empty\r\n private validatorOnChange = () => {};\r\n}\r\n","import { A11yModule } from '@angular/cdk/a11y';\r\nimport { PlatformModule } from '@angular/cdk/platform';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { McTimepicker } from './timepicker.directive';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n A11yModule,\r\n PlatformModule,\r\n FormsModule\r\n ],\r\n declarations: [McTimepicker],\r\n exports: [McTimepicker]\r\n})\r\nexport class McTimepickerModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -106,8 +106,8 @@ class McToggleComponent extends McToggleMixinBase {
106
106
  this.change.emit(event);
107
107
  }
108
108
  }
109
- /** @nocollapse */ /** @nocollapse */ McToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McToggleComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
110
- /** @nocollapse */ /** @nocollapse */ McToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.7", type: McToggleComponent, selector: "mc-toggle", inputs: { color: "color", tabIndex: "tabIndex", labelPosition: "labelPosition", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], id: "id", name: "name", value: "value", disabled: "disabled", checked: "checked" }, outputs: { change: "change" }, host: { properties: { "id": "id", "attr.id": "id", "class.mc-disabled": "disabled", "class.mc-active": "checked" }, classAttribute: "mc-toggle" }, providers: [{
109
+ /** @nocollapse */ /** @nocollapse */ McToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McToggleComponent, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
110
+ /** @nocollapse */ /** @nocollapse */ McToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: McToggleComponent, selector: "mc-toggle", inputs: { color: "color", tabIndex: "tabIndex", labelPosition: "labelPosition", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], id: "id", name: "name", value: "value", disabled: "disabled", checked: "checked" }, outputs: { change: "change" }, host: { properties: { "id": "id", "attr.id": "id", "class.mc-disabled": "disabled", "class.mc-active": "checked" }, classAttribute: "mc-toggle" }, providers: [{
111
111
  provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((() => McToggleComponent)), multi: true
112
112
  }], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }], exportAs: ["mcToggle"], usesInheritance: true, ngImport: i0, template: "<label [attr.for]=\"inputId\" class=\"mc-toggle-layout\">\r\n <div class=\"mc-toggle__container\" [class.left]=\"labelPosition === 'left'\">\r\n <input #input\r\n type=\"checkbox\"\r\n role=\"switch\"\r\n class=\"mc-toggle-input cdk-visually-hidden\"\r\n [id]=\"inputId\"\r\n [checked]=\"checked\"\r\n [attr.value]=\"value\"\r\n [disabled]=\"disabled\"\r\n [attr.name]=\"name\"\r\n [tabIndex]=\"tabIndex\"\r\n [attr.aria-label]=\"ariaLabel || null\"\r\n [attr.aria-labelledby]=\"ariaLabelledby\"\r\n [attr.aria-checked]=\"getAriaChecked()\"\r\n (click)=\"onInputClick($event)\"\r\n (change)=\"onChangeEvent($event)\"/>\r\n <div class=\"mc-toggle-bar-container\">\r\n <div class=\"mc-toggle__overlay\"></div>\r\n <div class=\"mc-toggle-bar\">\r\n <div class=\"mc-toggle__circle\" [@switch]=\"checked\"></div>\r\n </div>\r\n </div>\r\n <div class=\"mc-toggle__content\"\r\n [class.left]=\"labelPosition === 'left'\"\r\n [class.right]=\"labelPosition === 'right'\">\r\n <span class=\"mc-toggle-label\" (cdkObserveContent)=\"onLabelTextChange()\">\r\n <ng-content></ng-content>\r\n </span>\r\n </div>\r\n </div>\r\n</label>\r\n", styles: [".mc-toggle{display:inline-block}.mc-toggle .mc-toggle-layout{cursor:inherit;align-items:baseline;vertical-align:middle;display:inline-flex;white-space:nowrap}.mc-toggle .mc-toggle-bar{position:relative;border-width:1px;border-style:solid}.mc-toggle .mc-toggle-bar.mc-toggle-label-position-left{order:1}.mc-toggle .mc-toggle-bar-container{position:relative}.mc-toggle__container{display:flex;align-items:center;position:relative}.mc-toggle__container.left{flex-direction:row-reverse}.mc-toggle__content.left{margin-right:var(--mc-toggle-size-label-margin, 8px)}.mc-toggle__content.right{margin-left:var(--mc-toggle-size-label-margin, 8px)}.mc-toggle__circle{position:absolute;border-width:1px;border-style:solid;border-radius:100%;margin-top:-1px;margin-left:-1px;transform:translate(-1px)}.mc-toggle__overlay{position:absolute;top:0;left:0;z-index:1}.mc-toggle:not(.mc-toggle_small) .mc-toggle-bar{height:var(--mc-toggle-size-height, 16px);width:var(--mc-toggle-size-width, 28px);border-radius:var(--mc-toggle-size-border-radius, 9px)}.mc-toggle:not(.mc-toggle_small) .mc-toggle__overlay{border-radius:var(--mc-toggle-size-border-radius, 9px);height:var(--mc-toggle-size-height, 16px);width:var(--mc-toggle-size-width, 28px)}.mc-toggle:not(.mc-toggle_small) .mc-toggle__circle{height:var(--mc-toggle-size-height, 16px);width:var(--mc-toggle-size-height, 16px)}.mc-toggle.mc-toggle_small .mc-toggle-bar{height:var(--mc-toggle-small-size-height, 14px);width:var(--mc-toggle-small-size-width, 24px);border-radius:var(--mc-toggle-small-size-border-radius, 8px)}.mc-toggle.mc-toggle_small .mc-toggle__overlay{border-radius:var(--mc-toggle-small-size-border-radius, 8px);height:var(--mc-toggle-small-size-height, 14px);width:var(--mc-toggle-small-size-width, 24px)}.mc-toggle.mc-toggle_small .mc-toggle__circle{height:var(--mc-toggle-small-size-height, 14px);width:var(--mc-toggle-small-size-height, 14px)}.mc-toggle:not(.mc-disabled){cursor:pointer}\n"], animations: [
113
113
  trigger('switch', [
@@ -116,7 +116,7 @@ class McToggleComponent extends McToggleMixinBase {
116
116
  transition('true <=> false', animate('150ms'))
117
117
  ])
118
118
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McToggleComponent, decorators: [{
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McToggleComponent, decorators: [{
120
120
  type: Component,
121
121
  args: [{ selector: 'mc-toggle', exportAs: 'mcToggle', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, inputs: ['color', 'tabIndex'], host: {
122
122
  class: 'mc-toggle',
@@ -160,10 +160,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImpor
160
160
 
161
161
  class McToggleModule {
162
162
  }
163
- /** @nocollapse */ /** @nocollapse */ McToggleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McToggleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
164
- /** @nocollapse */ /** @nocollapse */ McToggleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McToggleModule, declarations: [McToggleComponent], imports: [CommonModule, A11yModule, McCommonModule], exports: [McToggleComponent] });
165
- /** @nocollapse */ /** @nocollapse */ McToggleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McToggleModule, imports: [[CommonModule, A11yModule, McCommonModule]] });
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.7", ngImport: i0, type: McToggleModule, decorators: [{
163
+ /** @nocollapse */ /** @nocollapse */ McToggleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McToggleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
164
+ /** @nocollapse */ /** @nocollapse */ McToggleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McToggleModule, declarations: [McToggleComponent], imports: [CommonModule, A11yModule, McCommonModule], exports: [McToggleComponent] });
165
+ /** @nocollapse */ /** @nocollapse */ McToggleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McToggleModule, imports: [[CommonModule, A11yModule, McCommonModule]] });
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: McToggleModule, decorators: [{
167
167
  type: NgModule,
168
168
  args: [{
169
169
  imports: [CommonModule, A11yModule, McCommonModule],