@ptsecurity/mosaic 12.2.2 → 13.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 (702) hide show
  1. package/_theming.scss +78 -48
  2. package/_visual.scss +11 -8
  3. package/autocomplete/README.md +0 -0
  4. package/autocomplete/package.json +5 -5
  5. package/button/README.md +0 -0
  6. package/button/button.component.d.ts +17 -14
  7. package/button/button.module.d.ts +1 -1
  8. package/button/package.json +5 -5
  9. package/button-toggle/README.md +0 -0
  10. package/button-toggle/package.json +5 -5
  11. package/card/README.md +0 -0
  12. package/card/package.json +5 -5
  13. package/checkbox/README.md +1 -0
  14. package/checkbox/package.json +5 -5
  15. package/core/formatters/date/formatter.d.ts +4 -4
  16. package/core/formatters/date/templates/en-US.d.ts +8 -8
  17. package/core/formatters/date/templates/ru-RU.d.ts +8 -8
  18. package/core/package.json +5 -5
  19. package/datepicker/README.md +0 -0
  20. package/datepicker/package.json +5 -5
  21. package/design-tokens/package.json +5 -5
  22. package/design-tokens/tokens/components/navbar.json5 +12 -9
  23. package/design-tokens/tokens.d.ts +11 -8
  24. package/divider/README.md +0 -0
  25. package/divider/package.json +5 -5
  26. package/dropdown/package.json +5 -5
  27. package/{esm2015/autocomplete/autocomplete-origin.directive.js → esm2020/autocomplete/autocomplete-origin.directive.mjs} +4 -4
  28. package/{esm2015/autocomplete/autocomplete-trigger.directive.js → esm2020/autocomplete/autocomplete-trigger.directive.mjs} +4 -4
  29. package/esm2020/autocomplete/autocomplete.component.mjs +154 -0
  30. package/{esm2015/autocomplete/autocomplete.module.js → esm2020/autocomplete/autocomplete.module.mjs} +5 -5
  31. package/{esm2015/autocomplete/index.js → esm2020/autocomplete/index.mjs} +0 -0
  32. package/{esm2015/autocomplete/ptsecurity-mosaic-autocomplete.js → esm2020/autocomplete/ptsecurity-mosaic-autocomplete.mjs} +0 -0
  33. package/{esm2015/autocomplete/public-api.js → esm2020/autocomplete/public-api.mjs} +0 -0
  34. package/esm2020/button/button.component.mjs +129 -0
  35. package/esm2020/button/button.module.mjs +38 -0
  36. package/{esm2015/button/index.js → esm2020/button/index.mjs} +0 -0
  37. package/{esm2015/button/ptsecurity-mosaic-button.js → esm2020/button/ptsecurity-mosaic-button.mjs} +0 -0
  38. package/{esm2015/button/public-api.js → esm2020/button/public-api.mjs} +0 -0
  39. package/esm2020/button-toggle/button-toggle.component.mjs +362 -0
  40. package/{esm2015/button-toggle/button-toggle.module.js → esm2020/button-toggle/button-toggle.module.mjs} +5 -5
  41. package/{esm2015/button-toggle/index.js → esm2020/button-toggle/index.mjs} +0 -0
  42. package/{esm2015/button-toggle/ptsecurity-mosaic-button-toggle.js → esm2020/button-toggle/ptsecurity-mosaic-button-toggle.mjs} +0 -0
  43. package/{esm2015/button-toggle/public-api.js → esm2020/button-toggle/public-api.mjs} +0 -0
  44. package/esm2020/card/card.component.mjs +80 -0
  45. package/{esm2015/card/card.module.js → esm2020/card/card.module.mjs} +5 -5
  46. package/{esm2015/card/index.js → esm2020/card/index.mjs} +0 -0
  47. package/{esm2015/card/ptsecurity-mosaic-card.js → esm2020/card/ptsecurity-mosaic-card.mjs} +0 -0
  48. package/{esm2015/card/public-api.js → esm2020/card/public-api.mjs} +0 -0
  49. package/{esm2015/checkbox/checkbox-config.js → esm2020/checkbox/checkbox-config.mjs} +0 -0
  50. package/{esm2015/checkbox/checkbox-module.js → esm2020/checkbox/checkbox-module.mjs} +5 -5
  51. package/{esm2015/checkbox/checkbox-required-validator.js → esm2020/checkbox/checkbox-required-validator.mjs} +4 -4
  52. package/esm2020/checkbox/checkbox.mjs +315 -0
  53. package/{esm2015/checkbox/index.js → esm2020/checkbox/index.mjs} +0 -0
  54. package/{esm2015/checkbox/ptsecurity-mosaic-checkbox.js → esm2020/checkbox/ptsecurity-mosaic-checkbox.mjs} +0 -0
  55. package/{esm2015/checkbox/public-api.js → esm2020/checkbox/public-api.mjs} +0 -0
  56. package/{esm2015/core/animation/animation.js → esm2020/core/animation/animation.mjs} +0 -0
  57. package/{esm2015/core/animation/fade-animations.js → esm2020/core/animation/fade-animations.mjs} +0 -0
  58. package/{esm2015/core/animation/index.js → esm2020/core/animation/index.mjs} +0 -0
  59. package/{esm2015/core/animation/select-animations.js → esm2020/core/animation/select-animations.mjs} +0 -0
  60. package/{esm2015/core/common-behaviors/color.js → esm2020/core/common-behaviors/color.mjs} +0 -0
  61. package/{esm2015/core/common-behaviors/common-module.js → esm2020/core/common-behaviors/common-module.mjs} +5 -5
  62. package/{esm2015/core/common-behaviors/constructor.js → esm2020/core/common-behaviors/constructor.mjs} +0 -0
  63. package/{esm2015/core/common-behaviors/disabled.js → esm2020/core/common-behaviors/disabled.mjs} +0 -0
  64. package/{esm2015/core/common-behaviors/error-state.js → esm2020/core/common-behaviors/error-state.mjs} +0 -0
  65. package/{esm2015/core/common-behaviors/index.js → esm2020/core/common-behaviors/index.mjs} +0 -0
  66. package/{esm2015/core/common-behaviors/tabindex.js → esm2020/core/common-behaviors/tabindex.mjs} +0 -0
  67. package/{esm2015/core/error/error-options.js → esm2020/core/error/error-options.mjs} +7 -7
  68. package/esm2020/core/formatters/date/formatter.mjs +314 -0
  69. package/esm2020/core/formatters/date/templates/en-US.mjs +280 -0
  70. package/esm2020/core/formatters/date/templates/ru-RU.mjs +280 -0
  71. package/{esm2015/core/formatters/index.js → esm2020/core/formatters/index.mjs} +5 -5
  72. package/esm2020/core/formatters/number/formatter.mjs +105 -0
  73. package/{esm2015/core/forms/forms-module.js → esm2020/core/forms/forms-module.mjs} +5 -5
  74. package/{esm2015/core/forms/forms.directive.js → esm2020/core/forms/forms.directive.mjs} +7 -7
  75. package/{esm2015/core/forms/index.js → esm2020/core/forms/index.mjs} +0 -0
  76. package/{esm2015/core/highlight/highlight.pipe.js → esm2020/core/highlight/highlight.pipe.mjs} +4 -4
  77. package/{esm2015/core/highlight/index.js → esm2020/core/highlight/index.mjs} +5 -5
  78. package/{esm2015/core/index.js → esm2020/core/index.mjs} +0 -0
  79. package/{esm2015/core/label/label-options.js → esm2020/core/label/label-options.mjs} +0 -0
  80. package/{esm2015/core/line/line.js → esm2020/core/line/line.mjs} +8 -8
  81. package/esm2020/core/option/action.mjs +121 -0
  82. package/{esm2015/core/option/index.js → esm2020/core/option/index.mjs} +0 -0
  83. package/esm2020/core/option/optgroup.mjs +31 -0
  84. package/{esm2015/core/option/option-module.js → esm2020/core/option/option-module.mjs} +5 -5
  85. package/esm2020/core/option/option.mjs +254 -0
  86. package/{esm2015/core/overlay/overlay-position-map.js → esm2020/core/overlay/overlay-position-map.mjs} +0 -0
  87. package/{esm2015/core/pop-up/constants.js → esm2020/core/pop-up/constants.mjs} +0 -0
  88. package/{esm2015/core/pop-up/index.js → esm2020/core/pop-up/index.mjs} +0 -0
  89. package/esm2020/core/pop-up/pop-up-trigger.mjs +246 -0
  90. package/esm2020/core/pop-up/pop-up.mjs +91 -0
  91. package/{esm2015/core/ptsecurity-mosaic-core.js → esm2020/core/ptsecurity-mosaic-core.mjs} +0 -0
  92. package/{esm2015/core/public-api.js → esm2020/core/public-api.mjs} +0 -0
  93. package/{esm2015/core/select/constants.js → esm2020/core/select/constants.mjs} +0 -0
  94. package/{esm2015/core/select/errors.js → esm2020/core/select/errors.mjs} +0 -0
  95. package/{esm2015/core/select/events.js → esm2020/core/select/events.mjs} +0 -0
  96. package/{esm2015/core/select/index.js → esm2020/core/select/index.mjs} +0 -0
  97. package/{esm2015/core/selection/constants.js → esm2020/core/selection/constants.mjs} +0 -0
  98. package/{esm2015/core/selection/index.js → esm2020/core/selection/index.mjs} +0 -0
  99. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +37 -0
  100. package/{esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.module.js → esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs} +5 -5
  101. package/{esm2015/core/services/measure-scrollbar.service.js → esm2020/core/services/measure-scrollbar.service.mjs} +4 -4
  102. package/{esm2015/core/utils/index.js → esm2020/core/utils/index.mjs} +0 -0
  103. package/{esm2015/core/utils/public-api.js → esm2020/core/utils/public-api.mjs} +0 -0
  104. package/{esm2015/core/utils/utils.js → esm2020/core/utils/utils.mjs} +0 -0
  105. package/{esm2015/core/validation/index.js → esm2020/core/validation/index.mjs} +0 -0
  106. package/{esm2015/core/validation/validation.js → esm2020/core/validation/validation.mjs} +0 -0
  107. package/esm2020/datepicker/calendar-body.component.mjs +106 -0
  108. package/esm2020/datepicker/calendar.component.mjs +362 -0
  109. package/{esm2015/datepicker/datepicker-animations.js → esm2020/datepicker/datepicker-animations.mjs} +0 -0
  110. package/{esm2015/datepicker/datepicker-errors.js → esm2020/datepicker/datepicker-errors.mjs} +0 -0
  111. package/esm2020/datepicker/datepicker-input.directive.mjs +900 -0
  112. package/{esm2015/datepicker/datepicker-intl.js → esm2020/datepicker/datepicker-intl.mjs} +4 -4
  113. package/{esm2015/datepicker/datepicker-module.js → esm2020/datepicker/datepicker-module.mjs} +5 -5
  114. package/esm2020/datepicker/datepicker-toggle.component.mjs +86 -0
  115. package/esm2020/datepicker/datepicker.component.mjs +408 -0
  116. package/{esm2015/datepicker/index.js → esm2020/datepicker/index.mjs} +0 -0
  117. package/{esm2015/datepicker/month-view.component.js → esm2020/datepicker/month-view.component.mjs} +5 -11
  118. package/{esm2015/datepicker/multi-year-view.component.js → esm2020/datepicker/multi-year-view.component.mjs} +5 -11
  119. package/{esm2015/datepicker/ptsecurity-mosaic-datepicker.js → esm2020/datepicker/ptsecurity-mosaic-datepicker.mjs} +0 -0
  120. package/{esm2015/datepicker/public-api.js → esm2020/datepicker/public-api.mjs} +0 -0
  121. package/{esm2015/datepicker/year-view.component.js → esm2020/datepicker/year-view.component.mjs} +5 -11
  122. package/{esm2015/design-tokens/index.js → esm2020/design-tokens/index.mjs} +0 -0
  123. package/{esm2015/design-tokens/ptsecurity-mosaic-design-tokens.js → esm2020/design-tokens/ptsecurity-mosaic-design-tokens.mjs} +0 -0
  124. package/{esm2015/design-tokens/public-api.js → esm2020/design-tokens/public-api.mjs} +0 -0
  125. package/{esm2015/design-tokens/tokens.js → esm2020/design-tokens/tokens.mjs} +12 -9
  126. package/{esm2015/divider/divider.component.js → esm2020/divider/divider.component.mjs} +6 -13
  127. package/{esm2015/divider/divider.module.js → esm2020/divider/divider.module.mjs} +5 -5
  128. package/{esm2015/divider/index.js → esm2020/divider/index.mjs} +0 -0
  129. package/{esm2015/divider/ptsecurity-mosaic-divider.js → esm2020/divider/ptsecurity-mosaic-divider.mjs} +0 -0
  130. package/{esm2015/divider/public-api.js → esm2020/divider/public-api.mjs} +0 -0
  131. package/{esm2015/dropdown/dropdown-animations.js → esm2020/dropdown/dropdown-animations.mjs} +0 -0
  132. package/{esm2015/dropdown/dropdown-content.directive.js → esm2020/dropdown/dropdown-content.directive.mjs} +6 -8
  133. package/{esm2015/dropdown/dropdown-errors.js → esm2020/dropdown/dropdown-errors.mjs} +0 -0
  134. package/esm2020/dropdown/dropdown-item.component.mjs +139 -0
  135. package/esm2020/dropdown/dropdown-trigger.directive.mjs +485 -0
  136. package/esm2020/dropdown/dropdown.component.mjs +292 -0
  137. package/{esm2015/dropdown/dropdown.module.js → esm2020/dropdown/dropdown.module.mjs} +5 -5
  138. package/{esm2015/dropdown/dropdown.types.js → esm2020/dropdown/dropdown.types.mjs} +0 -0
  139. package/{esm2015/dropdown/index.js → esm2020/dropdown/index.mjs} +0 -0
  140. package/{esm2015/dropdown/ptsecurity-mosaic-dropdown.js → esm2020/dropdown/ptsecurity-mosaic-dropdown.mjs} +0 -0
  141. package/{esm2015/dropdown/public-api.js → esm2020/dropdown/public-api.mjs} +0 -0
  142. package/{esm2015/form-field/cleaner.js → esm2020/form-field/cleaner.mjs} +4 -4
  143. package/{esm2015/form-field/form-field-control.js → esm2020/form-field/form-field-control.mjs} +0 -0
  144. package/{esm2015/form-field/form-field-errors.js → esm2020/form-field/form-field-errors.mjs} +0 -0
  145. package/esm2020/form-field/form-field.mjs +205 -0
  146. package/{esm2015/form-field/form-field.module.js → esm2020/form-field/form-field.module.mjs} +5 -5
  147. package/{esm2015/form-field/hint.js → esm2020/form-field/hint.mjs} +4 -4
  148. package/{esm2015/form-field/index.js → esm2020/form-field/index.mjs} +0 -0
  149. package/{esm2015/form-field/prefix.js → esm2020/form-field/prefix.mjs} +4 -4
  150. package/{esm2015/form-field/ptsecurity-mosaic-form-field.js → esm2020/form-field/ptsecurity-mosaic-form-field.mjs} +0 -0
  151. package/{esm2015/form-field/public-api.js → esm2020/form-field/public-api.mjs} +0 -0
  152. package/{esm2015/form-field/stepper.js → esm2020/form-field/stepper.mjs} +4 -4
  153. package/{esm2015/form-field/suffix.js → esm2020/form-field/suffix.mjs} +4 -4
  154. package/esm2020/icon/icon.component.mjs +44 -0
  155. package/{esm2015/icon/icon.module.js → esm2020/icon/icon.module.mjs} +5 -5
  156. package/{esm2015/icon/index.js → esm2020/icon/index.mjs} +0 -0
  157. package/{esm2015/icon/ptsecurity-mosaic-icon.js → esm2020/icon/ptsecurity-mosaic-icon.mjs} +0 -0
  158. package/{esm2015/icon/public-api.js → esm2020/icon/public-api.mjs} +0 -0
  159. package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  160. package/{esm2015/input/index.js → esm2020/input/index.mjs} +0 -0
  161. package/{esm2015/input/input-errors.js → esm2020/input/input-errors.mjs} +0 -0
  162. package/{esm2015/input/input-number-validators.js → esm2020/input/input-number-validators.mjs} +7 -7
  163. package/{esm2015/input/input-number.js → esm2020/input/input-number.mjs} +4 -4
  164. package/{esm2015/input/input-value-accessor.js → esm2020/input/input-value-accessor.mjs} +0 -0
  165. package/{esm2015/input/input.js → esm2020/input/input.mjs} +7 -7
  166. package/{esm2015/input/input.module.js → esm2020/input/input.module.mjs} +5 -5
  167. package/{esm2015/input/ptsecurity-mosaic-input.js → esm2020/input/ptsecurity-mosaic-input.mjs} +0 -0
  168. package/{esm2015/input/public-api.js → esm2020/input/public-api.mjs} +0 -0
  169. package/{esm2015/link/index.js → esm2020/link/index.mjs} +0 -0
  170. package/esm2020/link/link.component.mjs +107 -0
  171. package/{esm2015/link/link.module.js → esm2020/link/link.module.mjs} +5 -5
  172. package/{esm2015/link/ptsecurity-mosaic-link.js → esm2020/link/ptsecurity-mosaic-link.mjs} +0 -0
  173. package/{esm2015/link/public-api.js → esm2020/link/public-api.mjs} +0 -0
  174. package/{esm2015/list/index.js → esm2020/list/index.mjs} +0 -0
  175. package/esm2020/list/list-selection.component.mjs +693 -0
  176. package/esm2020/list/list.component.mjs +44 -0
  177. package/{esm2015/list/list.module.js → esm2020/list/list.module.mjs} +5 -5
  178. package/{esm2015/list/ptsecurity-mosaic-list.js → esm2020/list/ptsecurity-mosaic-list.mjs} +0 -0
  179. package/{esm2015/list/public-api.js → esm2020/list/public-api.mjs} +0 -0
  180. package/{esm2015/modal/css-unit.pipe.js → esm2020/modal/css-unit.pipe.mjs} +4 -4
  181. package/{esm2015/modal/index.js → esm2020/modal/index.mjs} +0 -0
  182. package/{esm2015/modal/modal-control.service.js → esm2020/modal/modal-control.service.mjs} +4 -4
  183. package/{esm2015/modal/modal-ref.class.js → esm2020/modal/modal-ref.class.mjs} +0 -0
  184. package/{esm2015/modal/modal-util.js → esm2020/modal/modal-util.mjs} +0 -0
  185. package/esm2020/modal/modal.component.mjs +501 -0
  186. package/{esm2015/modal/modal.directive.js → esm2020/modal/modal.directive.mjs} +13 -13
  187. package/{esm2015/modal/modal.module.js → esm2020/modal/modal.module.mjs} +5 -5
  188. package/{esm2015/modal/modal.service.js → esm2020/modal/modal.service.mjs} +4 -4
  189. package/{esm2015/modal/modal.type.js → esm2020/modal/modal.type.mjs} +0 -0
  190. package/{esm2015/modal/ptsecurity-mosaic-modal.js → esm2020/modal/ptsecurity-mosaic-modal.mjs} +0 -0
  191. package/{esm2015/modal/public-api.js → esm2020/modal/public-api.mjs} +0 -0
  192. package/{esm2015/navbar/index.js → esm2020/navbar/index.mjs} +0 -0
  193. package/esm2020/navbar/navbar-item.component.mjs +577 -0
  194. package/esm2020/navbar/navbar.component.mjs +237 -0
  195. package/esm2020/navbar/navbar.module.mjs +92 -0
  196. package/{esm2015/navbar/ptsecurity-mosaic-navbar.js → esm2020/navbar/ptsecurity-mosaic-navbar.mjs} +0 -0
  197. package/{esm2015/navbar/public-api.js → esm2020/navbar/public-api.mjs} +0 -0
  198. package/{esm2015/navbar/vertical-navbar.animation.js → esm2020/navbar/vertical-navbar.animation.mjs} +2 -2
  199. package/esm2020/navbar/vertical-navbar.component.mjs +114 -0
  200. package/{esm2015/popover/index.js → esm2020/popover/index.mjs} +0 -0
  201. package/{esm2015/popover/popover-animations.js → esm2020/popover/popover-animations.mjs} +0 -0
  202. package/esm2020/popover/popover-confirm.component.mjs +108 -0
  203. package/esm2020/popover/popover.component.mjs +253 -0
  204. package/{esm2015/popover/popover.module.js → esm2020/popover/popover.module.mjs} +5 -5
  205. package/{esm2015/popover/ptsecurity-mosaic-popover.js → esm2020/popover/ptsecurity-mosaic-popover.mjs} +0 -0
  206. package/{esm2015/popover/public-api.js → esm2020/popover/public-api.mjs} +0 -0
  207. package/{esm2015/progress-bar/index.js → esm2020/progress-bar/index.mjs} +0 -0
  208. package/esm2020/progress-bar/progress-bar.component.mjs +42 -0
  209. package/{esm2015/progress-bar/progress-bar.module.js → esm2020/progress-bar/progress-bar.module.mjs} +5 -5
  210. package/{esm2015/progress-bar/ptsecurity-mosaic-progress-bar.js → esm2020/progress-bar/ptsecurity-mosaic-progress-bar.mjs} +0 -0
  211. package/{esm2015/progress-bar/public-api.js → esm2020/progress-bar/public-api.mjs} +0 -0
  212. package/{esm2015/progress-spinner/index.js → esm2020/progress-spinner/index.mjs} +0 -0
  213. package/esm2020/progress-spinner/progress-spinner.component.mjs +46 -0
  214. package/{esm2015/progress-spinner/progress-spinner.module.js → esm2020/progress-spinner/progress-spinner.module.mjs} +5 -5
  215. package/{esm2015/progress-spinner/ptsecurity-mosaic-progress-spinner.js → esm2020/progress-spinner/ptsecurity-mosaic-progress-spinner.mjs} +0 -0
  216. package/{esm2015/progress-spinner/public-api.js → esm2020/progress-spinner/public-api.mjs} +0 -0
  217. package/{esm2015/ptsecurity-mosaic.js → esm2020/ptsecurity-mosaic.mjs} +0 -0
  218. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  219. package/{esm2015/radio/index.js → esm2020/radio/index.mjs} +0 -0
  220. package/{esm2015/radio/ptsecurity-mosaic-radio.js → esm2020/radio/ptsecurity-mosaic-radio.mjs} +0 -0
  221. package/{esm2015/radio/public-api.js → esm2020/radio/public-api.mjs} +0 -0
  222. package/esm2020/radio/radio.component.mjs +458 -0
  223. package/{esm2015/radio/radio.module.js → esm2020/radio/radio.module.mjs} +5 -5
  224. package/{esm2015/select/index.js → esm2020/select/index.mjs} +0 -0
  225. package/{esm2015/select/ptsecurity-mosaic-select.js → esm2020/select/ptsecurity-mosaic-select.mjs} +0 -0
  226. package/{esm2015/select/public-api.js → esm2020/select/public-api.mjs} +0 -0
  227. package/esm2020/select/select.component.mjs +1110 -0
  228. package/{esm2015/select/select.module.js → esm2020/select/select.module.mjs} +5 -5
  229. package/{esm2015/sidebar/index.js → esm2020/sidebar/index.mjs} +0 -0
  230. package/{esm2015/sidebar/ptsecurity-mosaic-sidebar.js → esm2020/sidebar/ptsecurity-mosaic-sidebar.mjs} +0 -0
  231. package/{esm2015/sidebar/public-api.js → esm2020/sidebar/public-api.mjs} +0 -0
  232. package/{esm2015/sidebar/sidebar-animations.js → esm2020/sidebar/sidebar-animations.mjs} +0 -0
  233. package/esm2020/sidebar/sidebar.component.mjs +146 -0
  234. package/{esm2015/sidebar/sidebar.module.js → esm2020/sidebar/sidebar.module.mjs} +5 -5
  235. package/{esm2015/sidepanel/index.js → esm2020/sidepanel/index.mjs} +0 -0
  236. package/{esm2015/sidepanel/ptsecurity-mosaic-sidepanel.js → esm2020/sidepanel/ptsecurity-mosaic-sidepanel.mjs} +0 -0
  237. package/{esm2015/sidepanel/public-api.js → esm2020/sidepanel/public-api.mjs} +0 -0
  238. package/{esm2015/sidepanel/sidepanel-animations.js → esm2020/sidepanel/sidepanel-animations.mjs} +0 -0
  239. package/{esm2015/sidepanel/sidepanel-config.js → esm2020/sidepanel/sidepanel-config.mjs} +0 -0
  240. package/esm2020/sidepanel/sidepanel-container.component.mjs +106 -0
  241. package/{esm2015/sidepanel/sidepanel-directives.js → esm2020/sidepanel/sidepanel-directives.mjs} +16 -16
  242. package/{esm2015/sidepanel/sidepanel-ref.js → esm2020/sidepanel/sidepanel-ref.mjs} +0 -0
  243. package/{esm2015/sidepanel/sidepanel.module.js → esm2020/sidepanel/sidepanel.module.mjs} +5 -5
  244. package/esm2020/sidepanel/sidepanel.service.mjs +167 -0
  245. package/{esm2015/splitter/index.js → esm2020/splitter/index.mjs} +0 -0
  246. package/{esm2015/splitter/ptsecurity-mosaic-splitter.js → esm2020/splitter/ptsecurity-mosaic-splitter.mjs} +0 -0
  247. package/{esm2015/splitter/public-api.js → esm2020/splitter/public-api.mjs} +0 -0
  248. package/esm2020/splitter/splitter.component.mjs +480 -0
  249. package/esm2020/splitter/splitter.module.mjs +40 -0
  250. package/{esm2015/table/index.js → esm2020/table/index.mjs} +0 -0
  251. package/{esm2015/table/ptsecurity-mosaic-table.js → esm2020/table/ptsecurity-mosaic-table.mjs} +0 -0
  252. package/{esm2015/table/public-api.js → esm2020/table/public-api.mjs} +0 -0
  253. package/{esm2015/table/table.component.js → esm2020/table/table.component.mjs} +4 -4
  254. package/{esm2015/table/table.module.js → esm2020/table/table.module.mjs} +5 -5
  255. package/{esm2015/tabs/index.js → esm2020/tabs/index.mjs} +0 -0
  256. package/esm2020/tabs/paginated-tab-header.mjs +479 -0
  257. package/{esm2015/tabs/ptsecurity-mosaic-tabs.js → esm2020/tabs/ptsecurity-mosaic-tabs.mjs} +0 -0
  258. package/{esm2015/tabs/public-api.js → esm2020/tabs/public-api.mjs} +0 -0
  259. package/esm2020/tabs/tab-body.component.mjs +178 -0
  260. package/{esm2015/tabs/tab-content.directive.js → esm2020/tabs/tab-content.directive.mjs} +4 -4
  261. package/esm2020/tabs/tab-group.component.mjs +350 -0
  262. package/esm2020/tabs/tab-header.component.mjs +67 -0
  263. package/{esm2015/tabs/tab-label-wrapper.directive.js → esm2020/tabs/tab-label-wrapper.directive.mjs} +4 -4
  264. package/{esm2015/tabs/tab-label.directive.js → esm2020/tabs/tab-label.directive.mjs} +4 -4
  265. package/{esm2015/tabs/tab-nav-bar/index.js → esm2020/tabs/tab-nav-bar/index.mjs} +0 -0
  266. package/esm2020/tabs/tab-nav-bar/tab-nav-bar.mjs +110 -0
  267. package/{esm2015/tabs/tab.component.js → esm2020/tabs/tab.component.mjs} +4 -4
  268. package/{esm2015/tabs/tabs-animations.js → esm2020/tabs/tabs-animations.mjs} +0 -0
  269. package/{esm2015/tabs/tabs.module.js → esm2020/tabs/tabs.module.mjs} +5 -5
  270. package/{esm2015/tags/index.js → esm2020/tags/index.mjs} +0 -0
  271. package/{esm2015/tags/ptsecurity-mosaic-tags.js → esm2020/tags/ptsecurity-mosaic-tags.mjs} +0 -0
  272. package/{esm2015/tags/public-api.js → esm2020/tags/public-api.mjs} +0 -0
  273. package/{esm2015/tags/tag-default-options.js → esm2020/tags/tag-default-options.mjs} +0 -0
  274. package/{esm2015/tags/tag-input.js → esm2020/tags/tag-input.mjs} +4 -4
  275. package/esm2020/tags/tag-list.component.mjs +722 -0
  276. package/{esm2015/tags/tag-text-control.js → esm2020/tags/tag-text-control.mjs} +0 -0
  277. package/esm2020/tags/tag.component.mjs +374 -0
  278. package/{esm2015/tags/tag.module.js → esm2020/tags/tag.module.mjs} +5 -5
  279. package/{esm2015/textarea/index.js → esm2020/textarea/index.mjs} +0 -0
  280. package/{esm2015/textarea/ptsecurity-mosaic-textarea.js → esm2020/textarea/ptsecurity-mosaic-textarea.mjs} +0 -0
  281. package/{esm2015/textarea/public-api.js → esm2020/textarea/public-api.mjs} +0 -0
  282. package/{esm2015/textarea/textarea.component.js → esm2020/textarea/textarea.component.mjs} +4 -4
  283. package/{esm2015/textarea/textarea.module.js → esm2020/textarea/textarea.module.mjs} +5 -5
  284. package/{esm2015/timepicker/index.js → esm2020/timepicker/index.mjs} +0 -0
  285. package/{esm2015/timepicker/ptsecurity-mosaic-timepicker.js → esm2020/timepicker/ptsecurity-mosaic-timepicker.mjs} +0 -0
  286. package/{esm2015/timepicker/public-api.js → esm2020/timepicker/public-api.mjs} +0 -0
  287. package/{esm2015/timepicker/timepicker.constants.js → esm2020/timepicker/timepicker.constants.mjs} +0 -0
  288. package/esm2020/timepicker/timepicker.directive.mjs +653 -0
  289. package/{esm2015/timepicker/timepicker.module.js → esm2020/timepicker/timepicker.module.mjs} +5 -5
  290. package/{esm2015/toggle/index.js → esm2020/toggle/index.mjs} +0 -0
  291. package/{esm2015/toggle/ptsecurity-mosaic-toggle.js → esm2020/toggle/ptsecurity-mosaic-toggle.mjs} +0 -0
  292. package/{esm2015/toggle/public-api.js → esm2020/toggle/public-api.mjs} +0 -0
  293. package/esm2020/toggle/toggle.component.mjs +158 -0
  294. package/{esm2015/toggle/toggle.module.js → esm2020/toggle/toggle.module.mjs} +5 -5
  295. package/{esm2015/tooltip/index.js → esm2020/tooltip/index.mjs} +0 -0
  296. package/{esm2015/tooltip/ptsecurity-mosaic-tooltip.js → esm2020/tooltip/ptsecurity-mosaic-tooltip.mjs} +0 -0
  297. package/{esm2015/tooltip/public-api.js → esm2020/tooltip/public-api.mjs} +0 -0
  298. package/{esm2015/tooltip/tooltip.animations.js → esm2020/tooltip/tooltip.animations.mjs} +0 -0
  299. package/esm2020/tooltip/tooltip.component.mjs +291 -0
  300. package/{esm2015/tooltip/tooltip.module.js → esm2020/tooltip/tooltip.module.mjs} +5 -5
  301. package/{esm2015/tree/control/base-tree-control.js → esm2020/tree/control/base-tree-control.mjs} +0 -0
  302. package/{esm2015/tree/control/flat-tree-control.js → esm2020/tree/control/flat-tree-control.mjs} +0 -0
  303. package/{esm2015/tree/control/nested-tree-control.js → esm2020/tree/control/nested-tree-control.mjs} +0 -0
  304. package/{esm2015/tree/control/tree-control.js → esm2020/tree/control/tree-control.mjs} +0 -0
  305. package/{esm2015/tree/data-source/flat-data-source.js → esm2020/tree/data-source/flat-data-source.mjs} +0 -0
  306. package/{esm2015/tree/data-source/nested-data-source.js → esm2020/tree/data-source/nested-data-source.mjs} +0 -0
  307. package/{esm2015/tree/index.js → esm2020/tree/index.mjs} +0 -0
  308. package/{esm2015/tree/node.js → esm2020/tree/node.mjs} +4 -4
  309. package/{esm2015/tree/outlet.js → esm2020/tree/outlet.mjs} +4 -4
  310. package/esm2020/tree/padding.directive.mjs +110 -0
  311. package/{esm2015/tree/ptsecurity-mosaic-tree.js → esm2020/tree/ptsecurity-mosaic-tree.mjs} +0 -0
  312. package/{esm2015/tree/public-api.js → esm2020/tree/public-api.mjs} +0 -0
  313. package/esm2020/tree/toggle.mjs +80 -0
  314. package/{esm2015/tree/tree-base.js → esm2020/tree/tree-base.mjs} +7 -7
  315. package/{esm2015/tree/tree-errors.js → esm2020/tree/tree-errors.mjs} +0 -0
  316. package/esm2020/tree/tree-option.component.mjs +226 -0
  317. package/esm2020/tree/tree-selection.component.mjs +530 -0
  318. package/esm2020/tree/tree.mjs +15 -0
  319. package/{esm2015/tree/tree.module.js → esm2020/tree/tree.module.mjs} +5 -5
  320. package/{esm2015/tree-select/index.js → esm2020/tree-select/index.mjs} +0 -0
  321. package/{esm2015/tree-select/ptsecurity-mosaic-tree-select.js → esm2020/tree-select/ptsecurity-mosaic-tree-select.mjs} +0 -0
  322. package/{esm2015/tree-select/public-api.js → esm2020/tree-select/public-api.mjs} +0 -0
  323. package/{esm2015/tree-select/tree-select.component.js → esm2020/tree-select/tree-select.component.mjs} +12 -23
  324. package/{esm2015/tree-select/tree-select.module.js → esm2020/tree-select/tree-select.module.mjs} +5 -5
  325. package/fesm2015/ptsecurity-mosaic-autocomplete.mjs +756 -0
  326. package/fesm2015/ptsecurity-mosaic-autocomplete.mjs.map +1 -0
  327. package/fesm2015/ptsecurity-mosaic-button-toggle.mjs +385 -0
  328. package/fesm2015/ptsecurity-mosaic-button-toggle.mjs.map +1 -0
  329. package/fesm2015/ptsecurity-mosaic-button.mjs +170 -0
  330. package/fesm2015/ptsecurity-mosaic-button.mjs.map +1 -0
  331. package/fesm2015/{ptsecurity-mosaic-card.js → ptsecurity-mosaic-card.mjs} +10 -18
  332. package/fesm2015/ptsecurity-mosaic-card.mjs.map +1 -0
  333. package/fesm2015/ptsecurity-mosaic-checkbox.mjs +366 -0
  334. package/fesm2015/ptsecurity-mosaic-checkbox.mjs.map +1 -0
  335. package/fesm2015/{ptsecurity-mosaic-core.js → ptsecurity-mosaic-core.mjs} +158 -181
  336. package/fesm2015/ptsecurity-mosaic-core.mjs.map +1 -0
  337. package/fesm2015/ptsecurity-mosaic-datepicker.mjs +2700 -0
  338. package/fesm2015/ptsecurity-mosaic-datepicker.mjs.map +1 -0
  339. package/fesm2015/{ptsecurity-mosaic-design-tokens.js → ptsecurity-mosaic-design-tokens.mjs} +13 -10
  340. package/fesm2015/ptsecurity-mosaic-design-tokens.mjs.map +1 -0
  341. package/fesm2015/ptsecurity-mosaic-divider.mjs +61 -0
  342. package/fesm2015/ptsecurity-mosaic-divider.mjs.map +1 -0
  343. package/fesm2015/ptsecurity-mosaic-dropdown.mjs +1106 -0
  344. package/fesm2015/ptsecurity-mosaic-dropdown.mjs.map +1 -0
  345. package/fesm2015/ptsecurity-mosaic-form-field.mjs +378 -0
  346. package/fesm2015/ptsecurity-mosaic-form-field.mjs.map +1 -0
  347. package/fesm2015/ptsecurity-mosaic-icon.mjs +88 -0
  348. package/fesm2015/ptsecurity-mosaic-icon.mjs.map +1 -0
  349. package/fesm2015/ptsecurity-mosaic-input.mjs +609 -0
  350. package/fesm2015/ptsecurity-mosaic-input.mjs.map +1 -0
  351. package/fesm2015/{ptsecurity-mosaic-link.js → ptsecurity-mosaic-link.mjs} +8 -8
  352. package/fesm2015/ptsecurity-mosaic-link.mjs.map +1 -0
  353. package/fesm2015/ptsecurity-mosaic-list.mjs +796 -0
  354. package/fesm2015/ptsecurity-mosaic-list.mjs.map +1 -0
  355. package/fesm2015/ptsecurity-mosaic-modal.mjs +842 -0
  356. package/fesm2015/ptsecurity-mosaic-modal.mjs.map +1 -0
  357. package/fesm2015/ptsecurity-mosaic-navbar.mjs +1025 -0
  358. package/fesm2015/ptsecurity-mosaic-navbar.mjs.map +1 -0
  359. package/fesm2015/ptsecurity-mosaic-popover.mjs +393 -0
  360. package/fesm2015/ptsecurity-mosaic-popover.mjs.map +1 -0
  361. package/fesm2015/ptsecurity-mosaic-progress-bar.mjs +76 -0
  362. package/fesm2015/ptsecurity-mosaic-progress-bar.mjs.map +1 -0
  363. package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs +80 -0
  364. package/fesm2015/ptsecurity-mosaic-progress-spinner.mjs.map +1 -0
  365. package/fesm2015/ptsecurity-mosaic-radio.mjs +481 -0
  366. package/fesm2015/ptsecurity-mosaic-radio.mjs.map +1 -0
  367. package/fesm2015/ptsecurity-mosaic-select.mjs +1175 -0
  368. package/fesm2015/ptsecurity-mosaic-select.mjs.map +1 -0
  369. package/fesm2015/{ptsecurity-mosaic-sidebar.js → ptsecurity-mosaic-sidebar.mjs} +16 -25
  370. package/fesm2015/ptsecurity-mosaic-sidebar.mjs.map +1 -0
  371. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs +592 -0
  372. package/fesm2015/ptsecurity-mosaic-sidepanel.mjs.map +1 -0
  373. package/fesm2015/ptsecurity-mosaic-splitter.mjs +524 -0
  374. package/fesm2015/ptsecurity-mosaic-splitter.mjs.map +1 -0
  375. package/fesm2015/{ptsecurity-mosaic-table.js → ptsecurity-mosaic-table.mjs} +8 -8
  376. package/fesm2015/ptsecurity-mosaic-table.mjs.map +1 -0
  377. package/fesm2015/ptsecurity-mosaic-tabs.mjs +1511 -0
  378. package/fesm2015/ptsecurity-mosaic-tabs.mjs.map +1 -0
  379. package/fesm2015/ptsecurity-mosaic-tags.mjs +1372 -0
  380. package/fesm2015/ptsecurity-mosaic-tags.mjs.map +1 -0
  381. package/fesm2015/ptsecurity-mosaic-textarea.mjs +293 -0
  382. package/fesm2015/ptsecurity-mosaic-textarea.mjs.map +1 -0
  383. package/fesm2015/ptsecurity-mosaic-timepicker.mjs +715 -0
  384. package/fesm2015/ptsecurity-mosaic-timepicker.mjs.map +1 -0
  385. package/fesm2015/{ptsecurity-mosaic-toggle.js → ptsecurity-mosaic-toggle.mjs} +12 -23
  386. package/fesm2015/ptsecurity-mosaic-toggle.mjs.map +1 -0
  387. package/fesm2015/ptsecurity-mosaic-tooltip.mjs +362 -0
  388. package/fesm2015/ptsecurity-mosaic-tooltip.mjs.map +1 -0
  389. package/fesm2015/ptsecurity-mosaic-tree-select.mjs +932 -0
  390. package/fesm2015/ptsecurity-mosaic-tree-select.mjs.map +1 -0
  391. package/fesm2015/ptsecurity-mosaic-tree.mjs +1707 -0
  392. package/fesm2015/ptsecurity-mosaic-tree.mjs.map +1 -0
  393. package/fesm2015/{ptsecurity-mosaic.js → ptsecurity-mosaic.mjs} +1 -1
  394. package/fesm2015/ptsecurity-mosaic.mjs.map +1 -0
  395. package/{fesm2015/ptsecurity-mosaic-autocomplete.js → fesm2020/ptsecurity-mosaic-autocomplete.mjs} +17 -26
  396. package/fesm2020/ptsecurity-mosaic-autocomplete.mjs.map +1 -0
  397. package/{fesm2015/ptsecurity-mosaic-button-toggle.js → fesm2020/ptsecurity-mosaic-button-toggle.mjs} +15 -23
  398. package/fesm2020/ptsecurity-mosaic-button-toggle.mjs.map +1 -0
  399. package/fesm2020/ptsecurity-mosaic-button.mjs +170 -0
  400. package/fesm2020/ptsecurity-mosaic-button.mjs.map +1 -0
  401. package/fesm2020/ptsecurity-mosaic-card.mjs +113 -0
  402. package/fesm2020/ptsecurity-mosaic-card.mjs.map +1 -0
  403. package/{fesm2015/ptsecurity-mosaic-checkbox.js → fesm2020/ptsecurity-mosaic-checkbox.mjs} +13 -23
  404. package/fesm2020/ptsecurity-mosaic-checkbox.mjs.map +1 -0
  405. package/fesm2020/ptsecurity-mosaic-core.mjs +2688 -0
  406. package/fesm2020/ptsecurity-mosaic-core.mjs.map +1 -0
  407. package/{fesm2015/ptsecurity-mosaic-datepicker.js → fesm2020/ptsecurity-mosaic-datepicker.mjs} +77 -121
  408. package/fesm2020/ptsecurity-mosaic-datepicker.mjs.map +1 -0
  409. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs +939 -0
  410. package/fesm2020/ptsecurity-mosaic-design-tokens.mjs.map +1 -0
  411. package/fesm2020/ptsecurity-mosaic-divider.mjs +61 -0
  412. package/fesm2020/ptsecurity-mosaic-divider.mjs.map +1 -0
  413. package/{fesm2015/ptsecurity-mosaic-dropdown.js → fesm2020/ptsecurity-mosaic-dropdown.mjs} +29 -52
  414. package/fesm2020/ptsecurity-mosaic-dropdown.mjs.map +1 -0
  415. package/fesm2020/ptsecurity-mosaic-form-field.mjs +377 -0
  416. package/fesm2020/ptsecurity-mosaic-form-field.mjs.map +1 -0
  417. package/fesm2020/ptsecurity-mosaic-icon.mjs +86 -0
  418. package/fesm2020/ptsecurity-mosaic-icon.mjs.map +1 -0
  419. package/{fesm2015/ptsecurity-mosaic-input.js → fesm2020/ptsecurity-mosaic-input.mjs} +20 -20
  420. package/fesm2020/ptsecurity-mosaic-input.mjs.map +1 -0
  421. package/fesm2020/ptsecurity-mosaic-link.mjs +136 -0
  422. package/fesm2020/ptsecurity-mosaic-link.mjs.map +1 -0
  423. package/{fesm2015/ptsecurity-mosaic-list.js → fesm2020/ptsecurity-mosaic-list.mjs} +30 -67
  424. package/fesm2020/ptsecurity-mosaic-list.mjs.map +1 -0
  425. package/{fesm2015/ptsecurity-mosaic-modal.js → fesm2020/ptsecurity-mosaic-modal.mjs} +45 -52
  426. package/fesm2020/ptsecurity-mosaic-modal.mjs.map +1 -0
  427. package/fesm2020/ptsecurity-mosaic-navbar.mjs +1009 -0
  428. package/fesm2020/ptsecurity-mosaic-navbar.mjs.map +1 -0
  429. package/fesm2020/ptsecurity-mosaic-popover.mjs +389 -0
  430. package/fesm2020/ptsecurity-mosaic-popover.mjs.map +1 -0
  431. package/fesm2020/ptsecurity-mosaic-progress-bar.mjs +76 -0
  432. package/fesm2020/ptsecurity-mosaic-progress-bar.mjs.map +1 -0
  433. package/fesm2020/ptsecurity-mosaic-progress-spinner.mjs +80 -0
  434. package/fesm2020/ptsecurity-mosaic-progress-spinner.mjs.map +1 -0
  435. package/{fesm2015/ptsecurity-mosaic-radio.js → fesm2020/ptsecurity-mosaic-radio.mjs} +13 -22
  436. package/fesm2020/ptsecurity-mosaic-radio.mjs.map +1 -0
  437. package/{fesm2015/ptsecurity-mosaic-select.js → fesm2020/ptsecurity-mosaic-select.mjs} +23 -35
  438. package/fesm2020/ptsecurity-mosaic-select.mjs.map +1 -0
  439. package/fesm2020/ptsecurity-mosaic-sidebar.mjs +202 -0
  440. package/fesm2020/ptsecurity-mosaic-sidebar.mjs.map +1 -0
  441. package/{fesm2015/ptsecurity-mosaic-sidepanel.js → fesm2020/ptsecurity-mosaic-sidepanel.mjs} +32 -37
  442. package/fesm2020/ptsecurity-mosaic-sidepanel.mjs.map +1 -0
  443. package/fesm2020/ptsecurity-mosaic-splitter.mjs +524 -0
  444. package/fesm2020/ptsecurity-mosaic-splitter.mjs.map +1 -0
  445. package/fesm2020/ptsecurity-mosaic-table.mjs +50 -0
  446. package/fesm2020/ptsecurity-mosaic-table.mjs.map +1 -0
  447. package/{fesm2015/ptsecurity-mosaic-tabs.js → fesm2020/ptsecurity-mosaic-tabs.mjs} +65 -102
  448. package/fesm2020/ptsecurity-mosaic-tabs.mjs.map +1 -0
  449. package/{fesm2015/ptsecurity-mosaic-tags.js → fesm2020/ptsecurity-mosaic-tags.mjs} +28 -47
  450. package/fesm2020/ptsecurity-mosaic-tags.mjs.map +1 -0
  451. package/{fesm2015/ptsecurity-mosaic-textarea.js → fesm2020/ptsecurity-mosaic-textarea.mjs} +8 -8
  452. package/fesm2020/ptsecurity-mosaic-textarea.mjs.map +1 -0
  453. package/{fesm2015/ptsecurity-mosaic-timepicker.js → fesm2020/ptsecurity-mosaic-timepicker.mjs} +12 -12
  454. package/fesm2020/ptsecurity-mosaic-timepicker.mjs.map +1 -0
  455. package/fesm2020/ptsecurity-mosaic-toggle.mjs +180 -0
  456. package/fesm2020/ptsecurity-mosaic-toggle.mjs.map +1 -0
  457. package/fesm2020/ptsecurity-mosaic-tooltip.mjs +354 -0
  458. package/fesm2020/ptsecurity-mosaic-tooltip.mjs.map +1 -0
  459. package/{fesm2015/ptsecurity-mosaic-tree-select.js → fesm2020/ptsecurity-mosaic-tree-select.mjs} +16 -27
  460. package/fesm2020/ptsecurity-mosaic-tree-select.mjs.map +1 -0
  461. package/{fesm2015/ptsecurity-mosaic-tree.js → fesm2020/ptsecurity-mosaic-tree.mjs} +59 -100
  462. package/fesm2020/ptsecurity-mosaic-tree.mjs.map +1 -0
  463. package/fesm2020/ptsecurity-mosaic.mjs +4 -0
  464. package/fesm2020/ptsecurity-mosaic.mjs.map +1 -0
  465. package/form-field/README.md +0 -0
  466. package/form-field/package.json +5 -5
  467. package/icon/README.md +0 -0
  468. package/icon/package.json +5 -5
  469. package/input/package.json +5 -5
  470. package/link/README.md +0 -0
  471. package/link/package.json +5 -5
  472. package/list/README.md +0 -0
  473. package/list/package.json +5 -5
  474. package/modal/README.md +34 -0
  475. package/modal/package.json +5 -5
  476. package/navbar/README.md +41 -0
  477. package/navbar/navbar-item.component.d.ts +122 -34
  478. package/navbar/navbar.component.d.ts +37 -9
  479. package/navbar/navbar.module.d.ts +2 -1
  480. package/navbar/package.json +5 -5
  481. package/navbar/vertical-navbar.component.d.ts +15 -26
  482. package/package.json +299 -14
  483. package/popover/README.md +32 -0
  484. package/popover/package.json +5 -5
  485. package/prebuilt-themes/dark-theme.css +1 -1
  486. package/prebuilt-themes/default-theme.css +1 -1
  487. package/progress-bar/README.md +0 -0
  488. package/progress-bar/package.json +5 -5
  489. package/progress-spinner/README.md +0 -0
  490. package/progress-spinner/package.json +5 -5
  491. package/radio/package.json +5 -5
  492. package/schematics/README.md +35 -0
  493. package/schematics/ng-update/data/index.d.ts +1 -0
  494. package/schematics/ng-update/data/index.js +10 -9
  495. package/schematics/ng-update/data/index.js.map +1 -1
  496. package/schematics/ng-update/data/symbol-removal.d.ts +2 -0
  497. package/schematics/ng-update/data/symbol-removal.js +5 -0
  498. package/schematics/ng-update/data/symbol-removal.js.map +1 -0
  499. package/schematics/ng-update/index.js +3 -3
  500. package/schematics/ng-update/index.js.map +1 -1
  501. package/schematics/ng-update/update-9.0.0/secondary-entry-points-migration.js +1 -2
  502. package/schematics/ng-update/update-9.0.0/secondary-entry-points-migration.js.map +1 -1
  503. package/schematics/ng-update/upgrade-data.js +2 -1
  504. package/schematics/ng-update/upgrade-data.js.map +1 -1
  505. package/schematics/tsconfig.lib.json +2 -2
  506. package/select/README.md +0 -0
  507. package/select/package.json +5 -5
  508. package/sidebar/package.json +5 -5
  509. package/sidepanel/package.json +5 -5
  510. package/splitter/package.json +5 -5
  511. package/splitter/splitter.component.d.ts +41 -3
  512. package/splitter/splitter.module.d.ts +1 -1
  513. package/table/README.md +0 -0
  514. package/table/package.json +5 -5
  515. package/tabs/README.md +0 -0
  516. package/tabs/package.json +5 -5
  517. package/tags/README.md +0 -0
  518. package/tags/package.json +5 -5
  519. package/textarea/README.md +0 -0
  520. package/textarea/package.json +5 -5
  521. package/timepicker/README.md +0 -0
  522. package/timepicker/package.json +5 -5
  523. package/toggle/package.json +5 -5
  524. package/tooltip/package.json +5 -5
  525. package/tree/package.json +5 -5
  526. package/tree-select/README.md +0 -0
  527. package/tree-select/package.json +5 -5
  528. package/bundles/ptsecurity-mosaic-autocomplete.umd.js +0 -1160
  529. package/bundles/ptsecurity-mosaic-autocomplete.umd.js.map +0 -1
  530. package/bundles/ptsecurity-mosaic-button-toggle.umd.js +0 -755
  531. package/bundles/ptsecurity-mosaic-button-toggle.umd.js.map +0 -1
  532. package/bundles/ptsecurity-mosaic-button.umd.js +0 -533
  533. package/bundles/ptsecurity-mosaic-button.umd.js.map +0 -1
  534. package/bundles/ptsecurity-mosaic-card.umd.js +0 -479
  535. package/bundles/ptsecurity-mosaic-card.umd.js.map +0 -1
  536. package/bundles/ptsecurity-mosaic-checkbox.umd.js +0 -762
  537. package/bundles/ptsecurity-mosaic-checkbox.umd.js.map +0 -1
  538. package/bundles/ptsecurity-mosaic-core.umd.js +0 -2843
  539. package/bundles/ptsecurity-mosaic-core.umd.js.map +0 -1
  540. package/bundles/ptsecurity-mosaic-datepicker.umd.js +0 -3355
  541. package/bundles/ptsecurity-mosaic-datepicker.umd.js.map +0 -1
  542. package/bundles/ptsecurity-mosaic-design-tokens.umd.js +0 -1871
  543. package/bundles/ptsecurity-mosaic-design-tokens.umd.js.map +0 -1
  544. package/bundles/ptsecurity-mosaic-divider.umd.js +0 -106
  545. package/bundles/ptsecurity-mosaic-divider.umd.js.map +0 -1
  546. package/bundles/ptsecurity-mosaic-dropdown.umd.js +0 -1532
  547. package/bundles/ptsecurity-mosaic-dropdown.umd.js.map +0 -1
  548. package/bundles/ptsecurity-mosaic-form-field.umd.js +0 -788
  549. package/bundles/ptsecurity-mosaic-form-field.umd.js.map +0 -1
  550. package/bundles/ptsecurity-mosaic-icon.umd.js +0 -450
  551. package/bundles/ptsecurity-mosaic-icon.umd.js.map +0 -1
  552. package/bundles/ptsecurity-mosaic-input.umd.js +0 -1008
  553. package/bundles/ptsecurity-mosaic-input.umd.js.map +0 -1
  554. package/bundles/ptsecurity-mosaic-link.umd.js +0 -515
  555. package/bundles/ptsecurity-mosaic-link.umd.js.map +0 -1
  556. package/bundles/ptsecurity-mosaic-list.umd.js +0 -1256
  557. package/bundles/ptsecurity-mosaic-list.umd.js.map +0 -1
  558. package/bundles/ptsecurity-mosaic-modal.umd.js +0 -1312
  559. package/bundles/ptsecurity-mosaic-modal.umd.js.map +0 -1
  560. package/bundles/ptsecurity-mosaic-navbar.umd.js +0 -930
  561. package/bundles/ptsecurity-mosaic-navbar.umd.js.map +0 -1
  562. package/bundles/ptsecurity-mosaic-popover.umd.js +0 -836
  563. package/bundles/ptsecurity-mosaic-popover.umd.js.map +0 -1
  564. package/bundles/ptsecurity-mosaic-progress-bar.umd.js +0 -440
  565. package/bundles/ptsecurity-mosaic-progress-bar.umd.js.map +0 -1
  566. package/bundles/ptsecurity-mosaic-progress-spinner.umd.js +0 -448
  567. package/bundles/ptsecurity-mosaic-progress-spinner.umd.js.map +0 -1
  568. package/bundles/ptsecurity-mosaic-radio.umd.js +0 -901
  569. package/bundles/ptsecurity-mosaic-radio.umd.js.map +0 -1
  570. package/bundles/ptsecurity-mosaic-select.umd.js +0 -1606
  571. package/bundles/ptsecurity-mosaic-select.umd.js.map +0 -1
  572. package/bundles/ptsecurity-mosaic-sidebar.umd.js +0 -254
  573. package/bundles/ptsecurity-mosaic-sidebar.umd.js.map +0 -1
  574. package/bundles/ptsecurity-mosaic-sidepanel.umd.js +0 -954
  575. package/bundles/ptsecurity-mosaic-sidepanel.umd.js.map +0 -1
  576. package/bundles/ptsecurity-mosaic-splitter.umd.js +0 -448
  577. package/bundles/ptsecurity-mosaic-splitter.umd.js.map +0 -1
  578. package/bundles/ptsecurity-mosaic-table.umd.js +0 -81
  579. package/bundles/ptsecurity-mosaic-table.umd.js.map +0 -1
  580. package/bundles/ptsecurity-mosaic-tabs.umd.js +0 -2013
  581. package/bundles/ptsecurity-mosaic-tabs.umd.js.map +0 -1
  582. package/bundles/ptsecurity-mosaic-tags.umd.js +0 -1912
  583. package/bundles/ptsecurity-mosaic-tags.umd.js.map +0 -1
  584. package/bundles/ptsecurity-mosaic-textarea.umd.js +0 -664
  585. package/bundles/ptsecurity-mosaic-textarea.umd.js.map +0 -1
  586. package/bundles/ptsecurity-mosaic-timepicker.umd.js +0 -821
  587. package/bundles/ptsecurity-mosaic-timepicker.umd.js.map +0 -1
  588. package/bundles/ptsecurity-mosaic-toggle.umd.js +0 -557
  589. package/bundles/ptsecurity-mosaic-toggle.umd.js.map +0 -1
  590. package/bundles/ptsecurity-mosaic-tooltip.umd.js +0 -777
  591. package/bundles/ptsecurity-mosaic-tooltip.umd.js.map +0 -1
  592. package/bundles/ptsecurity-mosaic-tree-select.umd.js +0 -1368
  593. package/bundles/ptsecurity-mosaic-tree-select.umd.js.map +0 -1
  594. package/bundles/ptsecurity-mosaic-tree.umd.js +0 -2301
  595. package/bundles/ptsecurity-mosaic-tree.umd.js.map +0 -1
  596. package/bundles/ptsecurity-mosaic.umd.js +0 -11
  597. package/bundles/ptsecurity-mosaic.umd.js.map +0 -1
  598. package/esm2015/autocomplete/autocomplete.component.js +0 -163
  599. package/esm2015/button/button.component.js +0 -129
  600. package/esm2015/button/button.module.js +0 -42
  601. package/esm2015/button-toggle/button-toggle.component.js +0 -370
  602. package/esm2015/card/card.component.js +0 -88
  603. package/esm2015/checkbox/checkbox.js +0 -325
  604. package/esm2015/core/formatters/date/formatter.js +0 -288
  605. package/esm2015/core/formatters/date/templates/en-US.js +0 -280
  606. package/esm2015/core/formatters/date/templates/ru-RU.js +0 -280
  607. package/esm2015/core/formatters/number/formatter.js +0 -99
  608. package/esm2015/core/option/action.js +0 -131
  609. package/esm2015/core/option/optgroup.js +0 -40
  610. package/esm2015/core/option/option.js +0 -262
  611. package/esm2015/core/pop-up/pop-up-trigger.js +0 -241
  612. package/esm2015/core/pop-up/pop-up.js +0 -87
  613. package/esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.js +0 -45
  614. package/esm2015/datepicker/calendar-body.component.js +0 -114
  615. package/esm2015/datepicker/calendar.component.js +0 -377
  616. package/esm2015/datepicker/datepicker-input.directive.js +0 -885
  617. package/esm2015/datepicker/datepicker-toggle.component.js +0 -94
  618. package/esm2015/datepicker/datepicker.component.js +0 -418
  619. package/esm2015/dropdown/dropdown-item.component.js +0 -149
  620. package/esm2015/dropdown/dropdown-trigger.directive.js +0 -486
  621. package/esm2015/dropdown/dropdown.component.js +0 -302
  622. package/esm2015/form-field/form-field.js +0 -224
  623. package/esm2015/icon/icon.component.js +0 -51
  624. package/esm2015/link/link.component.js +0 -108
  625. package/esm2015/list/list-selection.component.js +0 -716
  626. package/esm2015/list/list.component.js +0 -58
  627. package/esm2015/modal/modal.component.js +0 -508
  628. package/esm2015/navbar/navbar-item.component.js +0 -209
  629. package/esm2015/navbar/navbar.component.js +0 -118
  630. package/esm2015/navbar/navbar.module.js +0 -76
  631. package/esm2015/navbar/vertical-navbar.component.js +0 -140
  632. package/esm2015/popover/popover-confirm.component.js +0 -116
  633. package/esm2015/popover/popover.component.js +0 -262
  634. package/esm2015/progress-bar/progress-bar.component.js +0 -50
  635. package/esm2015/progress-spinner/progress-spinner.component.js +0 -54
  636. package/esm2015/radio/radio.component.js +0 -467
  637. package/esm2015/select/select.component.js +0 -1122
  638. package/esm2015/sidebar/sidebar.component.js +0 -155
  639. package/esm2015/sidepanel/sidepanel-container.component.js +0 -114
  640. package/esm2015/sidepanel/sidepanel.service.js +0 -164
  641. package/esm2015/splitter/splitter.component.js +0 -342
  642. package/esm2015/splitter/splitter.module.js +0 -38
  643. package/esm2015/tabs/paginated-tab-header.js +0 -482
  644. package/esm2015/tabs/tab-body.component.js +0 -186
  645. package/esm2015/tabs/tab-group.component.js +0 -359
  646. package/esm2015/tabs/tab-header.component.js +0 -76
  647. package/esm2015/tabs/tab-nav-bar/tab-nav-bar.js +0 -118
  648. package/esm2015/tags/tag-list.component.js +0 -732
  649. package/esm2015/tags/tag.component.js +0 -383
  650. package/esm2015/timepicker/timepicker.directive.js +0 -653
  651. package/esm2015/toggle/toggle.component.js +0 -169
  652. package/esm2015/tooltip/tooltip.component.js +0 -299
  653. package/esm2015/tree/padding.directive.js +0 -111
  654. package/esm2015/tree/toggle.js +0 -89
  655. package/esm2015/tree/tree-option.component.js +0 -238
  656. package/esm2015/tree/tree-selection.component.js +0 -541
  657. package/esm2015/tree/tree.js +0 -23
  658. package/fesm2015/ptsecurity-mosaic-autocomplete.js.map +0 -1
  659. package/fesm2015/ptsecurity-mosaic-button-toggle.js.map +0 -1
  660. package/fesm2015/ptsecurity-mosaic-button.js +0 -174
  661. package/fesm2015/ptsecurity-mosaic-button.js.map +0 -1
  662. package/fesm2015/ptsecurity-mosaic-card.js.map +0 -1
  663. package/fesm2015/ptsecurity-mosaic-checkbox.js.map +0 -1
  664. package/fesm2015/ptsecurity-mosaic-core.js.map +0 -1
  665. package/fesm2015/ptsecurity-mosaic-datepicker.js.map +0 -1
  666. package/fesm2015/ptsecurity-mosaic-design-tokens.js.map +0 -1
  667. package/fesm2015/ptsecurity-mosaic-divider.js +0 -68
  668. package/fesm2015/ptsecurity-mosaic-divider.js.map +0 -1
  669. package/fesm2015/ptsecurity-mosaic-dropdown.js.map +0 -1
  670. package/fesm2015/ptsecurity-mosaic-form-field.js +0 -396
  671. package/fesm2015/ptsecurity-mosaic-form-field.js.map +0 -1
  672. package/fesm2015/ptsecurity-mosaic-icon.js +0 -93
  673. package/fesm2015/ptsecurity-mosaic-icon.js.map +0 -1
  674. package/fesm2015/ptsecurity-mosaic-input.js.map +0 -1
  675. package/fesm2015/ptsecurity-mosaic-link.js.map +0 -1
  676. package/fesm2015/ptsecurity-mosaic-list.js.map +0 -1
  677. package/fesm2015/ptsecurity-mosaic-modal.js.map +0 -1
  678. package/fesm2015/ptsecurity-mosaic-navbar.js +0 -539
  679. package/fesm2015/ptsecurity-mosaic-navbar.js.map +0 -1
  680. package/fesm2015/ptsecurity-mosaic-popover.js +0 -406
  681. package/fesm2015/ptsecurity-mosaic-popover.js.map +0 -1
  682. package/fesm2015/ptsecurity-mosaic-progress-bar.js +0 -84
  683. package/fesm2015/ptsecurity-mosaic-progress-bar.js.map +0 -1
  684. package/fesm2015/ptsecurity-mosaic-progress-spinner.js +0 -88
  685. package/fesm2015/ptsecurity-mosaic-progress-spinner.js.map +0 -1
  686. package/fesm2015/ptsecurity-mosaic-radio.js.map +0 -1
  687. package/fesm2015/ptsecurity-mosaic-select.js.map +0 -1
  688. package/fesm2015/ptsecurity-mosaic-sidebar.js.map +0 -1
  689. package/fesm2015/ptsecurity-mosaic-sidepanel.js.map +0 -1
  690. package/fesm2015/ptsecurity-mosaic-splitter.js +0 -384
  691. package/fesm2015/ptsecurity-mosaic-splitter.js.map +0 -1
  692. package/fesm2015/ptsecurity-mosaic-table.js.map +0 -1
  693. package/fesm2015/ptsecurity-mosaic-tabs.js.map +0 -1
  694. package/fesm2015/ptsecurity-mosaic-tags.js.map +0 -1
  695. package/fesm2015/ptsecurity-mosaic-textarea.js.map +0 -1
  696. package/fesm2015/ptsecurity-mosaic-timepicker.js.map +0 -1
  697. package/fesm2015/ptsecurity-mosaic-toggle.js.map +0 -1
  698. package/fesm2015/ptsecurity-mosaic-tooltip.js +0 -362
  699. package/fesm2015/ptsecurity-mosaic-tooltip.js.map +0 -1
  700. package/fesm2015/ptsecurity-mosaic-tree-select.js.map +0 -1
  701. package/fesm2015/ptsecurity-mosaic-tree.js.map +0 -1
  702. package/fesm2015/ptsecurity-mosaic.js.map +0 -1
