@ptsecurity/mosaic 15.6.0 → 16.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (750) hide show
  1. package/_theming.scss +19 -0
  2. package/_visual.scss +2 -0
  3. package/autocomplete/autocomplete-trigger.directive.d.ts +6 -16
  4. package/autocomplete/autocomplete.component.d.ts +1 -1
  5. package/button/button.component.d.ts +1 -1
  6. package/button-toggle/button-toggle.component.d.ts +3 -3
  7. package/card/card.component.d.ts +1 -1
  8. package/checkbox/_checkbox-theme.scss +4 -0
  9. package/checkbox/checkbox-config.d.ts +1 -1
  10. package/checkbox/checkbox.d.ts +1 -1
  11. package/code-block/actionbar.component.d.ts +1 -1
  12. package/code-block/code-block.component.d.ts +1 -1
  13. package/core/common-behaviors/color.d.ts +1 -1
  14. package/core/common-behaviors/constructor.d.ts +2 -2
  15. package/core/common-behaviors/disabled.d.ts +1 -1
  16. package/core/common-behaviors/error-state.d.ts +1 -1
  17. package/core/common-behaviors/tabindex.d.ts +1 -1
  18. package/core/datetime/date-formats.d.ts +1 -1
  19. package/core/formatters/index.d.ts +1 -1
  20. package/core/formatters/number/formatter.d.ts +55 -0
  21. package/core/label/label-options.d.ts +1 -1
  22. package/core/locales/en-US.d.ts +13 -2
  23. package/core/locales/es-LA.d.ts +21 -0
  24. package/core/locales/fa-IR.d.ts +22 -0
  25. package/core/locales/locale-service.d.ts +111 -5
  26. package/core/locales/pt-BR.d.ts +21 -0
  27. package/core/locales/ru-RU.d.ts +13 -2
  28. package/core/locales/zh-CN.d.ts +20 -0
  29. package/core/option/action.d.ts +1 -1
  30. package/core/option/optgroup.d.ts +1 -1
  31. package/core/option/option.d.ts +37 -8
  32. package/core/overlay/overlay-position-map.d.ts +7 -1
  33. package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +2 -2
  34. package/core/styles/_variables.scss +1 -0
  35. package/core/styles/theming/_theming.scss +1 -0
  36. package/datepicker/calendar-body.component.d.ts +2 -2
  37. package/datepicker/calendar-header.component.d.ts +9 -3
  38. package/datepicker/calendar.component.d.ts +4 -5
  39. package/datepicker/datepicker-input.directive.d.ts +1 -1
  40. package/datepicker/datepicker-toggle.component.d.ts +1 -1
  41. package/datepicker/datepicker.component.d.ts +1 -1
  42. package/datepicker/month-view.component.d.ts +4 -5
  43. package/divider/divider.component.d.ts +1 -1
  44. package/dl/dl.component.d.ts +1 -1
  45. package/dropdown/dropdown-item.component.d.ts +1 -1
  46. package/dropdown/dropdown-trigger.directive.d.ts +1 -1
  47. package/dropdown/dropdown.component.d.ts +1 -1
  48. package/dropdown/dropdown.types.d.ts +3 -3
  49. package/ellipsis-center/ellipsis-center.directive.d.ts +1 -1
  50. package/{esm2020 → esm2022}/autocomplete/autocomplete-origin.directive.mjs +4 -4
  51. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +555 -0
  52. package/{esm2020 → esm2022}/autocomplete/autocomplete.component.mjs +26 -26
  53. package/{esm2020 → esm2022}/autocomplete/autocomplete.module.mjs +10 -10
  54. package/esm2022/button/button.component.mjs +148 -0
  55. package/{esm2020 → esm2022}/button/button.module.mjs +13 -13
  56. package/esm2022/button-toggle/button-toggle.component.mjs +381 -0
  57. package/{esm2020 → esm2022}/button-toggle/button-toggle.module.mjs +5 -5
  58. package/esm2022/card/card.component.mjs +80 -0
  59. package/{esm2020 → esm2022}/card/card.module.mjs +9 -9
  60. package/{esm2020 → esm2022}/checkbox/checkbox-module.mjs +5 -5
  61. package/{esm2020 → esm2022}/checkbox/checkbox-required-validator.mjs +4 -4
  62. package/esm2022/checkbox/checkbox.mjs +300 -0
  63. package/{esm2020 → esm2022}/code-block/actionbar.component.mjs +4 -4
  64. package/esm2022/code-block/code-block.component.mjs +157 -0
  65. package/esm2022/code-block/code-block.module.mjs +60 -0
  66. package/esm2022/core/common-behaviors/color.mjs +33 -0
  67. package/{esm2020 → esm2022}/core/common-behaviors/common-module.mjs +5 -5
  68. package/{esm2020 → esm2022}/core/common-behaviors/disabled.mjs +6 -6
  69. package/{esm2020 → esm2022}/core/common-behaviors/tabindex.mjs +6 -6
  70. package/{esm2020 → esm2022}/core/error/error-options.mjs +7 -7
  71. package/{esm2020 → esm2022}/core/formatters/date/formatter.mjs +4 -4
  72. package/{esm2020 → esm2022}/core/formatters/date/formatter.pipe.mjs +40 -40
  73. package/esm2022/core/formatters/index.mjs +86 -0
  74. package/esm2022/core/formatters/number/formatter.mjs +350 -0
  75. package/{esm2020 → esm2022}/core/forms/forms-module.mjs +7 -7
  76. package/{esm2020 → esm2022}/core/forms/forms.directive.mjs +7 -7
  77. package/{esm2020 → esm2022}/core/highlight/highlight.pipe.mjs +4 -4
  78. package/{esm2020 → esm2022}/core/highlight/index.mjs +5 -5
  79. package/{esm2020 → esm2022}/core/line/line.mjs +8 -8
  80. package/esm2022/core/locales/en-US.mjs +21 -0
  81. package/esm2022/core/locales/es-LA.mjs +27 -0
  82. package/esm2022/core/locales/fa-IR.mjs +28 -0
  83. package/{esm2020 → esm2022}/core/locales/locale-service.mjs +7 -7
  84. package/{esm2020 → esm2022}/core/locales/locale-service.module.mjs +7 -7
  85. package/esm2022/core/locales/pt-BR.mjs +27 -0
  86. package/esm2022/core/locales/ru-RU.mjs +21 -0
  87. package/esm2022/core/locales/zh-CN.mjs +26 -0
  88. package/{esm2020 → esm2022}/core/option/action.mjs +9 -9
  89. package/{esm2020 → esm2022}/core/option/optgroup.mjs +4 -4
  90. package/{esm2020 → esm2022}/core/option/option-module.mjs +5 -5
  91. package/esm2022/core/option/option.mjs +298 -0
  92. package/esm2022/core/overlay/overlay-position-map.mjs +251 -0
  93. package/{esm2020 → esm2022}/core/pop-up/pop-up-trigger.mjs +4 -4
  94. package/{esm2020 → esm2022}/core/pop-up/pop-up.mjs +4 -4
  95. package/{esm2020 → esm2022}/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +4 -4
  96. package/{esm2020 → esm2022}/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +5 -5
  97. package/esm2022/core/services/measure-scrollbar.service.mjs +48 -0
  98. package/{esm2020 → esm2022}/core/utils/data-size/data-size.pipe.mjs +8 -8
  99. package/{esm2020 → esm2022}/core/version.mjs +2 -2
  100. package/{esm2020 → esm2022}/datepicker/calendar-body.component.mjs +4 -4
  101. package/esm2022/datepicker/calendar-header.component.mjs +135 -0
  102. package/esm2022/datepicker/calendar.component.mjs +166 -0
  103. package/esm2022/datepicker/datepicker-input.directive.mjs +955 -0
  104. package/{esm2020 → esm2022}/datepicker/datepicker-intl.mjs +4 -4
  105. package/{esm2020 → esm2022}/datepicker/datepicker-module.mjs +38 -38
  106. package/esm2022/datepicker/datepicker-toggle.component.mjs +86 -0
  107. package/esm2022/datepicker/datepicker.component.mjs +393 -0
  108. package/esm2022/datepicker/month-view.component.mjs +149 -0
  109. package/{esm2020 → esm2022}/divider/divider.component.mjs +4 -4
  110. package/{esm2020 → esm2022}/divider/divider.module.mjs +5 -5
  111. package/{esm2020 → esm2022}/dl/dl.component.mjs +10 -10
  112. package/{esm2020 → esm2022}/dl/dl.module.mjs +13 -13
  113. package/{esm2020 → esm2022}/dropdown/dropdown-content.directive.mjs +4 -4
  114. package/{esm2020 → esm2022}/dropdown/dropdown-item.component.mjs +6 -6
  115. package/esm2022/dropdown/dropdown-trigger.directive.mjs +489 -0
  116. package/esm2022/dropdown/dropdown.component.mjs +292 -0
  117. package/{esm2020 → esm2022}/dropdown/dropdown.module.mjs +15 -15
  118. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +106 -0
  119. package/{esm2020 → esm2022}/file-upload/file-drop.mjs +4 -4
  120. package/{esm2020 → esm2022}/file-upload/file-upload.module.mjs +25 -25
  121. package/esm2022/file-upload/multiple-file-upload.component.mjs +165 -0
  122. package/esm2022/file-upload/single-file-upload.component.mjs +134 -0
  123. package/{esm2020 → esm2022}/form-field/cleaner.mjs +4 -4
  124. package/esm2022/form-field/form-field.mjs +267 -0
  125. package/{esm2020 → esm2022}/form-field/form-field.module.mjs +23 -23
  126. package/{esm2020 → esm2022}/form-field/hint.mjs +4 -4
  127. package/{esm2020 → esm2022}/form-field/password-hint.mjs +9 -9
  128. package/{esm2020 → esm2022}/form-field/prefix.mjs +4 -4
  129. package/{esm2020 → esm2022}/form-field/stepper.mjs +6 -6
  130. package/{esm2020 → esm2022}/form-field/suffix.mjs +4 -4
  131. package/esm2022/form-field/validate.directive.mjs +158 -0
  132. package/{esm2020 → esm2022}/icon/icon.component.mjs +7 -7
  133. package/{esm2020 → esm2022}/icon/icon.module.mjs +11 -11
  134. package/{esm2020 → esm2022}/input/input-number-validators.mjs +7 -7
  135. package/esm2022/input/input-number.mjs +168 -0
  136. package/esm2022/input/input-password.mjs +343 -0
  137. package/esm2022/input/input.mjs +297 -0
  138. package/{esm2020 → esm2022}/input/input.module.mjs +23 -23
  139. package/esm2022/link/link.component.mjs +122 -0
  140. package/{esm2020 → esm2022}/link/link.module.mjs +7 -7
  141. package/esm2022/list/list-selection.component.mjs +705 -0
  142. package/{esm2020 → esm2022}/list/list.component.mjs +7 -7
  143. package/{esm2020 → esm2022}/list/list.module.mjs +20 -20
  144. package/esm2022/loader-overlay/loader-overlay.component.mjs +103 -0
  145. package/{esm2020 → esm2022}/loader-overlay/loader-overlay.module.mjs +17 -17
  146. package/{esm2020 → esm2022}/markdown/markdown.component.mjs +13 -13
  147. package/{esm2020 → esm2022}/markdown/markdown.module.mjs +5 -5
  148. package/{esm2020 → esm2022}/markdown/markdown.service.mjs +4 -4
  149. package/{esm2020 → esm2022}/modal/css-unit.pipe.mjs +4 -4
  150. package/esm2022/modal/modal-control.service.mjs +85 -0
  151. package/esm2022/modal/modal.component.mjs +520 -0
  152. package/{esm2020 → esm2022}/modal/modal.directive.mjs +13 -13
  153. package/esm2022/modal/modal.module.mjs +75 -0
  154. package/{esm2020 → esm2022}/modal/modal.service.mjs +8 -8
  155. package/esm2022/navbar/navbar-item.component.mjs +606 -0
  156. package/esm2022/navbar/navbar.component.mjs +248 -0
  157. package/{esm2020 → esm2022}/navbar/navbar.module.mjs +37 -37
  158. package/{esm2020 → esm2022}/navbar/vertical-navbar.component.mjs +20 -17
  159. package/esm2022/popover/popover-confirm.component.mjs +108 -0
  160. package/esm2022/popover/popover.component.mjs +266 -0
  161. package/{esm2020 → esm2022}/popover/popover.module.mjs +8 -8
  162. package/{esm2020 → esm2022}/progress-bar/progress-bar.component.mjs +4 -4
  163. package/{esm2020 → esm2022}/progress-bar/progress-bar.module.mjs +7 -7
  164. package/{esm2020 → esm2022}/progress-spinner/progress-spinner.component.mjs +12 -12
  165. package/{esm2020 → esm2022}/progress-spinner/progress-spinner.module.mjs +7 -7
  166. package/esm2022/radio/radio.component.mjs +457 -0
  167. package/{esm2020 → esm2022}/radio/radio.module.mjs +5 -5
  168. package/esm2022/select/select-option.directive.mjs +65 -0
  169. package/esm2022/select/select.component.mjs +1160 -0
  170. package/{esm2020 → esm2022}/select/select.module.mjs +32 -32
  171. package/esm2022/sidebar/sidebar.component.mjs +146 -0
  172. package/{esm2020 → esm2022}/sidebar/sidebar.module.mjs +9 -9
  173. package/esm2022/sidepanel/sidepanel-container.component.mjs +110 -0
  174. package/{esm2020 → esm2022}/sidepanel/sidepanel-directives.mjs +18 -18
  175. package/{esm2020 → esm2022}/sidepanel/sidepanel.module.mjs +32 -32
  176. package/{esm2020 → esm2022}/sidepanel/sidepanel.service.mjs +10 -10
  177. package/esm2022/splitter/splitter.component.mjs +482 -0
  178. package/{esm2020 → esm2022}/splitter/splitter.module.mjs +12 -12
  179. package/{esm2020 → esm2022}/table/table.component.mjs +4 -4
  180. package/{esm2020 → esm2022}/table/table.module.mjs +9 -9
  181. package/esm2022/tabs/paginated-tab-header.mjs +488 -0
  182. package/esm2022/tabs/tab-body.component.mjs +179 -0
  183. package/{esm2020 → esm2022}/tabs/tab-content.directive.mjs +4 -4
  184. package/esm2022/tabs/tab-group.component.mjs +349 -0
  185. package/{esm2020 → esm2022}/tabs/tab-header.component.mjs +4 -4
  186. package/{esm2020 → esm2022}/tabs/tab-label-wrapper.directive.mjs +4 -4
  187. package/{esm2020 → esm2022}/tabs/tab-label.directive.mjs +4 -4
  188. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +111 -0
  189. package/{esm2020 → esm2022}/tabs/tab.component.mjs +43 -34
  190. package/{esm2020 → esm2022}/tabs/tabs.module.mjs +42 -42
  191. package/esm2022/tags/tag-input.mjs +250 -0
  192. package/esm2022/tags/tag-list.component.mjs +718 -0
  193. package/esm2022/tags/tag.component.mjs +381 -0
  194. package/esm2022/tags/tag.module.mjs +56 -0
  195. package/esm2022/textarea/textarea.component.mjs +254 -0
  196. package/{esm2020 → esm2022}/textarea/textarea.module.mjs +5 -5
  197. package/esm2022/timepicker/timepicker.directive.mjs +647 -0
  198. package/{esm2020 → esm2022}/timepicker/timepicker.module.mjs +11 -11
  199. package/{esm2020 → esm2022}/timezone/cities-by-filter.pipe.mjs +4 -4
  200. package/esm2022/timezone/timezone-option.component.mjs +48 -0
  201. package/{esm2020 → esm2022}/timezone/timezone-option.directive.mjs +4 -4
  202. package/{esm2020 → esm2022}/timezone/timezone-select.component.mjs +11 -11
  203. package/{esm2020 → esm2022}/timezone/timezone.module.mjs +29 -29
  204. package/{esm2020 → esm2022}/timezone/utc-offset.pipe.mjs +4 -4
  205. package/esm2022/title/title.directive.mjs +107 -0
  206. package/{esm2020 → esm2022}/title/title.module.mjs +5 -5
  207. package/{esm2020 → esm2022}/toast/toast-container.component.mjs +4 -4
  208. package/esm2022/toast/toast.component.mjs +92 -0
  209. package/esm2022/toast/toast.module.mjs +48 -0
  210. package/esm2022/toast/toast.service.mjs +188 -0
  211. package/esm2022/toggle/toggle.component.mjs +156 -0
  212. package/{esm2020 → esm2022}/toggle/toggle.module.mjs +5 -5
  213. package/esm2022/tooltip/tooltip.component.mjs +299 -0
  214. package/{esm2020 → esm2022}/tooltip/tooltip.module.mjs +14 -14
  215. package/esm2022/tree/data-source/flat-data-source.mjs +162 -0
  216. package/{esm2020 → esm2022}/tree/node.mjs +4 -4
  217. package/{esm2020 → esm2022}/tree/outlet.mjs +4 -4
  218. package/esm2022/tree/padding.directive.mjs +113 -0
  219. package/esm2022/tree/toggle.mjs +81 -0
  220. package/esm2022/tree/tree-base.mjs +243 -0
  221. package/esm2022/tree/tree-option.component.mjs +303 -0
  222. package/esm2022/tree/tree-selection.component.mjs +558 -0
  223. package/{esm2020 → esm2022}/tree/tree.mjs +4 -4
  224. package/{esm2020 → esm2022}/tree/tree.module.mjs +21 -21
  225. package/esm2022/tree-select/tree-select.component.mjs +936 -0
  226. package/{esm2020 → esm2022}/tree-select/tree-select.module.mjs +17 -17
  227. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-autocomplete.mjs +80 -77
  228. package/fesm2022/ptsecurity-mosaic-autocomplete.mjs.map +1 -0
  229. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-button-toggle.mjs +47 -47
  230. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-button-toggle.mjs.map +1 -1
  231. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-button.mjs +25 -25
  232. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-button.mjs.map +1 -1
  233. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-card.mjs +17 -17
  234. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-card.mjs.map +1 -1
  235. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-checkbox.mjs +39 -39
  236. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-checkbox.mjs.map +1 -1
  237. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-code-block.mjs +34 -34
  238. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-code-block.mjs.map +1 -1
  239. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-core.mjs +598 -222
  240. package/fesm2022/ptsecurity-mosaic-core.mjs.map +1 -0
  241. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-datepicker.mjs +335 -351
  242. package/fesm2022/ptsecurity-mosaic-datepicker.mjs.map +1 -0
  243. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-divider.mjs +7 -7
  244. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-divider.mjs.map +1 -1
  245. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-dl.mjs +21 -21
  246. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-dl.mjs.map +1 -1
  247. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-dropdown.mjs +89 -89
  248. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-dropdown.mjs.map +1 -1
  249. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-ellipsis-center.mjs +11 -11
  250. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-ellipsis-center.mjs.map +1 -1
  251. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-file-upload.mjs +55 -47
  252. package/fesm2022/ptsecurity-mosaic-file-upload.mjs.map +1 -0
  253. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-form-field.mjs +80 -80
  254. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-form-field.mjs.map +1 -1
  255. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-icon.mjs +16 -16
  256. package/fesm2022/ptsecurity-mosaic-icon.mjs.map +1 -0
  257. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-input.mjs +128 -128
  258. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-input.mjs.map +1 -1
  259. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-link.mjs +22 -22
  260. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-link.mjs.map +1 -1
  261. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-list.mjs +86 -86
  262. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-list.mjs.map +1 -1
  263. package/fesm2022/ptsecurity-mosaic-loader-overlay.mjs +155 -0
  264. package/{fesm2015 → fesm2022}/ptsecurity-mosaic-loader-overlay.mjs.map +1 -1
  265. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-markdown.mjs +19 -19
  266. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-markdown.mjs.map +1 -1
  267. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-modal.mjs +157 -144
  268. package/fesm2022/ptsecurity-mosaic-modal.mjs.map +1 -0
  269. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-navbar.mjs +184 -176
  270. package/fesm2022/ptsecurity-mosaic-navbar.mjs.map +1 -0
  271. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-popover.mjs +37 -37
  272. package/{fesm2015 → fesm2022}/ptsecurity-mosaic-popover.mjs.map +1 -1
  273. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-progress-bar.mjs +9 -9
  274. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-progress-bar.mjs.map +1 -1
  275. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-progress-spinner.mjs +18 -18
  276. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-progress-spinner.mjs.map +1 -1
  277. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-radio.mjs +78 -78
  278. package/{fesm2015 → fesm2022}/ptsecurity-mosaic-radio.mjs.map +1 -1
  279. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-select.mjs +188 -174
  280. package/fesm2022/ptsecurity-mosaic-select.mjs.map +1 -0
  281. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-sidebar.mjs +29 -29
  282. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-sidebar.mjs.map +1 -1
  283. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-sidepanel.mjs +63 -63
  284. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
  285. package/{fesm2015 → fesm2022}/ptsecurity-mosaic-splitter.mjs +55 -55
  286. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-splitter.mjs.map +1 -1
  287. package/fesm2022/ptsecurity-mosaic-table.mjs +45 -0
  288. package/fesm2022/ptsecurity-mosaic-table.mjs.map +1 -0
  289. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-tabs.mjs +188 -179
  290. package/fesm2022/ptsecurity-mosaic-tabs.mjs.map +1 -0
  291. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-tags.mjs +131 -131
  292. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-tags.mjs.map +1 -1
  293. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-textarea.mjs +41 -41
  294. package/{fesm2015 → fesm2022}/ptsecurity-mosaic-textarea.mjs.map +1 -1
  295. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-timepicker.mjs +95 -95
  296. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-timepicker.mjs.map +1 -1
  297. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-timezone.mjs +53 -53
  298. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-timezone.mjs.map +1 -1
  299. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-title.mjs +18 -18
  300. package/fesm2022/ptsecurity-mosaic-title.mjs.map +1 -0
  301. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-toast.mjs +47 -41
  302. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-toast.mjs.map +1 -1
  303. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-toggle.mjs +35 -35
  304. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-toggle.mjs.map +1 -1
  305. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-tooltip.mjs +47 -47
  306. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-tooltip.mjs.map +1 -1
  307. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-tree-select.mjs +122 -122
  308. package/fesm2022/ptsecurity-mosaic-tree-select.mjs.map +1 -0
  309. package/{fesm2020 → fesm2022}/ptsecurity-mosaic-tree.mjs +202 -198
  310. package/fesm2022/ptsecurity-mosaic-tree.mjs.map +1 -0
  311. package/file-upload/file-upload.d.ts +1 -1
  312. package/file-upload/multiple-file-upload.component.d.ts +5 -4
  313. package/file-upload/single-file-upload.component.d.ts +5 -4
  314. package/form-field/_form-field-theme.scss +4 -0
  315. package/form-field/form-field.d.ts +1 -1
  316. package/form-field/hint.d.ts +1 -1
  317. package/form-field/password-hint.d.ts +1 -1
  318. package/icon/icon.component.d.ts +1 -1
  319. package/input/input-number-validators.d.ts +2 -2
  320. package/input/input-number.d.ts +1 -1
  321. package/input/input-password.d.ts +2 -2
  322. package/input/input.d.ts +1 -1
  323. package/link/link.component.d.ts +1 -1
  324. package/list/list-selection.component.d.ts +2 -2
  325. package/loader-overlay/loader-overlay.component.d.ts +1 -1
  326. package/loader-overlay/loader-overlay.scss +3 -0
  327. package/markdown/markdown.component.d.ts +1 -1
  328. package/modal/modal.component.d.ts +5 -2
  329. package/modal/modal.module.d.ts +2 -1
  330. package/modal/modal.scss +14 -2
  331. package/modal/modal.type.d.ts +3 -3
  332. package/navbar/navbar-item.component.d.ts +3 -3
  333. package/navbar/navbar.component.d.ts +7 -4
  334. package/navbar/vertical-navbar.component.d.ts +5 -3
  335. package/package.json +149 -239
  336. package/popover/popover-confirm.component.d.ts +1 -1
  337. package/popover/popover.component.d.ts +1 -1
  338. package/prebuilt-themes/dark-theme.css +1 -1
  339. package/prebuilt-themes/default-theme.css +1 -1
  340. package/prebuilt-visual/default-visual.css +1 -1
  341. package/progress-bar/progress-bar.component.d.ts +2 -2
  342. package/progress-spinner/progress-spinner.component.d.ts +3 -3
  343. package/radio/_radio-theme.scss +4 -0
  344. package/radio/radio.component.d.ts +2 -2
  345. package/select/select.component.d.ts +12 -9
  346. package/select/select.scss +1 -1
  347. package/sidebar/sidebar.component.d.ts +3 -3
  348. package/sidepanel/sidepanel-directives.d.ts +2 -2
  349. package/splitter/splitter.component.d.ts +3 -3
  350. package/tabs/paginated-tab-header.d.ts +3 -3
  351. package/tabs/tab-body.component.d.ts +3 -3
  352. package/tabs/tab-group.component.d.ts +2 -2
  353. package/tabs/tab-header.component.d.ts +2 -2
  354. package/tabs/tab-label-wrapper.directive.d.ts +1 -1
  355. package/tabs/tab-nav-bar/tab-nav-bar.d.ts +1 -1
  356. package/tabs/tab.component.d.ts +1 -1
  357. package/tags/tag-input.d.ts +1 -1
  358. package/tags/tag-list.component.d.ts +1 -1
  359. package/tags/tag.component.d.ts +1 -1
  360. package/textarea/textarea.component.d.ts +1 -1
  361. package/timepicker/timepicker.directive.d.ts +1 -1
  362. package/timezone/timezone-option.component.d.ts +1 -1
  363. package/toast/toast.type.d.ts +1 -1
  364. package/toggle/toggle.component.d.ts +2 -2
  365. package/tooltip/tooltip.component.d.ts +3 -3
  366. package/tree/node.d.ts +1 -1
  367. package/tree/padding.directive.d.ts +1 -1
  368. package/tree/toggle.d.ts +2 -2
  369. package/tree/tree-base.d.ts +1 -1
  370. package/tree/tree-option.component.d.ts +1 -1
  371. package/tree/tree-option.scss +4 -2
  372. package/tree/tree-selection.component.d.ts +1 -1
  373. package/tree-select/tree-select.component.d.ts +1 -1
  374. package/esm2020/autocomplete/autocomplete-trigger.directive.mjs +0 -552
  375. package/esm2020/button/button.component.mjs +0 -148
  376. package/esm2020/button-toggle/button-toggle.component.mjs +0 -381
  377. package/esm2020/card/card.component.mjs +0 -80
  378. package/esm2020/checkbox/checkbox.mjs +0 -300
  379. package/esm2020/code-block/code-block.component.mjs +0 -157
  380. package/esm2020/code-block/code-block.module.mjs +0 -60
  381. package/esm2020/core/common-behaviors/color.mjs +0 -33
  382. package/esm2020/core/formatters/index.mjs +0 -78
  383. package/esm2020/core/formatters/number/formatter.mjs +0 -129
  384. package/esm2020/core/locales/en-US.mjs +0 -10
  385. package/esm2020/core/locales/es-LA.mjs +0 -6
  386. package/esm2020/core/locales/fa-IR.mjs +0 -6
  387. package/esm2020/core/locales/pt-BR.mjs +0 -6
  388. package/esm2020/core/locales/ru-RU.mjs +0 -10
  389. package/esm2020/core/locales/zh-CN.mjs +0 -6
  390. package/esm2020/core/option/option.mjs +0 -262
  391. package/esm2020/core/overlay/overlay-position-map.mjs +0 -245
  392. package/esm2020/core/services/measure-scrollbar.service.mjs +0 -48
  393. package/esm2020/datepicker/calendar-header.component.mjs +0 -134
  394. package/esm2020/datepicker/calendar.component.mjs +0 -175
  395. package/esm2020/datepicker/datepicker-input.directive.mjs +0 -954
  396. package/esm2020/datepicker/datepicker-toggle.component.mjs +0 -86
  397. package/esm2020/datepicker/datepicker.component.mjs +0 -393
  398. package/esm2020/datepicker/month-view.component.mjs +0 -158
  399. package/esm2020/dropdown/dropdown-trigger.directive.mjs +0 -489
  400. package/esm2020/dropdown/dropdown.component.mjs +0 -292
  401. package/esm2020/ellipsis-center/ellipsis-center.directive.mjs +0 -106
  402. package/esm2020/file-upload/multiple-file-upload.component.mjs +0 -161
  403. package/esm2020/file-upload/single-file-upload.component.mjs +0 -130
  404. package/esm2020/form-field/form-field.mjs +0 -267
  405. package/esm2020/form-field/validate.directive.mjs +0 -158
  406. package/esm2020/input/input-number.mjs +0 -168
  407. package/esm2020/input/input-password.mjs +0 -343
  408. package/esm2020/input/input.mjs +0 -297
  409. package/esm2020/link/link.component.mjs +0 -122
  410. package/esm2020/list/list-selection.component.mjs +0 -705
  411. package/esm2020/loader-overlay/loader-overlay.component.mjs +0 -103
  412. package/esm2020/modal/modal-control.service.mjs +0 -85
  413. package/esm2020/modal/modal.component.mjs +0 -510
  414. package/esm2020/modal/modal.module.mjs +0 -71
  415. package/esm2020/navbar/navbar-item.component.mjs +0 -606
  416. package/esm2020/navbar/navbar.component.mjs +0 -239
  417. package/esm2020/popover/popover-confirm.component.mjs +0 -108
  418. package/esm2020/popover/popover.component.mjs +0 -266
  419. package/esm2020/radio/radio.component.mjs +0 -457
  420. package/esm2020/select/select-option.directive.mjs +0 -65
  421. package/esm2020/select/select.component.mjs +0 -1146
  422. package/esm2020/sidebar/sidebar.component.mjs +0 -146
  423. package/esm2020/sidepanel/sidepanel-container.component.mjs +0 -110
  424. package/esm2020/splitter/splitter.component.mjs +0 -482
  425. package/esm2020/tabs/paginated-tab-header.mjs +0 -488
  426. package/esm2020/tabs/tab-body.component.mjs +0 -179
  427. package/esm2020/tabs/tab-group.component.mjs +0 -349
  428. package/esm2020/tabs/tab-nav-bar/tab-nav-bar.mjs +0 -111
  429. package/esm2020/tags/tag-input.mjs +0 -250
  430. package/esm2020/tags/tag-list.component.mjs +0 -718
  431. package/esm2020/tags/tag.component.mjs +0 -381
  432. package/esm2020/tags/tag.module.mjs +0 -56
  433. package/esm2020/textarea/textarea.component.mjs +0 -254
  434. package/esm2020/timepicker/timepicker.directive.mjs +0 -647
  435. package/esm2020/timezone/timezone-option.component.mjs +0 -48
  436. package/esm2020/title/title.directive.mjs +0 -107
  437. package/esm2020/toast/toast.component.mjs +0 -92
  438. package/esm2020/toast/toast.module.mjs +0 -42
  439. package/esm2020/toast/toast.service.mjs +0 -188
  440. package/esm2020/toggle/toggle.component.mjs +0 -156
  441. package/esm2020/tooltip/tooltip.component.mjs +0 -299
  442. package/esm2020/tree/data-source/flat-data-source.mjs +0 -162
  443. package/esm2020/tree/padding.directive.mjs +0 -113
  444. package/esm2020/tree/toggle.mjs +0 -81
  445. package/esm2020/tree/tree-base.mjs +0 -243
  446. package/esm2020/tree/tree-option.component.mjs +0 -300
  447. package/esm2020/tree/tree-selection.component.mjs +0 -557
  448. package/esm2020/tree-select/tree-select.component.mjs +0 -936
  449. package/fesm2015/ptsecurity-mosaic-autocomplete.mjs +0 -753
  450. package/fesm2015/ptsecurity-mosaic-autocomplete.mjs.map +0 -1
  451. package/fesm2015/ptsecurity-mosaic-button-toggle.mjs +0 -405
  452. package/fesm2015/ptsecurity-mosaic-button-toggle.mjs.map +0 -1
  453. package/fesm2015/ptsecurity-mosaic-button.mjs +0 -193
  454. package/fesm2015/ptsecurity-mosaic-button.mjs.map +0 -1
  455. package/fesm2015/ptsecurity-mosaic-card.mjs +0 -111
  456. package/fesm2015/ptsecurity-mosaic-card.mjs.map +0 -1
  457. package/fesm2015/ptsecurity-mosaic-checkbox.mjs +0 -351
  458. package/fesm2015/ptsecurity-mosaic-checkbox.mjs.map +0 -1
  459. package/fesm2015/ptsecurity-mosaic-code-block.mjs +0 -280
  460. package/fesm2015/ptsecurity-mosaic-code-block.mjs.map +0 -1
  461. package/fesm2015/ptsecurity-mosaic-core.mjs +0 -2314
  462. package/fesm2015/ptsecurity-mosaic-core.mjs.map +0 -1
  463. package/fesm2015/ptsecurity-mosaic-datepicker.mjs +0 -2112
  464. package/fesm2015/ptsecurity-mosaic-datepicker.mjs.map +0 -1
  465. package/fesm2015/ptsecurity-mosaic-divider.mjs +0 -61
  466. package/fesm2015/ptsecurity-mosaic-divider.mjs.map +0 -1
  467. package/fesm2015/ptsecurity-mosaic-dl.mjs +0 -126
  468. package/fesm2015/ptsecurity-mosaic-dl.mjs.map +0 -1
  469. package/fesm2015/ptsecurity-mosaic-dropdown.mjs +0 -1115
  470. package/fesm2015/ptsecurity-mosaic-dropdown.mjs.map +0 -1
  471. package/fesm2015/ptsecurity-mosaic-ellipsis-center.mjs +0 -113
  472. package/fesm2015/ptsecurity-mosaic-ellipsis-center.mjs.map +0 -1
  473. package/fesm2015/ptsecurity-mosaic-file-upload.mjs +0 -392
  474. package/fesm2015/ptsecurity-mosaic-file-upload.mjs.map +0 -1
  475. package/fesm2015/ptsecurity-mosaic-form-field.mjs +0 -772
  476. package/fesm2015/ptsecurity-mosaic-form-field.mjs.map +0 -1
  477. package/fesm2015/ptsecurity-mosaic-icon.mjs +0 -86
  478. package/fesm2015/ptsecurity-mosaic-icon.mjs.map +0 -1
  479. package/fesm2015/ptsecurity-mosaic-input.mjs +0 -951
  480. package/fesm2015/ptsecurity-mosaic-input.mjs.map +0 -1
  481. package/fesm2015/ptsecurity-mosaic-link.mjs +0 -150
  482. package/fesm2015/ptsecurity-mosaic-link.mjs.map +0 -1
  483. package/fesm2015/ptsecurity-mosaic-list.mjs +0 -807
  484. package/fesm2015/ptsecurity-mosaic-list.mjs.map +0 -1
  485. package/fesm2015/ptsecurity-mosaic-loader-overlay.mjs +0 -157
  486. package/fesm2015/ptsecurity-mosaic-markdown.mjs +0 -128
  487. package/fesm2015/ptsecurity-mosaic-markdown.mjs.map +0 -1
  488. package/fesm2015/ptsecurity-mosaic-modal.mjs +0 -875
  489. package/fesm2015/ptsecurity-mosaic-modal.mjs.map +0 -1
  490. package/fesm2015/ptsecurity-mosaic-navbar.mjs +0 -1055
  491. package/fesm2015/ptsecurity-mosaic-navbar.mjs.map +0 -1
  492. package/fesm2015/ptsecurity-mosaic-popover.mjs +0 -411
  493. package/fesm2015/ptsecurity-mosaic-progress-bar.mjs +0 -74
  494. package/fesm2015/ptsecurity-mosaic-progress-bar.mjs.map +0 -1
  495. package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs +0 -93
  496. package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs.map +0 -1
  497. package/fesm2015/ptsecurity-mosaic-radio.mjs +0 -481
  498. package/fesm2015/ptsecurity-mosaic-select.mjs +0 -1286
  499. package/fesm2015/ptsecurity-mosaic-select.mjs.map +0 -1
  500. package/fesm2015/ptsecurity-mosaic-sidebar.mjs +0 -202
  501. package/fesm2015/ptsecurity-mosaic-sidebar.mjs.map +0 -1
  502. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs +0 -622
  503. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs.map +0 -1
  504. package/fesm2015/ptsecurity-mosaic-splitter.mjs.map +0 -1
  505. package/fesm2015/ptsecurity-mosaic-table.mjs +0 -45
  506. package/fesm2015/ptsecurity-mosaic-table.mjs.map +0 -1
  507. package/fesm2015/ptsecurity-mosaic-tabs.mjs +0 -1523
  508. package/fesm2015/ptsecurity-mosaic-tabs.mjs.map +0 -1
  509. package/fesm2015/ptsecurity-mosaic-tags.mjs +0 -1397
  510. package/fesm2015/ptsecurity-mosaic-tags.mjs.map +0 -1
  511. package/fesm2015/ptsecurity-mosaic-textarea.mjs +0 -280
  512. package/fesm2015/ptsecurity-mosaic-timepicker.mjs +0 -708
  513. package/fesm2015/ptsecurity-mosaic-timepicker.mjs.map +0 -1
  514. package/fesm2015/ptsecurity-mosaic-timezone.mjs +0 -316
  515. package/fesm2015/ptsecurity-mosaic-timezone.mjs.map +0 -1
  516. package/fesm2015/ptsecurity-mosaic-title.mjs +0 -128
  517. package/fesm2015/ptsecurity-mosaic-title.mjs.map +0 -1
  518. package/fesm2015/ptsecurity-mosaic-toast.mjs +0 -379
  519. package/fesm2015/ptsecurity-mosaic-toast.mjs.map +0 -1
  520. package/fesm2015/ptsecurity-mosaic-toggle.mjs +0 -178
  521. package/fesm2015/ptsecurity-mosaic-toggle.mjs.map +0 -1
  522. package/fesm2015/ptsecurity-mosaic-tooltip.mjs +0 -369
  523. package/fesm2015/ptsecurity-mosaic-tooltip.mjs.map +0 -1
  524. package/fesm2015/ptsecurity-mosaic-tree-select.mjs +0 -983
  525. package/fesm2015/ptsecurity-mosaic-tree-select.mjs.map +0 -1
  526. package/fesm2015/ptsecurity-mosaic-tree.mjs +0 -1816
  527. package/fesm2015/ptsecurity-mosaic-tree.mjs.map +0 -1
  528. package/fesm2020/ptsecurity-mosaic-autocomplete.mjs.map +0 -1
  529. package/fesm2020/ptsecurity-mosaic-core.mjs.map +0 -1
  530. package/fesm2020/ptsecurity-mosaic-datepicker.mjs.map +0 -1
  531. package/fesm2020/ptsecurity-mosaic-file-upload.mjs.map +0 -1
  532. package/fesm2020/ptsecurity-mosaic-icon.mjs.map +0 -1
  533. package/fesm2020/ptsecurity-mosaic-loader-overlay.mjs +0 -155
  534. package/fesm2020/ptsecurity-mosaic-loader-overlay.mjs.map +0 -1
  535. package/fesm2020/ptsecurity-mosaic-modal.mjs.map +0 -1
  536. package/fesm2020/ptsecurity-mosaic-navbar.mjs.map +0 -1
  537. package/fesm2020/ptsecurity-mosaic-popover.mjs.map +0 -1
  538. package/fesm2020/ptsecurity-mosaic-radio.mjs.map +0 -1
  539. package/fesm2020/ptsecurity-mosaic-select.mjs.map +0 -1
  540. package/fesm2020/ptsecurity-mosaic-splitter.mjs +0 -524
  541. package/fesm2020/ptsecurity-mosaic-table.mjs +0 -45
  542. package/fesm2020/ptsecurity-mosaic-table.mjs.map +0 -1
  543. package/fesm2020/ptsecurity-mosaic-tabs.mjs.map +0 -1
  544. package/fesm2020/ptsecurity-mosaic-textarea.mjs.map +0 -1
  545. package/fesm2020/ptsecurity-mosaic-title.mjs.map +0 -1
  546. package/fesm2020/ptsecurity-mosaic-tree-select.mjs.map +0 -1
  547. package/fesm2020/ptsecurity-mosaic-tree.mjs.map +0 -1
  548. package/fesm2020/ptsecurity-mosaic.mjs +0 -4
  549. package/fesm2020/ptsecurity-mosaic.mjs.map +0 -1
  550. /package/{esm2020 → esm2022}/autocomplete/index.mjs +0 -0
  551. /package/{esm2020 → esm2022}/autocomplete/ptsecurity-mosaic-autocomplete.mjs +0 -0
  552. /package/{esm2020 → esm2022}/autocomplete/public-api.mjs +0 -0
  553. /package/{esm2020 → esm2022}/button/index.mjs +0 -0
  554. /package/{esm2020 → esm2022}/button/ptsecurity-mosaic-button.mjs +0 -0
  555. /package/{esm2020 → esm2022}/button/public-api.mjs +0 -0
  556. /package/{esm2020 → esm2022}/button-toggle/index.mjs +0 -0
  557. /package/{esm2020 → esm2022}/button-toggle/ptsecurity-mosaic-button-toggle.mjs +0 -0
  558. /package/{esm2020 → esm2022}/button-toggle/public-api.mjs +0 -0
  559. /package/{esm2020 → esm2022}/card/index.mjs +0 -0
  560. /package/{esm2020 → esm2022}/card/ptsecurity-mosaic-card.mjs +0 -0
  561. /package/{esm2020 → esm2022}/card/public-api.mjs +0 -0
  562. /package/{esm2020 → esm2022}/checkbox/checkbox-config.mjs +0 -0
  563. /package/{esm2020 → esm2022}/checkbox/index.mjs +0 -0
  564. /package/{esm2020 → esm2022}/checkbox/ptsecurity-mosaic-checkbox.mjs +0 -0
  565. /package/{esm2020 → esm2022}/checkbox/public-api.mjs +0 -0
  566. /package/{esm2020 → esm2022}/code-block/code-block.types.mjs +0 -0
  567. /package/{esm2020 → esm2022}/code-block/index.mjs +0 -0
  568. /package/{esm2020 → esm2022}/code-block/ptsecurity-mosaic-code-block.mjs +0 -0
  569. /package/{esm2020 → esm2022}/code-block/public-api.mjs +0 -0
  570. /package/{esm2020 → esm2022}/core/animation/animation.mjs +0 -0
  571. /package/{esm2020 → esm2022}/core/animation/fade-animations.mjs +0 -0
  572. /package/{esm2020 → esm2022}/core/animation/index.mjs +0 -0
  573. /package/{esm2020 → esm2022}/core/animation/select-animations.mjs +0 -0
  574. /package/{esm2020 → esm2022}/core/common-behaviors/constructor.mjs +0 -0
  575. /package/{esm2020 → esm2022}/core/common-behaviors/error-state.mjs +0 -0
  576. /package/{esm2020 → esm2022}/core/common-behaviors/index.mjs +0 -0
  577. /package/{esm2020 → esm2022}/core/datetime/date-adapter.mjs +0 -0
  578. /package/{esm2020 → esm2022}/core/datetime/date-formats.mjs +0 -0
  579. /package/{esm2020 → esm2022}/core/datetime/index.mjs +0 -0
  580. /package/{esm2020 → esm2022}/core/forms/index.mjs +0 -0
  581. /package/{esm2020 → esm2022}/core/index.mjs +0 -0
  582. /package/{esm2020 → esm2022}/core/label/label-options.mjs +0 -0
  583. /package/{esm2020 → esm2022}/core/locales/index.mjs +0 -0
  584. /package/{esm2020 → esm2022}/core/option/index.mjs +0 -0
  585. /package/{esm2020 → esm2022}/core/pop-up/constants.mjs +0 -0
  586. /package/{esm2020 → esm2022}/core/pop-up/index.mjs +0 -0
  587. /package/{esm2020 → esm2022}/core/ptsecurity-mosaic-core.mjs +0 -0
  588. /package/{esm2020 → esm2022}/core/public-api.mjs +0 -0
  589. /package/{esm2020 → esm2022}/core/select/constants.mjs +0 -0
  590. /package/{esm2020 → esm2022}/core/select/errors.mjs +0 -0
  591. /package/{esm2020 → esm2022}/core/select/events.mjs +0 -0
  592. /package/{esm2020 → esm2022}/core/select/index.mjs +0 -0
  593. /package/{esm2020 → esm2022}/core/selection/constants.mjs +0 -0
  594. /package/{esm2020 → esm2022}/core/selection/index.mjs +0 -0
  595. /package/{esm2020 → esm2022}/core/title/index.mjs +0 -0
  596. /package/{esm2020 → esm2022}/core/title/title-text-ref.mjs +0 -0
  597. /package/{esm2020 → esm2022}/core/utils/data-size/config.mjs +0 -0
  598. /package/{esm2020 → esm2022}/core/utils/data-size/index.mjs +0 -0
  599. /package/{esm2020 → esm2022}/core/utils/data-size/size.mjs +0 -0
  600. /package/{esm2020 → esm2022}/core/utils/index.mjs +0 -0
  601. /package/{esm2020 → esm2022}/core/utils/public-api.mjs +0 -0
  602. /package/{esm2020 → esm2022}/core/utils/utils.mjs +0 -0
  603. /package/{esm2020 → esm2022}/core/validation/index.mjs +0 -0
  604. /package/{esm2020 → esm2022}/core/validation/validation.mjs +0 -0
  605. /package/{esm2020 → esm2022}/datepicker/datepicker-animations.mjs +0 -0
  606. /package/{esm2020 → esm2022}/datepicker/datepicker-errors.mjs +0 -0
  607. /package/{esm2020 → esm2022}/datepicker/index.mjs +0 -0
  608. /package/{esm2020 → esm2022}/datepicker/ptsecurity-mosaic-datepicker.mjs +0 -0
  609. /package/{esm2020 → esm2022}/datepicker/public-api.mjs +0 -0
  610. /package/{esm2020 → esm2022}/divider/index.mjs +0 -0
  611. /package/{esm2020 → esm2022}/divider/ptsecurity-mosaic-divider.mjs +0 -0
  612. /package/{esm2020 → esm2022}/divider/public-api.mjs +0 -0
  613. /package/{esm2020 → esm2022}/dl/index.mjs +0 -0
  614. /package/{esm2020 → esm2022}/dl/ptsecurity-mosaic-dl.mjs +0 -0
  615. /package/{esm2020 → esm2022}/dl/public-api.mjs +0 -0
  616. /package/{esm2020 → esm2022}/dropdown/dropdown-animations.mjs +0 -0
  617. /package/{esm2020 → esm2022}/dropdown/dropdown-errors.mjs +0 -0
  618. /package/{esm2020 → esm2022}/dropdown/dropdown.types.mjs +0 -0
  619. /package/{esm2020 → esm2022}/dropdown/index.mjs +0 -0
  620. /package/{esm2020 → esm2022}/dropdown/ptsecurity-mosaic-dropdown.mjs +0 -0
  621. /package/{esm2020 → esm2022}/dropdown/public-api.mjs +0 -0
  622. /package/{esm2020 → esm2022}/ellipsis-center/index.mjs +0 -0
  623. /package/{esm2020 → esm2022}/ellipsis-center/ptsecurity-mosaic-ellipsis-center.mjs +0 -0
  624. /package/{esm2020 → esm2022}/ellipsis-center/public-api.mjs +0 -0
  625. /package/{esm2020 → esm2022}/file-upload/file-upload.mjs +0 -0
  626. /package/{esm2020 → esm2022}/file-upload/index.mjs +0 -0
  627. /package/{esm2020 → esm2022}/file-upload/ptsecurity-mosaic-file-upload.mjs +0 -0
  628. /package/{esm2020 → esm2022}/file-upload/public-api.mjs +0 -0
  629. /package/{esm2020 → esm2022}/form-field/form-field-control.mjs +0 -0
  630. /package/{esm2020 → esm2022}/form-field/form-field-errors.mjs +0 -0
  631. /package/{esm2020 → esm2022}/form-field/index.mjs +0 -0
  632. /package/{esm2020 → esm2022}/form-field/ptsecurity-mosaic-form-field.mjs +0 -0
  633. /package/{esm2020 → esm2022}/form-field/public-api.mjs +0 -0
  634. /package/{esm2020 → esm2022}/icon/index.mjs +0 -0
  635. /package/{esm2020 → esm2022}/icon/ptsecurity-mosaic-icon.mjs +0 -0
  636. /package/{esm2020 → esm2022}/icon/public-api.mjs +0 -0
  637. /package/{esm2020 → esm2022}/index.mjs +0 -0
  638. /package/{esm2020 → esm2022}/input/index.mjs +0 -0
  639. /package/{esm2020 → esm2022}/input/input-errors.mjs +0 -0
  640. /package/{esm2020 → esm2022}/input/input-value-accessor.mjs +0 -0
  641. /package/{esm2020 → esm2022}/input/ptsecurity-mosaic-input.mjs +0 -0
  642. /package/{esm2020 → esm2022}/input/public-api.mjs +0 -0
  643. /package/{esm2020 → esm2022}/link/index.mjs +0 -0
  644. /package/{esm2020 → esm2022}/link/ptsecurity-mosaic-link.mjs +0 -0
  645. /package/{esm2020 → esm2022}/link/public-api.mjs +0 -0
  646. /package/{esm2020 → esm2022}/list/index.mjs +0 -0
  647. /package/{esm2020 → esm2022}/list/ptsecurity-mosaic-list.mjs +0 -0
  648. /package/{esm2020 → esm2022}/list/public-api.mjs +0 -0
  649. /package/{esm2020 → esm2022}/loader-overlay/index.mjs +0 -0
  650. /package/{esm2020 → esm2022}/loader-overlay/ptsecurity-mosaic-loader-overlay.mjs +0 -0
  651. /package/{esm2020 → esm2022}/loader-overlay/public-api.mjs +0 -0
  652. /package/{esm2020 → esm2022}/markdown/index.mjs +0 -0
  653. /package/{esm2020 → esm2022}/markdown/markdown.values.mjs +0 -0
  654. /package/{esm2020 → esm2022}/markdown/ptsecurity-mosaic-markdown.mjs +0 -0
  655. /package/{esm2020 → esm2022}/markdown/public-api.mjs +0 -0
  656. /package/{esm2020 → esm2022}/modal/index.mjs +0 -0
  657. /package/{esm2020 → esm2022}/modal/modal-ref.class.mjs +0 -0
  658. /package/{esm2020 → esm2022}/modal/modal-util.mjs +0 -0
  659. /package/{esm2020 → esm2022}/modal/modal.type.mjs +0 -0
  660. /package/{esm2020 → esm2022}/modal/ptsecurity-mosaic-modal.mjs +0 -0
  661. /package/{esm2020 → esm2022}/modal/public-api.mjs +0 -0
  662. /package/{esm2020 → esm2022}/navbar/index.mjs +0 -0
  663. /package/{esm2020 → esm2022}/navbar/ptsecurity-mosaic-navbar.mjs +0 -0
  664. /package/{esm2020 → esm2022}/navbar/public-api.mjs +0 -0
  665. /package/{esm2020 → esm2022}/navbar/vertical-navbar.animation.mjs +0 -0
  666. /package/{esm2020 → esm2022}/popover/index.mjs +0 -0
  667. /package/{esm2020 → esm2022}/popover/popover-animations.mjs +0 -0
  668. /package/{esm2020 → esm2022}/popover/ptsecurity-mosaic-popover.mjs +0 -0
  669. /package/{esm2020 → esm2022}/popover/public-api.mjs +0 -0
  670. /package/{esm2020 → esm2022}/progress-bar/index.mjs +0 -0
  671. /package/{esm2020 → esm2022}/progress-bar/ptsecurity-mosaic-progress-bar.mjs +0 -0
  672. /package/{esm2020 → esm2022}/progress-bar/public-api.mjs +0 -0
  673. /package/{esm2020 → esm2022}/progress-spinner/index.mjs +0 -0
  674. /package/{esm2020 → esm2022}/progress-spinner/ptsecurity-mosaic-progress-spinner.mjs +0 -0
  675. /package/{esm2020 → esm2022}/progress-spinner/public-api.mjs +0 -0
  676. /package/{esm2020 → esm2022}/ptsecurity-mosaic.mjs +0 -0
  677. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  678. /package/{esm2020 → esm2022}/radio/index.mjs +0 -0
  679. /package/{esm2020 → esm2022}/radio/ptsecurity-mosaic-radio.mjs +0 -0
  680. /package/{esm2020 → esm2022}/radio/public-api.mjs +0 -0
  681. /package/{esm2020 → esm2022}/select/index.mjs +0 -0
  682. /package/{esm2020 → esm2022}/select/ptsecurity-mosaic-select.mjs +0 -0
  683. /package/{esm2020 → esm2022}/select/public-api.mjs +0 -0
  684. /package/{esm2020 → esm2022}/sidebar/index.mjs +0 -0
  685. /package/{esm2020 → esm2022}/sidebar/ptsecurity-mosaic-sidebar.mjs +0 -0
  686. /package/{esm2020 → esm2022}/sidebar/public-api.mjs +0 -0
  687. /package/{esm2020 → esm2022}/sidebar/sidebar-animations.mjs +0 -0
  688. /package/{esm2020 → esm2022}/sidepanel/index.mjs +0 -0
  689. /package/{esm2020 → esm2022}/sidepanel/ptsecurity-mosaic-sidepanel.mjs +0 -0
  690. /package/{esm2020 → esm2022}/sidepanel/public-api.mjs +0 -0
  691. /package/{esm2020 → esm2022}/sidepanel/sidepanel-animations.mjs +0 -0
  692. /package/{esm2020 → esm2022}/sidepanel/sidepanel-config.mjs +0 -0
  693. /package/{esm2020 → esm2022}/sidepanel/sidepanel-ref.mjs +0 -0
  694. /package/{esm2020 → esm2022}/splitter/index.mjs +0 -0
  695. /package/{esm2020 → esm2022}/splitter/ptsecurity-mosaic-splitter.mjs +0 -0
  696. /package/{esm2020 → esm2022}/splitter/public-api.mjs +0 -0
  697. /package/{esm2020 → esm2022}/table/index.mjs +0 -0
  698. /package/{esm2020 → esm2022}/table/ptsecurity-mosaic-table.mjs +0 -0
  699. /package/{esm2020 → esm2022}/table/public-api.mjs +0 -0
  700. /package/{esm2020 → esm2022}/tabs/index.mjs +0 -0
  701. /package/{esm2020 → esm2022}/tabs/ptsecurity-mosaic-tabs.mjs +0 -0
  702. /package/{esm2020 → esm2022}/tabs/public-api.mjs +0 -0
  703. /package/{esm2020 → esm2022}/tabs/tab-nav-bar/index.mjs +0 -0
  704. /package/{esm2020 → esm2022}/tabs/tabs-animations.mjs +0 -0
  705. /package/{esm2020 → esm2022}/tags/index.mjs +0 -0
  706. /package/{esm2020 → esm2022}/tags/ptsecurity-mosaic-tags.mjs +0 -0
  707. /package/{esm2020 → esm2022}/tags/public-api.mjs +0 -0
  708. /package/{esm2020 → esm2022}/tags/tag-default-options.mjs +0 -0
  709. /package/{esm2020 → esm2022}/tags/tag-text-control.mjs +0 -0
  710. /package/{esm2020 → esm2022}/textarea/index.mjs +0 -0
  711. /package/{esm2020 → esm2022}/textarea/ptsecurity-mosaic-textarea.mjs +0 -0
  712. /package/{esm2020 → esm2022}/textarea/public-api.mjs +0 -0
  713. /package/{esm2020 → esm2022}/timepicker/index.mjs +0 -0
  714. /package/{esm2020 → esm2022}/timepicker/ptsecurity-mosaic-timepicker.mjs +0 -0
  715. /package/{esm2020 → esm2022}/timepicker/public-api.mjs +0 -0
  716. /package/{esm2020 → esm2022}/timepicker/timepicker.constants.mjs +0 -0
  717. /package/{esm2020 → esm2022}/timezone/index.mjs +0 -0
  718. /package/{esm2020 → esm2022}/timezone/ptsecurity-mosaic-timezone.mjs +0 -0
  719. /package/{esm2020 → esm2022}/timezone/public-api.mjs +0 -0
  720. /package/{esm2020 → esm2022}/timezone/timezone.models.mjs +0 -0
  721. /package/{esm2020 → esm2022}/timezone/timezone.utils.mjs +0 -0
  722. /package/{esm2020 → esm2022}/title/index.mjs +0 -0
  723. /package/{esm2020 → esm2022}/title/ptsecurity-mosaic-title.mjs +0 -0
  724. /package/{esm2020 → esm2022}/title/public-api.mjs +0 -0
  725. /package/{esm2020 → esm2022}/toast/index.mjs +0 -0
  726. /package/{esm2020 → esm2022}/toast/ptsecurity-mosaic-toast.mjs +0 -0
  727. /package/{esm2020 → esm2022}/toast/public-api.mjs +0 -0
  728. /package/{esm2020 → esm2022}/toast/toast-animations.mjs +0 -0
  729. /package/{esm2020 → esm2022}/toast/toast.type.mjs +0 -0
  730. /package/{esm2020 → esm2022}/toggle/index.mjs +0 -0
  731. /package/{esm2020 → esm2022}/toggle/ptsecurity-mosaic-toggle.mjs +0 -0
  732. /package/{esm2020 → esm2022}/toggle/public-api.mjs +0 -0
  733. /package/{esm2020 → esm2022}/tooltip/index.mjs +0 -0
  734. /package/{esm2020 → esm2022}/tooltip/ptsecurity-mosaic-tooltip.mjs +0 -0
  735. /package/{esm2020 → esm2022}/tooltip/public-api.mjs +0 -0
  736. /package/{esm2020 → esm2022}/tooltip/tooltip.animations.mjs +0 -0
  737. /package/{esm2020 → esm2022}/tree/control/base-tree-control.mjs +0 -0
  738. /package/{esm2020 → esm2022}/tree/control/flat-tree-control.mjs +0 -0
  739. /package/{esm2020 → esm2022}/tree/control/nested-tree-control.mjs +0 -0
  740. /package/{esm2020 → esm2022}/tree/control/tree-control.mjs +0 -0
  741. /package/{esm2020 → esm2022}/tree/data-source/nested-data-source.mjs +0 -0
  742. /package/{esm2020 → esm2022}/tree/index.mjs +0 -0
  743. /package/{esm2020 → esm2022}/tree/ptsecurity-mosaic-tree.mjs +0 -0
  744. /package/{esm2020 → esm2022}/tree/public-api.mjs +0 -0
  745. /package/{esm2020 → esm2022}/tree/tree-errors.mjs +0 -0
  746. /package/{esm2020 → esm2022}/tree-select/index.mjs +0 -0
  747. /package/{esm2020 → esm2022}/tree-select/ptsecurity-mosaic-tree-select.mjs +0 -0
  748. /package/{esm2020 → esm2022}/tree-select/public-api.mjs +0 -0
  749. /package/{fesm2015 → fesm2022}/ptsecurity-mosaic.mjs +0 -0
  750. /package/{fesm2015 → fesm2022}/ptsecurity-mosaic.mjs.map +0 -0