@@ -1,383 +0,0 @@
1
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, Directive, ElementRef, EventEmitter, forwardRef, Input, NgZone, Output, QueryList, ViewEncapsulation } from '@angular/core';
3
- import { BACKSPACE, DELETE, SPACE } from '@ptsecurity/cdk/keycodes';
4
- import { mixinColor, mixinDisabled } from '@ptsecurity/mosaic/core';
5
- import { McIcon } from '@ptsecurity/mosaic/icon';
6
- import { Subject } from 'rxjs';
7
- import { take } from 'rxjs/operators';
8
- import * as i0 from "@angular/core";
9
- /** Event object emitted by McTag when selected or deselected. */
10
- export class McTagSelectionChange {
11
- constructor(source, selected, isUserInput = false) {
12
- this.source = source;
13
- this.selected = selected;
14
- this.isUserInput = isUserInput;
15
- }
16
- }
17
- const TAG_ATTRIBUTE_NAMES = ['mc-basic-tag'];
18
- /**
19
- * Dummy directive to add CSS class to tag avatar.
20
- * @docs-private
21
- */
22
- export class McTagAvatar {
23
- }
24
- /** @nocollapse */ McTagAvatar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTagAvatar, deps: [], target: i0.ɵɵFactoryTarget.Directive });
25
- /** @nocollapse */ McTagAvatar.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McTagAvatar, selector: "mc-tag-avatar, [mcTagAvatar]", host: { classAttribute: "mc-tag-avatar" }, ngImport: i0 });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTagAvatar, decorators: [{
27
- type: Directive,
28
- args: [{
29
- selector: 'mc-tag-avatar, [mcTagAvatar]',
30
- host: { class: 'mc-tag-avatar' }
31
- }]
32
- }] });
33
- /**
34
- * Dummy directive to add CSS class to tag trailing icon.
35
- * @docs-private
36
- */
37
- export class McTagTrailingIcon {
38
- }
39
- /** @nocollapse */ McTagTrailingIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTagTrailingIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
40
- /** @nocollapse */ McTagTrailingIcon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McTagTrailingIcon, selector: "mc-tag-trailing-icon, [mcTagTrailingIcon]", host: { classAttribute: "mc-tag-trailing-icon" }, ngImport: i0 });
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTagTrailingIcon, decorators: [{
42
- type: Directive,
43
- args: [{
44
- selector: 'mc-tag-trailing-icon, [mcTagTrailingIcon]',
45
- host: { class: 'mc-tag-trailing-icon' }
46
- }]
47
- }] });
48
- export class McTagBase {
49
- // tslint:disable-next-line:naming-convention
50
- constructor(_elementRef) {
51
- this._elementRef = _elementRef;
52
- }
53
- }
54
- // tslint:disable-next-line:naming-convention
55
- export const McTagMixinBase = mixinColor(mixinDisabled(McTagBase));
56
- export class McTag extends McTagMixinBase {
57
- constructor(elementRef, changeDetectorRef, _ngZone) {
58
- super(elementRef);
59
- this.elementRef = elementRef;
60
- this.changeDetectorRef = changeDetectorRef;
61
- this._ngZone = _ngZone;
62
- /** Emits when the tag is focused. */
63
- this.onFocus = new Subject();
64
- /** Emits when the tag is blured. */
65
- this.onBlur = new Subject();
66
- /** Whether the tag has focus. */
67
- this.hasFocus = false;
68
- /** Whether the tag list is selectable */
69
- this.tagListSelectable = true;
70
- /** Emitted when the tag is selected or deselected. */
71
- this.selectionChange = new EventEmitter();
72
- /** Emitted when the tag is destroyed. */
73
- this.destroyed = new EventEmitter();
74
- /** Emitted when a tag is to be removed. */
75
- this.removed = new EventEmitter();
76
- this._selected = false;
77
- this._selectable = true;
78
- this._removable = true;
79
- this._disabled = false;
80
- this.addHostClassName();
81
- this.nativeElement = elementRef.nativeElement;
82
- }
83
- /** Whether the tag is selected. */
84
- get selected() {
85
- return this._selected;
86
- }
87
- set selected(value) {
88
- const coercedValue = coerceBooleanProperty(value);
89
- if (coercedValue !== this._selected) {
90
- this._selected = coercedValue;
91
- this.dispatchSelectionChange();
92
- }
93
- }
94
- /** The value of the tag. Defaults to the content inside `<mc-tag>` tags. */
95
- get value() {
96
- return this._value !== undefined
97
- ? this._value
98
- : this.elementRef.nativeElement.textContent;
99
- }
100
- set value(value) {
101
- this._value = value;
102
- }
103
- /**
104
- * Whether or not the tag is selectable. When a tag is not selectable,
105
- * changes to its selected state are always ignored. By default a tag is
106
- * selectable, and it becomes non-selectable if its parent tag list is
107
- * not selectable.
108
- */
109
- get selectable() {
110
- return this._selectable && this.tagListSelectable;
111
- }
112
- set selectable(value) {
113
- this._selectable = coerceBooleanProperty(value);
114
- }
115
- /**
116
- * Determines whether or not the tag displays the remove styling and emits (removed) events.
117
- */
118
- get removable() {
119
- return this._removable;
120
- }
121
- set removable(value) {
122
- this._removable = coerceBooleanProperty(value);
123
- }
124
- get tabindex() {
125
- if (!this.selectable) {
126
- return null;
127
- }
128
- return this.disabled ? null : -1;
129
- }
130
- get disabled() {
131
- return this._disabled;
132
- }
133
- set disabled(value) {
134
- if (value !== this.disabled) {
135
- this._disabled = value;
136
- }
137
- }
138
- ngAfterContentInit() {
139
- this.addClassModificatorForIcons();
140
- }
141
- addClassModificatorForIcons() {
142
- const icons = this.contentChildren.map((item) => item._elementRef.nativeElement);
143
- if (icons.length === 1) {
144
- const iconElement = icons[0];
145
- if (!iconElement.previousElementSibling && !iconElement.nextElementSibling) {
146
- if (iconElement.nextSibling) {
147
- iconElement.classList.add('mc-icon_left');
148
- this.nativeElement.classList.add('mc-left-icon');
149
- }
150
- if (iconElement.previousSibling) {
151
- iconElement.classList.add('mc-icon_right');
152
- this.nativeElement.classList.add('mc-right-icon');
153
- }
154
- }
155
- }
156
- else if (icons.length > 1) {
157
- const firstIconElement = icons[0];
158
- const secondIconElement = icons[1];
159
- firstIconElement.classList.add('mc-icon_left');
160
- secondIconElement.classList.add('mc-icon_right');
161
- }
162
- }
163
- addHostClassName() {
164
- // Add class for the different tags
165
- for (const attr of TAG_ATTRIBUTE_NAMES) {
166
- if (this.elementRef.nativeElement.hasAttribute(attr) ||
167
- this.elementRef.nativeElement.tagName.toLowerCase() === attr) {
168
- this.elementRef.nativeElement.classList.add(attr);
169
- return;
170
- }
171
- }
172
- this.elementRef.nativeElement.classList.add('mc-standard-tag');
173
- }
174
- ngOnDestroy() {
175
- this.destroyed.emit({ tag: this });
176
- }
177
- select() {
178
- if (!this._selected) {
179
- this._selected = true;
180
- this.dispatchSelectionChange();
181
- }
182
- }
183
- deselect() {
184
- if (this._selected) {
185
- this._selected = false;
186
- this.dispatchSelectionChange();
187
- }
188
- }
189
- selectViaInteraction() {
190
- if (!this._selected) {
191
- this._selected = true;
192
- this.dispatchSelectionChange(true);
193
- }
194
- }
195
- toggleSelected(isUserInput = false) {
196
- this._selected = !this.selected;
197
- this.dispatchSelectionChange(isUserInput);
198
- return this.selected;
199
- }
200
- /** Allows for programmatic focusing of the tag. */
201
- focus() {
202
- if (!this.selectable) {
203
- return;
204
- }
205
- if (!this.hasFocus) {
206
- this.elementRef.nativeElement.focus();
207
- this.onFocus.next({ tag: this });
208
- Promise.resolve().then(() => {
209
- this.hasFocus = true;
210
- this.changeDetectorRef.markForCheck();
211
- });
212
- }
213
- }
214
- /**
215
- * Allows for programmatic removal of the tag. Called by the McTagList when the DELETE or
216
- * BACKSPACE keys are pressed.
217
- *
218
- * Informs any listeners of the removal request. Does not remove the tag from the DOM.
219
- */
220
- remove() {
221
- if (this.removable) {
222
- this.removed.emit({ tag: this });
223
- }
224
- }
225
- handleClick(event) {
226
- if (this.disabled) {
227
- event.preventDefault();
228
- }
229
- else {
230
- event.stopPropagation();
231
- }
232
- }
233
- handleKeydown(event) {
234
- if (this.disabled) {
235
- return;
236
- }
237
- // tslint:disable-next-line: deprecation
238
- switch (event.keyCode) {
239
- case DELETE:
240
- case BACKSPACE:
241
- // If we are removable, remove the focused tag
242
- this.remove();
243
- // Always prevent so page navigation does not occur
244
- event.preventDefault();
245
- break;
246
- case SPACE:
247
- // If we are selectable, toggle the focused tag
248
- if (this.selectable) {
249
- this.toggleSelected(true);
250
- }
251
- // Always prevent space from scrolling the page since the list has focus
252
- event.preventDefault();
253
- break;
254
- default:
255
- }
256
- }
257
- blur() {
258
- // When animations are enabled, Angular may end up removing the tag from the DOM a little
259
- // earlier than usual, causing it to be blurred and throwing off the logic in the tag list
260
- // that moves focus not the next item. To work around the issue, we defer marking the tag
261
- // as not focused until the next time the zone stabilizes.
262
- this._ngZone.onStable
263
- .asObservable()
264
- .pipe(take(1))
265
- .subscribe(() => {
266
- this._ngZone.run(() => {
267
- this.hasFocus = false;
268
- this.onBlur.next({ tag: this });
269
- });
270
- });
271
- }
272
- dispatchSelectionChange(isUserInput = false) {
273
- this.selectionChange.emit({
274
- source: this,
275
- isUserInput,
276
- selected: this._selected
277
- });
278
- }
279
- }
280
- /** @nocollapse */ McTag.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTag, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
281
- /** @nocollapse */ McTag.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: McTag, selector: "mc-tag, [mc-tag], mc-basic-tag, [mc-basic-tag]", inputs: { color: "color", selected: "selected", value: "value", selectable: "selectable", removable: "removable", disabled: "disabled" }, outputs: { selectionChange: "selectionChange", destroyed: "destroyed", removed: "removed" }, host: { listeners: { "click": "handleClick($event)", "keydown": "handleKeydown($event)", "focus": "focus()", "blur": "blur()" }, properties: { "attr.tabindex": "tabindex", "attr.disabled": "disabled || null", "class.mc-selected": "selected", "class.mc-focused": "hasFocus", "class.mc-tag-with-avatar": "avatar", "class.mc-tag-with-icon": "contentChildren", "class.mc-tag-with-trailing-icon": "trailingIcon || removeIcon", "class.mc-disabled": "disabled" }, classAttribute: "mc-tag" }, queries: [{ propertyName: "avatar", first: true, predicate: McTagAvatar, descendants: true }, { propertyName: "trailingIcon", first: true, predicate: McTagTrailingIcon, descendants: true }, { propertyName: "removeIcon", first: true, predicate: McTagRemove, descendants: true }, { propertyName: "contentChildren", predicate: McIcon }], exportAs: ["mcTag"], usesInheritance: true, ngImport: i0, template: "<div class=\"mc-tag__wrapper\">\n <span class=\"mc-tag__text\"><ng-content></ng-content></span>\n <ng-content select=\"[mc-icon]\"></ng-content>\n <div class=\"mc-tag-overlay\"></div>\n</div>\n", styles: [".mc-tag{position:relative;display:inline-block;overflow:hidden;margin:2px;margin:var(--mc-tags-size-margin, 2px);height:24px;height:var(--mc-tags-size-height, 24px);border-width:1px;border-width:var(--mc-tags-size-border-width, 1px);border-style:solid;border-radius:4px;border-radius:var(--mc-tags-size-border-radius, 4px);cursor:default;outline:none;box-sizing:border-box}.mc-tag.mc-left-icon{padding-left:3px;padding-left:var(--mc-tags-size-icon-padding, 3px)}.mc-tag.mc-right-icon{padding-right:3px;padding-right:var(--mc-tags-size-icon-padding, 3px)}.mc-tag .mc-tag__text{margin-left:calc(8px - 1px);margin-left:calc(var(--mc-tags-size-text-margin, 8px) - var(--mc-tags-size-border-width, 1px));text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mc-tag:not(.mc-tag-with-icon) .mc-tag__text{margin-right:calc(8px - 1px);margin-right:calc(var(--mc-tags-size-text-margin, 8px) - var(--mc-tags-size-border-width, 1px))}.mc-tag__wrapper{display:flex;align-items:center;height:100%;flex:1 1 100%}.mc-tag__wrapper .mc-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:24px;width:var(--mc-tags-size-height, 24px);height:24px;height:var(--mc-tags-size-height, 24px)}.mc-tag__wrapper .mc-icon_left{margin-right:3px;margin-right:var(--mc-tags-size-icon-padding, 3px)}.mc-tag__wrapper .mc-icon_right{margin-left:3px;margin-left:var(--mc-tags-size-icon-padding, 3px)}.mc-tag-overlay{position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;pointer-events:none;border-radius:inherit}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
282
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTag, decorators: [{
283
- type: Component,
284
- args: [{
285
- selector: 'mc-tag, [mc-tag], mc-basic-tag, [mc-basic-tag]',
286
- exportAs: 'mcTag',
287
- templateUrl: 'tag.partial.html',
288
- styleUrls: ['./tag.scss'],
289
- inputs: ['color'],
290
- host: {
291
- class: 'mc-tag',
292
- '[attr.tabindex]': 'tabindex',
293
- '[attr.disabled]': 'disabled || null',
294
- '[class.mc-selected]': 'selected',
295
- '[class.mc-focused]': 'hasFocus',
296
- '[class.mc-tag-with-avatar]': 'avatar',
297
- '[class.mc-tag-with-icon]': 'contentChildren',
298
- '[class.mc-tag-with-trailing-icon]': 'trailingIcon || removeIcon',
299
- '[class.mc-disabled]': 'disabled',
300
- '(click)': 'handleClick($event)',
301
- '(keydown)': 'handleKeydown($event)',
302
- '(focus)': 'focus()',
303
- '(blur)': 'blur()'
304
- },
305
- changeDetection: ChangeDetectionStrategy.OnPush,
306
- encapsulation: ViewEncapsulation.None
307
- }]
308
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { contentChildren: [{
309
- type: ContentChildren,
310
- args: [McIcon]
311
- }], avatar: [{
312
- type: ContentChild,
313
- args: [McTagAvatar, { static: false }]
314
- }], trailingIcon: [{
315
- type: ContentChild,
316
- args: [McTagTrailingIcon, { static: false }]
317
- }], removeIcon: [{
318
- type: ContentChild,
319
- args: [forwardRef(() => McTagRemove), { static: false }]
320
- }], selectionChange: [{
321
- type: Output
322
- }], destroyed: [{
323
- type: Output
324
- }], removed: [{
325
- type: Output
326
- }], selected: [{
327
- type: Input
328
- }], value: [{
329
- type: Input
330
- }], selectable: [{
331
- type: Input
332
- }], removable: [{
333
- type: Input
334
- }], disabled: [{
335
- type: Input
336
- }] } });
337
- /**
338
- *
339
- * Example:
340
- *
341
- * `<mc-tag>
342
- * <mc-icon mcTagRemove>cancel</mc-icon>
343
- * </mc-tag>`
344
- *
345
- * You *may* use a custom icon, but you may need to override the `mc-tag-remove` positioning
346
- * styles to properly center the icon within the tag.
347
- */
348
- export class McTagRemove {
349
- constructor(parentTag) {
350
- this.parentTag = parentTag;
351
- }
352
- focus($event) {
353
- $event.stopPropagation();
354
- }
355
- /** Calls the parent tag's public `remove()` method if applicable. */
356
- handleClick(event) {
357
- if (this.parentTag.removable) {
358
- this.parentTag.hasFocus = true;
359
- this.parentTag.remove();
360
- }
361
- // We need to stop event propagation because otherwise the event will bubble up to the
362
- // form field and cause the `onContainerClick` method to be invoked. This method would then
363
- // reset the focused tag that has been focused after tag removal. Usually the parent
364
- // the parent click listener of the `McTag` would prevent propagation, but it can happen
365
- // that the tag is being removed before the event bubbles up.
366
- event.stopPropagation();
367
- }
368
- }
369
- /** @nocollapse */ McTagRemove.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTagRemove, deps: [{ token: McTag }], target: i0.ɵɵFactoryTarget.Directive });
370
- /** @nocollapse */ McTagRemove.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: McTagRemove, selector: "[mcTagRemove]", host: { listeners: { "click": "handleClick($event)", "focus": "focus($event)" }, properties: { "attr.tabindex": "-1" }, classAttribute: "mc-tag-remove mc-tag-trailing-icon" }, ngImport: i0 });
371
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: McTagRemove, decorators: [{
372
- type: Directive,
373
- args: [{
374
- selector: '[mcTagRemove]',
375
- host: {
376
- class: 'mc-tag-remove mc-tag-trailing-icon',
377
- '[attr.tabindex]': '-1',
378
- '(click)': 'handleClick($event)',
379
- '(focus)': 'focus($event)'
380
- }
381
- }]
382
- }], ctorParameters: function () { return [{ type: McTag }]; } });
383
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21vc2FpYy90YWdzL3RhZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvdGFncy90YWcucGFydGlhbC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFLSCxVQUFVLEVBQ1YsYUFBYSxFQUNoQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFRdEMsaUVBQWlFO0FBQ2pFLE1BQU0sT0FBTyxvQkFBb0I7SUFDN0IsWUFBbUIsTUFBYSxFQUFTLFFBQWlCLEVBQVMsY0FBYyxLQUFLO1FBQW5FLFdBQU0sR0FBTixNQUFNLENBQU87UUFBUyxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQVE7SUFBRyxDQUFDO0NBQzdGO0FBR0QsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRTdDOzs7R0FHRztBQUtILE1BQU0s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QUM7SUFDN0IsQ0FBQztJQUVELHFFQUFxRTtJQUNyRSxXQUFXLENBQUMsS0FBWTtRQUNwQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO1lBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUUvQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQzNCO1FBRUQsc0ZBQXNGO1FBQ3RGLDJGQUEyRjtRQUMzRixvRkFBb0Y7UUFDcEYsd0ZBQXdGO1FBQ3hGLDZEQUE2RDtRQUM3RCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDNUIsQ0FBQzs7NEhBckJRLFdBQVcsa0JBQ2EsS0FBSztnSEFEN0IsV0FBVzs0RkFBWCxXQUFXO2tCQVR2QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxlQUFlO29CQUN6QixJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLG9DQUFvQzt3QkFDM0MsaUJBQWlCLEVBQUUsSUFBSTt3QkFDdkIsU0FBUyxFQUFFLHFCQUFxQjt3QkFDaEMsU0FBUyxFQUFFLGVBQWU7cUJBQzdCO2lCQUNKOzBEQUVvQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUZvY3VzYWJsZU9wdGlvbiB9IGZyb20gJ0BwdHNlY3VyaXR5L2Nkay9hMTF5JztcbmltcG9ydCB7IEJBQ0tTUEFDRSwgREVMRVRFLCBTUEFDRSB9IGZyb20gJ0BwdHNlY3VyaXR5L2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICAgIENhbkNvbG9yLFxuICAgIENhbkNvbG9yQ3RvcixcbiAgICBDYW5EaXNhYmxlLFxuICAgIENhbkRpc2FibGVDdG9yLFxuICAgIG1peGluQ29sb3IsXG4gICAgbWl4aW5EaXNhYmxlZFxufSBmcm9tICdAcHRzZWN1cml0eS9tb3NhaWMvY29yZSc7XG5pbXBvcnQgeyBNY0ljb24gfSBmcm9tICdAcHRzZWN1cml0eS9tb3NhaWMvaWNvbic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuYW1pbmctY29udmVudGlvblxuZXhwb3J0IGludGVyZmFjZSBNY1RhZ0V2ZW50IHtcbiAgICB0YWc6IE1jVGFnO1xufVxuXG4vKiogRXZlbnQgb2JqZWN0IGVtaXR0ZWQgYnkgTWNUYWcgd2hlbiBzZWxlY3RlZCBvciBkZXNlbGVjdGVkLiAqL1xuZXhwb3J0IGNsYXNzIE1jVGFnU2VsZWN0aW9uQ2hhbmdlIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgc291cmNlOiBNY1RhZywgcHVibGljIHNlbGVjdGVkOiBib29sZWFuLCBwdWJsaWMgaXNVc2VySW5wdXQgPSBmYWxzZSkge31cbn1cblxuXG5jb25zdCBUQUdfQVRUUklCVVRFX05BTUVTID0gWydtYy1iYXNpYy10YWcnXTtcblxuLyoqXG4gKiBEdW1teSBkaXJlY3RpdmUgdG8gYWRkIENTUyBjbGFzcyB0byB0YWcgYXZhdGFyLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ21jLXRhZy1hdmF0YXIsIFttY1RhZ0F2YXRhcl0nLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdtYy10YWctYXZhdGFyJyB9XG59KVxuZXhwb3J0IGNsYXNzIE1jVGFnQXZhdGFyIHt9XG5cbi8qKlxuICogRHVtbXkgZGlyZWN0aXZlIHRvIGFkZCBDU1MgY2xhc3MgdG8gdGFnIHRyYWlsaW5nIGljb24uXG4gKiBAZG9jcy1wcml2YXRlXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnbWMtdGFnLXRyYWlsaW5nLWljb24sIFttY1RhZ1RyYWlsaW5nSWNvbl0nLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdtYy10YWctdHJhaWxpbmctaWNvbicgfVxufSlcbmV4cG9ydCBjbGFzcyBNY1RhZ1RyYWlsaW5nSWNvbiB7fVxuXG5leHBvcnQgY2xhc3MgTWNUYWdCYXNlIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bmFtaW5nLWNvbnZlbnRpb25cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG59XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IE1jVGFnTWl4aW5CYXNlOiBDYW5Db2xvckN0b3IgJiBDYW5EaXNhYmxlQ3RvciAmIHR5cGVvZiBNY1RhZ0Jhc2UgPSBtaXhpbkNvbG9yKG1peGluRGlzYWJsZWQoTWNUYWdCYXNlKSk7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtYy10YWcsIFttYy10YWddLCBtYy1iYXNpYy10YWcsIFttYy1iYXNpYy10YWddJyxcbiAgICBleHBvcnRBczogJ21jVGFnJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3RhZy5wYXJ0aWFsLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3RhZy5zY3NzJ10sXG4gICAgaW5wdXRzOiBbJ2NvbG9yJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ21jLXRhZycsXG5cbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6ICd0YWJpbmRleCcsXG4gICAgICAgICdbYXR0ci5kaXNhYmxlZF0nOiAnZGlzYWJsZWQgfHwgbnVsbCcsXG5cbiAgICAgICAgJ1tjbGFzcy5tYy1zZWxlY3RlZF0nOiAnc2VsZWN0ZWQnLFxuICAgICAgICAnW2NsYXNzLm1jLWZvY3VzZWRdJzogJ2hhc0ZvY3VzJyxcbiAgICAgICAgJ1tjbGFzcy5tYy10YWctd2l0aC1hdmF0YXJdJzogJ2F2YXRhcicsXG4gICAgICAgICdbY2xhc3MubWMtdGFnLXdpdGgtaWNvbl0nOiAnY29udGVudENoaWxkcmVuJyxcbiAgICAgICAgJ1tjbGFzcy5tYy10YWctd2l0aC10cmFpbGluZy1pY29uXSc6ICd0cmFpbGluZ0ljb24gfHwgcmVtb3ZlSWNvbicsXG4gICAgICAgICdbY2xhc3MubWMtZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcblxuICAgICAgICAnKGNsaWNrKSc6ICdoYW5kbGVDbGljaygkZXZlbnQpJyxcbiAgICAgICAgJyhrZXlkb3duKSc6ICdoYW5kbGVLZXlkb3duKCRldmVudCknLFxuICAgICAgICAnKGZvY3VzKSc6ICdmb2N1cygpJyxcbiAgICAgICAgJyhibHVyKSc6ICdibHVyKCknXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE1jVGFnIGV4dGVuZHMgTWNUYWdNaXhpbkJhc2UgaW1wbGVtZW50cyBJRm9jdXNhYmxlT3B0aW9uLCBPbkRlc3Ryb3ksIENhbkNvbG9yLCBDYW5EaXNhYmxlIHtcbiAgICAvKiogRW1pdHMgd2hlbiB0aGUgdGFnIGlzIGZvY3VzZWQuICovXG4gICAgcmVhZG9ubHkgb25Gb2N1cyA9IG5ldyBTdWJqZWN0PE1jVGFnRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHMgd2hlbiB0aGUgdGFnIGlzIGJsdXJlZC4gKi9cbiAgICByZWFkb25seSBvbkJsdXIgPSBuZXcgU3ViamVjdDxNY1RhZ0V2ZW50PigpO1xuXG4gICAgbmF0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdGFnIGhhcyBmb2N1cy4gKi9cbiAgICBoYXNGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHRhZyBsaXN0IGlzIHNlbGVjdGFibGUgKi9cbiAgICB0YWdMaXN0U2VsZWN0YWJsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKE1jSWNvbikgY29udGVudENoaWxkcmVuOiBRdWVyeUxpc3Q8TWNJY29uPjtcblxuICAgIC8qKiBUaGUgdGFnIGF2YXRhciAqL1xuICAgIEBDb250ZW50Q2hpbGQoTWNUYWdBdmF0YXIsIHtzdGF0aWM6IGZhbHNlfSkgYXZhdGFyOiBNY1RhZ0F2YXRhcjtcblxuICAgIC8qKiBUaGUgdGFnJ3MgdHJhaWxpbmcgaWNvbi4gKi9cbiAgICBAQ29udGVudENoaWxkKE1jVGFnVHJhaWxpbmdJY29uLCB7c3RhdGljOiBmYWxzZX0pIHRyYWlsaW5nSWNvbjogTWNUYWdUcmFpbGluZ0ljb247XG5cbiAgICAvKiogVGhlIHRhZydzIHJlbW92ZSB0b2dnbGVyLiAqL1xuICAgIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBNY1RhZ1JlbW92ZSksIHtzdGF0aWM6IGZhbHNlfSkgcmVtb3ZlSWNvbjogTWNUYWdSZW1vdmU7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSB0YWcgaXMgc2VsZWN0ZWQgb3IgZGVzZWxlY3RlZC4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TWNUYWdTZWxlY3Rpb25DaGFuZ2U+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxNY1RhZ1NlbGVjdGlvbkNoYW5nZT4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIHRhZyBpcyBkZXN0cm95ZWQuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGRlc3Ryb3llZDogRXZlbnRFbWl0dGVyPE1jVGFnRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNY1RhZ0V2ZW50PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhIHRhZyBpcyB0byBiZSByZW1vdmVkLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSByZW1vdmVkOiBFdmVudEVtaXR0ZXI8TWNUYWdFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1jVGFnRXZlbnQ+KCk7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdGFnIGlzIHNlbGVjdGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgc2V0IHNlbGVjdGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKGNvZXJjZWRWYWx1ZSAhPT0gdGhpcy5fc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gY29lcmNlZFZhbHVlO1xuICAgICAgICAgICAgdGhpcy5kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBUaGUgdmFsdWUgb2YgdGhlIHRhZy4gRGVmYXVsdHMgdG8gdGhlIGNvbnRlbnQgaW5zaWRlIGA8bWMtdGFnPmAgdGFncy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyB0aGlzLl92YWx1ZVxuICAgICAgICAgICAgOiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudDtcbiAgICB9XG5cbiAgICBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ZhbHVlOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgdGFnIGlzIHNlbGVjdGFibGUuIFdoZW4gYSB0YWcgaXMgbm90IHNlbGVjdGFibGUsXG4gICAgICogY2hhbmdlcyB0byBpdHMgc2VsZWN0ZWQgc3RhdGUgYXJlIGFsd2F5cyBpZ25vcmVkLiBCeSBkZWZhdWx0IGEgdGFnIGlzXG4gICAgICogc2VsZWN0YWJsZSwgYW5kIGl0IGJlY29tZXMgbm9uLXNlbGVjdGFibGUgaWYgaXRzIHBhcmVudCB0YWcgbGlzdCBpc1xuICAgICAqIG5vdCBzZWxlY3RhYmxlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHNlbGVjdGFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RhYmxlICYmIHRoaXMudGFnTGlzdFNlbGVjdGFibGU7XG4gICAgfVxuXG4gICAgc2V0IHNlbGVjdGFibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0YWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2VsZWN0YWJsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRoZSB0YWcgZGlzcGxheXMgdGhlIHJlbW92ZSBzdHlsaW5nIGFuZCBlbWl0cyAocmVtb3ZlZCkgZXZlbnRzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHJlbW92YWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbW92YWJsZTtcbiAgICB9XG5cbiAgICBzZXQgcmVtb3ZhYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3JlbW92YWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVtb3ZhYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIGdldCB0YWJpbmRleCgpOiBhbnkge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0YWJsZSkgeyByZXR1cm4gbnVsbDsgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkID8gbnVsbCA6IC0xO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgc2V0IGRpc2FibGVkKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmVcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZik7XG5cbiAgICAgICAgdGhpcy5hZGRIb3N0Q2xhc3NOYW1lKCk7XG5cbiAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5hZGRDbGFzc01vZGlmaWNhdG9yRm9ySWNvbnMoKTtcbiAgICB9XG5cbiAgICBhZGRDbGFzc01vZGlmaWNhdG9yRm9ySWNvbnMoKSB7XG4gICAgICAgIGNvbnN0IGljb25zID0gdGhpcy5jb250ZW50Q2hpbGRyZW4ubWFwKChpdGVtKSA9PiBpdGVtLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIGlmIChpY29ucy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGljb25FbGVtZW50ID0gaWNvbnNbMF07XG5cbiAgICAgICAgICAgIGlmICghaWNvbkVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZyAmJiAhaWNvbkVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgaWYgKGljb25FbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGljb25FbGVtZW50LmNsYXNzTGlzdC5hZGQoJ21jLWljb25fbGVmdCcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbWMtbGVmdC1pY29uJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGljb25FbGVtZW50LnByZXZpb3VzU2libGluZykge1xuICAgICAgICAgICAgICAgICAgICBpY29uRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdtYy1pY29uX3JpZ2h0Jyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdtYy1yaWdodC1pY29uJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGljb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0SWNvbkVsZW1lbnQgPSBpY29uc1swXTtcbiAgICAgICAgICAgIGNvbnN0IHNlY29uZEljb25FbGVtZW50ID0gaWNvbnNbMV07XG5cbiAgICAgICAgICAgIGZpcnN0SWNvbkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbWMtaWNvbl9sZWZ0Jyk7XG4gICAgICAgICAgICBzZWNvbmRJY29uRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdtYy1pY29uX3JpZ2h0Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRIb3N0Q2xhc3NOYW1lKCkge1xuICAgICAgICAvLyBBZGQgY2xhc3MgZm9yIHRoZSBkaWZmZXJlbnQgdGFnc1xuICAgICAgICBmb3IgKGNvbnN0IGF0dHIgb2YgVEFHX0FUVFJJQlVURV9OQU1FUykge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lmhhc0F0dHJpYnV0ZShhdHRyKSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gYXR0clxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmFkZChhdHRyKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QuYWRkKCdtYy1zdGFuZGFyZC10YWcnKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQuZW1pdCh7IHRhZzogdGhpcyB9KTtcbiAgICB9XG5cbiAgICBzZWxlY3QoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hTZWxlY3Rpb25DaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlc2VsZWN0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmRpc3BhdGNoU2VsZWN0aW9uQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3RWaWFJbnRlcmFjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9zZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZSh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvZ2dsZVNlbGVjdGVkKGlzVXNlcklucHV0OiBib29sZWFuID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSAhdGhpcy5zZWxlY3RlZDtcbiAgICAgICAgdGhpcy5kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZShpc1VzZXJJbnB1dCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgLyoqIEFsbG93cyBmb3IgcHJvZ3JhbW1hdGljIGZvY3VzaW5nIG9mIHRoZSB0YWcuICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RhYmxlKSB7IHJldHVybjsgfVxuXG4gICAgICAgIGlmICghdGhpcy5oYXNGb2N1cykge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblxuICAgICAgICAgICAgdGhpcy5vbkZvY3VzLm5leHQoeyB0YWc6IHRoaXMgfSk7XG5cbiAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzRm9jdXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFsbG93cyBmb3IgcHJvZ3JhbW1hdGljIHJlbW92YWwgb2YgdGhlIHRhZy4gQ2FsbGVkIGJ5IHRoZSBNY1RhZ0xpc3Qgd2hlbiB0aGUgREVMRVRFIG9yXG4gICAgICogQkFDS1NQQUNFIGtleXMgYXJlIHByZXNzZWQuXG4gICAgICpcbiAgICAgKiBJbmZvcm1zIGFueSBsaXN0ZW5lcnMgb2YgdGhlIHJlbW92YWwgcmVxdWVzdC4gRG9lcyBub3QgcmVtb3ZlIHRoZSB0YWcgZnJvbSB0aGUgRE9NLlxuICAgICAqL1xuICAgIHJlbW92ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVtb3ZhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZWQuZW1pdCh7IHRhZzogdGhpcyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZUNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgeyByZXR1cm47IH1cblxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGRlcHJlY2F0aW9uXG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgICAgICAgY2FzZSBERUxFVEU6XG4gICAgICAgICAgICBjYXNlIEJBQ0tTUEFDRTpcbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgcmVtb3ZhYmxlLCByZW1vdmUgdGhlIGZvY3VzZWQgdGFnXG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAvLyBBbHdheXMgcHJldmVudCBzbyBwYWdlIG5hdmlnYXRpb24gZG9lcyBub3Qgb2NjdXJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBTUEFDRTpcbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgc2VsZWN0YWJsZSwgdG9nZ2xlIHRoZSBmb2N1c2VkIHRhZ1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVTZWxlY3RlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBBbHdheXMgcHJldmVudCBzcGFjZSBmcm9tIHNjcm9sbGluZyB0aGUgcGFnZSBzaW5jZSB0aGUgbGlzdCBoYXMgZm9jdXNcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJsdXIoKTogdm9pZCB7XG4gICAgICAgIC8vIFdoZW4gYW5pbWF0aW9ucyBhcmUgZW5hYmxlZCwgQW5ndWxhciBtYXkgZW5kIHVwIHJlbW92aW5nIHRoZSB0YWcgZnJvbSB0aGUgRE9NIGEgbGl0dGxlXG4gICAgICAgIC8vIGVhcmxpZXIgdGhhbiB1c3VhbCwgY2F1c2luZyBpdCB0byBiZSBibHVycmVkIGFuZCB0aHJvd2luZyBvZmYgdGhlIGxvZ2ljIGluIHRoZSB0YWcgbGlzdFxuICAgICAgICAvLyB0aGF0IG1vdmVzIGZvY3VzIG5vdCB0aGUgbmV4dCBpdGVtLiBUbyB3b3JrIGFyb3VuZCB0aGUgaXNzdWUsIHdlIGRlZmVyIG1hcmtpbmcgdGhlIHRhZ1xuICAgICAgICAvLyBhcyBub3QgZm9jdXNlZCB1bnRpbCB0aGUgbmV4dCB0aW1lIHRoZSB6b25lIHN0YWJpbGl6ZXMuXG4gICAgICAgIHRoaXMuX25nWm9uZS5vblN0YWJsZVxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzRm9jdXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkJsdXIubmV4dCh7IHRhZzogdGhpcyB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGlzcGF0Y2hTZWxlY3Rpb25DaGFuZ2UoaXNVc2VySW5wdXQgPSBmYWxzZSkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgIHNvdXJjZTogdGhpcyxcbiAgICAgICAgICAgIGlzVXNlcklucHV0LFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuX3NlbGVjdGVkXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuXG4vKipcbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqICAgICBgPG1jLXRhZz5cbiAqICAgICAgIDxtYy1pY29uIG1jVGFnUmVtb3ZlPmNhbmNlbDwvbWMtaWNvbj5cbiAqICAgICA8L21jLXRhZz5gXG4gKlxuICogWW91ICptYXkqIHVzZSBhIGN1c3RvbSBpY29uLCBidXQgeW91IG1heSBuZWVkIHRvIG92ZXJyaWRlIHRoZSBgbWMtdGFnLXJlbW92ZWAgcG9zaXRpb25pbmdcbiAqIHN0eWxlcyB0byBwcm9wZXJseSBjZW50ZXIgdGhlIGljb24gd2l0aGluIHRoZSB0YWcuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW21jVGFnUmVtb3ZlXScsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ21jLXRhZy1yZW1vdmUgbWMtdGFnLXRyYWlsaW5nLWljb24nLFxuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJy0xJyxcbiAgICAgICAgJyhjbGljayknOiAnaGFuZGxlQ2xpY2soJGV2ZW50KScsXG4gICAgICAgICcoZm9jdXMpJzogJ2ZvY3VzKCRldmVudCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBNY1RhZ1JlbW92ZSB7XG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIHBhcmVudFRhZzogTWNUYWcpIHt9XG5cbiAgICBmb2N1cygkZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBDYWxscyB0aGUgcGFyZW50IHRhZydzIHB1YmxpYyBgcmVtb3ZlKClgIG1ldGhvZCBpZiBhcHBsaWNhYmxlLiAqL1xuICAgIGhhbmRsZUNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnRUYWcucmVtb3ZhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudFRhZy5oYXNGb2N1cyA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMucGFyZW50VGFnLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2UgbmVlZCB0byBzdG9wIGV2ZW50IHByb3BhZ2F0aW9uIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBldmVudCB3aWxsIGJ1YmJsZSB1cCB0byB0aGVcbiAgICAgICAgLy8gZm9ybSBmaWVsZCBhbmQgY2F1c2UgdGhlIGBvbkNvbnRhaW5lckNsaWNrYCBtZXRob2QgdG8gYmUgaW52b2tlZC4gVGhpcyBtZXRob2Qgd291bGQgdGhlblxuICAgICAgICAvLyByZXNldCB0aGUgZm9jdXNlZCB0YWcgdGhhdCBoYXMgYmVlbiBmb2N1c2VkIGFmdGVyIHRhZyByZW1vdmFsLiBVc3VhbGx5IHRoZSBwYXJlbnRcbiAgICAgICAgLy8gdGhlIHBhcmVudCBjbGljayBsaXN0ZW5lciBvZiB0aGUgYE1jVGFnYCB3b3VsZCBwcmV2ZW50IHByb3BhZ2F0aW9uLCBidXQgaXQgY2FuIGhhcHBlblxuICAgICAgICAvLyB0aGF0IHRoZSB0YWcgaXMgYmVpbmcgcmVtb3ZlZCBiZWZvcmUgdGhlIGV2ZW50IGJ1YmJsZXMgdXAuXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtYy10YWdfX3dyYXBwZXJcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm1jLXRhZ19fdGV4dFwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L3NwYW4+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21jLWljb25dXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXYgY2xhc3M9XCJtYy10YWctb3ZlcmxheVwiPjwvZGl2PlxuPC9kaXY+XG4iXX0=