@@ -1,457 +0,0 @@
1
- import { FocusMonitor } from '@angular/cdk/a11y';
2
- import { UniqueSelectionDispatcher } from '@angular/cdk/collections';
3
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Directive, ElementRef, EventEmitter, forwardRef, Input, Optional, Output, QueryList, ViewChild, ViewEncapsulation } from '@angular/core';
4
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
5
- import { mixinColor, mixinDisabled, mixinTabIndex, toBoolean } from '@ptsecurity/mosaic/core';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/cdk/a11y";
8
- import * as i2 from "@angular/cdk/collections";
9
- // Increasing integer for generating unique ids for radio components.
10
- let nextUniqueId = 0;
11
- /** Change event object emitted by McRadio. */
12
- export class McRadioChange {
13
- constructor(
14
- /** The McRadioButton that emits the change event. */
15
- source,
16
- /** The value of the McRadioButton. */
17
- value) {
18
- this.source = source;
19
- this.value = value;
20
- }
21
- }
22
- // Boilerplate for applying mixins to McRadioGroup.
23
- /** @docs-private */
24
- export class McRadioGroupBase {
25
- constructor(elementRef) {
26
- this.elementRef = elementRef;
27
- }
28
- }
29
- /** @docs-private */
30
- export const McRadioGroupMixinBase = mixinDisabled(McRadioGroupBase);
31
- /**
32
- * Provider Expression that allows mc-radio-group to register as a ControlValueAccessor. This
33
- * allows it to support [(ngModel)] and ngControl.
34
- * @docs-private
35
- */
36
- export const MC_RADIO_GROUP_CONTROL_VALUE_ACCESSOR = {
37
- provide: NG_VALUE_ACCESSOR,
38
- useExisting: forwardRef(() => McRadioGroup),
39
- multi: true
40
- };
41
- export class McRadioGroup extends McRadioGroupMixinBase {
42
- constructor(elementRef, changeDetector) {
43
- super(elementRef);
44
- this.changeDetector = changeDetector;
45
- /**
46
- * Event emitted when the group value changes.
47
- * Change events are only emitted when the value changes due to user interaction with
48
- * a radio button (the same behavior as `<input type-"radio">`).
49
- */
50
- this.change = new EventEmitter();
51
- /**
52
- * Selected value for group. Should equal the value of the selected radio button if there *is*
53
- * a corresponding radio button with a matching value. If there is *not* such a corresponding
54
- * radio button, this value persists to be applied in case a new radio button is added with a
55
- * matching value.
56
- */
57
- this._value = null;
58
- /** The HTML name attribute applied to radio buttons in this group. */
59
- this._name = `mc-radio-group-${nextUniqueId++}`;
60
- /** The currently selected radio button. Should match value. */
61
- this._selected = null;
62
- /** Whether the `value` has been set to its initial value. */
63
- this.isInitialized = false;
64
- /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */
65
- this._labelPosition = 'after';
66
- /** Whether the radio group is disabled. */
67
- this._disabled = false;
68
- /** Whether the radio group is required. */
69
- this._required = false;
70
- /** The method to be called in order to update ngModel */
71
- // tslint:disable-next-line
72
- this.controlValueAccessorChangeFn = () => { };
73
- /**
74
- * onTouch function registered via registerOnTouch (ControlValueAccessor).
75
- * @docs-private
76
- */
77
- // tslint:disable-next-line
78
- this.onTouched = () => { };
79
- }
80
- /** Name of the radio button group. All radio buttons inside this group will use this name. */
81
- get name() {
82
- return this._name;
83
- }
84
- set name(value) {
85
- this._name = value;
86
- this.updateRadioButtonNames();
87
- }
88
- /** Whether the labels should appear after or before the radio-buttons. Defaults to 'after' */
89
- get labelPosition() {
90
- return this._labelPosition;
91
- }
92
- set labelPosition(v) {
93
- this._labelPosition = v === 'before' ? 'before' : 'after';
94
- this.markRadiosForCheck();
95
- }
96
- /** Value of the radio button. */
97
- get value() {
98
- return this._value;
99
- }
100
- set value(newValue) {
101
- if (this._value !== newValue) {
102
- // Set this before proceeding to ensure no circular loop occurs with selection.
103
- this._value = newValue;
104
- this.updateSelectedRadioFromValue();
105
- this.checkSelectedRadioButton();
106
- }
107
- }
108
- /** Whether the radio button is selected. */
109
- get selected() {
110
- return this._selected;
111
- }
112
- set selected(selected) {
113
- this._selected = selected;
114
- this.value = selected ? selected.value : null;
115
- this.checkSelectedRadioButton();
116
- }
117
- /** Whether the radio group is disabled */
118
- get disabled() {
119
- return this._disabled;
120
- }
121
- set disabled(value) {
122
- this._disabled = toBoolean(value);
123
- this.markRadiosForCheck();
124
- }
125
- /** Whether the radio group is required */
126
- get required() {
127
- return this._required;
128
- }
129
- set required(value) {
130
- this._required = toBoolean(value);
131
- this.markRadiosForCheck();
132
- }
133
- checkSelectedRadioButton() {
134
- if (this._selected && !this._selected.checked) {
135
- this._selected.checked = true;
136
- }
137
- }
138
- /**
139
- * Initialize properties once content children are available.
140
- * This allows us to propagate relevant attributes to associated buttons.
141
- */
142
- ngAfterContentInit() {
143
- // Mark this component as initialized in AfterContentInit because the initial value can
144
- // possibly be set by NgModel on McRadioGroup, and it is possible that the OnInit of the
145
- // NgModel occurs *after* the OnInit of the McRadioGroup.
146
- this.isInitialized = true;
147
- }
148
- /**
149
- * Mark this group as being "touched" (for ngModel). Meant to be called by the contained
150
- * radio buttons upon their blur.
151
- */
152
- touch() {
153
- if (this.onTouched) {
154
- this.onTouched();
155
- }
156
- }
157
- /** Dispatch change event with current selection and group value. */
158
- emitChangeEvent() {
159
- if (this.isInitialized) {
160
- this.change.emit(new McRadioChange(this._selected, this._value));
161
- }
162
- }
163
- markRadiosForCheck() {
164
- if (this.radios) {
165
- this.radios.forEach((radio) => radio.markForCheck());
166
- }
167
- }
168
- /**
169
- * Sets the model value. Implemented as part of ControlValueAccessor.
170
- */
171
- writeValue(value) {
172
- this.value = value;
173
- this.changeDetector.markForCheck();
174
- }
175
- /**
176
- * Registers a callback to be triggered when the model value changes.
177
- * Implemented as part of ControlValueAccessor.
178
- * @param fn Callback to be registered.
179
- */
180
- registerOnChange(fn) {
181
- this.controlValueAccessorChangeFn = fn;
182
- }
183
- /**
184
- * Registers a callback to be triggered when the control is touched.
185
- * Implemented as part of ControlValueAccessor.
186
- * @param fn Callback to be registered.
187
- */
188
- registerOnTouched(fn) {
189
- this.onTouched = fn;
190
- }
191
- /**
192
- * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.
193
- * @param isDisabled Whether the control should be disabled.
194
- */
195
- setDisabledState(isDisabled) {
196
- this.disabled = isDisabled;
197
- this.changeDetector.markForCheck();
198
- }
199
- updateRadioButtonNames() {
200
- this.radios?.forEach((radio) => radio.name = this.name);
201
- }
202
- /** Updates the `selected` radio button from the internal _value state. */
203
- updateSelectedRadioFromValue() {
204
- // If the value already matches the selected radio, do nothing.
205
- const isAlreadySelected = this._selected !== null && this._selected.value === this._value;
206
- if (this.radios != null && !isAlreadySelected) {
207
- this._selected = null;
208
- this.radios.forEach((radio) => {
209
- radio.checked = this.value === radio.value;
210
- if (radio.checked) {
211
- this._selected = radio;
212
- }
213
- });
214
- }
215
- }
216
- }
217
- /** @nocollapse */ McRadioGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: McRadioGroup, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
218
- /** @nocollapse */ McRadioGroup.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: McRadioGroup, selector: "mc-radio-group", inputs: { name: "name", labelPosition: "labelPosition", value: "value", selected: "selected", disabled: "disabled", required: "required" }, outputs: { change: "change" }, host: { attributes: { "role": "radiogroup" }, classAttribute: "mc-radio-group" }, providers: [MC_RADIO_GROUP_CONTROL_VALUE_ACCESSOR], queries: [{ propertyName: "radios", predicate: i0.forwardRef(function () { return McRadioButton; }), descendants: true }], exportAs: ["mcRadioGroup"], usesInheritance: true, ngImport: i0 });
219
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: McRadioGroup, decorators: [{
220
- type: Directive,
221
- args: [{
222
- selector: 'mc-radio-group',
223
- exportAs: 'mcRadioGroup',
224
- host: {
225
- role: 'radiogroup',
226
- class: 'mc-radio-group'
227
- },
228
- providers: [MC_RADIO_GROUP_CONTROL_VALUE_ACCESSOR]
229
- }]
230
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { name: [{
231
- type: Input
232
- }], labelPosition: [{
233
- type: Input
234
- }], value: [{
235
- type: Input
236
- }], selected: [{
237
- type: Input
238
- }], disabled: [{
239
- type: Input
240
- }], required: [{
241
- type: Input
242
- }], change: [{
243
- type: Output
244
- }], radios: [{
245
- type: ContentChildren,
246
- args: [forwardRef(() => McRadioButton), { descendants: true }]
247
- }] } });
248
- // Boilerplate for applying mixins to McRadioButton.
249
- /** @docs-private */
250
- class McRadioButtonBase {
251
- constructor(elementRef) {
252
- this.elementRef = elementRef;
253
- }
254
- }
255
- /** @docs-private */
256
- export const McRadioButtonMixinBase = mixinColor(mixinTabIndex(McRadioButtonBase));
257
- export class McRadioButton extends McRadioButtonMixinBase {
258
- constructor(radioGroup, elementRef, changeDetector, focusMonitor, radioDispatcher) {
259
- super(elementRef);
260
- this.changeDetector = changeDetector;
261
- this.focusMonitor = focusMonitor;
262
- this.radioDispatcher = radioDispatcher;
263
- /**
264
- * Event emitted when the checked state of this radio button changes.
265
- * Change events are only emitted when the value changes due to user interaction with
266
- * the radio button (the same behavior as `<input type-"radio">`).
267
- */
268
- this.change = new EventEmitter();
269
- this.isFocused = false;
270
- /* tslint:disable:member-ordering */
271
- this.uniqueId = `mc-radio-${++nextUniqueId}`;
272
- /** Whether this radio is checked. */
273
- this._checked = false;
274
- /** Value assigned to this radio. */
275
- this._value = null;
276
- /** Unregister function for _radioDispatcher */
277
- // tslint:disable-next-line
278
- this.removeUniqueSelectionListener = () => { };
279
- this.id = this.uniqueId;
280
- this.radioGroup = radioGroup;
281
- this.removeUniqueSelectionListener = radioDispatcher
282
- .listen((id, name) => {
283
- if (id !== this.id && name === this.name) {
284
- this.checked = false;
285
- }
286
- });
287
- }
288
- /** Whether this radio button is checked. */
289
- get checked() {
290
- return this._checked;
291
- }
292
- set checked(value) {
293
- const newCheckedState = toBoolean(value);
294
- if (this._checked !== newCheckedState) {
295
- this._checked = newCheckedState;
296
- if (newCheckedState && this.radioGroup && this.radioGroup.value !== this.value) {
297
- this.radioGroup.selected = this;
298
- }
299
- else if (!newCheckedState && this.radioGroup && this.radioGroup.value === this.value) {
300
- // When unchecking the selected radio button, update the selected radio
301
- // property on the group.
302
- this.radioGroup.selected = null;
303
- }
304
- if (newCheckedState) {
305
- // Notify all radio buttons with the same name to un-check.
306
- this.radioDispatcher.notify(this.id, this.name);
307
- }
308
- this.changeDetector.markForCheck();
309
- }
310
- }
311
- /** The value of this radio button. */
312
- get value() {
313
- return this._value;
314
- }
315
- set value(value) {
316
- if (this._value !== value) {
317
- this._value = value;
318
- if (this.radioGroup != null) {
319
- if (!this.checked) {
320
- // Update checked when the value changed to match the radio group's value
321
- this.checked = this.radioGroup.value === value;
322
- }
323
- if (this.checked) {
324
- this.radioGroup.selected = this;
325
- }
326
- }
327
- }
328
- }
329
- /** Whether the radio button is disabled. */
330
- get disabled() {
331
- return this._disabled || (this.radioGroup != null && this.radioGroup.disabled);
332
- }
333
- set disabled(value) {
334
- const newDisabledState = toBoolean(value);
335
- if (this._disabled !== newDisabledState) {
336
- this._disabled = newDisabledState;
337
- this.changeDetector.markForCheck();
338
- }
339
- }
340
- /** Whether the radio button is required. */
341
- get required() {
342
- return this._required || (this.radioGroup && this.radioGroup.required);
343
- }
344
- set required(value) {
345
- this._required = toBoolean(value);
346
- }
347
- /** Whether the label should appear after or before the radio button. Defaults to 'after' */
348
- get labelPosition() {
349
- return this._labelPosition || (this.radioGroup && this.radioGroup.labelPosition) || 'after';
350
- }
351
- set labelPosition(value) {
352
- this._labelPosition = value;
353
- }
354
- /** ID of the native input element inside `<mc-radio-button>` */
355
- get inputId() { return `${this.id || this.uniqueId}-input`; }
356
- ngOnInit() {
357
- if (this.radioGroup) {
358
- // If the radio is inside a radio group, determine if it should be checked
359
- this.checked = this.radioGroup.value === this._value;
360
- // Copy name from parent radio group
361
- this.name = this.radioGroup.name;
362
- }
363
- }
364
- ngAfterViewInit() {
365
- this.focusMonitor
366
- .monitor(this.elementRef, true)
367
- .subscribe((focusOrigin) => {
368
- if (!focusOrigin && this.radioGroup) {
369
- this.radioGroup.touch();
370
- }
371
- });
372
- }
373
- ngOnDestroy() {
374
- this.focusMonitor.stopMonitoring(this.elementRef);
375
- this.removeUniqueSelectionListener();
376
- }
377
- /** Focuses the radio button. */
378
- focus() {
379
- this.inputElement.nativeElement.focus();
380
- }
381
- /**
382
- * Marks the radio button as needing checking for change detection.
383
- * This method is exposed because the parent radio group will directly
384
- * update bound properties of the radio button.
385
- */
386
- markForCheck() {
387
- // When group value changes, the button will not be notified. Use `markForCheck` to explicit
388
- // update radio button's status
389
- this.changeDetector.markForCheck();
390
- }
391
- onInputClick(event) {
392
- // We have to stop propagation for click events on the visual hidden input element.
393
- // By default, when a user clicks on a label element, a generated click event will be
394
- // dispatched on the associated input element. Since we are using a label element as our
395
- // root container, the click event on the `radio-button` will be executed twice.
396
- // The real click event will bubble up, and the generated click event also tries to bubble up.
397
- // This will lead to multiple click events.
398
- // Preventing bubbling & forcing skip event from closing actions for the second event will solve that issue.
399
- event.stopPropagation();
400
- event.mcPopoverPreventHide = true;
401
- }
402
- onInputChange(event) {
403
- // We always have to stop propagation on the change event.
404
- // Otherwise the change event, from the input element, will bubble up and
405
- // emit its event object to the `change` output.
406
- event.stopPropagation();
407
- const groupValueChanged = this.radioGroup && this.value !== this.radioGroup.value;
408
- this.checked = true;
409
- this.emitChangeEvent();
410
- if (this.radioGroup) {
411
- this.radioGroup.controlValueAccessorChangeFn(this.value);
412
- this.radioGroup.touch();
413
- if (groupValueChanged) {
414
- this.radioGroup.emitChangeEvent();
415
- }
416
- }
417
- }
418
- /** Dispatch change event with current value. */
419
- emitChangeEvent() {
420
- this.change.emit(new McRadioChange(this, this._value));
421
- }
422
- }
423
- /** @nocollapse */ McRadioButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: McRadioButton, deps: [{ token: McRadioGroup, optional: true }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.FocusMonitor }, { token: i2.UniqueSelectionDispatcher }], target: i0.ɵɵFactoryTarget.Component });
424
- /** @nocollapse */ McRadioButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: McRadioButton, selector: "mc-radio-button", inputs: { color: "color", tabIndex: "tabIndex", checked: "checked", value: "value", disabled: "disabled", required: "required", labelPosition: "labelPosition", name: "name", isFocused: "isFocused", id: "id" }, outputs: { change: "change" }, host: { properties: { "attr.id": "id", "class.mc-selected": "checked", "class.mc-disabled": "disabled" }, classAttribute: "mc-radio-button" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }], exportAs: ["mcRadioButton"], usesInheritance: true, ngImport: i0, template: "<label class=\"mc-radio-label\" [attr.for]=\"inputId\" #label>\n <input type=\"radio\"\n class=\"mc-radio-input cdk-visually-hidden\"\n #input\n [id]=\"inputId\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [tabIndex]=\"tabIndex\"\n [attr.name]=\"name\"\n [required]=\"required\"\n (change)=\"onInputChange($event)\"\n (click)=\"onInputClick($event)\">\n\n <div class=\"mc-radio-label-content\" [class.mc-radio-label-before]=\"labelPosition == 'before'\">\n <div class=\"mc-radio-button__outer-circle\">\n <div class=\"mc-radio-button__inner-circle\">\n <div class=\"mc-radio-button__inner-circle-cap\"></div>\n </div>\n </div>\n\n <div class=\"mc-radio__text-container\">\n <span class=\"mc-radio__text\">\n <ng-content></ng-content>\n </span>\n\n <ng-content select=\"mc-hint\"></ng-content>\n </div>\n </div>\n</label>\n", styles: [".mc-radio-button{display:inline-block}.mc-radio-label{display:inline-flex;align-items:center;vertical-align:middle;cursor:pointer;white-space:nowrap;width:100%}.mc-radio-label-content{display:inline-block;position:relative;order:0;line-height:inherit;padding-left:calc(var(--mc-radio-size-outer-size, 14px) + var(--mc-radio-size-padding, 8px));padding-right:0}.mc-radio-label-content .mc-radio-button__outer-circle,.mc-radio-label-content .mc-radio-button__inner-circle{box-sizing:content-box;position:absolute;display:flex;content:\"\";border-style:solid;border-radius:50%}.mc-radio-label-content .mc-radio-button__outer-circle{left:0;top:2px;width:var(--mc-radio-size-outer-size, 14px);height:var(--mc-radio-size-outer-size, 14px);border-width:1px}.mc-radio-label-content .mc-radio-button__inner-circle{position:relative;margin:auto;width:var(--mc-radio-size-inner-size, 10px);height:var(--mc-radio-size-inner-size, 10px);border-width:1px}.mc-radio-label-content .mc-radio-button__inner-circle .mc-radio-button__inner-circle-cap{margin:auto;width:var(--mc-radio-size-cap-size, 6px);height:var(--mc-radio-size-cap-size, 6px);border-radius:50%}.mc-radio-label-content .mc-radio__text-container{display:flex;flex-direction:column}.mc-radio-label-content .mc-radio__text-container .mc-hint{margin-top:2px}[dir=rtl] .mc-radio-label-content{padding-right:var(--mc-radio-size-padding, 8px);padding-left:0}.mc-radio-input{position:absolute;outline:none;opacity:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
425
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: McRadioButton, decorators: [{
426
- type: Component,
427
- args: [{ selector: 'mc-radio-button', inputs: ['color', 'tabIndex'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'mcRadioButton', host: {
428
- class: 'mc-radio-button',
429
- '[attr.id]': 'id',
430
- '[class.mc-selected]': 'checked',
431
- '[class.mc-disabled]': 'disabled'
432
- }, template: "<label class=\"mc-radio-label\" [attr.for]=\"inputId\" #label>\n <input type=\"radio\"\n class=\"mc-radio-input cdk-visually-hidden\"\n #input\n [id]=\"inputId\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [tabIndex]=\"tabIndex\"\n [attr.name]=\"name\"\n [required]=\"required\"\n (change)=\"onInputChange($event)\"\n (click)=\"onInputClick($event)\">\n\n <div class=\"mc-radio-label-content\" [class.mc-radio-label-before]=\"labelPosition == 'before'\">\n <div class=\"mc-radio-button__outer-circle\">\n <div class=\"mc-radio-button__inner-circle\">\n <div class=\"mc-radio-button__inner-circle-cap\"></div>\n </div>\n </div>\n\n <div class=\"mc-radio__text-container\">\n <span class=\"mc-radio__text\">\n <ng-content></ng-content>\n </span>\n\n <ng-content select=\"mc-hint\"></ng-content>\n </div>\n </div>\n</label>\n", styles: [".mc-radio-button{display:inline-block}.mc-radio-label{display:inline-flex;align-items:center;vertical-align:middle;cursor:pointer;white-space:nowrap;width:100%}.mc-radio-label-content{display:inline-block;position:relative;order:0;line-height:inherit;padding-left:calc(var(--mc-radio-size-outer-size, 14px) + var(--mc-radio-size-padding, 8px));padding-right:0}.mc-radio-label-content .mc-radio-button__outer-circle,.mc-radio-label-content .mc-radio-button__inner-circle{box-sizing:content-box;position:absolute;display:flex;content:\"\";border-style:solid;border-radius:50%}.mc-radio-label-content .mc-radio-button__outer-circle{left:0;top:2px;width:var(--mc-radio-size-outer-size, 14px);height:var(--mc-radio-size-outer-size, 14px);border-width:1px}.mc-radio-label-content .mc-radio-button__inner-circle{position:relative;margin:auto;width:var(--mc-radio-size-inner-size, 10px);height:var(--mc-radio-size-inner-size, 10px);border-width:1px}.mc-radio-label-content .mc-radio-button__inner-circle .mc-radio-button__inner-circle-cap{margin:auto;width:var(--mc-radio-size-cap-size, 6px);height:var(--mc-radio-size-cap-size, 6px);border-radius:50%}.mc-radio-label-content .mc-radio__text-container{display:flex;flex-direction:column}.mc-radio-label-content .mc-radio__text-container .mc-hint{margin-top:2px}[dir=rtl] .mc-radio-label-content{padding-right:var(--mc-radio-size-padding, 8px);padding-left:0}.mc-radio-input{position:absolute;outline:none;opacity:0}\n"] }]
433
- }], ctorParameters: function () { return [{ type: McRadioGroup, decorators: [{
434
- type: Optional
435
- }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.FocusMonitor }, { type: i2.UniqueSelectionDispatcher }]; }, propDecorators: { checked: [{
436
- type: Input
437
- }], value: [{
438
- type: Input
439
- }], disabled: [{
440
- type: Input
441
- }], required: [{
442
- type: Input
443
- }], labelPosition: [{
444
- type: Input
445
- }], name: [{
446
- type: Input
447
- }], inputElement: [{
448
- type: ViewChild,
449
- args: ['input', { static: false }]
450
- }], change: [{
451
- type: Output
452
- }], isFocused: [{
453
- type: Input
454
- }], id: [{
455
- type: Input
456
- }] } });
457
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbW9zYWljL3JhZGlvL3JhZGlvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21vc2FpYy9yYWRpby9yYWRpby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckUsT0FBTyxFQUdILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFPSCxVQUFVLEVBQ1YsYUFBYSxFQUNiLGFBQWEsRUFDYixTQUFTLEVBQ1osTUFBTSx5QkFBeUIsQ0FBQzs7OztBQUdqQyxxRUFBcUU7QUFDckUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBRXJCLDhDQUE4QztBQUM5QyxNQUFNLE9BQU8sYUFBYTtJQUN0QjtJQUNJLHFEQUFxRDtJQUM5QyxNQUFxQjtJQUM1QixzQ0FBc0M7SUFDL0IsS0FBVTtRQUZWLFdBQU0sR0FBTixNQUFNLENBQWU7UUFFckIsVUFBSyxHQUFMLEtBQUssQ0FBSztJQUNsQixDQUFDO0NBQ1A7QUFFRCxtREFBbUQ7QUFDbkQsb0JBQW9CO0FBQ3BCLE1BQU0sT0FBTyxnQkFBZ0I7SUFDekIsWUFBbUIsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUFHLENBQUM7Q0FDaEQ7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QUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsZUFBZSxRQUNuQjt3QkFDRixLQUFLLEVBQUUsaUJBQWlCO3dCQUN4QixXQUFXLEVBQUUsSUFBSTt3QkFDakIscUJBQXFCLEVBQUUsU0FBUzt3QkFDaEMscUJBQXFCLEVBQUUsVUFBVTtxQkFDcEM7OzBCQW9JSSxRQUFRO3dLQTdIVCxPQUFPO3NCQURWLEtBQUs7Z0JBNkJGLEtBQUs7c0JBRFIsS0FBSztnQkF3QkYsUUFBUTtzQkFEWCxLQUFLO2dCQWdCRixRQUFRO3NCQURYLEtBQUs7Z0JBVUYsYUFBYTtzQkFEaEIsS0FBSztnQkFTRyxJQUFJO3NCQUFaLEtBQUs7Z0JBR2lDLFlBQVk7c0JBQWxELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFPbEIsTUFBTTtzQkFBeEIsTUFBTTtnQkFNUCxTQUFTO3NCQURSLEtBQUs7Z0JBSUcsRUFBRTtzQkFBVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgVW5pcXVlU2VsZWN0aW9uRGlzcGF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIENhbkNvbG9yLFxuICAgIENhbkNvbG9yQ3RvcixcbiAgICBDYW5EaXNhYmxlLFxuICAgIENhbkRpc2FibGVDdG9yLFxuICAgIEhhc1RhYkluZGV4LFxuICAgIEhhc1RhYkluZGV4Q3RvcixcbiAgICBtaXhpbkNvbG9yLFxuICAgIG1peGluRGlzYWJsZWQsXG4gICAgbWl4aW5UYWJJbmRleCxcbiAgICB0b0Jvb2xlYW5cbn0gZnJvbSAnQHB0c2VjdXJpdHkvbW9zYWljL2NvcmUnO1xuXG5cbi8vIEluY3JlYXNpbmcgaW50ZWdlciBmb3IgZ2VuZXJhdGluZyB1bmlxdWUgaWRzIGZvciByYWRpbyBjb21wb25lbnRzLlxubGV0IG5leHRVbmlxdWVJZCA9IDA7XG5cbi8qKiBDaGFuZ2UgZXZlbnQgb2JqZWN0IGVtaXR0ZWQgYnkgTWNSYWRpby4gKi9cbmV4cG9ydCBjbGFzcyBNY1JhZGlvQ2hhbmdlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgLyoqIFRoZSBNY1JhZGlvQnV0dG9uIHRoYXQgZW1pdHMgdGhlIGNoYW5nZSBldmVudC4gKi9cbiAgICAgICAgcHVibGljIHNvdXJjZTogTWNSYWRpb0J1dHRvbixcbiAgICAgICAgLyoqIFRoZSB2YWx1ZSBvZiB0aGUgTWNSYWRpb0J1dHRvbi4gKi9cbiAgICAgICAgcHVibGljIHZhbHVlOiBhbnlcbiAgICApIHt9XG59XG5cbi8vIEJvaWxlcnBsYXRlIGZvciBhcHBseWluZyBtaXhpbnMgdG8gTWNSYWRpb0dyb3VwLlxuLyoqIEBkb2NzLXByaXZhdGUgKi9cbmV4cG9ydCBjbGFzcyBNY1JhZGlvR3JvdXBCYXNlIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cbn1cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgY29uc3QgTWNSYWRpb0dyb3VwTWl4aW5CYXNlOiBDYW5EaXNhYmxlQ3RvciAmIHR5cGVvZiBNY1JhZGlvR3JvdXBCYXNlID0gbWl4aW5EaXNhYmxlZChNY1JhZGlvR3JvdXBCYXNlKTtcblxuLyoqXG4gKiBQcm92aWRlciBFeHByZXNzaW9uIHRoYXQgYWxsb3dzIG1jLXJhZGlvLWdyb3VwIHRvIHJlZ2lzdGVyIGFzIGEgQ29udHJvbFZhbHVlQWNjZXNzb3IuIFRoaXNcbiAqIGFsbG93cyBpdCB0byBzdXBwb3J0IFsobmdNb2RlbCldIGFuZCBuZ0NvbnRyb2wuXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBNQ19SQURJT19HUk9VUF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWNSYWRpb0dyb3VwKSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdtYy1yYWRpby1ncm91cCcsXG4gICAgZXhwb3J0QXM6ICdtY1JhZGlvR3JvdXAnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgcm9sZTogJ3JhZGlvZ3JvdXAnLFxuICAgICAgICBjbGFzczogJ21jLXJhZGlvLWdyb3VwJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbTUNfUkFESU9fR1JPVVBfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUl1cbn0pXG5leHBvcnQgY2xhc3MgTWNSYWRpb0dyb3VwIGV4dGVuZHMgTWNSYWRpb0dyb3VwTWl4aW5CYXNlXG4gICAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQ2FuRGlzYWJsZSB7XG5cbiAgICAvKiogTmFtZSBvZiB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwLiBBbGwgcmFkaW8gYnV0dG9ucyBpbnNpZGUgdGhpcyBncm91cCB3aWxsIHVzZSB0aGlzIG5hbWUuICovXG4gICAgQElucHV0KClcbiAgICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgICB9XG5cbiAgICBzZXQgbmFtZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX25hbWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVSYWRpb0J1dHRvbk5hbWVzKCk7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGxhYmVscyBzaG91bGQgYXBwZWFyIGFmdGVyIG9yIGJlZm9yZSB0aGUgcmFkaW8tYnV0dG9ucy4gRGVmYXVsdHMgdG8gJ2FmdGVyJyAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGxhYmVsUG9zaXRpb24oKTogJ2JlZm9yZScgfCAnYWZ0ZXInIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVsUG9zaXRpb247XG4gICAgfVxuXG4gICAgc2V0IGxhYmVsUG9zaXRpb24odikge1xuICAgICAgICB0aGlzLl9sYWJlbFBvc2l0aW9uID0gdiA9PT0gJ2JlZm9yZScgPyAnYmVmb3JlJyA6ICdhZnRlcic7XG4gICAgICAgIHRoaXMubWFya1JhZGlvc0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIFZhbHVlIG9mIHRoZSByYWRpbyBidXR0b24uICovXG4gICAgQElucHV0KClcbiAgICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIHNldCB2YWx1ZShuZXdWYWx1ZTogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLl92YWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICAgIC8vIFNldCB0aGlzIGJlZm9yZSBwcm9jZWVkaW5nIHRvIGVuc3VyZSBubyBjaXJjdWxhciBsb29wIG9jY3VycyB3aXRoIHNlbGVjdGlvbi5cbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWU7XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRSYWRpb0Zyb21WYWx1ZSgpO1xuICAgICAgICAgICAgdGhpcy5jaGVja1NlbGVjdGVkUmFkaW9CdXR0b24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZSByYWRpbyBidXR0b24gaXMgc2VsZWN0ZWQuICovXG4gICAgQElucHV0KClcbiAgICBnZXQgc2VsZWN0ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgICB9XG5cbiAgICBzZXQgc2VsZWN0ZWQoc2VsZWN0ZWQ6IE1jUmFkaW9CdXR0b24gfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICAgIHRoaXMudmFsdWUgPSBzZWxlY3RlZCA/IHNlbGVjdGVkLnZhbHVlIDogbnVsbDtcbiAgICAgICAgdGhpcy5jaGVja1NlbGVjdGVkUmFkaW9CdXR0b24oKTtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgcmFkaW8gZ3JvdXAgaXMgZGlzYWJsZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZSkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHRvQm9vbGVhbih2YWx1ZSk7XG4gICAgICAgIHRoaXMubWFya1JhZGlvc0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHJhZGlvIGdyb3VwIGlzIHJlcXVpcmVkICovXG4gICAgQElucHV0KClcbiAgICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgICB9XG5cbiAgICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSB0b0Jvb2xlYW4odmFsdWUpO1xuICAgICAgICB0aGlzLm1hcmtSYWRpb3NGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZ3JvdXAgdmFsdWUgY2hhbmdlcy5cbiAgICAgKiBDaGFuZ2UgZXZlbnRzIGFyZSBvbmx5IGVtaXR0ZWQgd2hlbiB0aGUgdmFsdWUgY2hhbmdlcyBkdWUgdG8gdXNlciBpbnRlcmFjdGlvbiB3aXRoXG4gICAgICogYSByYWRpbyBidXR0b24gKHRoZSBzYW1lIGJlaGF2aW9yIGFzIGA8aW5wdXQgdHlwZS1cInJhZGlvXCI+YCkuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGNoYW5nZTogRXZlbnRFbWl0dGVyPE1jUmFkaW9DaGFuZ2U+ID0gbmV3IEV2ZW50RW1pdHRlcjxNY1JhZGlvQ2hhbmdlPigpO1xuXG4gICAgLyoqIENoaWxkIHJhZGlvIGJ1dHRvbnMuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IE1jUmFkaW9CdXR0b24pLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gICAgcmFkaW9zOiBRdWVyeUxpc3Q8TWNSYWRpb0J1dHRvbj47XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RlZCB2YWx1ZSBmb3IgZ3JvdXAuIFNob3VsZCBlcXVhbCB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGVkIHJhZGlvIGJ1dHRvbiBpZiB0aGVyZSAqaXMqXG4gICAgICogYSBjb3JyZXNwb25kaW5nIHJhZGlvIGJ1dHRvbiB3aXRoIGEgbWF0Y2hpbmcgdmFsdWUuIElmIHRoZXJlIGlzICpub3QqIHN1Y2ggYSBjb3JyZXNwb25kaW5nXG4gICAgICogcmFkaW8gYnV0dG9uLCB0aGlzIHZhbHVlIHBlcnNpc3RzIHRvIGJlIGFwcGxpZWQgaW4gY2FzZSBhIG5ldyByYWRpbyBidXR0b24gaXMgYWRkZWQgd2l0aCBhXG4gICAgICogbWF0Y2hpbmcgdmFsdWUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdmFsdWU6IGFueSA9IG51bGw7XG5cbiAgICAvKiogVGhlIEhUTUwgbmFtZSBhdHRyaWJ1dGUgYXBwbGllZCB0byByYWRpbyBidXR0b25zIGluIHRoaXMgZ3JvdXAuICovXG4gICAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nID0gYG1jLXJhZGlvLWdyb3VwLSR7bmV4dFVuaXF1ZUlkKyt9YDtcblxuICAgIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIHJhZGlvIGJ1dHRvbi4gU2hvdWxkIG1hdGNoIHZhbHVlLiAqL1xuICAgIHByaXZhdGUgX3NlbGVjdGVkOiBNY1JhZGlvQnV0dG9uIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogV2hldGhlciB0aGUgYHZhbHVlYCBoYXMgYmVlbiBzZXQgdG8gaXRzIGluaXRpYWwgdmFsdWUuICovXG4gICAgcHJpdmF0ZSBpc0luaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgbGFiZWxzIHNob3VsZCBhcHBlYXIgYWZ0ZXIgb3IgYmVmb3JlIHRoZSByYWRpby1idXR0b25zLiBEZWZhdWx0cyB0byAnYWZ0ZXInICovXG4gICAgcHJpdmF0ZSBfbGFiZWxQb3NpdGlvbjogJ2JlZm9yZScgfCAnYWZ0ZXInID0gJ2FmdGVyJztcblxuICAgIC8qKiBXaGV0aGVyIHRoZSByYWRpbyBncm91cCBpcyBkaXNhYmxlZC4gKi9cbiAgICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHJhZGlvIGdyb3VwIGlzIHJlcXVpcmVkLiAqL1xuICAgIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZik7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBtZXRob2QgdG8gYmUgY2FsbGVkIGluIG9yZGVyIHRvIHVwZGF0ZSBuZ01vZGVsICovXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbjogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIC8qKlxuICAgICAqIG9uVG91Y2ggZnVuY3Rpb24gcmVnaXN0ZXJlZCB2aWEgcmVnaXN0ZXJPblRvdWNoIChDb250cm9sVmFsdWVBY2Nlc3NvcikuXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgIG9uVG91Y2hlZDogKCkgPT4gYW55ID0gKCkgPT4ge307XG5cbiAgICBjaGVja1NlbGVjdGVkUmFkaW9CdXR0b24oKSB7XG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZCAmJiAhdGhpcy5fc2VsZWN0ZWQuY2hlY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWQuY2hlY2tlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIHByb3BlcnRpZXMgb25jZSBjb250ZW50IGNoaWxkcmVuIGFyZSBhdmFpbGFibGUuXG4gICAgICogVGhpcyBhbGxvd3MgdXMgdG8gcHJvcGFnYXRlIHJlbGV2YW50IGF0dHJpYnV0ZXMgdG8gYXNzb2NpYXRlZCBidXR0b25zLlxuICAgICAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgLy8gTWFyayB0aGlzIGNvbXBvbmVudCBhcyBpbml0aWFsaXplZCBpbiBBZnRlckNvbnRlbnRJbml0IGJlY2F1c2UgdGhlIGluaXRpYWwgdmFsdWUgY2FuXG4gICAgICAgIC8vIHBvc3NpYmx5IGJlIHNldCBieSBOZ01vZGVsIG9uIE1jUmFkaW9Hcm91cCwgYW5kIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIE9uSW5pdCBvZiB0aGVcbiAgICAgICAgLy8gTmdNb2RlbCBvY2N1cnMgKmFmdGVyKiB0aGUgT25Jbml0IG9mIHRoZSBNY1JhZGlvR3JvdXAuXG4gICAgICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWFyayB0aGlzIGdyb3VwIGFzIGJlaW5nIFwidG91Y2hlZFwiIChmb3IgbmdNb2RlbCkuIE1lYW50IHRvIGJlIGNhbGxlZCBieSB0aGUgY29udGFpbmVkXG4gICAgICogcmFkaW8gYnV0dG9ucyB1cG9uIHRoZWlyIGJsdXIuXG4gICAgICovXG4gICAgdG91Y2goKSB7XG4gICAgICAgIGlmICh0aGlzLm9uVG91Y2hlZCkge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBEaXNwYXRjaCBjaGFuZ2UgZXZlbnQgd2l0aCBjdXJyZW50IHNlbGVjdGlvbiBhbmQgZ3JvdXAgdmFsdWUuICovXG4gICAgZW1pdENoYW5nZUV2ZW50KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KG5ldyBNY1JhZGlvQ2hhbmdlKHRoaXMuX3NlbGVjdGVkISwgdGhpcy5fdmFsdWUpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1hcmtSYWRpb3NGb3JDaGVjaygpIHtcbiAgICAgICAgaWYgKHRoaXMucmFkaW9zKSB7XG4gICAgICAgICAgICB0aGlzLnJhZGlvcy5mb3JFYWNoKChyYWRpbykgPT4gcmFkaW8ubWFya0ZvckNoZWNrKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbW9kZWwgdmFsdWUuIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgICovXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgYSBjYWxsYmFjayB0byBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgbW9kZWwgdmFsdWUgY2hhbmdlcy5cbiAgICAgKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgICAqIEBwYXJhbSBmbiBDYWxsYmFjayB0byBiZSByZWdpc3RlcmVkLlxuICAgICAqL1xuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKSB7XG4gICAgICAgIHRoaXMuY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbiA9IGZuO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIHRvIGJlIHRyaWdnZXJlZCB3aGVuIHRoZSBjb250cm9sIGlzIHRvdWNoZWQuXG4gICAgICogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICAgKiBAcGFyYW0gZm4gQ2FsbGJhY2sgdG8gYmUgcmVnaXN0ZXJlZC5cbiAgICAgKi9cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgZGlzYWJsZWQgc3RhdGUgb2YgdGhlIGNvbnRyb2wuIEltcGxlbWVudGVkIGFzIGEgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICAgKiBAcGFyYW0gaXNEaXNhYmxlZCBXaGV0aGVyIHRoZSBjb250cm9sIHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICAgKi9cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVSYWRpb0J1dHRvbk5hbWVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJhZGlvcz8uZm9yRWFjaCgocmFkaW8pID0+IHJhZGlvLm5hbWUgPSB0aGlzLm5hbWUpO1xuICAgIH1cblxuICAgIC8qKiBVcGRhdGVzIHRoZSBgc2VsZWN0ZWRgIHJhZGlvIGJ1dHRvbiBmcm9tIHRoZSBpbnRlcm5hbCBfdmFsdWUgc3RhdGUuICovXG4gICAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RlZFJhZGlvRnJvbVZhbHVlKCk6IHZvaWQge1xuICAgICAgICAvLyBJZiB0aGUgdmFsdWUgYWxyZWFkeSBtYXRjaGVzIHRoZSBzZWxlY3RlZCByYWRpbywgZG8gbm90aGluZy5cbiAgICAgICAgY29uc3QgaXNBbHJlYWR5U2VsZWN0ZWQgPSB0aGlzLl9zZWxlY3RlZCAhPT0gbnVsbCAmJiB0aGlzLl9zZWxlY3RlZC52YWx1ZSA9PT0gdGhpcy5fdmFsdWU7XG5cbiAgICAgICAgaWYgKHRoaXMucmFkaW9zICE9IG51bGwgJiYgIWlzQWxyZWFkeVNlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IG51bGw7XG5cbiAgICAgICAgICAgIHRoaXMucmFkaW9zLmZvckVhY2goKHJhZGlvKSA9PiB7XG4gICAgICAgICAgICAgICAgcmFkaW8uY2hlY2tlZCA9IHRoaXMudmFsdWUgPT09IHJhZGlvLnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJhZGlvLmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSByYWRpbztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4vLyBCb2lsZXJwbGF0ZSBmb3IgYXBwbHlpbmcgbWl4aW5zIHRvIE1jUmFkaW9CdXR0b24uXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuYWJzdHJhY3QgY2xhc3MgTWNSYWRpb0J1dHRvbkJhc2Uge1xuICAgIC8vIFNpbmNlIHRoZSBkaXNhYmxlZCBwcm9wZXJ0eSBpcyBtYW51YWxseSBkZWZpbmVkIGZvciB0aGUgTWNSYWRpb0J1dHRvbiBhbmQgaXNuJ3Qgc2V0IHVwIGluXG4gICAgLy8gdGhlIG1peGluIGJhc2UgY2xhc3MuIFRvIGJlIGFibGUgdG8gdXNlIHRoZSB0YWJpbmRleCBtaXhpbiwgYSBkaXNhYmxlZCBwcm9wZXJ0eSBtdXN0IGJlXG4gICAgLy8gZGVmaW5lZCB0byBwcm9wZXJseSB3b3JrLlxuICAgIGFic3RyYWN0IGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG59XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgY29uc3QgTWNSYWRpb0J1dHRvbk1peGluQmFzZTpcbiAgICBDYW5Db2xvckN0b3IgJiBIYXNUYWJJbmRleEN0b3IgJiB0eXBlb2YgTWNSYWRpb0J1dHRvbkJhc2UgPSBtaXhpbkNvbG9yKG1peGluVGFiSW5kZXgoTWNSYWRpb0J1dHRvbkJhc2UpKTtcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ21jLXJhZGlvLWJ1dHRvbicsXG4gICAgdGVtcGxhdGVVcmw6ICdyYWRpby5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ3JhZGlvLnNjc3MnXSxcbiAgICBpbnB1dHM6IFsnY29sb3InLCAndGFiSW5kZXgnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGV4cG9ydEFzOiAnbWNSYWRpb0J1dHRvbicsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ21jLXJhZGlvLWJ1dHRvbicsXG4gICAgICAgICdbYXR0ci5pZF0nOiAnaWQnLFxuICAgICAgICAnW2NsYXNzLm1jLXNlbGVjdGVkXSc6ICdjaGVja2VkJyxcbiAgICAgICAgJ1tjbGFzcy5tYy1kaXNhYmxlZF0nOiAnZGlzYWJsZWQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBNY1JhZGlvQnV0dG9uIGV4dGVuZHMgTWNSYWRpb0J1dHRvbk1peGluQmFzZVxuICAgIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENhbkNvbG9yLCBIYXNUYWJJbmRleCB7XG5cbiAgICAvKiogV2hldGhlciB0aGlzIHJhZGlvIGJ1dHRvbiBpcyBjaGVja2VkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGNoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGVja2VkO1xuICAgIH1cblxuICAgIHNldCBjaGVja2VkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IG5ld0NoZWNrZWRTdGF0ZSA9IHRvQm9vbGVhbih2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX2NoZWNrZWQgIT09IG5ld0NoZWNrZWRTdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fY2hlY2tlZCA9IG5ld0NoZWNrZWRTdGF0ZTtcblxuICAgICAgICAgICAgaWYgKG5ld0NoZWNrZWRTdGF0ZSAmJiB0aGlzLnJhZGlvR3JvdXAgJiYgdGhpcy5yYWRpb0dyb3VwLnZhbHVlICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yYWRpb0dyb3VwLnNlbGVjdGVkID0gdGhpcztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIW5ld0NoZWNrZWRTdGF0ZSAmJiB0aGlzLnJhZGlvR3JvdXAgJiYgdGhpcy5yYWRpb0dyb3VwLnZhbHVlID09PSB0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgLy8gV2hlbiB1bmNoZWNraW5nIHRoZSBzZWxlY3RlZCByYWRpbyBidXR0b24sIHVwZGF0ZSB0aGUgc2VsZWN0ZWQgcmFkaW9cbiAgICAgICAgICAgICAgICAvLyBwcm9wZXJ0eSBvbiB0aGUgZ3JvdXAuXG4gICAgICAgICAgICAgICAgdGhpcy5yYWRpb0dyb3VwLnNlbGVjdGVkID0gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ld0NoZWNrZWRTdGF0ZSkge1xuICAgICAgICAgICAgICAgIC8vIE5vdGlmeSBhbGwgcmFkaW8gYnV0dG9ucyB3aXRoIHRoZSBzYW1lIG5hbWUgdG8gdW4tY2hlY2suXG4gICAgICAgICAgICAgICAgdGhpcy5yYWRpb0Rpc3BhdGNoZXIubm90aWZ5KHRoaXMuaWQsIHRoaXMubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFRoZSB2YWx1ZSBvZiB0aGlzIHJhZGlvIGJ1dHRvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuX3ZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMucmFkaW9Hcm91cCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIGNoZWNrZWQgd2hlbiB0aGUgdmFsdWUgY2hhbmdlZCB0byBtYXRjaCB0aGUgcmFkaW8gZ3JvdXAncyB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrZWQgPSB0aGlzLnJhZGlvR3JvdXAudmFsdWUgPT09IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yYWRpb0dyb3VwLnNlbGVjdGVkID0gdGhpcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgcmFkaW8gYnV0dG9uIGlzIGRpc2FibGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgfHwgKHRoaXMucmFkaW9Hcm91cCAhPSBudWxsICYmIHRoaXMucmFkaW9Hcm91cC5kaXNhYmxlZCk7XG4gICAgfVxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBuZXdEaXNhYmxlZFN0YXRlID0gdG9Cb29sZWFuKHZhbHVlKTtcblxuICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQgIT09IG5ld0Rpc2FibGVkU3RhdGUpIHtcblxuICAgICAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBuZXdEaXNhYmxlZFN0YXRlO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZSByYWRpbyBidXR0b24gaXMgcmVxdWlyZWQuICovXG4gICAgQElucHV0KClcbiAgICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZCB8fCAodGhpcy5yYWRpb0dyb3VwICYmIHRoaXMucmFkaW9Hcm91cC5yZXF1aXJlZCk7XG4gICAgfVxuICAgIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9yZXF1aXJlZCA9IHRvQm9vbGVhbih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGxhYmVsIHNob3VsZCBhcHBlYXIgYWZ0ZXIgb3IgYmVmb3JlIHRoZSByYWRpbyBidXR0b24uIERlZmF1bHRzIHRvICdhZnRlcicgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBsYWJlbFBvc2l0aW9uKCk6ICdiZWZvcmUnIHwgJ2FmdGVyJyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sYWJlbFBvc2l0aW9uIHx8ICh0aGlzLnJhZGlvR3JvdXAgJiYgdGhpcy5yYWRpb0dyb3VwLmxhYmVsUG9zaXRpb24pIHx8ICdhZnRlcic7XG4gICAgfVxuICAgIHNldCBsYWJlbFBvc2l0aW9uKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2xhYmVsUG9zaXRpb24gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQW5hbG9nIHRvIEhUTUwgJ25hbWUnIGF0dHJpYnV0ZSB1c2VkIHRvIGdyb3VwIHJhZGlvcyBmb3IgdW5pcXVlIHNlbGVjdGlvbi4gKi9cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKiogVGhlIG5hdGl2ZSBgPGlucHV0IHR5cGU9cmFkaW8+YCBlbGVtZW50ICovXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBjaGVja2VkIHN0YXRlIG9mIHRoaXMgcmFkaW8gYnV0dG9uIGNoYW5nZXMuXG4gICAgICogQ2hhbmdlIGV2ZW50cyBhcmUgb25seSBlbWl0dGVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMgZHVlIHRvIHVzZXIgaW50ZXJhY3Rpb24gd2l0aFxuICAgICAqIHRoZSByYWRpbyBidXR0b24gKHRoZSBzYW1lIGJlaGF2aW9yIGFzIGA8aW5wdXQgdHlwZS1cInJhZGlvXCI+YCkuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGNoYW5nZTogRXZlbnRFbWl0dGVyPE1jUmFkaW9DaGFuZ2U+ID0gbmV3IEV2ZW50RW1pdHRlcjxNY1JhZGlvQ2hhbmdlPigpO1xuXG4gICAgLyoqIFRoZSBwYXJlbnQgcmFkaW8gZ3JvdXAuIE1heSBvciBtYXkgbm90IGJlIHByZXNlbnQuICovXG4gICAgcmFkaW9Hcm91cDogTWNSYWRpb0dyb3VwO1xuXG4gICAgQElucHV0KClcbiAgICBpc0ZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBUaGUgdW5pcXVlIElEIGZvciB0aGUgcmFkaW8gYnV0dG9uLiAqL1xuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG5cbiAgICAvKiogSUQgb2YgdGhlIG5hdGl2ZSBpbnB1dCBlbGVtZW50IGluc2lkZSBgPG1jLXJhZGlvLWJ1dHRvbj5gICovXG4gICAgZ2V0IGlucHV0SWQoKTogc3RyaW5nIHsgcmV0dXJuIGAke3RoaXMuaWQgfHwgdGhpcy51bmlxdWVJZH0taW5wdXRgOyB9XG5cbiAgICBwcml2YXRlIF9sYWJlbFBvc2l0aW9uOiAnYmVmb3JlJyB8ICdhZnRlcic7XG5cbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZTptZW1iZXItb3JkZXJpbmcgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVuaXF1ZUlkOiBzdHJpbmcgPSBgbWMtcmFkaW8tJHsrK25leHRVbmlxdWVJZH1gO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhpcyByYWRpbyBpcyBjaGVja2VkLiAqL1xuICAgIHByaXZhdGUgX2NoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoaXMgcmFkaW8gaXMgZGlzYWJsZWQuICovXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICAvKiogV2hldGhlciB0aGlzIHJhZGlvIGlzIHJlcXVpcmVkLiAqL1xuICAgIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuO1xuXG4gICAgLyoqIFZhbHVlIGFzc2lnbmVkIHRvIHRoaXMgcmFkaW8uICovXG4gICAgcHJpdmF0ZSBfdmFsdWU6IGFueSA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgcmFkaW9Hcm91cDogTWNSYWRpb0dyb3VwLFxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByYWRpb0Rpc3BhdGNoZXI6IFVuaXF1ZVNlbGVjdGlvbkRpc3BhdGNoZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZik7XG5cbiAgICAgICAgdGhpcy5pZCA9IHRoaXMudW5pcXVlSWQ7XG5cbiAgICAgICAgdGhpcy5yYWRpb0dyb3VwID0gcmFkaW9Hcm91cDtcblxuICAgICAgICB0aGlzLnJlbW92ZVVuaXF1ZVNlbGVjdGlvbkxpc3RlbmVyID0gcmFkaW9EaXNwYXRjaGVyXG4gICAgICAgICAgICAubGlzdGVuKChpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaWQgIT09IHRoaXMuaWQgJiYgbmFtZSA9PT0gdGhpcy5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5yYWRpb0dyb3VwKSB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgcmFkaW8gaXMgaW5zaWRlIGEgcmFkaW8gZ3JvdXAsIGRldGVybWluZSBpZiBpdCBzaG91bGQgYmUgY2hlY2tlZFxuICAgICAgICAgICAgdGhpcy5jaGVja2VkID0gdGhpcy5yYWRpb0dyb3VwLnZhbHVlID09PSB0aGlzLl92YWx1ZTtcbiAgICAgICAgICAgIC8vIENvcHkgbmFtZSBmcm9tIHBhcmVudCByYWRpbyBncm91cFxuICAgICAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5yYWRpb0dyb3VwLm5hbWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yXG4gICAgICAgICAgICAubW9uaXRvcih0aGlzLmVsZW1lbnRSZWYsIHRydWUpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChmb2N1c09yaWdpbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghZm9jdXNPcmlnaW4gJiYgdGhpcy5yYWRpb0dyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmFkaW9Hcm91cC50b3VjaCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLmVsZW1lbnRSZWYpO1xuICAgICAgICB0aGlzLnJlbW92ZVVuaXF1ZVNlbGVjdGlvbkxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgLyoqIEZvY3VzZXMgdGhlIHJhZGlvIGJ1dHRvbi4gKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hcmtzIHRoZSByYWRpbyBidXR0b24gYXMgbmVlZGluZyBjaGVja2luZyBmb3IgY2hhbmdlIGRldGVjdGlvbi5cbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBleHBvc2VkIGJlY2F1c2UgdGhlIHBhcmVudCByYWRpbyBncm91cCB3aWxsIGRpcmVjdGx5XG4gICAgICogdXBkYXRlIGJvdW5kIHByb3BlcnRpZXMgb2YgdGhlIHJhZGlvIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBtYXJrRm9yQ2hlY2soKSB7XG4gICAgICAgIC8vIFdoZW4gZ3JvdXAgdmFsdWUgY2hhbmdlcywgdGhlIGJ1dHRvbiB3aWxsIG5vdCBiZSBub3RpZmllZC4gVXNlIGBtYXJrRm9yQ2hlY2tgIHRvIGV4cGxpY2l0XG4gICAgICAgIC8vIHVwZGF0ZSByYWRpbyBidXR0b24ncyBzdGF0dXNcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBvbklucHV0Q2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIFdlIGhhdmUgdG8gc3RvcCBwcm9wYWdhdGlvbiBmb3IgY2xpY2sgZXZlbnRzIG9uIHRoZSB2aXN1YWwgaGlkZGVuIGlucHV0IGVsZW1lbnQuXG4gICAgICAgIC8vIEJ5IGRlZmF1bHQsIHdoZW4gYSB1c2VyIGNsaWNrcyBvbiBhIGxhYmVsIGVsZW1lbnQsIGEgZ2VuZXJhdGVkIGNsaWNrIGV2ZW50IHdpbGwgYmVcbiAgICAgICAgLy8gZGlzcGF0Y2hlZCBvbiB0aGUgYXNzb2NpYXRlZCBpbnB1dCBlbGVtZW50LiBTaW5jZSB3ZSBhcmUgdXNpbmcgYSBsYWJlbCBlbGVtZW50IGFzIG91clxuICAgICAgICAvLyByb290IGNvbnRhaW5lciwgdGhlIGNsaWNrIGV2ZW50IG9uIHRoZSBgcmFkaW8tYnV0dG9uYCB3aWxsIGJlIGV4ZWN1dGVkIHR3aWNlLlxuICAgICAgICAvLyBUaGUgcmVhbCBjbGljayBldmVudCB3aWxsIGJ1YmJsZSB1cCwgYW5kIHRoZSBnZW5lcmF0ZWQgY2xpY2sgZXZlbnQgYWxzbyB0cmllcyB0byBidWJibGUgdXAuXG4gICAgICAgIC8vIFRoaXMgd2lsbCBsZWFkIHRvIG11bHRpcGxlIGNsaWNrIGV2ZW50cy5cbiAgICAgICAgLy8gUHJldmVudGluZyBidWJibGluZyAmIGZvcmNpbmcgc2tpcCBldmVudCBmcm9tIGNsb3NpbmcgYWN0aW9ucyBmb3IgdGhlIHNlY29uZCBldmVudCB3aWxsIHNvbHZlIHRoYXQgaXNzdWUuXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAoZXZlbnQgYXMgRXZlbnQgJiB7IG1jUG9wb3ZlclByZXZlbnRIaWRlOiBib29sZWFuIH0pLm1jUG9wb3ZlclByZXZlbnRIaWRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbklucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCkge1xuICAgICAgICAvLyBXZSBhbHdheXMgaGF2ZSB0byBzdG9wIHByb3BhZ2F0aW9uIG9uIHRoZSBjaGFuZ2UgZXZlbnQuXG4gICAgICAgIC8vIE90aGVyd2lzZSB0aGUgY2hhbmdlIGV2ZW50LCBmcm9tIHRoZSBpbnB1dCBlbGVtZW50LCB3aWxsIGJ1YmJsZSB1cCBhbmRcbiAgICAgICAgLy8gZW1pdCBpdHMgZXZlbnQgb2JqZWN0IHRvIHRoZSBgY2hhbmdlYCBvdXRwdXQuXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIGNvbnN0IGdyb3VwVmFsdWVDaGFuZ2VkID0gdGhpcy5yYWRpb0dyb3VwICYmIHRoaXMudmFsdWUgIT09IHRoaXMucmFkaW9Hcm91cC52YWx1ZTtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lbWl0Q2hhbmdlRXZlbnQoKTtcblxuICAgICAgICBpZiAodGhpcy5yYWRpb0dyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLnJhZGlvR3JvdXAuY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbih0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucmFkaW9Hcm91cC50b3VjaCgpO1xuXG4gICAgICAgICAgICBpZiAoZ3JvdXBWYWx1ZUNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJhZGlvR3JvdXAuZW1pdENoYW5nZUV2ZW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogVW5yZWdpc3RlciBmdW5jdGlvbiBmb3IgX3JhZGlvRGlzcGF0Y2hlciAqL1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVtb3ZlVW5pcXVlU2VsZWN0aW9uTGlzdGVuZXI6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIC8qKiBEaXNwYXRjaCBjaGFuZ2UgZXZlbnQgd2l0aCBjdXJyZW50IHZhbHVlLiAqL1xuICAgIHByaXZhdGUgZW1pdENoYW5nZUV2ZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KG5ldyBNY1JhZGlvQ2hhbmdlKHRoaXMsIHRoaXMuX3ZhbHVlKSk7XG4gICAgfVxufVxuIiwiPGxhYmVsIGNsYXNzPVwibWMtcmFkaW8tbGFiZWxcIiBbYXR0ci5mb3JdPVwiaW5wdXRJZFwiICNsYWJlbD5cbiAgICA8aW5wdXQgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgY2xhc3M9XCJtYy1yYWRpby1pbnB1dCBjZGstdmlzdWFsbHktaGlkZGVuXCJcbiAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgW2NoZWNrZWRdPVwiY2hlY2tlZFwiXG4gICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFwiXG4gICAgICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgIChjaGFuZ2UpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgKGNsaWNrKT1cIm9uSW5wdXRDbGljaygkZXZlbnQpXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwibWMtcmFkaW8tbGFiZWwtY29udGVudFwiIFtjbGFzcy5tYy1yYWRpby1sYWJlbC1iZWZvcmVdPVwibGFiZWxQb3NpdGlvbiA9PSAnYmVmb3JlJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWMtcmFkaW8tYnV0dG9uX19vdXRlci1jaXJjbGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYy1yYWRpby1idXR0b25fX2lubmVyLWNpcmNsZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYy1yYWRpby1idXR0b25fX2lubmVyLWNpcmNsZS1jYXBcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibWMtcmFkaW9fX3RleHQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1jLXJhZGlvX190ZXh0XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJtYy1oaW50XCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbGFiZWw+XG4iXX0=
@@ -1,65 +0,0 @@
1
- import { Directionality } from '@angular/cdk/bidi';
2
- import { Overlay, ScrollDispatcher } from '@angular/cdk/overlay';
3
- import { Directive, ElementRef, Inject, NgZone, Optional, ViewContainerRef } from '@angular/core';
4
- import { McOption } from '@ptsecurity/mosaic/core';
5
- import { McTooltipTrigger, MC_TOOLTIP_SCROLL_STRATEGY } from '@ptsecurity/mosaic/tooltip';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@ptsecurity/mosaic/core";
8
- import * as i2 from "@angular/cdk/overlay";
9
- import * as i3 from "@angular/cdk/bidi";
10
- export class McOptionTooltip extends McTooltipTrigger {
11
- constructor(option, overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction) {
12
- super(overlay, elementRef, ngZone, scrollDispatcher, hostView, scrollStrategy, direction);
13
- this.option = option;
14
- }
15
- get textElement() {
16
- return this.option.textElement.nativeElement;
17
- }
18
- get isOverflown() {
19
- return this.textElement.clientWidth < this.textElement.scrollWidth;
20
- }
21
- ngAfterViewInit() {
22
- this.content = this.option.viewValue;
23
- this.resizeObserver = new ResizeObserver(() => this.disabled = !this.isOverflown);
24
- this.mutationObserver = new MutationObserver(() => this.content = this.option.viewValue);
25
- this.mutationObserver.observe(this.textElement, {
26
- characterData: true, attributes: false, childList: true, subtree: true
27
- });
28
- }
29
- ngOnDestroy() {
30
- super.ngOnDestroy();
31
- if (this.resizeObserver) {
32
- this.resizeObserver.unobserve(this.textElement);
33
- this.resizeObserver.disconnect();
34
- }
35
- if (this.mutationObserver) {
36
- this.mutationObserver.disconnect();
37
- }
38
- }
39
- onMouseEnter() {
40
- this.resizeObserver.observe(this.textElement);
41
- this.disabled = !this.isOverflown;
42
- }
43
- onMouseLeave() {
44
- this.resizeObserver.unobserve(this.textElement);
45
- this.disabled = true;
46
- }
47
- }
48
- /** @nocollapse */ McOptionTooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: McOptionTooltip, deps: [{ token: i1.McOption }, { token: i2.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i2.ScrollDispatcher }, { token: i0.ViewContainerRef }, { token: MC_TOOLTIP_SCROLL_STRATEGY }, { token: i3.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
49
- /** @nocollapse */ McOptionTooltip.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: McOptionTooltip, selector: "mc-option", host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" } }, usesInheritance: true, ngImport: i0 });
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: McOptionTooltip, decorators: [{
51
- type: Directive,
52
- args: [{
53
- selector: 'mc-option',
54
- host: {
55
- '(mouseenter)': 'onMouseEnter()',
56
- '(mouseleave)': 'onMouseLeave()'
57
- }
58
- }]
59
- }], ctorParameters: function () { return [{ type: i1.McOption }, { type: i2.Overlay }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i2.ScrollDispatcher }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
60
- type: Inject,
61
- args: [MC_TOOLTIP_SCROLL_STRATEGY]
62
- }] }, { type: i3.Directionality, decorators: [{
63
- type: Optional
64
- }] }]; } });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvc2VsZWN0L3NlbGVjdC1vcHRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUVILFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFFTixRQUFRLEVBQ1IsZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFVMUYsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZ0JBQWdCO0lBWWpELFlBQ1ksTUFBZ0IsRUFDeEIsT0FBZ0IsRUFDaEIsVUFBc0IsRUFDdEIsTUFBYyxFQUNkLGdCQUFrQyxFQUNsQyxRQUEwQixFQUNVLGNBQWMsRUFDdEMsU0FBeUI7UUFFckMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFUbEYsV0FBTSxHQUFOLE1BQU0sQ0FBVTtJQVU1QixDQUFDO0lBbkJELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO0lBQ3ZFLENBQUM7SUFlRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUVyQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFbEYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXpGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUM1QyxhQUFhLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSTtTQUN6RSxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVwQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDcEM7UUFFRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDdEM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU5QyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN0QyxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVoRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDOzsrSEE1RFEsZUFBZSxpTEFtQlosMEJBQTBCO21IQW5CN0IsZUFBZTsyRkFBZixlQUFlO2tCQVAzQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxXQUFXO29CQUNyQixJQUFJLEVBQUU7d0JBQ0YsY0FBYyxFQUFFLGdCQUFnQjt3QkFDaEMsY0FBYyxFQUFFLGdCQUFnQjtxQkFDbkM7aUJBQ0o7OzBCQW9CUSxNQUFNOzJCQUFDLDBCQUEwQjs7MEJBQ2pDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IE92ZXJsYXksIFNjcm9sbERpc3BhdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1jT3B0aW9uIH0gZnJvbSAnQHB0c2VjdXJpdHkvbW9zYWljL2NvcmUnO1xuaW1wb3J0IHsgTWNUb29sdGlwVHJpZ2dlciwgTUNfVE9PTFRJUF9TQ1JPTExfU1RSQVRFR1kgfSBmcm9tICdAcHRzZWN1cml0eS9tb3NhaWMvdG9vbHRpcCc7XG5cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdtYy1vcHRpb24nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhtb3VzZWVudGVyKSc6ICdvbk1vdXNlRW50ZXIoKScsXG4gICAgICAgICcobW91c2VsZWF2ZSknOiAnb25Nb3VzZUxlYXZlKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBNY09wdGlvblRvb2x0aXAgZXh0ZW5kcyBNY1Rvb2x0aXBUcmlnZ2VyIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcbiAgICBwcml2YXRlIG11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgICBnZXQgdGV4dEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb24udGV4dEVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBnZXQgaXNPdmVyZmxvd24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRFbGVtZW50LmNsaWVudFdpZHRoIDwgdGhpcy50ZXh0RWxlbWVudC5zY3JvbGxXaWR0aDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBvcHRpb246IE1jT3B0aW9uLFxuICAgICAgICBvdmVybGF5OiBPdmVybGF5LFxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgc2Nyb2xsRGlzcGF0Y2hlcjogU2Nyb2xsRGlzcGF0Y2hlcixcbiAgICAgICAgaG9zdFZpZXc6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIEBJbmplY3QoTUNfVE9PTFRJUF9TQ1JPTExfU1RSQVRFR1kpIHNjcm9sbFN0cmF0ZWd5LFxuICAgICAgICBAT3B0aW9uYWwoKSBkaXJlY3Rpb246IERpcmVjdGlvbmFsaXR5XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKG92ZXJsYXksIGVsZW1lbnRSZWYsIG5nWm9uZSwgc2Nyb2xsRGlzcGF0Y2hlciwgaG9zdFZpZXcsIHNjcm9sbFN0cmF0ZWd5LCBkaXJlY3Rpb24pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gdGhpcy5vcHRpb24udmlld1ZhbHVlO1xuXG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gdGhpcy5kaXNhYmxlZCA9ICF0aGlzLmlzT3ZlcmZsb3duKTtcblxuICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB0aGlzLmNvbnRlbnQgPSB0aGlzLm9wdGlvbi52aWV3VmFsdWUpO1xuXG4gICAgICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKHRoaXMudGV4dEVsZW1lbnQsIHtcbiAgICAgICAgICAgIGNoYXJhY3RlckRhdGE6IHRydWUsIGF0dHJpYnV0ZXM6IGZhbHNlLCBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG5cbiAgICAgICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKHRoaXMudGV4dEVsZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tdXRhdGlvbk9ic2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Nb3VzZUVudGVyKCkge1xuICAgICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy50ZXh0RWxlbWVudCk7XG5cbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9ICF0aGlzLmlzT3ZlcmZsb3duO1xuICAgIH1cblxuICAgIG9uTW91c2VMZWF2ZSgpIHtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci51bm9ic2VydmUodGhpcy50ZXh0RWxlbWVudCk7XG5cbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7XG4gICAgfVxufVxuIl19