@po-ui/ng-components 5.22.2 → 5.22.3

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 (1217) hide show
  1. package/README.md +36 -36
  2. package/bundles/po-ui-ng-components.umd.js +38669 -38659
  3. package/bundles/po-ui-ng-components.umd.js.map +1 -1
  4. package/esm2015/lib/components/components.module.js +122 -122
  5. package/esm2015/lib/components/index.js +38 -38
  6. package/esm2015/lib/components/po-accordion/index.js +4 -4
  7. package/esm2015/lib/components/po-accordion/po-accordion-base.component.js +29 -29
  8. package/esm2015/lib/components/po-accordion/po-accordion-item/po-accordion-item.component.js +66 -66
  9. package/esm2015/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.js +23 -23
  10. package/esm2015/lib/components/po-accordion/po-accordion-item-header/po-accordion-item-header.component.js +24 -24
  11. package/esm2015/lib/components/po-accordion/po-accordion.component.js +70 -70
  12. package/esm2015/lib/components/po-accordion/po-accordion.module.js +52 -52
  13. package/esm2015/lib/components/po-accordion/services/po-accordion.service.js +27 -27
  14. package/esm2015/lib/components/po-avatar/index.js +3 -3
  15. package/esm2015/lib/components/po-avatar/po-avatar-base.component.js +68 -68
  16. package/esm2015/lib/components/po-avatar/po-avatar.component.js +42 -42
  17. package/esm2015/lib/components/po-avatar/po-avatar.module.js +18 -18
  18. package/esm2015/lib/components/po-badge/po-badge-base.component.js +89 -89
  19. package/esm2015/lib/components/po-badge/po-badge.component.js +16 -16
  20. package/esm2015/lib/components/po-badge/po-badge.module.js +18 -18
  21. package/esm2015/lib/components/po-breadcrumb/index.js +5 -5
  22. package/esm2015/lib/components/po-breadcrumb/po-breadcrumb-base.component.js +48 -48
  23. package/esm2015/lib/components/po-breadcrumb/po-breadcrumb-dropdown/po-breadcrumb-dropdown.component.js +20 -20
  24. package/esm2015/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.component.js +77 -77
  25. package/esm2015/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.service.js +49 -49
  26. package/esm2015/lib/components/po-breadcrumb/po-breadcrumb-item/po-breadcrumb-item.component.js +27 -27
  27. package/esm2015/lib/components/po-breadcrumb/po-breadcrumb-item.interface.js +2 -2
  28. package/esm2015/lib/components/po-breadcrumb/po-breadcrumb.component.js +159 -159
  29. package/esm2015/lib/components/po-breadcrumb/po-breadcrumb.interface.js +2 -2
  30. package/esm2015/lib/components/po-breadcrumb/po-breadcrumb.module.js +28 -28
  31. package/esm2015/lib/components/po-button/index.js +3 -3
  32. package/esm2015/lib/components/po-button/po-button-base.component.js +127 -127
  33. package/esm2015/lib/components/po-button/po-button.component.js +69 -69
  34. package/esm2015/lib/components/po-button/po-button.module.js +20 -20
  35. package/esm2015/lib/components/po-button-group/index.js +5 -5
  36. package/esm2015/lib/components/po-button-group/po-button-group-base.component.js +95 -95
  37. package/esm2015/lib/components/po-button-group/po-button-group-item.interface.js +2 -2
  38. package/esm2015/lib/components/po-button-group/po-button-group-toggle.enum.js +17 -17
  39. package/esm2015/lib/components/po-button-group/po-button-group.component.js +43 -43
  40. package/esm2015/lib/components/po-button-group/po-button-group.module.js +20 -20
  41. package/esm2015/lib/components/po-calendar/index.js +4 -4
  42. package/esm2015/lib/components/po-calendar/po-calendar-base.component.js +176 -176
  43. package/esm2015/lib/components/po-calendar/po-calendar-header/po-calendar-header.component.js +24 -24
  44. package/esm2015/lib/components/po-calendar/po-calendar-mode.enum.js +13 -13
  45. package/esm2015/lib/components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.js +251 -251
  46. package/esm2015/lib/components/po-calendar/po-calendar.component.js +199 -199
  47. package/esm2015/lib/components/po-calendar/po-calendar.module.js +19 -19
  48. package/esm2015/lib/components/po-calendar/services/po-calendar.lang.service.js +187 -187
  49. package/esm2015/lib/components/po-calendar/services/po-calendar.service.js +44 -44
  50. package/esm2015/lib/components/po-chart/directives/po-resize-observer.directive.js +44 -44
  51. package/esm2015/lib/components/po-chart/enums/po-chart-type.enum.js +51 -51
  52. package/esm2015/lib/components/po-chart/helpers/po-chart-default-values.constant.js +18 -18
  53. package/esm2015/lib/components/po-chart/index.js +8 -8
  54. package/esm2015/lib/components/po-chart/interfaces/po-chart-axis-options.interface.js +2 -2
  55. package/esm2015/lib/components/po-chart/interfaces/po-chart-bar-coordinates.interface.js +2 -2
  56. package/esm2015/lib/components/po-chart/interfaces/po-chart-container-size.interface.js +11 -11
  57. package/esm2015/lib/components/po-chart/interfaces/po-chart-label-coordinates.interface.js +2 -2
  58. package/esm2015/lib/components/po-chart/interfaces/po-chart-min-max-values.interface.js +2 -2
  59. package/esm2015/lib/components/po-chart/interfaces/po-chart-options.interface.js +2 -2
  60. package/esm2015/lib/components/po-chart/interfaces/po-chart-path-coordinates.interface.js +2 -2
  61. package/esm2015/lib/components/po-chart/interfaces/po-chart-points-coordinates.interface.js +2 -2
  62. package/esm2015/lib/components/po-chart/interfaces/po-chart-serie.interface.js +2 -2
  63. package/esm2015/lib/components/po-chart/po-chart-base.component.js +244 -244
  64. package/esm2015/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis-label/po-chart-axis-label.component.js +23 -23
  65. package/esm2015/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis-path/po-chart-axis-path.component.js +19 -19
  66. package/esm2015/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis.component.js +287 -287
  67. package/esm2015/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar-base.component.js +94 -94
  68. package/esm2015/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar-path/po-chart-bar-path.component.js +33 -33
  69. package/esm2015/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar.component.js +58 -58
  70. package/esm2015/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-column/po-chart-column.component.js +59 -59
  71. package/esm2015/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-label/po-chart-circular-label.component.js +29 -29
  72. package/esm2015/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-path/po-chart-circular-path.component.js +35 -35
  73. package/esm2015/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-path/po-chart-tooltip.directive.js +76 -76
  74. package/esm2015/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular.component.js +142 -142
  75. package/esm2015/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-donut/po-chart-donut.component.js +115 -115
  76. package/esm2015/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-pie/po-chart-pie.component.js +57 -57
  77. package/esm2015/lib/components/po-chart/po-chart-container/po-chart-container.component.js +119 -119
  78. package/esm2015/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-area/po-chart-area.component.js +77 -77
  79. package/esm2015/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-line-base.component.js +151 -151
  80. package/esm2015/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-line.component.js +41 -41
  81. package/esm2015/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-path/po-chart-path.component.js +65 -65
  82. package/esm2015/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-series-point/po-chart-series-point.component.js +95 -95
  83. package/esm2015/lib/components/po-chart/po-chart-legend/po-chart-legend.component.js +21 -21
  84. package/esm2015/lib/components/po-chart/po-chart-types/po-chart-circular/po-chart-circular.constant.js +11 -11
  85. package/esm2015/lib/components/po-chart/po-chart-types/po-chart-circular/po-chart-circular.js +374 -374
  86. package/esm2015/lib/components/po-chart/po-chart-types/po-chart-dynamic-type.component.js +45 -45
  87. package/esm2015/lib/components/po-chart/po-chart-types/po-chart-gauge/po-chart-gauge-series.interface.js +2 -2
  88. package/esm2015/lib/components/po-chart/po-chart-types/po-chart-gauge/po-chart-gauge-text-content/po-chart-gauge-text-content.component.js +75 -75
  89. package/esm2015/lib/components/po-chart/po-chart-types/po-chart-gauge/po-chart-gauge.component.js +85 -85
  90. package/esm2015/lib/components/po-chart/po-chart.component.js +203 -203
  91. package/esm2015/lib/components/po-chart/po-chart.module.js +61 -61
  92. package/esm2015/lib/components/po-chart/services/po-chart-maths.service.js +135 -135
  93. package/esm2015/lib/components/po-chart/services/po-chart-svg-container.service.js +57 -57
  94. package/esm2015/lib/components/po-container/index.js +3 -3
  95. package/esm2015/lib/components/po-container/po-container-base.component.js +88 -88
  96. package/esm2015/lib/components/po-container/po-container.component.js +32 -32
  97. package/esm2015/lib/components/po-container/po-container.module.js +18 -18
  98. package/esm2015/lib/components/po-disclaimer/index.js +4 -4
  99. package/esm2015/lib/components/po-disclaimer/po-disclaimer-base.component.js +77 -77
  100. package/esm2015/lib/components/po-disclaimer/po-disclaimer.component.js +29 -29
  101. package/esm2015/lib/components/po-disclaimer/po-disclaimer.interface.js +2 -2
  102. package/esm2015/lib/components/po-disclaimer/po-disclaimer.module.js +17 -17
  103. package/esm2015/lib/components/po-disclaimer-group/index.js +5 -5
  104. package/esm2015/lib/components/po-disclaimer-group/po-disclaimer-group-base.component.js +194 -194
  105. package/esm2015/lib/components/po-disclaimer-group/po-disclaimer-group-remove-action.interface.js +2 -2
  106. package/esm2015/lib/components/po-disclaimer-group/po-disclaimer-group.component.js +41 -41
  107. package/esm2015/lib/components/po-disclaimer-group/po-disclaimer-group.interface.js +2 -2
  108. package/esm2015/lib/components/po-disclaimer-group/po-disclaimer-group.module.js +20 -20
  109. package/esm2015/lib/components/po-disclaimer-group/po-disclaimer-remove/po-disclaimer-remove.component.js +30 -30
  110. package/esm2015/lib/components/po-divider/index.js +3 -3
  111. package/esm2015/lib/components/po-divider/po-divider-base.component.js +16 -16
  112. package/esm2015/lib/components/po-divider/po-divider.component.js +32 -32
  113. package/esm2015/lib/components/po-divider/po-divider.module.js +18 -18
  114. package/esm2015/lib/components/po-dropdown/index.js +4 -4
  115. package/esm2015/lib/components/po-dropdown/po-dropdown-action.interface.js +2 -2
  116. package/esm2015/lib/components/po-dropdown/po-dropdown-base.component.js +71 -71
  117. package/esm2015/lib/components/po-dropdown/po-dropdown.component.js +97 -97
  118. package/esm2015/lib/components/po-dropdown/po-dropdown.module.js +18 -18
  119. package/esm2015/lib/components/po-dynamic/index.js +11 -11
  120. package/esm2015/lib/components/po-dynamic/po-dynamic-field-type.enum.js +25 -25
  121. package/esm2015/lib/components/po-dynamic/po-dynamic-field.interface.js +2 -2
  122. package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-base.component.js +104 -104
  123. package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.js +2 -2
  124. package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-field-internal.interface.js +2 -2
  125. package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields-base.component.js +200 -200
  126. package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.js +129 -129
  127. package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-load/po-dynamic-form-load.interface.js +2 -2
  128. package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-load/po-dynamic-form-load.service.js +32 -32
  129. package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-operation/po-dynamic-form-operation.js +20 -20
  130. package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-response.interface.js +2 -2
  131. package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-field-changed.interface.js +2 -2
  132. package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-field-validation.interface.js +2 -2
  133. package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.interface.js +2 -2
  134. package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.service.js +39 -39
  135. package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form.component.js +167 -167
  136. package/esm2015/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.js +163 -163
  137. package/esm2015/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-field.interface.js +2 -2
  138. package/esm2015/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.js +101 -101
  139. package/esm2015/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.service.js +17 -17
  140. package/esm2015/lib/components/po-dynamic/po-dynamic.module.js +35 -35
  141. package/esm2015/lib/components/po-dynamic/po-dynamic.util.js +18 -18
  142. package/esm2015/lib/components/po-field/index.js +51 -51
  143. package/esm2015/lib/components/po-field/po-checkbox/po-checkbox-base.component.js +98 -98
  144. package/esm2015/lib/components/po-field/po-checkbox/po-checkbox.component.js +94 -94
  145. package/esm2015/lib/components/po-field/po-checkbox-group/interfaces/po-checkbox-group-option-view.interface.js +2 -2
  146. package/esm2015/lib/components/po-field/po-checkbox-group/interfaces/po-checkbox-group-option.interface.js +2 -2
  147. package/esm2015/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.js +297 -297
  148. package/esm2015/lib/components/po-field/po-checkbox-group/po-checkbox-group.component.js +98 -98
  149. package/esm2015/lib/components/po-field/po-checkbox-group/po-checkbox-group.module.js +20 -20
  150. package/esm2015/lib/components/po-field/po-clean/po-clean-base.component.js +42 -42
  151. package/esm2015/lib/components/po-field/po-clean/po-clean.component.js +33 -33
  152. package/esm2015/lib/components/po-field/po-clean/po-clean.module.js +18 -18
  153. package/esm2015/lib/components/po-field/po-combo/interfaces/po-combo-filter.interface.js +2 -2
  154. package/esm2015/lib/components/po-field/po-combo/interfaces/po-combo-group.interface.js +2 -2
  155. package/esm2015/lib/components/po-field/po-combo/interfaces/po-combo-literals.interface.js +2 -2
  156. package/esm2015/lib/components/po-field/po-combo/interfaces/po-combo-option-group.interface.js +2 -2
  157. package/esm2015/lib/components/po-field/po-combo/interfaces/po-combo-option.interface.js +2 -2
  158. package/esm2015/lib/components/po-field/po-combo/interfaces/po-response.interface.js +2 -2
  159. package/esm2015/lib/components/po-field/po-combo/po-combo-base.component.js +749 -749
  160. package/esm2015/lib/components/po-field/po-combo/po-combo-filter-mode.enum.js +17 -17
  161. package/esm2015/lib/components/po-field/po-combo/po-combo-filter.service.js +78 -78
  162. package/esm2015/lib/components/po-field/po-combo/po-combo-option-template/po-combo-option-template.directive.js +81 -81
  163. package/esm2015/lib/components/po-field/po-combo/po-combo.component.js +525 -525
  164. package/esm2015/lib/components/po-field/po-datepicker/enums/po-datepicker-iso-format.enum.js +17 -17
  165. package/esm2015/lib/components/po-field/po-datepicker/po-datepicker-base.component.js +396 -396
  166. package/esm2015/lib/components/po-field/po-datepicker/po-datepicker.component.js +345 -345
  167. package/esm2015/lib/components/po-field/po-datepicker/po-datepicker.module.js +22 -22
  168. package/esm2015/lib/components/po-field/po-datepicker-range/interfaces/po-datepicker-range-literals.interface.js +2 -2
  169. package/esm2015/lib/components/po-field/po-datepicker-range/interfaces/po-datepicker-range.interface.js +2 -2
  170. package/esm2015/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.js +475 -475
  171. package/esm2015/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.js +443 -443
  172. package/esm2015/lib/components/po-field/po-datepicker-range/po-datepicker-range.literals.js +27 -27
  173. package/esm2015/lib/components/po-field/po-decimal/po-decimal.component.js +598 -598
  174. package/esm2015/lib/components/po-field/po-email/po-email.component.js +106 -106
  175. package/esm2015/lib/components/po-field/po-field-container/po-field-container-bottom/po-field-container-bottom.component.js +29 -29
  176. package/esm2015/lib/components/po-field/po-field-container/po-field-container-literals.js +15 -15
  177. package/esm2015/lib/components/po-field/po-field-container/po-field-container.component.js +39 -39
  178. package/esm2015/lib/components/po-field/po-field-container/po-field-container.module.js +19 -19
  179. package/esm2015/lib/components/po-field/po-field-validate.model.js +69 -69
  180. package/esm2015/lib/components/po-field/po-field.model.js +78 -78
  181. package/esm2015/lib/components/po-field/po-field.module.js +156 -156
  182. package/esm2015/lib/components/po-field/po-input/po-input-base.component.js +357 -357
  183. package/esm2015/lib/components/po-field/po-input/po-input.component.js +56 -56
  184. package/esm2015/lib/components/po-field/po-input/po-mask.js +460 -460
  185. package/esm2015/lib/components/po-field/po-input-generic/po-input-generic.js +187 -187
  186. package/esm2015/lib/components/po-field/po-login/po-login.component.js +65 -65
  187. package/esm2015/lib/components/po-field/po-lookup/interfaces/po-lookup-advanced-filter.interface.js +2 -2
  188. package/esm2015/lib/components/po-field/po-lookup/interfaces/po-lookup-column.interface.js +2 -2
  189. package/esm2015/lib/components/po-field/po-lookup/interfaces/po-lookup-filter.interface.js +2 -2
  190. package/esm2015/lib/components/po-field/po-lookup/interfaces/po-lookup-filtered-items-params.interface.js +2 -2
  191. package/esm2015/lib/components/po-field/po-lookup/interfaces/po-lookup-literals.interface.js +2 -2
  192. package/esm2015/lib/components/po-field/po-lookup/interfaces/po-lookup-response-api.interface.js +2 -2
  193. package/esm2015/lib/components/po-field/po-lookup/po-lookup-base.component.js +451 -451
  194. package/esm2015/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.js +357 -347
  195. package/esm2015/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.js +130 -130
  196. package/esm2015/lib/components/po-field/po-lookup/po-lookup.component.js +337 -337
  197. package/esm2015/lib/components/po-field/po-lookup/services/po-lookup-filter.service.js +59 -59
  198. package/esm2015/lib/components/po-field/po-lookup/services/po-lookup-modal.service.js +62 -62
  199. package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-base.component.js +576 -576
  200. package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.js +139 -139
  201. package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-filter-mode.enum.js +17 -17
  202. package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-filter.interface.js +2 -2
  203. package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-filter.service.js +50 -50
  204. package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-item/po-multiselect-item.component.js +33 -33
  205. package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-literals.interface.js +2 -2
  206. package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-option.interface.js +2 -2
  207. package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-search/po-multiselect-search.component.js +57 -57
  208. package/esm2015/lib/components/po-field/po-multiselect/po-multiselect.component.js +359 -359
  209. package/esm2015/lib/components/po-field/po-number/po-number-base.component.js +114 -114
  210. package/esm2015/lib/components/po-field/po-number/po-number.component.js +119 -119
  211. package/esm2015/lib/components/po-field/po-password/po-password.component.js +92 -92
  212. package/esm2015/lib/components/po-field/po-radio-group/po-radio-group-base.component.js +184 -184
  213. package/esm2015/lib/components/po-field/po-radio-group/po-radio-group-option.interface.js +2 -2
  214. package/esm2015/lib/components/po-field/po-radio-group/po-radio-group.component.js +119 -119
  215. package/esm2015/lib/components/po-field/po-rich-text/interfaces/po-rich-text-toolbar-button-group-item.interface.js +2 -2
  216. package/esm2015/lib/components/po-field/po-rich-text/po-rich-text-base.component.js +181 -181
  217. package/esm2015/lib/components/po-field/po-rich-text/po-rich-text-body/po-rich-text-body.component.js +312 -312
  218. package/esm2015/lib/components/po-field/po-rich-text/po-rich-text-image-modal/po-rich-text-image-modal.component.js +96 -96
  219. package/esm2015/lib/components/po-field/po-rich-text/po-rich-text-link-modal/po-rich-text-link-modal.component.js +140 -140
  220. package/esm2015/lib/components/po-field/po-rich-text/po-rich-text-literals.js +83 -83
  221. package/esm2015/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.js +166 -166
  222. package/esm2015/lib/components/po-field/po-rich-text/po-rich-text.component.js +147 -147
  223. package/esm2015/lib/components/po-field/po-rich-text/po-rich-text.service.js +17 -17
  224. package/esm2015/lib/components/po-field/po-select/po-select-option-template/po-select-option-template.directive.js +59 -59
  225. package/esm2015/lib/components/po-field/po-select/po-select-option.interface.js +2 -2
  226. package/esm2015/lib/components/po-field/po-select/po-select.component.js +366 -366
  227. package/esm2015/lib/components/po-field/po-switch/po-switch-label-position.enum.js +15 -15
  228. package/esm2015/lib/components/po-field/po-switch/po-switch.component.js +190 -190
  229. package/esm2015/lib/components/po-field/po-textarea/po-textarea-base.component.js +269 -269
  230. package/esm2015/lib/components/po-field/po-textarea/po-textarea.component.js +130 -130
  231. package/esm2015/lib/components/po-field/po-upload/interfaces/po-upload-file-restriction.interface.js +2 -2
  232. package/esm2015/lib/components/po-field/po-upload/interfaces/po-upload-literals.interface.js +2 -2
  233. package/esm2015/lib/components/po-field/po-upload/po-upload-base.component.js +581 -581
  234. package/esm2015/lib/components/po-field/po-upload/po-upload-base.service.js +88 -88
  235. package/esm2015/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop-area/po-upload-drag-drop-area.component.js +30 -30
  236. package/esm2015/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop-area-overlay/po-upload-drag-drop-area-overlay.component.js +40 -40
  237. package/esm2015/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.component.js +60 -60
  238. package/esm2015/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.directive.js +165 -165
  239. package/esm2015/lib/components/po-field/po-upload/po-upload-file-restrictions/po-upload-file-restrictions.component.js +63 -63
  240. package/esm2015/lib/components/po-field/po-upload/po-upload-file.js +39 -39
  241. package/esm2015/lib/components/po-field/po-upload/po-upload-status.enum.js +13 -13
  242. package/esm2015/lib/components/po-field/po-upload/po-upload.component.js +326 -326
  243. package/esm2015/lib/components/po-field/po-upload/po-upload.service.js +8 -8
  244. package/esm2015/lib/components/po-field/po-url/po-url.component.js +86 -86
  245. package/esm2015/lib/components/po-field/validators.js +41 -41
  246. package/esm2015/lib/components/po-gauge/index.js +4 -4
  247. package/esm2015/lib/components/po-gauge/interfaces/po-gauge-coordinates.interface.js +2 -2
  248. package/esm2015/lib/components/po-gauge/interfaces/po-gauge-ranges.interface.js +2 -2
  249. package/esm2015/lib/components/po-gauge/interfaces/po-gauge-svg-container.interface.js +2 -2
  250. package/esm2015/lib/components/po-gauge/po-gauge-base.component.js +146 -146
  251. package/esm2015/lib/components/po-gauge/po-gauge-default-values.constant.js +11 -11
  252. package/esm2015/lib/components/po-gauge/po-gauge-description/po-gauge-description.component.js +27 -27
  253. package/esm2015/lib/components/po-gauge/po-gauge-legend/po-gauge-legend.component.js +27 -27
  254. package/esm2015/lib/components/po-gauge/po-gauge-svg/po-gauge-path/po-gauge-path.component.js +20 -20
  255. package/esm2015/lib/components/po-gauge/po-gauge-svg/po-gauge-pointer/po-gauge-pointer.component.js +50 -50
  256. package/esm2015/lib/components/po-gauge/po-gauge-svg/po-gauge-svg.component.js +204 -204
  257. package/esm2015/lib/components/po-gauge/po-gauge-title/po-gauge-title.component.js +13 -13
  258. package/esm2015/lib/components/po-gauge/po-gauge.component.js +72 -72
  259. package/esm2015/lib/components/po-gauge/po-gauge.module.js +32 -32
  260. package/esm2015/lib/components/po-grid/index.js +4 -4
  261. package/esm2015/lib/components/po-grid/po-grid-cell/po-grid-cell.component.js +111 -111
  262. package/esm2015/lib/components/po-grid/po-grid-cell-action/po-grid-cell-action.component.js +24 -24
  263. package/esm2015/lib/components/po-grid/po-grid-head/po-grid-head.component.js +30 -30
  264. package/esm2015/lib/components/po-grid/po-grid-row-actions.interface.js +2 -2
  265. package/esm2015/lib/components/po-grid/po-grid.component.js +314 -314
  266. package/esm2015/lib/components/po-grid/po-grid.module.js +23 -23
  267. package/esm2015/lib/components/po-icon/index.js +3 -3
  268. package/esm2015/lib/components/po-icon/po-icon.component.js +62 -62
  269. package/esm2015/lib/components/po-icon/po-icon.module.js +18 -18
  270. package/esm2015/lib/components/po-info/index.js +4 -4
  271. package/esm2015/lib/components/po-info/po-info-base.component.js +62 -62
  272. package/esm2015/lib/components/po-info/po-info-orietation.enum.js +15 -15
  273. package/esm2015/lib/components/po-info/po-info.component.js +36 -36
  274. package/esm2015/lib/components/po-info/po-info.module.js +21 -21
  275. package/esm2015/lib/components/po-list-view/index.js +7 -7
  276. package/esm2015/lib/components/po-list-view/interfaces/po-list-view-action.interface.js +2 -2
  277. package/esm2015/lib/components/po-list-view/interfaces/po-list-view-literals.interface.js +2 -2
  278. package/esm2015/lib/components/po-list-view/po-list-view-base.component.js +274 -274
  279. package/esm2015/lib/components/po-list-view/po-list-view-content-template/po-list-view-content-template.directive.js +101 -101
  280. package/esm2015/lib/components/po-list-view/po-list-view-detail-template/po-list-view-detail-template.directive.js +64 -64
  281. package/esm2015/lib/components/po-list-view/po-list-view.component.js +128 -128
  282. package/esm2015/lib/components/po-list-view/po-list-view.module.js +51 -51
  283. package/esm2015/lib/components/po-loading/index.js +5 -5
  284. package/esm2015/lib/components/po-loading/po-loading-base.component.js +24 -24
  285. package/esm2015/lib/components/po-loading/po-loading-icon/po-loading-icon.component.js +37 -37
  286. package/esm2015/lib/components/po-loading/po-loading-overlay/interfaces/po-loading-overlay-literals.interface.js +2 -2
  287. package/esm2015/lib/components/po-loading/po-loading-overlay/po-loading-overlay-base.component.js +91 -91
  288. package/esm2015/lib/components/po-loading/po-loading-overlay/po-loading-overlay.component.js +41 -41
  289. package/esm2015/lib/components/po-loading/po-loading.component.js +16 -16
  290. package/esm2015/lib/components/po-loading/po-loading.module.js +22 -22
  291. package/esm2015/lib/components/po-menu/index.js +9 -9
  292. package/esm2015/lib/components/po-menu/po-menu-base.component.js +299 -299
  293. package/esm2015/lib/components/po-menu/po-menu-filter/po-menu-filter-literals.interface.js +2 -2
  294. package/esm2015/lib/components/po-menu/po-menu-filter/po-menu-filter.component.js +40 -40
  295. package/esm2015/lib/components/po-menu/po-menu-filter/po-menu-filter.interface.js +2 -2
  296. package/esm2015/lib/components/po-menu/po-menu-header-template/po-menu-header-template.directive.js +51 -51
  297. package/esm2015/lib/components/po-menu/po-menu-item/po-menu-item-badge.interface.js +2 -2
  298. package/esm2015/lib/components/po-menu/po-menu-item/po-menu-item-filtered.interface.js +2 -2
  299. package/esm2015/lib/components/po-menu/po-menu-item/po-menu-item.component.js +173 -173
  300. package/esm2015/lib/components/po-menu/po-menu-item.interface.js +2 -2
  301. package/esm2015/lib/components/po-menu/po-menu.component.js +497 -497
  302. package/esm2015/lib/components/po-menu/po-menu.module.js +26 -26
  303. package/esm2015/lib/components/po-menu/services/po-menu-global.service.js +32 -32
  304. package/esm2015/lib/components/po-menu/services/po-menu-items.service.js +35 -35
  305. package/esm2015/lib/components/po-menu/services/po-menu.service.js +35 -35
  306. package/esm2015/lib/components/po-menu-panel/index.js +4 -4
  307. package/esm2015/lib/components/po-menu-panel/po-menu-panel-base.component.js +76 -76
  308. package/esm2015/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item-internal.interface.js +2 -2
  309. package/esm2015/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.component.js +54 -54
  310. package/esm2015/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.interface.js +2 -2
  311. package/esm2015/lib/components/po-menu-panel/po-menu-panel.component.js +145 -145
  312. package/esm2015/lib/components/po-menu-panel/po-menu-panel.module.js +24 -24
  313. package/esm2015/lib/components/po-menu-panel/services/po-menu-panel-items.service.js +35 -35
  314. package/esm2015/lib/components/po-modal/index.js +5 -5
  315. package/esm2015/lib/components/po-modal/po-modal-action.interface.js +2 -2
  316. package/esm2015/lib/components/po-modal/po-modal-base.component.js +121 -121
  317. package/esm2015/lib/components/po-modal/po-modal-footer/po-modal-footer.component.js +43 -43
  318. package/esm2015/lib/components/po-modal/po-modal.component.js +114 -114
  319. package/esm2015/lib/components/po-modal/po-modal.literals.js +15 -15
  320. package/esm2015/lib/components/po-modal/po-modal.module.js +19 -19
  321. package/esm2015/lib/components/po-navbar/index.js +5 -5
  322. package/esm2015/lib/components/po-navbar/interfaces/po-navbar-icon-action.interface.js +2 -2
  323. package/esm2015/lib/components/po-navbar/interfaces/po-navbar-item.interface.js +2 -2
  324. package/esm2015/lib/components/po-navbar/interfaces/po-navbar-literals.interface.js +2 -2
  325. package/esm2015/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.js +43 -43
  326. package/esm2015/lib/components/po-navbar/po-navbar-actions/po-navbar-action-popup/po-navbar-action-popup.component.js +18 -18
  327. package/esm2015/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.component.js +19 -19
  328. package/esm2015/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.module.js +18 -18
  329. package/esm2015/lib/components/po-navbar/po-navbar-base.component.js +147 -147
  330. package/esm2015/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation-icon/po-navbar-item-navigation-icon.component.js +18 -18
  331. package/esm2015/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.component.js +18 -18
  332. package/esm2015/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.module.js +15 -15
  333. package/esm2015/lib/components/po-navbar/po-navbar-items/po-navbar-item/po-navbar-item.component.js +30 -30
  334. package/esm2015/lib/components/po-navbar/po-navbar-items/po-navbar-items.component.js +53 -53
  335. package/esm2015/lib/components/po-navbar/po-navbar-items/po-navbar-items.module.js +15 -15
  336. package/esm2015/lib/components/po-navbar/po-navbar-logo/po-navbar-logo.component.js +13 -13
  337. package/esm2015/lib/components/po-navbar/po-navbar.component.js +213 -213
  338. package/esm2015/lib/components/po-navbar/po-navbar.module.js +57 -57
  339. package/esm2015/lib/components/po-page/index.js +15 -15
  340. package/esm2015/lib/components/po-page/po-page-action.interface.js +2 -2
  341. package/esm2015/lib/components/po-page/po-page-base.component.js +23 -23
  342. package/esm2015/lib/components/po-page/po-page-content/po-page-content-base.component.js +10 -10
  343. package/esm2015/lib/components/po-page/po-page-content/po-page-content.component.js +54 -54
  344. package/esm2015/lib/components/po-page/po-page-default/po-page-default-base.component.js +111 -111
  345. package/esm2015/lib/components/po-page/po-page-default/po-page-default-literals.interface.js +2 -2
  346. package/esm2015/lib/components/po-page/po-page-default/po-page-default.component.js +98 -98
  347. package/esm2015/lib/components/po-page/po-page-default/po-page-default.interface.js +2 -2
  348. package/esm2015/lib/components/po-page/po-page-detail/po-page-detail-base.component.js +141 -141
  349. package/esm2015/lib/components/po-page/po-page-detail/po-page-detail-literals.interface.js +2 -2
  350. package/esm2015/lib/components/po-page/po-page-detail/po-page-detail.component.js +62 -62
  351. package/esm2015/lib/components/po-page/po-page-edit/po-page-edit-base.component.js +146 -146
  352. package/esm2015/lib/components/po-page/po-page-edit/po-page-edit-literals.interface.js +2 -2
  353. package/esm2015/lib/components/po-page/po-page-edit/po-page-edit.component.js +65 -65
  354. package/esm2015/lib/components/po-page/po-page-filter.interface.js +2 -2
  355. package/esm2015/lib/components/po-page/po-page-header/po-page-header-base.component.js +26 -26
  356. package/esm2015/lib/components/po-page/po-page-header/po-page-header.component.js +15 -15
  357. package/esm2015/lib/components/po-page/po-page-list/po-page-list-base.component.js +137 -137
  358. package/esm2015/lib/components/po-page/po-page-list/po-page-list-literals.interface.js +2 -2
  359. package/esm2015/lib/components/po-page/po-page-list/po-page-list.component.js +188 -188
  360. package/esm2015/lib/components/po-page/po-page-slide/po-page-slide-base.component.js +135 -135
  361. package/esm2015/lib/components/po-page/po-page-slide/po-page-slide.component.js +121 -121
  362. package/esm2015/lib/components/po-page/po-page.component.js +16 -16
  363. package/esm2015/lib/components/po-page/po-page.interface.js +2 -2
  364. package/esm2015/lib/components/po-page/po-page.module.js +60 -60
  365. package/esm2015/lib/components/po-popover/index.js +3 -3
  366. package/esm2015/lib/components/po-popover/po-popover-base.component.js +113 -113
  367. package/esm2015/lib/components/po-popover/po-popover.component.js +138 -138
  368. package/esm2015/lib/components/po-popover/po-popover.module.js +17 -17
  369. package/esm2015/lib/components/po-popup/index.js +4 -4
  370. package/esm2015/lib/components/po-popup/po-popup-action.interface.js +2 -2
  371. package/esm2015/lib/components/po-popup/po-popup-base.component.js +186 -186
  372. package/esm2015/lib/components/po-popup/po-popup.component.js +169 -169
  373. package/esm2015/lib/components/po-popup/po-popup.module.js +21 -21
  374. package/esm2015/lib/components/po-progress/enums/po-progress-status.enum.js +17 -17
  375. package/esm2015/lib/components/po-progress/index.js +4 -4
  376. package/esm2015/lib/components/po-progress/po-progress-bar/po-progress-bar.component.js +18 -18
  377. package/esm2015/lib/components/po-progress/po-progress-base.component.js +107 -107
  378. package/esm2015/lib/components/po-progress/po-progress.component.js +56 -56
  379. package/esm2015/lib/components/po-progress/po-progress.module.js +19 -19
  380. package/esm2015/lib/components/po-slide/directives/po-slide-content-template.directive.js +59 -59
  381. package/esm2015/lib/components/po-slide/index.js +5 -5
  382. package/esm2015/lib/components/po-slide/interfaces/po-slide-item.interface.js +2 -2
  383. package/esm2015/lib/components/po-slide/po-slide-base.component.js +104 -104
  384. package/esm2015/lib/components/po-slide/po-slide-circles/po-slide-circles.component.js +26 -26
  385. package/esm2015/lib/components/po-slide/po-slide-control/po-slide-control.component.js +25 -25
  386. package/esm2015/lib/components/po-slide/po-slide-item/po-slide-item.component.js +37 -37
  387. package/esm2015/lib/components/po-slide/po-slide.component.js +256 -256
  388. package/esm2015/lib/components/po-slide/po-slide.module.js +58 -58
  389. package/esm2015/lib/components/po-stepper/enums/po-stepper-orientation.enum.js +18 -18
  390. package/esm2015/lib/components/po-stepper/enums/po-stepper-status.enum.js +23 -23
  391. package/esm2015/lib/components/po-stepper/index.js +7 -7
  392. package/esm2015/lib/components/po-stepper/po-step/po-step.component.js +78 -78
  393. package/esm2015/lib/components/po-stepper/po-stepper-base.component.js +144 -144
  394. package/esm2015/lib/components/po-stepper/po-stepper-circle/po-stepper-circle.component.js +47 -47
  395. package/esm2015/lib/components/po-stepper/po-stepper-item.interface.js +2 -2
  396. package/esm2015/lib/components/po-stepper/po-stepper-label/po-stepper-label.component.js +20 -20
  397. package/esm2015/lib/components/po-stepper/po-stepper-step/po-stepper-step.component.js +116 -116
  398. package/esm2015/lib/components/po-stepper/po-stepper.component.js +219 -219
  399. package/esm2015/lib/components/po-stepper/po-stepper.module.js +27 -27
  400. package/esm2015/lib/components/po-table/enums/po-table-column-sort-type.enum.js +14 -14
  401. package/esm2015/lib/components/po-table/enums/po-table-row-template-arrow-direction.enum.js +14 -14
  402. package/esm2015/lib/components/po-table/index.js +18 -18
  403. package/esm2015/lib/components/po-table/interfaces/po-table-action.interface.js +2 -2
  404. package/esm2015/lib/components/po-table/interfaces/po-table-boolean.interface.js +2 -2
  405. package/esm2015/lib/components/po-table/interfaces/po-table-column-sort.interface.js +2 -2
  406. package/esm2015/lib/components/po-table/interfaces/po-table-column.interface.js +2 -2
  407. package/esm2015/lib/components/po-table/interfaces/po-table-filter.interface.js +2 -2
  408. package/esm2015/lib/components/po-table/interfaces/po-table-filtered-items-params.interface.js +2 -2
  409. package/esm2015/lib/components/po-table/interfaces/po-table-literals.interface.js +2 -2
  410. package/esm2015/lib/components/po-table/interfaces/po-table-response-api.interface.js +2 -2
  411. package/esm2015/lib/components/po-table/po-table-base.component.js +860 -860
  412. package/esm2015/lib/components/po-table/po-table-cell-template/po-table-cell-template.directive.js +82 -82
  413. package/esm2015/lib/components/po-table/po-table-column-icon/po-table-column-icon.component.js +72 -72
  414. package/esm2015/lib/components/po-table/po-table-column-icon/po-table-column-icon.interface.js +2 -2
  415. package/esm2015/lib/components/po-table/po-table-column-label/po-table-column-label.component.js +38 -38
  416. package/esm2015/lib/components/po-table/po-table-column-label/po-table-column-label.interface.js +2 -2
  417. package/esm2015/lib/components/po-table/po-table-column-link/po-table-column-link.component.js +38 -38
  418. package/esm2015/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.js +250 -250
  419. package/esm2015/lib/components/po-table/po-table-column-template/po-table-column-template.directive.js +90 -90
  420. package/esm2015/lib/components/po-table/po-table-detail/po-table-detail-column.interface.js +2 -2
  421. package/esm2015/lib/components/po-table/po-table-detail/po-table-detail.component.js +88 -88
  422. package/esm2015/lib/components/po-table/po-table-detail/po-table-detail.interface.js +2 -2
  423. package/esm2015/lib/components/po-table/po-table-icon/po-table-icon.component.js +46 -46
  424. package/esm2015/lib/components/po-table/po-table-row-template/po-table-row-template.directive.js +128 -128
  425. package/esm2015/lib/components/po-table/po-table-show-subtitle/po-table-show-subtitle.component.js +21 -21
  426. package/esm2015/lib/components/po-table/po-table-subtitle-circle/po-table-subtitle-circle.component.js +41 -41
  427. package/esm2015/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-column.interface.js +2 -2
  428. package/esm2015/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-footer.component.js +70 -70
  429. package/esm2015/lib/components/po-table/po-table.component.js +542 -542
  430. package/esm2015/lib/components/po-table/po-table.module.js +75 -75
  431. package/esm2015/lib/components/po-table/services/po-table.service.js +38 -38
  432. package/esm2015/lib/components/po-tabs/index.js +5 -5
  433. package/esm2015/lib/components/po-tabs/po-tab/po-tab-base.component.js +82 -82
  434. package/esm2015/lib/components/po-tabs/po-tab/po-tab.component.js +27 -27
  435. package/esm2015/lib/components/po-tabs/po-tab/po-tab.interface.js +2 -2
  436. package/esm2015/lib/components/po-tabs/po-tab-button/po-tab-button.component.js +75 -75
  437. package/esm2015/lib/components/po-tabs/po-tab-dropdown/po-tab-dropdown.component.js +44 -44
  438. package/esm2015/lib/components/po-tabs/po-tabs-base.component.js +49 -49
  439. package/esm2015/lib/components/po-tabs/po-tabs.component.js +126 -126
  440. package/esm2015/lib/components/po-tabs/po-tabs.module.js +21 -21
  441. package/esm2015/lib/components/po-tag/enums/po-tag-icon.enum.js +19 -19
  442. package/esm2015/lib/components/po-tag/enums/po-tag-orientation.enum.js +15 -15
  443. package/esm2015/lib/components/po-tag/enums/po-tag-type.enum.js +19 -19
  444. package/esm2015/lib/components/po-tag/index.js +5 -5
  445. package/esm2015/lib/components/po-tag/interfaces/po-tag-item.interface.js +2 -2
  446. package/esm2015/lib/components/po-tag/po-tag-base.component.js +175 -175
  447. package/esm2015/lib/components/po-tag/po-tag.component.js +71 -71
  448. package/esm2015/lib/components/po-tag/po-tag.module.js +21 -21
  449. package/esm2015/lib/components/po-toolbar/index.js +5 -5
  450. package/esm2015/lib/components/po-toolbar/po-toolbar-action.interface.js +2 -2
  451. package/esm2015/lib/components/po-toolbar/po-toolbar-actions/po-toolbar-actions.component.js +35 -35
  452. package/esm2015/lib/components/po-toolbar/po-toolbar-base.component.js +43 -43
  453. package/esm2015/lib/components/po-toolbar/po-toolbar-notification/po-toolbar-notification.component.js +39 -39
  454. package/esm2015/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.component.js +28 -28
  455. package/esm2015/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.interface.js +2 -2
  456. package/esm2015/lib/components/po-toolbar/po-toolbar.component.js +46 -46
  457. package/esm2015/lib/components/po-toolbar/po-toolbar.module.js +32 -32
  458. package/esm2015/lib/components/po-tree-view/index.js +4 -4
  459. package/esm2015/lib/components/po-tree-view/po-tree-view-base.component.js +197 -197
  460. package/esm2015/lib/components/po-tree-view/po-tree-view-item/po-tree-view-item.component.js +58 -58
  461. package/esm2015/lib/components/po-tree-view/po-tree-view-item/po-tree-view-item.interface.js +2 -2
  462. package/esm2015/lib/components/po-tree-view/po-tree-view-item-header/po-tree-view-item-header.component.js +26 -26
  463. package/esm2015/lib/components/po-tree-view/po-tree-view.component.js +60 -60
  464. package/esm2015/lib/components/po-tree-view/po-tree-view.module.js +49 -49
  465. package/esm2015/lib/components/po-tree-view/services/po-tree-view.service.js +24 -24
  466. package/esm2015/lib/components/po-widget/index.js +3 -3
  467. package/esm2015/lib/components/po-widget/po-widget-base.component.js +216 -216
  468. package/esm2015/lib/components/po-widget/po-widget.component.js +114 -114
  469. package/esm2015/lib/components/po-widget/po-widget.module.js +19 -19
  470. package/esm2015/lib/decorators/index.js +3 -3
  471. package/esm2015/lib/decorators/input-boolean/input-boolean.decorator.js +18 -18
  472. package/esm2015/lib/decorators/input-required/input-required.decorator.js +34 -34
  473. package/esm2015/lib/decorators/property-decorator.interface.js +2 -2
  474. package/esm2015/lib/decorators/utils-decorators.js +64 -64
  475. package/esm2015/lib/directives/directives.module.js +14 -14
  476. package/esm2015/lib/directives/index.js +3 -3
  477. package/esm2015/lib/directives/po-tooltip/index.js +3 -3
  478. package/esm2015/lib/directives/po-tooltip/po-tooltip-base.directive.js +106 -106
  479. package/esm2015/lib/directives/po-tooltip/po-tooltip-control-position.service.js +8 -8
  480. package/esm2015/lib/directives/po-tooltip/po-tooltip.directive.js +147 -147
  481. package/esm2015/lib/directives/po-tooltip/po-tooltip.module.js +18 -18
  482. package/esm2015/lib/enums/po-color-palette.enum.js +35 -35
  483. package/esm2015/lib/enums/po-key-code.enum.js +31 -31
  484. package/esm2015/lib/guards/guards.module.js +13 -13
  485. package/esm2015/lib/guards/index.js +2 -2
  486. package/esm2015/lib/index.js +10 -10
  487. package/esm2015/lib/interceptors/index.js +4 -4
  488. package/esm2015/lib/interceptors/interceptors.module.js +15 -15
  489. package/esm2015/lib/interceptors/po-http-interceptor/index.js +3 -3
  490. package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor-base.service.js +249 -249
  491. package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail-literals.interface.js +39 -39
  492. package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail.component.js +83 -83
  493. package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail.interface.js +2 -2
  494. package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor-literals.js +23 -23
  495. package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor.module.js +28 -28
  496. package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor.service.js +28 -28
  497. package/esm2015/lib/interceptors/po-http-request/index.js +3 -3
  498. package/esm2015/lib/interceptors/po-http-request/po-http-request-control-service.js +23 -23
  499. package/esm2015/lib/interceptors/po-http-request/po-http-request-interceptor.service.js +169 -169
  500. package/esm2015/lib/interceptors/po-http-request/po-http-request.module.js +24 -24
  501. package/esm2015/lib/interfaces/index.js +2 -2
  502. package/esm2015/lib/interfaces/po-http/po-response-api.interface.js +2 -2
  503. package/esm2015/lib/pipes/index.js +3 -3
  504. package/esm2015/lib/pipes/pipes.module.js +14 -14
  505. package/esm2015/lib/pipes/po-time/index.js +3 -3
  506. package/esm2015/lib/pipes/po-time/po-time.module.js +19 -19
  507. package/esm2015/lib/pipes/po-time/po-time.pipe.js +55 -55
  508. package/esm2015/lib/po.module.js +34 -34
  509. package/esm2015/lib/services/index.js +11 -11
  510. package/esm2015/lib/services/po-active-overlay/index.js +3 -3
  511. package/esm2015/lib/services/po-active-overlay/po-active-overlay.module.js +16 -16
  512. package/esm2015/lib/services/po-active-overlay/po-active-overlay.service.js +14 -14
  513. package/esm2015/lib/services/po-color/po-color.service.js +60 -60
  514. package/esm2015/lib/services/po-color/po-colors.constant.js +43 -43
  515. package/esm2015/lib/services/po-color-palette/index.js +3 -3
  516. package/esm2015/lib/services/po-color-palette/po-color-palette.module.js +16 -16
  517. package/esm2015/lib/services/po-color-palette/po-color-palette.service.js +25 -25
  518. package/esm2015/lib/services/po-component-injector/index.js +3 -3
  519. package/esm2015/lib/services/po-component-injector/po-component-injector.module.js +14 -14
  520. package/esm2015/lib/services/po-component-injector/po-component-injector.service.js +34 -34
  521. package/esm2015/lib/services/po-control-position/index.js +3 -3
  522. package/esm2015/lib/services/po-control-position/po-control-position.constants.js +16 -16
  523. package/esm2015/lib/services/po-control-position/po-control-position.module.js +15 -15
  524. package/esm2015/lib/services/po-control-position/po-control-position.service.js +361 -361
  525. package/esm2015/lib/services/po-date/index.js +3 -3
  526. package/esm2015/lib/services/po-date/po-date.module.js +16 -16
  527. package/esm2015/lib/services/po-date/po-date.service.js +201 -201
  528. package/esm2015/lib/services/po-dialog/index.js +8 -8
  529. package/esm2015/lib/services/po-dialog/interfaces/po-dialog-alert-literals.interface.js +2 -2
  530. package/esm2015/lib/services/po-dialog/interfaces/po-dialog-confirm-literals.interface.js +2 -2
  531. package/esm2015/lib/services/po-dialog/interfaces/po-dialog.interface.js +2 -2
  532. package/esm2015/lib/services/po-dialog/po-dialog-base.service.js +18 -18
  533. package/esm2015/lib/services/po-dialog/po-dialog.component.js +115 -115
  534. package/esm2015/lib/services/po-dialog/po-dialog.enum.js +16 -16
  535. package/esm2015/lib/services/po-dialog/po-dialog.module.js +15 -15
  536. package/esm2015/lib/services/po-dialog/po-dialog.service.js +42 -42
  537. package/esm2015/lib/services/po-i18n/index.js +8 -8
  538. package/esm2015/lib/services/po-i18n/interfaces/po-i18n-config-default.interface.js +2 -2
  539. package/esm2015/lib/services/po-i18n/interfaces/po-i18n-config.interface.js +2 -2
  540. package/esm2015/lib/services/po-i18n/interfaces/po-i18n-literals.interface.js +2 -2
  541. package/esm2015/lib/services/po-i18n/po-i18n-base.pipe.js +40 -40
  542. package/esm2015/lib/services/po-i18n/po-i18n-base.service.js +439 -439
  543. package/esm2015/lib/services/po-i18n/po-i18n-config-injection-token.js +3 -3
  544. package/esm2015/lib/services/po-i18n/po-i18n.module.js +188 -188
  545. package/esm2015/lib/services/po-i18n/po-i18n.pipe.js +21 -21
  546. package/esm2015/lib/services/po-i18n/po-i18n.service.js +20 -20
  547. package/esm2015/lib/services/po-language/index.js +5 -5
  548. package/esm2015/lib/services/po-language/po-language.constant.js +75 -75
  549. package/esm2015/lib/services/po-language/po-language.interface.js +2 -2
  550. package/esm2015/lib/services/po-language/po-language.module.js +15 -15
  551. package/esm2015/lib/services/po-language/po-language.service.js +136 -136
  552. package/esm2015/lib/services/po-notification/index.js +6 -6
  553. package/esm2015/lib/services/po-notification/po-notification-base.service.js +111 -111
  554. package/esm2015/lib/services/po-notification/po-notification.interface.js +2 -2
  555. package/esm2015/lib/services/po-notification/po-notification.module.js +15 -15
  556. package/esm2015/lib/services/po-notification/po-notification.service.js +92 -92
  557. package/esm2015/lib/services/po-notification/po-toaster/po-toaster-base.component.js +15 -15
  558. package/esm2015/lib/services/po-notification/po-toaster/po-toaster-orientation.enum.js +13 -13
  559. package/esm2015/lib/services/po-notification/po-toaster/po-toaster-type.enum.js +17 -17
  560. package/esm2015/lib/services/po-notification/po-toaster/po-toaster.component.js +132 -132
  561. package/esm2015/lib/services/po-notification/po-toaster/po-toaster.interface.js +2 -2
  562. package/esm2015/lib/services/services.module.js +40 -40
  563. package/esm2015/lib/utils/util.js +508 -508
  564. package/esm2015/po-ui-ng-components.js +205 -205
  565. package/esm2015/public-api.js +2 -2
  566. package/fesm2015/po-ui-ng-components.js +35214 -35204
  567. package/fesm2015/po-ui-ng-components.js.map +1 -1
  568. package/lib/components/components.module.d.ts +2 -2
  569. package/lib/components/index.d.ts +37 -37
  570. package/lib/components/po-accordion/index.d.ts +3 -3
  571. package/lib/components/po-accordion/po-accordion-base.component.d.ts +28 -28
  572. package/lib/components/po-accordion/po-accordion-item/po-accordion-item.component.d.ts +49 -49
  573. package/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.d.ts +3 -3
  574. package/lib/components/po-accordion/po-accordion-item-header/po-accordion-item-header.component.d.ts +7 -7
  575. package/lib/components/po-accordion/po-accordion.component.d.ts +37 -37
  576. package/lib/components/po-accordion/po-accordion.module.d.ts +33 -33
  577. package/lib/components/po-accordion/services/po-accordion.service.d.ts +13 -13
  578. package/lib/components/po-avatar/index.d.ts +2 -2
  579. package/lib/components/po-avatar/po-avatar-base.component.d.ts +53 -53
  580. package/lib/components/po-avatar/po-avatar.component.d.ts +28 -28
  581. package/lib/components/po-avatar/po-avatar.module.d.ts +7 -7
  582. package/lib/components/po-badge/po-badge-base.component.d.ts +55 -55
  583. package/lib/components/po-badge/po-badge.component.d.ts +8 -8
  584. package/lib/components/po-badge/po-badge.module.d.ts +7 -7
  585. package/lib/components/po-breadcrumb/index.d.ts +4 -4
  586. package/lib/components/po-breadcrumb/po-breadcrumb-base.component.d.ts +104 -104
  587. package/lib/components/po-breadcrumb/po-breadcrumb-dropdown/po-breadcrumb-dropdown.component.d.ts +11 -11
  588. package/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.component.d.ts +29 -29
  589. package/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.service.d.ts +27 -27
  590. package/lib/components/po-breadcrumb/po-breadcrumb-item/po-breadcrumb-item.component.d.ts +13 -13
  591. package/lib/components/po-breadcrumb/po-breadcrumb-item.interface.d.ts +31 -31
  592. package/lib/components/po-breadcrumb/po-breadcrumb.component.d.ts +53 -53
  593. package/lib/components/po-breadcrumb/po-breadcrumb.interface.d.ts +42 -42
  594. package/lib/components/po-breadcrumb/po-breadcrumb.module.d.ts +8 -8
  595. package/lib/components/po-button/index.d.ts +2 -2
  596. package/lib/components/po-button/po-button-base.component.d.ts +120 -120
  597. package/lib/components/po-button/po-button.component.d.ts +49 -49
  598. package/lib/components/po-button/po-button.module.d.ts +7 -7
  599. package/lib/components/po-button-group/index.d.ts +4 -4
  600. package/lib/components/po-button-group/po-button-group-base.component.d.ts +53 -53
  601. package/lib/components/po-button-group/po-button-group-item.interface.d.ts +64 -64
  602. package/lib/components/po-button-group/po-button-group-toggle.enum.d.ts +15 -15
  603. package/lib/components/po-button-group/po-button-group.component.d.ts +31 -31
  604. package/lib/components/po-button-group/po-button-group.module.d.ts +7 -7
  605. package/lib/components/po-calendar/index.d.ts +3 -3
  606. package/lib/components/po-calendar/po-calendar-base.component.d.ts +129 -129
  607. package/lib/components/po-calendar/po-calendar-header/po-calendar-header.component.d.ts +8 -8
  608. package/lib/components/po-calendar/po-calendar-mode.enum.d.ts +11 -11
  609. package/lib/components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.d.ts +77 -77
  610. package/lib/components/po-calendar/po-calendar.component.d.ts +53 -53
  611. package/lib/components/po-calendar/po-calendar.module.d.ts +6 -6
  612. package/lib/components/po-calendar/services/po-calendar.lang.service.d.ts +16 -16
  613. package/lib/components/po-calendar/services/po-calendar.service.d.ts +5 -5
  614. package/lib/components/po-chart/directives/po-resize-observer.directive.d.ts +12 -12
  615. package/lib/components/po-chart/enums/po-chart-type.enum.d.ts +49 -49
  616. package/lib/components/po-chart/helpers/po-chart-default-values.constant.d.ts +8 -8
  617. package/lib/components/po-chart/index.d.ts +7 -7
  618. package/lib/components/po-chart/interfaces/po-chart-axis-options.interface.d.ts +37 -37
  619. package/lib/components/po-chart/interfaces/po-chart-bar-coordinates.interface.d.ts +23 -23
  620. package/lib/components/po-chart/interfaces/po-chart-container-size.interface.d.ts +23 -23
  621. package/lib/components/po-chart/interfaces/po-chart-label-coordinates.interface.d.ts +19 -19
  622. package/lib/components/po-chart/interfaces/po-chart-min-max-values.interface.d.ts +19 -19
  623. package/lib/components/po-chart/interfaces/po-chart-options.interface.d.ts +20 -20
  624. package/lib/components/po-chart/interfaces/po-chart-path-coordinates.interface.d.ts +23 -23
  625. package/lib/components/po-chart/interfaces/po-chart-points-coordinates.interface.d.ts +26 -26
  626. package/lib/components/po-chart/interfaces/po-chart-serie.interface.d.ts +101 -101
  627. package/lib/components/po-chart/po-chart-base.component.d.ts +152 -152
  628. package/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis-label/po-chart-axis-label.component.d.ts +10 -10
  629. package/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis-path/po-chart-axis-path.component.d.ts +7 -7
  630. package/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis.component.d.ts +60 -60
  631. package/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar-base.component.d.ts +31 -31
  632. package/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar-path/po-chart-bar-path.component.d.ts +13 -13
  633. package/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar.component.d.ts +13 -13
  634. package/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-column/po-chart-column.component.d.ts +13 -13
  635. package/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-label/po-chart-circular-label.component.d.ts +11 -11
  636. package/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-path/po-chart-circular-path.component.d.ts +13 -13
  637. package/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-path/po-chart-tooltip.directive.d.ts +20 -20
  638. package/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular.component.d.ts +42 -42
  639. package/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-donut/po-chart-donut.component.d.ts +16 -16
  640. package/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-pie/po-chart-pie.component.d.ts +8 -8
  641. package/lib/components/po-chart/po-chart-container/po-chart-container.component.d.ts +43 -43
  642. package/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-area/po-chart-area.component.d.ts +20 -20
  643. package/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-line-base.component.d.ts +46 -46
  644. package/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-line.component.d.ts +13 -13
  645. package/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-path/po-chart-path.component.d.ts +19 -19
  646. package/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-series-point/po-chart-series-point.component.d.ts +30 -30
  647. package/lib/components/po-chart/po-chart-legend/po-chart-legend.component.d.ts +7 -7
  648. package/lib/components/po-chart/po-chart-types/po-chart-circular/po-chart-circular.constant.d.ts +7 -7
  649. package/lib/components/po-chart/po-chart-types/po-chart-circular/po-chart-circular.d.ts +55 -55
  650. package/lib/components/po-chart/po-chart-types/po-chart-dynamic-type.component.d.ts +36 -36
  651. package/lib/components/po-chart/po-chart-types/po-chart-gauge/po-chart-gauge-series.interface.d.ts +39 -39
  652. package/lib/components/po-chart/po-chart-types/po-chart-gauge/po-chart-gauge-text-content/po-chart-gauge-text-content.component.d.ts +24 -24
  653. package/lib/components/po-chart/po-chart-types/po-chart-gauge/po-chart-gauge.component.d.ts +20 -20
  654. package/lib/components/po-chart/po-chart.component.d.ts +67 -67
  655. package/lib/components/po-chart/po-chart.module.d.ts +7 -7
  656. package/lib/components/po-chart/services/po-chart-maths.service.d.ts +63 -63
  657. package/lib/components/po-chart/services/po-chart-svg-container.service.d.ts +21 -21
  658. package/lib/components/po-container/index.d.ts +2 -2
  659. package/lib/components/po-container/po-container-base.component.d.ts +59 -59
  660. package/lib/components/po-container/po-container.component.d.ts +24 -24
  661. package/lib/components/po-container/po-container.module.d.ts +7 -7
  662. package/lib/components/po-disclaimer/index.d.ts +3 -3
  663. package/lib/components/po-disclaimer/po-disclaimer-base.component.d.ts +56 -56
  664. package/lib/components/po-disclaimer/po-disclaimer.component.d.ts +16 -16
  665. package/lib/components/po-disclaimer/po-disclaimer.interface.d.ts +17 -17
  666. package/lib/components/po-disclaimer/po-disclaimer.module.d.ts +6 -6
  667. package/lib/components/po-disclaimer-group/index.d.ts +4 -4
  668. package/lib/components/po-disclaimer-group/po-disclaimer-group-base.component.d.ts +114 -114
  669. package/lib/components/po-disclaimer-group/po-disclaimer-group-remove-action.interface.d.ts +18 -18
  670. package/lib/components/po-disclaimer-group/po-disclaimer-group.component.d.ts +28 -28
  671. package/lib/components/po-disclaimer-group/po-disclaimer-group.interface.d.ts +78 -78
  672. package/lib/components/po-disclaimer-group/po-disclaimer-group.module.d.ts +7 -7
  673. package/lib/components/po-disclaimer-group/po-disclaimer-remove/po-disclaimer-remove.component.d.ts +16 -16
  674. package/lib/components/po-divider/index.d.ts +2 -2
  675. package/lib/components/po-divider/po-divider-base.component.d.ts +10 -10
  676. package/lib/components/po-divider/po-divider.component.d.ts +23 -23
  677. package/lib/components/po-divider/po-divider.module.d.ts +7 -7
  678. package/lib/components/po-dropdown/index.d.ts +3 -3
  679. package/lib/components/po-dropdown/po-dropdown-action.interface.d.ts +11 -11
  680. package/lib/components/po-dropdown/po-dropdown-base.component.d.ts +54 -54
  681. package/lib/components/po-dropdown/po-dropdown.component.d.ts +41 -41
  682. package/lib/components/po-dropdown/po-dropdown.module.d.ts +6 -6
  683. package/lib/components/po-dynamic/index.d.ts +10 -10
  684. package/lib/components/po-dynamic/po-dynamic-field-type.enum.d.ts +23 -23
  685. package/lib/components/po-dynamic/po-dynamic-field.interface.d.ts +130 -130
  686. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-base.component.d.ts +215 -215
  687. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.d.ts +249 -249
  688. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-field-internal.interface.d.ts +14 -14
  689. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields-base.component.d.ts +44 -44
  690. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.d.ts +36 -36
  691. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-load/po-dynamic-form-load.interface.d.ts +20 -20
  692. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-load/po-dynamic-form-load.service.d.ts +8 -8
  693. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-operation/po-dynamic-form-operation.d.ts +10 -10
  694. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-response.interface.d.ts +29 -29
  695. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-field-changed.interface.d.ts +13 -13
  696. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-field-validation.interface.d.ts +21 -21
  697. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.interface.d.ts +20 -20
  698. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.service.d.ts +12 -12
  699. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form.component.d.ts +83 -83
  700. package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.d.ts +134 -134
  701. package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-field.interface.d.ts +104 -104
  702. package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.d.ts +36 -36
  703. package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.service.d.ts +10 -10
  704. package/lib/components/po-dynamic/po-dynamic.module.d.ts +2 -2
  705. package/lib/components/po-dynamic/po-dynamic.util.d.ts +4 -4
  706. package/lib/components/po-field/index.d.ts +50 -50
  707. package/lib/components/po-field/po-checkbox/po-checkbox-base.component.d.ts +62 -62
  708. package/lib/components/po-field/po-checkbox/po-checkbox.component.d.ts +51 -51
  709. package/lib/components/po-field/po-checkbox-group/interfaces/po-checkbox-group-option-view.interface.d.ts +14 -14
  710. package/lib/components/po-field/po-checkbox-group/interfaces/po-checkbox-group-option.interface.d.ts +24 -24
  711. package/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.d.ts +184 -184
  712. package/lib/components/po-field/po-checkbox-group/po-checkbox-group.component.d.ts +50 -50
  713. package/lib/components/po-field/po-checkbox-group/po-checkbox-group.module.d.ts +7 -7
  714. package/lib/components/po-field/po-clean/po-clean-base.component.d.ts +30 -30
  715. package/lib/components/po-field/po-clean/po-clean.component.d.ts +17 -17
  716. package/lib/components/po-field/po-clean/po-clean.module.d.ts +7 -7
  717. package/lib/components/po-field/po-combo/interfaces/po-combo-filter.interface.d.ts +27 -27
  718. package/lib/components/po-field/po-combo/interfaces/po-combo-group.interface.d.ts +11 -11
  719. package/lib/components/po-field/po-combo/interfaces/po-combo-literals.interface.d.ts +11 -11
  720. package/lib/components/po-field/po-combo/interfaces/po-combo-option-group.interface.d.ts +14 -14
  721. package/lib/components/po-field/po-combo/interfaces/po-combo-option.interface.d.ts +21 -21
  722. package/lib/components/po-field/po-combo/interfaces/po-response.interface.d.ts +11 -11
  723. package/lib/components/po-field/po-combo/po-combo-base.component.d.ts +409 -409
  724. package/lib/components/po-field/po-combo/po-combo-filter-mode.enum.d.ts +15 -15
  725. package/lib/components/po-field/po-combo/po-combo-filter.service.d.ts +28 -28
  726. package/lib/components/po-field/po-combo/po-combo-option-template/po-combo-option-template.directive.d.ts +70 -70
  727. package/lib/components/po-field/po-combo/po-combo.component.d.ts +139 -139
  728. package/lib/components/po-field/po-datepicker/enums/po-datepicker-iso-format.enum.d.ts +15 -15
  729. package/lib/components/po-field/po-datepicker/po-datepicker-base.component.d.ts +223 -223
  730. package/lib/components/po-field/po-datepicker/po-datepicker.component.d.ts +101 -101
  731. package/lib/components/po-field/po-datepicker/po-datepicker.module.d.ts +7 -7
  732. package/lib/components/po-field/po-datepicker-range/interfaces/po-datepicker-range-literals.interface.d.ts +17 -17
  733. package/lib/components/po-field/po-datepicker-range/interfaces/po-datepicker-range.interface.d.ts +16 -16
  734. package/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.d.ts +269 -269
  735. package/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.d.ts +125 -125
  736. package/lib/components/po-field/po-datepicker-range/po-datepicker-range.literals.d.ts +7 -7
  737. package/lib/components/po-field/po-decimal/po-decimal.component.d.ts +180 -180
  738. package/lib/components/po-field/po-email/po-email.component.d.ts +42 -42
  739. package/lib/components/po-field/po-field-container/po-field-container-bottom/po-field-container-bottom.component.d.ts +15 -15
  740. package/lib/components/po-field/po-field-container/po-field-container-literals.d.ts +14 -14
  741. package/lib/components/po-field/po-field-container/po-field-container.component.d.ts +18 -18
  742. package/lib/components/po-field/po-field-container/po-field-container.module.d.ts +7 -7
  743. package/lib/components/po-field/po-field-validate.model.d.ts +38 -38
  744. package/lib/components/po-field/po-field.model.d.ts +51 -51
  745. package/lib/components/po-field/po-field.module.d.ts +12 -12
  746. package/lib/components/po-field/po-input/po-input-base.component.d.ts +265 -265
  747. package/lib/components/po-field/po-input/po-input.component.d.ts +29 -29
  748. package/lib/components/po-field/po-input/po-mask.d.ts +49 -49
  749. package/lib/components/po-field/po-input-generic/po-input-generic.d.ts +35 -35
  750. package/lib/components/po-field/po-login/po-login.component.d.ts +34 -34
  751. package/lib/components/po-field/po-lookup/interfaces/po-lookup-advanced-filter.interface.d.ts +8 -8
  752. package/lib/components/po-field/po-lookup/interfaces/po-lookup-column.interface.d.ts +44 -44
  753. package/lib/components/po-field/po-lookup/interfaces/po-lookup-filter.interface.d.ts +29 -29
  754. package/lib/components/po-field/po-lookup/interfaces/po-lookup-filtered-items-params.interface.d.ts +40 -40
  755. package/lib/components/po-field/po-lookup/interfaces/po-lookup-literals.interface.d.ts +40 -40
  756. package/lib/components/po-field/po-lookup/interfaces/po-lookup-response-api.interface.d.ts +8 -8
  757. package/lib/components/po-field/po-lookup/po-lookup-base.component.d.ts +387 -387
  758. package/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.d.ts +119 -119
  759. package/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.d.ts +41 -41
  760. package/lib/components/po-field/po-lookup/po-lookup.component.d.ts +113 -113
  761. package/lib/components/po-field/po-lookup/services/po-lookup-filter.service.d.ts +25 -25
  762. package/lib/components/po-field/po-lookup/services/po-lookup-modal.service.d.ts +44 -44
  763. package/lib/components/po-field/po-multiselect/po-multiselect-base.component.d.ts +345 -345
  764. package/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.d.ts +57 -57
  765. package/lib/components/po-field/po-multiselect/po-multiselect-filter-mode.enum.d.ts +15 -15
  766. package/lib/components/po-field/po-multiselect/po-multiselect-filter.interface.d.ts +28 -28
  767. package/lib/components/po-field/po-multiselect/po-multiselect-filter.service.d.ts +18 -18
  768. package/lib/components/po-field/po-multiselect/po-multiselect-item/po-multiselect-item.component.d.ts +17 -17
  769. package/lib/components/po-field/po-multiselect/po-multiselect-literals.interface.d.ts +15 -15
  770. package/lib/components/po-field/po-multiselect/po-multiselect-option.interface.d.ts +13 -13
  771. package/lib/components/po-field/po-multiselect/po-multiselect-search/po-multiselect-search.component.d.ts +34 -34
  772. package/lib/components/po-field/po-multiselect/po-multiselect.component.d.ts +107 -107
  773. package/lib/components/po-field/po-number/po-number-base.component.d.ts +18 -18
  774. package/lib/components/po-field/po-number/po-number.component.d.ts +59 -59
  775. package/lib/components/po-field/po-password/po-password.component.d.ts +48 -48
  776. package/lib/components/po-field/po-radio-group/po-radio-group-base.component.d.ts +119 -119
  777. package/lib/components/po-field/po-radio-group/po-radio-group-option.interface.d.ts +15 -15
  778. package/lib/components/po-field/po-radio-group/po-radio-group.component.d.ts +64 -64
  779. package/lib/components/po-field/po-rich-text/interfaces/po-rich-text-toolbar-button-group-item.interface.d.ts +4 -4
  780. package/lib/components/po-field/po-rich-text/po-rich-text-base.component.d.ts +144 -144
  781. package/lib/components/po-field/po-rich-text/po-rich-text-body/po-rich-text-body.component.d.ts +52 -52
  782. package/lib/components/po-field/po-rich-text/po-rich-text-image-modal/po-rich-text-image-modal.component.d.ts +34 -34
  783. package/lib/components/po-field/po-rich-text/po-rich-text-link-modal/po-rich-text-link-modal.component.d.ts +45 -45
  784. package/lib/components/po-field/po-rich-text/po-rich-text-literals.d.ts +82 -82
  785. package/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.d.ts +45 -45
  786. package/lib/components/po-field/po-rich-text/po-rich-text.component.d.ts +60 -60
  787. package/lib/components/po-field/po-rich-text/po-rich-text.service.d.ts +5 -5
  788. package/lib/components/po-field/po-select/po-select-option-template/po-select-option-template.directive.d.ts +48 -48
  789. package/lib/components/po-field/po-select/po-select-option.interface.d.ts +13 -13
  790. package/lib/components/po-field/po-select/po-select.component.d.ts +158 -158
  791. package/lib/components/po-field/po-switch/po-switch-label-position.enum.d.ts +13 -13
  792. package/lib/components/po-field/po-switch/po-switch.component.d.ts +102 -102
  793. package/lib/components/po-field/po-textarea/po-textarea-base.component.d.ts +178 -178
  794. package/lib/components/po-field/po-textarea/po-textarea.component.d.ts +59 -59
  795. package/lib/components/po-field/po-upload/interfaces/po-upload-file-restriction.interface.d.ts +37 -37
  796. package/lib/components/po-field/po-upload/interfaces/po-upload-literals.interface.d.ts +45 -45
  797. package/lib/components/po-field/po-upload/po-upload-base.component.d.ts +333 -333
  798. package/lib/components/po-field/po-upload/po-upload-base.service.d.ts +32 -32
  799. package/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop-area/po-upload-drag-drop-area.component.d.ts +14 -14
  800. package/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop-area-overlay/po-upload-drag-drop-area-overlay.component.d.ts +14 -14
  801. package/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.component.d.ts +24 -24
  802. package/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.directive.d.ts +32 -32
  803. package/lib/components/po-field/po-upload/po-upload-file-restrictions/po-upload-file-restrictions.component.d.ts +21 -21
  804. package/lib/components/po-field/po-upload/po-upload-file.d.ts +15 -15
  805. package/lib/components/po-field/po-upload/po-upload-status.enum.d.ts +6 -6
  806. package/lib/components/po-field/po-upload/po-upload.component.d.ts +106 -106
  807. package/lib/components/po-field/po-upload/po-upload.service.d.ts +3 -3
  808. package/lib/components/po-field/po-url/po-url.component.d.ts +41 -41
  809. package/lib/components/po-field/validators.d.ts +7 -7
  810. package/lib/components/po-gauge/index.d.ts +3 -3
  811. package/lib/components/po-gauge/interfaces/po-gauge-coordinates.interface.d.ts +19 -19
  812. package/lib/components/po-gauge/interfaces/po-gauge-ranges.interface.d.ts +44 -44
  813. package/lib/components/po-gauge/interfaces/po-gauge-svg-container.interface.d.ts +15 -15
  814. package/lib/components/po-gauge/po-gauge-base.component.d.ts +98 -98
  815. package/lib/components/po-gauge/po-gauge-default-values.constant.d.ts +5 -5
  816. package/lib/components/po-gauge/po-gauge-description/po-gauge-description.component.d.ts +11 -11
  817. package/lib/components/po-gauge/po-gauge-legend/po-gauge-legend.component.d.ts +9 -9
  818. package/lib/components/po-gauge/po-gauge-svg/po-gauge-path/po-gauge-path.component.d.ts +9 -9
  819. package/lib/components/po-gauge/po-gauge-svg/po-gauge-pointer/po-gauge-pointer.component.d.ts +15 -15
  820. package/lib/components/po-gauge/po-gauge-svg/po-gauge-svg.component.d.ts +32 -32
  821. package/lib/components/po-gauge/po-gauge-title/po-gauge-title.component.d.ts +3 -3
  822. package/lib/components/po-gauge/po-gauge.component.d.ts +37 -37
  823. package/lib/components/po-gauge/po-gauge.module.d.ts +6 -6
  824. package/lib/components/po-grid/index.d.ts +3 -3
  825. package/lib/components/po-grid/po-grid-cell/po-grid-cell.component.d.ts +27 -27
  826. package/lib/components/po-grid/po-grid-cell-action/po-grid-cell-action.component.d.ts +6 -6
  827. package/lib/components/po-grid/po-grid-head/po-grid-head.component.d.ts +10 -10
  828. package/lib/components/po-grid/po-grid-row-actions.interface.d.ts +86 -86
  829. package/lib/components/po-grid/po-grid.component.d.ts +80 -80
  830. package/lib/components/po-grid/po-grid.module.d.ts +7 -7
  831. package/lib/components/po-icon/index.d.ts +2 -2
  832. package/lib/components/po-icon/po-icon.component.d.ts +39 -39
  833. package/lib/components/po-icon/po-icon.module.d.ts +7 -7
  834. package/lib/components/po-info/index.d.ts +3 -3
  835. package/lib/components/po-info/po-info-base.component.d.ts +46 -46
  836. package/lib/components/po-info/po-info-orietation.enum.d.ts +13 -13
  837. package/lib/components/po-info/po-info.component.d.ts +24 -24
  838. package/lib/components/po-info/po-info.module.d.ts +7 -7
  839. package/lib/components/po-list-view/index.d.ts +6 -6
  840. package/lib/components/po-list-view/interfaces/po-list-view-action.interface.d.ts +15 -15
  841. package/lib/components/po-list-view/interfaces/po-list-view-literals.interface.d.ts +19 -19
  842. package/lib/components/po-list-view/po-list-view-base.component.d.ts +165 -165
  843. package/lib/components/po-list-view/po-list-view-content-template/po-list-view-content-template.directive.d.ts +97 -97
  844. package/lib/components/po-list-view/po-list-view-detail-template/po-list-view-detail-template.directive.d.ts +60 -60
  845. package/lib/components/po-list-view/po-list-view.component.d.ts +53 -53
  846. package/lib/components/po-list-view/po-list-view.module.d.ts +33 -33
  847. package/lib/components/po-loading/index.d.ts +4 -4
  848. package/lib/components/po-loading/po-loading-base.component.d.ts +14 -14
  849. package/lib/components/po-loading/po-loading-icon/po-loading-icon.component.d.ts +22 -22
  850. package/lib/components/po-loading/po-loading-overlay/interfaces/po-loading-overlay-literals.interface.d.ts +13 -13
  851. package/lib/components/po-loading/po-loading-overlay/po-loading-overlay-base.component.d.ts +59 -59
  852. package/lib/components/po-loading/po-loading-overlay/po-loading-overlay.component.d.ts +28 -28
  853. package/lib/components/po-loading/po-loading.component.d.ts +8 -8
  854. package/lib/components/po-loading/po-loading.module.d.ts +8 -8
  855. package/lib/components/po-menu/index.d.ts +8 -8
  856. package/lib/components/po-menu/po-menu-base.component.d.ts +182 -182
  857. package/lib/components/po-menu/po-menu-filter/po-menu-filter-literals.interface.d.ts +14 -14
  858. package/lib/components/po-menu/po-menu-filter/po-menu-filter.component.d.ts +25 -25
  859. package/lib/components/po-menu/po-menu-filter/po-menu-filter.interface.d.ts +19 -19
  860. package/lib/components/po-menu/po-menu-header-template/po-menu-header-template.directive.d.ts +40 -40
  861. package/lib/components/po-menu/po-menu-item/po-menu-item-badge.interface.d.ts +49 -49
  862. package/lib/components/po-menu/po-menu-item/po-menu-item-filtered.interface.d.ts +13 -13
  863. package/lib/components/po-menu/po-menu-item/po-menu-item.component.d.ts +54 -54
  864. package/lib/components/po-menu/po-menu-item.interface.d.ts +78 -78
  865. package/lib/components/po-menu/po-menu.component.d.ts +178 -178
  866. package/lib/components/po-menu/po-menu.module.d.ts +7 -7
  867. package/lib/components/po-menu/services/po-menu-global.service.d.ts +14 -14
  868. package/lib/components/po-menu/services/po-menu-items.service.d.ts +16 -16
  869. package/lib/components/po-menu/services/po-menu.service.d.ts +20 -20
  870. package/lib/components/po-menu-panel/index.d.ts +3 -3
  871. package/lib/components/po-menu-panel/po-menu-panel-base.component.d.ts +33 -33
  872. package/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item-internal.interface.d.ts +16 -16
  873. package/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.component.d.ts +23 -23
  874. package/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.interface.d.ts +18 -18
  875. package/lib/components/po-menu-panel/po-menu-panel.component.d.ts +91 -91
  876. package/lib/components/po-menu-panel/po-menu-panel.module.d.ts +7 -7
  877. package/lib/components/po-menu-panel/services/po-menu-panel-items.service.d.ts +16 -16
  878. package/lib/components/po-modal/index.d.ts +4 -4
  879. package/lib/components/po-modal/po-modal-action.interface.d.ts +23 -23
  880. package/lib/components/po-modal/po-modal-base.component.d.ts +79 -79
  881. package/lib/components/po-modal/po-modal-footer/po-modal-footer.component.d.ts +30 -30
  882. package/lib/components/po-modal/po-modal.component.d.ts +46 -46
  883. package/lib/components/po-modal/po-modal.literals.d.ts +14 -14
  884. package/lib/components/po-modal/po-modal.module.d.ts +6 -6
  885. package/lib/components/po-navbar/index.d.ts +4 -4
  886. package/lib/components/po-navbar/interfaces/po-navbar-icon-action.interface.d.ts +55 -55
  887. package/lib/components/po-navbar/interfaces/po-navbar-item.interface.d.ts +21 -21
  888. package/lib/components/po-navbar/interfaces/po-navbar-literals.interface.d.ts +11 -11
  889. package/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.d.ts +13 -13
  890. package/lib/components/po-navbar/po-navbar-actions/po-navbar-action-popup/po-navbar-action-popup.component.d.ts +5 -5
  891. package/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.component.d.ts +6 -6
  892. package/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.module.d.ts +2 -2
  893. package/lib/components/po-navbar/po-navbar-base.component.d.ts +129 -129
  894. package/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation-icon/po-navbar-item-navigation-icon.component.d.ts +6 -6
  895. package/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.component.d.ts +6 -6
  896. package/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.module.d.ts +2 -2
  897. package/lib/components/po-navbar/po-navbar-items/po-navbar-item/po-navbar-item.component.d.ts +11 -11
  898. package/lib/components/po-navbar/po-navbar-items/po-navbar-items.component.d.ts +17 -17
  899. package/lib/components/po-navbar/po-navbar-items/po-navbar-items.module.d.ts +2 -2
  900. package/lib/components/po-navbar/po-navbar-logo/po-navbar-logo.component.d.ts +3 -3
  901. package/lib/components/po-navbar/po-navbar.component.d.ts +57 -57
  902. package/lib/components/po-navbar/po-navbar.module.d.ts +33 -33
  903. package/lib/components/po-page/index.d.ts +14 -14
  904. package/lib/components/po-page/po-page-action.interface.d.ts +16 -16
  905. package/lib/components/po-page/po-page-base.component.d.ts +22 -22
  906. package/lib/components/po-page/po-page-content/po-page-content-base.component.d.ts +10 -10
  907. package/lib/components/po-page/po-page-content/po-page-content.component.d.ts +20 -20
  908. package/lib/components/po-page/po-page-default/po-page-default-base.component.d.ts +75 -75
  909. package/lib/components/po-page/po-page-default/po-page-default-literals.interface.d.ts +11 -11
  910. package/lib/components/po-page/po-page-default/po-page-default.component.d.ts +45 -45
  911. package/lib/components/po-page/po-page-default/po-page-default.interface.d.ts +13 -13
  912. package/lib/components/po-page/po-page-detail/po-page-detail-base.component.d.ts +100 -100
  913. package/lib/components/po-page/po-page-detail/po-page-detail-literals.interface.d.ts +15 -15
  914. package/lib/components/po-page/po-page-detail/po-page-detail.component.d.ts +28 -28
  915. package/lib/components/po-page/po-page-edit/po-page-edit-base.component.d.ts +106 -106
  916. package/lib/components/po-page/po-page-edit/po-page-edit-literals.interface.d.ts +15 -15
  917. package/lib/components/po-page/po-page-edit/po-page-edit.component.d.ts +29 -29
  918. package/lib/components/po-page/po-page-filter.interface.d.ts +26 -26
  919. package/lib/components/po-page/po-page-header/po-page-header-base.component.d.ts +17 -17
  920. package/lib/components/po-page/po-page-header/po-page-header.component.d.ts +7 -7
  921. package/lib/components/po-page/po-page-list/po-page-list-base.component.d.ts +108 -108
  922. package/lib/components/po-page/po-page-list/po-page-list-literals.interface.d.ts +11 -11
  923. package/lib/components/po-page/po-page-list/po-page-list.component.d.ts +71 -71
  924. package/lib/components/po-page/po-page-slide/po-page-slide-base.component.d.ts +111 -111
  925. package/lib/components/po-page/po-page-slide/po-page-slide.component.d.ts +42 -42
  926. package/lib/components/po-page/po-page.component.d.ts +8 -8
  927. package/lib/components/po-page/po-page.interface.d.ts +14 -14
  928. package/lib/components/po-page/po-page.module.d.ts +7 -7
  929. package/lib/components/po-popover/index.d.ts +2 -2
  930. package/lib/components/po-popover/po-popover-base.component.d.ts +131 -131
  931. package/lib/components/po-popover/po-popover.component.d.ts +47 -47
  932. package/lib/components/po-popover/po-popover.module.d.ts +6 -6
  933. package/lib/components/po-popup/index.d.ts +3 -3
  934. package/lib/components/po-popup/po-popup-action.interface.d.ts +91 -91
  935. package/lib/components/po-popup/po-popup-base.component.d.ts +151 -151
  936. package/lib/components/po-popup/po-popup.component.d.ts +69 -69
  937. package/lib/components/po-popup/po-popup.module.d.ts +7 -7
  938. package/lib/components/po-progress/enums/po-progress-status.enum.d.ts +15 -15
  939. package/lib/components/po-progress/index.d.ts +3 -3
  940. package/lib/components/po-progress/po-progress-bar/po-progress-bar.component.d.ts +5 -5
  941. package/lib/components/po-progress/po-progress-base.component.d.ts +103 -103
  942. package/lib/components/po-progress/po-progress.component.d.ts +28 -28
  943. package/lib/components/po-progress/po-progress.module.d.ts +7 -7
  944. package/lib/components/po-slide/directives/po-slide-content-template.directive.d.ts +48 -48
  945. package/lib/components/po-slide/index.d.ts +4 -4
  946. package/lib/components/po-slide/interfaces/po-slide-item.interface.d.ts +17 -17
  947. package/lib/components/po-slide/po-slide-base.component.d.ts +75 -75
  948. package/lib/components/po-slide/po-slide-circles/po-slide-circles.component.d.ts +16 -16
  949. package/lib/components/po-slide/po-slide-control/po-slide-control.component.d.ts +14 -14
  950. package/lib/components/po-slide/po-slide-item/po-slide-item.component.d.ts +28 -28
  951. package/lib/components/po-slide/po-slide.component.d.ts +110 -110
  952. package/lib/components/po-slide/po-slide.module.d.ts +33 -33
  953. package/lib/components/po-stepper/enums/po-stepper-orientation.enum.d.ts +16 -16
  954. package/lib/components/po-stepper/enums/po-stepper-status.enum.d.ts +21 -21
  955. package/lib/components/po-stepper/index.d.ts +6 -6
  956. package/lib/components/po-stepper/po-step/po-step.component.d.ts +76 -76
  957. package/lib/components/po-stepper/po-stepper-base.component.d.ts +132 -132
  958. package/lib/components/po-stepper/po-stepper-circle/po-stepper-circle.component.d.ts +20 -20
  959. package/lib/components/po-stepper/po-stepper-item.interface.d.ts +14 -14
  960. package/lib/components/po-stepper/po-stepper-label/po-stepper-label.component.d.ts +10 -10
  961. package/lib/components/po-stepper/po-stepper-step/po-stepper-step.component.d.ts +37 -37
  962. package/lib/components/po-stepper/po-stepper.component.d.ts +80 -80
  963. package/lib/components/po-stepper/po-stepper.module.d.ts +6 -6
  964. package/lib/components/po-table/enums/po-table-column-sort-type.enum.d.ts +12 -12
  965. package/lib/components/po-table/enums/po-table-row-template-arrow-direction.enum.d.ts +12 -12
  966. package/lib/components/po-table/index.d.ts +17 -17
  967. package/lib/components/po-table/interfaces/po-table-action.interface.d.ts +8 -8
  968. package/lib/components/po-table/interfaces/po-table-boolean.interface.d.ts +13 -13
  969. package/lib/components/po-table/interfaces/po-table-column-sort.interface.d.ts +15 -15
  970. package/lib/components/po-table/interfaces/po-table-column.interface.d.ts +242 -242
  971. package/lib/components/po-table/interfaces/po-table-filter.interface.d.ts +16 -16
  972. package/lib/components/po-table/interfaces/po-table-filtered-items-params.interface.d.ts +33 -33
  973. package/lib/components/po-table/interfaces/po-table-literals.interface.d.ts +25 -25
  974. package/lib/components/po-table/interfaces/po-table-response-api.interface.d.ts +7 -7
  975. package/lib/components/po-table/po-table-base.component.d.ts +501 -501
  976. package/lib/components/po-table/po-table-cell-template/po-table-cell-template.directive.d.ts +71 -71
  977. package/lib/components/po-table/po-table-column-icon/po-table-column-icon.component.d.ts +26 -26
  978. package/lib/components/po-table/po-table-column-icon/po-table-column-icon.interface.d.ts +80 -80
  979. package/lib/components/po-table/po-table-column-label/po-table-column-label.component.d.ts +17 -17
  980. package/lib/components/po-table/po-table-column-label/po-table-column-label.interface.d.ts +42 -42
  981. package/lib/components/po-table/po-table-column-link/po-table-column-link.component.d.ts +15 -15
  982. package/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.d.ts +74 -74
  983. package/lib/components/po-table/po-table-column-template/po-table-column-template.directive.d.ts +86 -86
  984. package/lib/components/po-table/po-table-detail/po-table-detail-column.interface.d.ts +61 -61
  985. package/lib/components/po-table/po-table-detail/po-table-detail.component.d.ts +44 -44
  986. package/lib/components/po-table/po-table-detail/po-table-detail.interface.d.ts +36 -36
  987. package/lib/components/po-table/po-table-icon/po-table-icon.component.d.ts +27 -27
  988. package/lib/components/po-table/po-table-row-template/po-table-row-template.directive.d.ts +120 -120
  989. package/lib/components/po-table/po-table-show-subtitle/po-table-show-subtitle.component.d.ts +14 -14
  990. package/lib/components/po-table/po-table-subtitle-circle/po-table-subtitle-circle.component.d.ts +19 -19
  991. package/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-column.interface.d.ts +39 -39
  992. package/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-footer.component.d.ts +31 -31
  993. package/lib/components/po-table/po-table.component.d.ts +229 -229
  994. package/lib/components/po-table/po-table.module.d.ts +6 -6
  995. package/lib/components/po-table/services/po-table.service.d.ts +14 -14
  996. package/lib/components/po-tabs/index.d.ts +4 -4
  997. package/lib/components/po-tabs/po-tab/po-tab-base.component.d.ts +57 -57
  998. package/lib/components/po-tabs/po-tab/po-tab.component.d.ts +11 -11
  999. package/lib/components/po-tabs/po-tab/po-tab.interface.d.ts +45 -45
  1000. package/lib/components/po-tabs/po-tab-button/po-tab-button.component.d.ts +29 -29
  1001. package/lib/components/po-tabs/po-tab-dropdown/po-tab-dropdown.component.d.ts +23 -23
  1002. package/lib/components/po-tabs/po-tabs-base.component.d.ts +34 -34
  1003. package/lib/components/po-tabs/po-tabs.component.d.ts +50 -50
  1004. package/lib/components/po-tabs/po-tabs.module.d.ts +6 -6
  1005. package/lib/components/po-tag/enums/po-tag-icon.enum.d.ts +17 -17
  1006. package/lib/components/po-tag/enums/po-tag-orientation.enum.d.ts +13 -13
  1007. package/lib/components/po-tag/enums/po-tag-type.enum.d.ts +17 -17
  1008. package/lib/components/po-tag/index.d.ts +4 -4
  1009. package/lib/components/po-tag/interfaces/po-tag-item.interface.d.ts +13 -13
  1010. package/lib/components/po-tag/po-tag-base.component.d.ts +144 -144
  1011. package/lib/components/po-tag/po-tag.component.d.ts +32 -32
  1012. package/lib/components/po-tag/po-tag.module.d.ts +7 -7
  1013. package/lib/components/po-toolbar/index.d.ts +4 -4
  1014. package/lib/components/po-toolbar/po-toolbar-action.interface.d.ts +8 -8
  1015. package/lib/components/po-toolbar/po-toolbar-actions/po-toolbar-actions.component.d.ts +19 -19
  1016. package/lib/components/po-toolbar/po-toolbar-base.component.d.ts +75 -75
  1017. package/lib/components/po-toolbar/po-toolbar-notification/po-toolbar-notification.component.d.ts +22 -22
  1018. package/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.component.d.ts +18 -18
  1019. package/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.interface.d.ts +15 -15
  1020. package/lib/components/po-toolbar/po-toolbar.component.d.ts +29 -29
  1021. package/lib/components/po-toolbar/po-toolbar.module.d.ts +8 -8
  1022. package/lib/components/po-tree-view/index.d.ts +3 -3
  1023. package/lib/components/po-tree-view/po-tree-view-base.component.d.ts +86 -86
  1024. package/lib/components/po-tree-view/po-tree-view-item/po-tree-view-item.component.d.ts +12 -12
  1025. package/lib/components/po-tree-view/po-tree-view-item/po-tree-view-item.interface.d.ts +24 -24
  1026. package/lib/components/po-tree-view/po-tree-view-item-header/po-tree-view-item-header.component.d.ts +10 -10
  1027. package/lib/components/po-tree-view/po-tree-view.component.d.ts +35 -35
  1028. package/lib/components/po-tree-view/po-tree-view.module.d.ts +33 -33
  1029. package/lib/components/po-tree-view/services/po-tree-view.service.d.ts +9 -9
  1030. package/lib/components/po-widget/index.d.ts +2 -2
  1031. package/lib/components/po-widget/po-widget-base.component.d.ts +162 -162
  1032. package/lib/components/po-widget/po-widget.component.d.ts +41 -41
  1033. package/lib/components/po-widget/po-widget.module.d.ts +7 -7
  1034. package/lib/decorators/index.d.ts +2 -2
  1035. package/lib/decorators/input-boolean/input-boolean.decorator.d.ts +10 -10
  1036. package/lib/decorators/input-required/input-required.decorator.d.ts +22 -22
  1037. package/lib/decorators/property-decorator.interface.d.ts +13 -13
  1038. package/lib/decorators/utils-decorators.d.ts +27 -27
  1039. package/lib/directives/directives.module.d.ts +2 -2
  1040. package/lib/directives/index.d.ts +2 -2
  1041. package/lib/directives/po-tooltip/index.d.ts +2 -2
  1042. package/lib/directives/po-tooltip/po-tooltip-base.directive.d.ts +67 -67
  1043. package/lib/directives/po-tooltip/po-tooltip-control-position.service.d.ts +3 -3
  1044. package/lib/directives/po-tooltip/po-tooltip.directive.d.ts +52 -52
  1045. package/lib/directives/po-tooltip/po-tooltip.module.d.ts +7 -7
  1046. package/lib/enums/po-color-palette.enum.d.ts +33 -33
  1047. package/lib/enums/po-key-code.enum.d.ts +29 -29
  1048. package/lib/guards/guards.module.d.ts +2 -2
  1049. package/lib/guards/index.d.ts +1 -1
  1050. package/lib/index.d.ts +9 -9
  1051. package/lib/interceptors/index.d.ts +3 -3
  1052. package/lib/interceptors/interceptors.module.d.ts +2 -2
  1053. package/lib/interceptors/po-http-interceptor/index.d.ts +2 -2
  1054. package/lib/interceptors/po-http-interceptor/po-http-interceptor-base.service.d.ts +154 -154
  1055. package/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail-literals.interface.d.ts +6 -6
  1056. package/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail.component.d.ts +39 -39
  1057. package/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail.interface.d.ts +23 -23
  1058. package/lib/interceptors/po-http-interceptor/po-http-interceptor-literals.d.ts +6 -6
  1059. package/lib/interceptors/po-http-interceptor/po-http-interceptor.module.d.ts +2 -2
  1060. package/lib/interceptors/po-http-interceptor/po-http-interceptor.service.d.ts +16 -16
  1061. package/lib/interceptors/po-http-request/index.d.ts +2 -2
  1062. package/lib/interceptors/po-http-request/po-http-request-control-service.d.ts +12 -12
  1063. package/lib/interceptors/po-http-request/po-http-request-interceptor.service.d.ts +102 -102
  1064. package/lib/interceptors/po-http-request/po-http-request.module.d.ts +2 -2
  1065. package/lib/interfaces/index.d.ts +1 -1
  1066. package/lib/interfaces/po-http/po-response-api.interface.d.ts +13 -13
  1067. package/lib/pipes/index.d.ts +2 -2
  1068. package/lib/pipes/pipes.module.d.ts +2 -2
  1069. package/lib/pipes/po-time/index.d.ts +2 -2
  1070. package/lib/pipes/po-time/po-time.module.d.ts +7 -7
  1071. package/lib/pipes/po-time/po-time.pipe.d.ts +14 -14
  1072. package/lib/po.module.d.ts +2 -2
  1073. package/lib/services/index.d.ts +10 -10
  1074. package/lib/services/po-active-overlay/index.d.ts +2 -2
  1075. package/lib/services/po-active-overlay/po-active-overlay.module.d.ts +7 -7
  1076. package/lib/services/po-active-overlay/po-active-overlay.service.d.ts +3 -3
  1077. package/lib/services/po-color/po-color.service.d.ts +16 -16
  1078. package/lib/services/po-color/po-colors.constant.d.ts +2 -2
  1079. package/lib/services/po-color-palette/index.d.ts +2 -2
  1080. package/lib/services/po-color-palette/po-color-palette.module.d.ts +7 -7
  1081. package/lib/services/po-color-palette/po-color-palette.service.d.ts +7 -7
  1082. package/lib/services/po-component-injector/index.d.ts +2 -2
  1083. package/lib/services/po-component-injector/po-component-injector.module.d.ts +2 -2
  1084. package/lib/services/po-component-injector/po-component-injector.service.d.ts +9 -9
  1085. package/lib/services/po-control-position/index.d.ts +2 -2
  1086. package/lib/services/po-control-position/po-control-position.constants.d.ts +1 -1
  1087. package/lib/services/po-control-position/po-control-position.module.d.ts +7 -7
  1088. package/lib/services/po-control-position/po-control-position.service.d.ts +56 -56
  1089. package/lib/services/po-date/index.d.ts +2 -2
  1090. package/lib/services/po-date/po-date.module.d.ts +7 -7
  1091. package/lib/services/po-date/po-date.service.d.ts +94 -94
  1092. package/lib/services/po-dialog/index.d.ts +7 -7
  1093. package/lib/services/po-dialog/interfaces/po-dialog-alert-literals.interface.d.ts +11 -11
  1094. package/lib/services/po-dialog/interfaces/po-dialog-confirm-literals.interface.d.ts +13 -13
  1095. package/lib/services/po-dialog/interfaces/po-dialog.interface.d.ts +82 -82
  1096. package/lib/services/po-dialog/po-dialog-base.service.d.ts +15 -15
  1097. package/lib/services/po-dialog/po-dialog.component.d.ts +48 -48
  1098. package/lib/services/po-dialog/po-dialog.enum.d.ts +12 -12
  1099. package/lib/services/po-dialog/po-dialog.module.d.ts +2 -2
  1100. package/lib/services/po-dialog/po-dialog.service.d.ts +29 -29
  1101. package/lib/services/po-i18n/index.d.ts +7 -7
  1102. package/lib/services/po-i18n/interfaces/po-i18n-config-default.interface.d.ts +35 -35
  1103. package/lib/services/po-i18n/interfaces/po-i18n-config.interface.d.ts +78 -78
  1104. package/lib/services/po-i18n/interfaces/po-i18n-literals.interface.d.ts +15 -15
  1105. package/lib/services/po-i18n/po-i18n-base.pipe.d.ts +29 -29
  1106. package/lib/services/po-i18n/po-i18n-base.service.d.ts +212 -212
  1107. package/lib/services/po-i18n/po-i18n-config-injection-token.d.ts +3 -3
  1108. package/lib/services/po-i18n/po-i18n.module.d.ts +150 -150
  1109. package/lib/services/po-i18n/po-i18n.pipe.d.ts +15 -15
  1110. package/lib/services/po-i18n/po-i18n.service.d.ts +10 -10
  1111. package/lib/services/po-language/index.d.ts +4 -4
  1112. package/lib/services/po-language/po-language.constant.d.ts +58 -58
  1113. package/lib/services/po-language/po-language.interface.d.ts +43 -43
  1114. package/lib/services/po-language/po-language.module.d.ts +7 -7
  1115. package/lib/services/po-language/po-language.service.d.ts +95 -95
  1116. package/lib/services/po-notification/index.d.ts +5 -5
  1117. package/lib/services/po-notification/po-notification-base.service.d.ts +84 -84
  1118. package/lib/services/po-notification/po-notification.interface.d.ts +33 -33
  1119. package/lib/services/po-notification/po-notification.module.d.ts +2 -2
  1120. package/lib/services/po-notification/po-notification.service.d.ts +31 -31
  1121. package/lib/services/po-notification/po-toaster/po-toaster-base.component.d.ts +41 -41
  1122. package/lib/services/po-notification/po-toaster/po-toaster-orientation.enum.d.ts +11 -11
  1123. package/lib/services/po-notification/po-toaster/po-toaster-type.enum.d.ts +15 -15
  1124. package/lib/services/po-notification/po-toaster/po-toaster.component.d.ts +33 -33
  1125. package/lib/services/po-notification/po-toaster/po-toaster.interface.d.ts +15 -15
  1126. package/lib/services/services.module.d.ts +2 -2
  1127. package/lib/utils/util.d.ts +217 -217
  1128. package/package.json +4 -4
  1129. package/po-ui-ng-components-5.22.3.tgz +0 -0
  1130. package/po-ui-ng-components.d.ts +205 -205
  1131. package/po-ui-ng-components.metadata.json +1 -1
  1132. package/public-api.d.ts +1 -1
  1133. package/schematics/README.md +74 -74
  1134. package/schematics/collection.json +40 -40
  1135. package/schematics/migrations.json +25 -25
  1136. package/schematics/ng-add/index.d.ts +8 -8
  1137. package/schematics/ng-add/index.js +25 -25
  1138. package/schematics/ng-add/index.spec.d.ts +1 -1
  1139. package/schematics/ng-add/index.spec.js +91 -91
  1140. package/schematics/ng-add/schema.json +16 -16
  1141. package/schematics/ng-add/setup-project.d.ts +8 -8
  1142. package/schematics/ng-add/setup-project.js +55 -55
  1143. package/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
  1144. package/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +3 -3
  1145. package/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
  1146. package/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +18 -18
  1147. package/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
  1148. package/schematics/ng-generate/po-page-default/index.d.ts +4 -4
  1149. package/schematics/ng-generate/po-page-default/index.js +12 -12
  1150. package/schematics/ng-generate/po-page-default/index.spec.d.ts +1 -1
  1151. package/schematics/ng-generate/po-page-default/index.spec.js +120 -120
  1152. package/schematics/ng-generate/po-page-default/schema.d.ts +3 -3
  1153. package/schematics/ng-generate/po-page-default/schema.js +2 -2
  1154. package/schematics/ng-generate/po-page-default/schema.json +67 -67
  1155. package/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
  1156. package/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +8 -8
  1157. package/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
  1158. package/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +26 -26
  1159. package/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
  1160. package/schematics/ng-generate/po-page-detail/index.d.ts +4 -4
  1161. package/schematics/ng-generate/po-page-detail/index.js +12 -12
  1162. package/schematics/ng-generate/po-page-detail/index.spec.d.ts +1 -1
  1163. package/schematics/ng-generate/po-page-detail/index.spec.js +120 -120
  1164. package/schematics/ng-generate/po-page-detail/schema.d.ts +3 -3
  1165. package/schematics/ng-generate/po-page-detail/schema.js +2 -2
  1166. package/schematics/ng-generate/po-page-detail/schema.json +67 -67
  1167. package/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
  1168. package/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +8 -8
  1169. package/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
  1170. package/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +26 -26
  1171. package/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
  1172. package/schematics/ng-generate/po-page-edit/index.d.ts +4 -4
  1173. package/schematics/ng-generate/po-page-edit/index.js +12 -12
  1174. package/schematics/ng-generate/po-page-edit/index.spec.d.ts +1 -1
  1175. package/schematics/ng-generate/po-page-edit/index.spec.js +120 -120
  1176. package/schematics/ng-generate/po-page-edit/schema.d.ts +3 -3
  1177. package/schematics/ng-generate/po-page-edit/schema.js +2 -2
  1178. package/schematics/ng-generate/po-page-edit/schema.json +67 -67
  1179. package/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
  1180. package/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +28 -28
  1181. package/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +35 -35
  1182. package/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +33 -33
  1183. package/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
  1184. package/schematics/ng-generate/po-page-list/index.d.ts +7 -7
  1185. package/schematics/ng-generate/po-page-list/index.js +15 -15
  1186. package/schematics/ng-generate/po-page-list/index.spec.d.ts +1 -1
  1187. package/schematics/ng-generate/po-page-list/index.spec.js +120 -120
  1188. package/schematics/ng-generate/po-page-list/schema.d.ts +5 -5
  1189. package/schematics/ng-generate/po-page-list/schema.js +2 -2
  1190. package/schematics/ng-generate/po-page-list/schema.json +78 -78
  1191. package/schematics/ng-generate/sidemenu/files/app.component.html.template +9 -9
  1192. package/schematics/ng-generate/sidemenu/files/app.component.spec.ts.template +30 -30
  1193. package/schematics/ng-generate/sidemenu/files/app.component.ts.template +20 -20
  1194. package/schematics/ng-generate/sidemenu/index.d.ts +8 -8
  1195. package/schematics/ng-generate/sidemenu/index.js +51 -51
  1196. package/schematics/ng-generate/sidemenu/index.spec.d.ts +1 -1
  1197. package/schematics/ng-generate/sidemenu/index.spec.js +62 -62
  1198. package/schematics/ng-generate/sidemenu/schema.d.ts +13 -13
  1199. package/schematics/ng-generate/sidemenu/schema.js +2 -2
  1200. package/schematics/ng-generate/sidemenu/schema.json +32 -32
  1201. package/schematics/ng-update/v2/changes.d.ts +19 -19
  1202. package/schematics/ng-update/v2/changes.js +58 -58
  1203. package/schematics/ng-update/v2/index.d.ts +1 -1
  1204. package/schematics/ng-update/v2/index.js +145 -145
  1205. package/schematics/ng-update/v3/changes.d.ts +4 -4
  1206. package/schematics/ng-update/v3/changes.js +20 -20
  1207. package/schematics/ng-update/v3/index.d.ts +1 -1
  1208. package/schematics/ng-update/v3/index.js +66 -66
  1209. package/schematics/ng-update/v4/changes.d.ts +4 -4
  1210. package/schematics/ng-update/v4/changes.js +20 -20
  1211. package/schematics/ng-update/v4/index.d.ts +1 -1
  1212. package/schematics/ng-update/v4/index.js +65 -65
  1213. package/schematics/ng-update/v5/changes.d.ts +4 -4
  1214. package/schematics/ng-update/v5/changes.js +25 -25
  1215. package/schematics/ng-update/v5/index.d.ts +1 -1
  1216. package/schematics/ng-update/v5/index.js +65 -65
  1217. package/po-ui-ng-components-5.22.2.tgz +0 -0
@@ -1,460 +1,460 @@
1
- /**
2
- * Para usar o po-mask é preciso instanciar esta classe passando a máscara como
3
- * primeiro parâmetro, e no segundo parâmetro, deve se informado true, caso queira
4
- * que o model seja formatado ou false para o que o model seja limpo.
5
- */
6
- export class PoMask {
7
- constructor(mask, formatModel) {
8
- this.mask = '';
9
- this.formatModel = false;
10
- // controle de posição
11
- this.initialPosition = 0;
12
- this.finalPosition = 0;
13
- this.pattern = '';
14
- this.mask = mask;
15
- this.formatModel = formatModel;
16
- this.pattern = this.getRegexFromMask(mask);
17
- }
18
- get getPattern() {
19
- return this.pattern;
20
- }
21
- get getValueToInput() {
22
- return this.valueToInput;
23
- }
24
- set setValueToInput(value) {
25
- this.valueToInput = value;
26
- }
27
- get getValueToModel() {
28
- return this.valueToModel;
29
- }
30
- set setValueToModel(value) {
31
- this.valueToModel = value;
32
- }
33
- keyup($event) {
34
- if (this.mask) {
35
- const value = $event.target.value;
36
- // formata o valor quando for colado com control + v e reposiciona o cursor
37
- if ($event.keyCode === 17 || $event.keyCode === 91) {
38
- $event.target.value = this.controlFormatting(value);
39
- this.resetPositions($event);
40
- }
41
- $event.preventDefault();
42
- switch ($event.keyCode) {
43
- case 37: // seta esquerda
44
- if (this.initialPosition > 0) {
45
- this.initialPosition--;
46
- }
47
- this.setPositionNotShiftKey($event);
48
- this.setSelectionRange($event);
49
- break;
50
- case 39: // seta direita
51
- if (this.initialPosition < value.toString().length) {
52
- this.initialPosition++;
53
- }
54
- this.setPositionNotShiftKey($event);
55
- this.setSelectionRange($event);
56
- break;
57
- case 35: // end
58
- this.finalPosition = value.toString().length;
59
- if ($event.shiftKey) {
60
- this.setPositions($event);
61
- }
62
- else {
63
- this.initialPosition = this.finalPosition;
64
- this.setPositions($event);
65
- }
66
- break;
67
- case 36: // HOME
68
- if ($event.shiftKey) {
69
- this.finalPosition = this.initialPosition;
70
- this.initialPosition = 0;
71
- this.setPositions($event);
72
- }
73
- else {
74
- this.initialPosition = 0;
75
- this.finalPosition = 0;
76
- this.setPositions($event);
77
- }
78
- break;
79
- }
80
- }
81
- }
82
- setPositionNotShiftKey($event) {
83
- if (!$event.shiftKey) {
84
- this.finalPosition = this.initialPosition;
85
- }
86
- }
87
- setSelectionRange($event) {
88
- if (this.initialPosition > this.finalPosition) {
89
- $event.target.setSelectionRange(this.finalPosition, this.initialPosition);
90
- }
91
- else {
92
- $event.target.setSelectionRange(this.initialPosition, this.finalPosition);
93
- }
94
- }
95
- keydown($event) {
96
- if (this.mask) {
97
- let value = $event.target.value;
98
- if ($event.keyCode === 9) {
99
- return;
100
- }
101
- if (!$event.ctrlKey && !$event.metaKey) {
102
- $event.preventDefault();
103
- }
104
- // Não faz nada quando for digitado CTRL ou COMMAND e V
105
- // Já está sendo tratado no evento keyup
106
- if ($event.ctrlKey ||
107
- ($event.metaKey && $event.keyCode !== 86) ||
108
- ($event.keyCode >= 37 && $event.keyCode <= 40) ||
109
- $event.keyCode === 16 ||
110
- $event.keyCode === 9) {
111
- return;
112
- }
113
- // Valida a tecla digitada
114
- if (this.isKeyValid($event.keyCode)) {
115
- if (this.finalPosition === null) {
116
- this.finalPosition = this.initialPosition;
117
- }
118
- this.revertPositions(this.initialPosition, this.finalPosition);
119
- switch ($event.keyCode) {
120
- case 8: // backspace
121
- this.getPosition($event);
122
- if (this.initialPosition < 0) {
123
- this.initialPosition = 0;
124
- this.setPositions($event);
125
- }
126
- if (this.initialPosition === this.finalPosition) {
127
- this.checkMaskBefore($event, -1);
128
- if (this.initialPosition !== 0) {
129
- value = value.slice(0, this.initialPosition - 1) + value.slice(this.finalPosition);
130
- value = this.controlFormatting(value);
131
- $event.target.value = value;
132
- this.changePosition($event, -1);
133
- this.checkMaskBefore($event, -1);
134
- this.setPositions($event);
135
- this.resetPositions($event);
136
- }
137
- }
138
- else {
139
- this.clearRangeSelection(value, $event, true);
140
- }
141
- this.setPositions($event);
142
- break;
143
- case 46: // delete
144
- this.getPosition($event);
145
- if (this.initialPosition === this.finalPosition) {
146
- this.checkMaskAfter($event, 1);
147
- value = value.slice(0, this.initialPosition) + value.slice(this.finalPosition + 1);
148
- value = this.controlFormatting(value);
149
- $event.target.value = value;
150
- this.setPositions($event);
151
- this.resetPositions($event);
152
- }
153
- else {
154
- this.clearRangeSelection(value, $event, false);
155
- }
156
- this.setPositions($event);
157
- break;
158
- default:
159
- // qualquer outra tecla válida
160
- this.getPosition($event);
161
- value = value.slice(0, this.initialPosition) + $event.key + value.slice(this.finalPosition);
162
- value = this.controlFormatting(value);
163
- $event.target.value = value;
164
- this.changePosition($event, 1);
165
- this.checkMaskBefore($event, 1);
166
- this.setPositions($event);
167
- this.resetPositions($event);
168
- this.setPositions($event);
169
- }
170
- }
171
- }
172
- }
173
- clearRangeSelection(value, $event, isBackspace) {
174
- value = value.slice(0, this.initialPosition) + value.slice(this.finalPosition);
175
- value = this.controlFormatting(value);
176
- $event.target.value = value;
177
- if (isBackspace) {
178
- this.checkMaskBefore($event, -1);
179
- }
180
- this.setPositions($event);
181
- this.resetPositions($event);
182
- }
183
- // passa a posição do click para o controle de posição
184
- click($event) {
185
- this.initialPosition = $event.target.selectionStart;
186
- this.finalPosition = $event.target.selectionEnd;
187
- }
188
- blur($event) {
189
- // Se houver algum valor definido na máscara
190
- if (this.mask) {
191
- // pega o valor do campo, formata e passa para o model
192
- let value = $event.target.value;
193
- value = this.controlFormatting(value);
194
- $event.target.value = value;
195
- }
196
- }
197
- revertPositions(initialPosition, finalPosition) {
198
- if (initialPosition > finalPosition) {
199
- // inverte o controle de posição caso o inicial esteja maior que o final
200
- const tempPosition = initialPosition;
201
- this.initialPosition = finalPosition;
202
- this.finalPosition = tempPosition;
203
- }
204
- }
205
- // reseta o controle de posição
206
- resetPositions($event) {
207
- this.initialPosition = $event.target.selectionStart;
208
- this.finalPosition = this.initialPosition;
209
- }
210
- // posiciona o cursor de acordo com o controle de posição
211
- setPositions($event) {
212
- $event.target.setSelectionRange(this.initialPosition, this.finalPosition);
213
- }
214
- // muda a posição do cursor e atualiza o controle de posição
215
- changePosition($event, value) {
216
- this.initialPosition = this.initialPosition + value;
217
- this.finalPosition = this.finalPosition + value;
218
- this.setPositions($event);
219
- }
220
- getPosition($event) {
221
- this.initialPosition = $event.target.selectionStart;
222
- this.finalPosition = $event.target.selectionEnd;
223
- this.setPositions($event);
224
- }
225
- // Método responsável por controlar a formatação e aplicar todas as máscara possíveis
226
- // quando houver valores opcionais (?)
227
- controlFormatting(value) {
228
- // Se o valor for vazio, retorna vazio
229
- if (!value) {
230
- this.valueToInput = '';
231
- this.valueToModel = '';
232
- return '';
233
- }
234
- let valueProcessed;
235
- let maskTmp = this.mask;
236
- // Array que será usado para armazenar todas as máscaras possíveis para
237
- // quando houver um valor opcional (?)
238
- const arrMasks = [];
239
- let contMasks = 0;
240
- // Enquanto houver algum 9? na máscara
241
- while (this.hasOptionalNumber(maskTmp)) {
242
- arrMasks.push(maskTmp);
243
- maskTmp = this.replaceOptionalNumber(maskTmp);
244
- }
245
- arrMasks.push(maskTmp);
246
- // Inverte o array
247
- arrMasks.reverse();
248
- // Informa que a formatação ainda não chegou ao fim
249
- this.formattingEnds = false;
250
- while (!this.formattingEnds) {
251
- // Seta a formatação como terminada
252
- // Então o método formatValue irá setar como não terminado caso haja
253
- this.formattingEnds = true;
254
- // Se não existe mais nenhuma máscara possível, então encerra a formatação
255
- if (!arrMasks[contMasks]) {
256
- break;
257
- }
258
- // Chama a formatação passando a máscara e o valor
259
- valueProcessed = this.formatValue(value, arrMasks[contMasks]);
260
- contMasks++;
261
- }
262
- return valueProcessed;
263
- }
264
- // Função que formata a máscara com o valor passado
265
- formatValue(value, mask) {
266
- // Remove as marcas de valor opciona (?)
267
- mask = mask.replace(/\?/g, '');
268
- // Substitui todos os caracteres que não são fixos da máscara por _
269
- const guide = mask.replace(this.listValidKeys(), '_');
270
- // Contador usado para percorrer o guide
271
- let contGuide = 0;
272
- // String final formatada
273
- let valueProcessed = '';
274
- // Remove do valor todos os caracteres fixos como ()/-+
275
- value = this.removeFormattingValue(value);
276
- // Percorre todo o valor e coloca a formatação de acordo com a máscara
277
- for (let i = 0; i < value.length; i++) {
278
- const charValue = value[i];
279
- // Se o guide acabou, seta a formatação como não terminada para que o método controlFormatting
280
- // tente formatar com outra possível máscara
281
- if (!guide[contGuide]) {
282
- this.formattingEnds = false;
283
- break;
284
- }
285
- // Percorre o Guide enquanto tem caracteres fixos
286
- while (this.isFixedCharacterGuide(guide[contGuide]) && guide[contGuide]) {
287
- valueProcessed += guide[contGuide];
288
- contGuide++;
289
- }
290
- // É um caracter válido de acordo com a máscara
291
- if (this.isKeyValidMask(charValue, mask[contGuide])) {
292
- valueProcessed += charValue;
293
- contGuide++;
294
- }
295
- else {
296
- // Se não é um caracter válido, deve interromper.
297
- break;
298
- }
299
- }
300
- if (this.formatModel) {
301
- this.valueToInput = valueProcessed;
302
- this.valueToModel = valueProcessed;
303
- }
304
- else {
305
- this.valueToInput = valueProcessed;
306
- this.valueToModel = this.removeFormattingValue(valueProcessed);
307
- }
308
- return valueProcessed;
309
- }
310
- // verifica se tem algum caracter de mascara antes do cursor
311
- checkMaskBefore($event, position) {
312
- if (this.isFixedCharacterGuide($event.target.value.toString().charAt(this.initialPosition - 1))) {
313
- this.changePosition($event, position);
314
- this.checkMaskBefore($event, position);
315
- }
316
- }
317
- // verifica se tem algum caracter de mascara depois do cursor
318
- checkMaskAfter($event, position) {
319
- if (this.isFixedCharacterGuide($event.target.value.toString().charAt(this.initialPosition))) {
320
- this.changePosition($event, position);
321
- this.checkMaskAfter($event, position);
322
- }
323
- }
324
- // Retorna a máscara sem um valor opcional
325
- replaceOptionalNumber(mask) {
326
- let i = 9;
327
- while (i >= 0) {
328
- if (mask.indexOf(i + '?') > -1) {
329
- return mask.replace(i + '?', '');
330
- }
331
- i--;
332
- }
333
- return mask;
334
- }
335
- // Verifica se contém caracteres permitidos somente na máscara \/() +-
336
- isFixedCharacterGuide(key) {
337
- return this.testRegex(key, this.getFixedCharacterGuide());
338
- }
339
- // Retorna caracteres permitidos somente na máscara \/() +-
340
- getFixedCharacterGuide() {
341
- return /[\\\/() +-.\:]/g;
342
- }
343
- // Caracteres permitidos de serem digitados
344
- listValidKeys() {
345
- return /[a-zA-Z0-9]/g;
346
- }
347
- // Se é um dígito válido
348
- isKeyValid(keyCode) {
349
- return this.isKeyCodeValid(keyCode);
350
- }
351
- // Verifica se a tecla digitada é permitida
352
- // Permite apenas números, letras, backspace e del
353
- isKeyCodeValid(keyCode) {
354
- return ((keyCode >= 48 && keyCode <= 57) ||
355
- (keyCode >= 65 && keyCode <= 90) ||
356
- (keyCode >= 96 && keyCode <= 105) ||
357
- keyCode === 8 ||
358
- keyCode === 9 ||
359
- keyCode === 46);
360
- }
361
- // Se está de acordo com a máscara
362
- isKeyValidMask(key, keyMask) {
363
- return this.testRegex(key, this.replaceMask(keyMask));
364
- }
365
- // Retorna se a chave foi aprovada pela expressão regular
366
- testRegex(key, regex) {
367
- return regex.test(key);
368
- }
369
- // Remove a formatacão do valor
370
- // É possível ser melhorado para remover pontualmente os caracteres fixos de acordo com a máscara
371
- removeFormattingValue(value) {
372
- return value.replace(this.getFixedCharacterGuide(), '');
373
- }
374
- // Verifica se contém valor opcional na máscara 0-9?
375
- hasOptionalNumber(mask) {
376
- return mask.match(/\d\?/g);
377
- }
378
- // Retorna a expressão regular correspondente ao comando passado
379
- replaceMask(char) {
380
- let regex = /./;
381
- switch (char) {
382
- case '0':
383
- regex = /[0]/;
384
- break;
385
- case '1':
386
- regex = /[0-1]/;
387
- break;
388
- case '2':
389
- regex = /[0-2]/;
390
- break;
391
- case '3':
392
- regex = /[0-3]/;
393
- break;
394
- case '4':
395
- regex = /[0-4]/;
396
- break;
397
- case '5':
398
- regex = /[0-5]/;
399
- break;
400
- case '6':
401
- regex = /[0-6]/;
402
- break;
403
- case '7':
404
- regex = /[0-7]/;
405
- break;
406
- case '8':
407
- regex = /[0-8]/;
408
- break;
409
- case '9':
410
- regex = /[0-9]/;
411
- break;
412
- case ' ':
413
- regex = /\s/;
414
- break;
415
- case '@':
416
- regex = /[a-zA-Z]/;
417
- break;
418
- case 'w':
419
- regex = /[a-zA-Z0-9]/;
420
- break;
421
- }
422
- return regex;
423
- }
424
- getRegexFromMask(mask) {
425
- if (mask) {
426
- let pattern;
427
- if (this.formatModel) {
428
- pattern = mask.replace(/\\/g, '\\\\');
429
- pattern = pattern.replace(/\+/g, '\\+');
430
- pattern = pattern.replace(/\./g, '\\.');
431
- pattern = pattern.replace(/-/g, '-');
432
- pattern = pattern.replace(/\(/g, '\\(');
433
- pattern = pattern.replace(/\)/g, '\\)');
434
- pattern = pattern.replace(/\//g, '\\/');
435
- pattern = pattern.replace(/\s/g, '\\s');
436
- pattern = pattern.replace(/:/g, '\\:');
437
- pattern = pattern.replace(/\@(?!\s)/g, '\\w');
438
- pattern = pattern.replace(/\d/g, '\\w');
439
- }
440
- else {
441
- pattern = mask.replace(/\\/g, '');
442
- pattern = pattern.replace(/\+/g, '');
443
- pattern = pattern.replace(/\./g, '');
444
- pattern = pattern.replace(/-/g, '');
445
- pattern = pattern.replace(/\(/g, '');
446
- pattern = pattern.replace(/\)/g, '');
447
- pattern = pattern.replace(/\//g, '');
448
- pattern = pattern.replace(/\s/g, '');
449
- pattern = pattern.replace(/:/g, '');
450
- pattern = pattern.replace(/\@/g, '\\w');
451
- pattern = pattern.replace(/\d/g, '\\w');
452
- }
453
- return pattern;
454
- }
455
- else {
456
- return null;
457
- }
458
- }
459
- }
460
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbWFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1pbnB1dC9wby1tYXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sTUFBTTtJQThCakIsWUFBWSxJQUFZLEVBQUUsV0FBb0I7UUE3QjlDLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDbEIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0Isc0JBQXNCO1FBQ3RCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBQzVCLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRTFCLFlBQU8sR0FBVyxFQUFFLENBQUM7UUF3Qm5CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUExQkQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFHRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFJLGVBQWUsQ0FBQyxLQUFhO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFHRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFJLGVBQWUsQ0FBQyxLQUFhO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFVRCxLQUFLLENBQUMsTUFBVztRQUNmLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLE1BQU0sS0FB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Q0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN4QyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDekM7WUFDRCxPQUFPLE9BQU8sQ0FBQztTQUNoQjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGFyYSB1c2FyIG8gcG8tbWFzayDDqSBwcmVjaXNvIGluc3RhbmNpYXIgZXN0YSBjbGFzc2UgcGFzc2FuZG8gYSBtw6FzY2FyYSBjb21vXG4gKiBwcmltZWlybyBwYXLDom1ldHJvLCBlIG5vIHNlZ3VuZG8gcGFyw6JtZXRybywgZGV2ZSBzZSBpbmZvcm1hZG8gdHJ1ZSwgY2FzbyBxdWVpcmFcbiAqIHF1ZSBvIG1vZGVsIHNlamEgZm9ybWF0YWRvIG91IGZhbHNlIHBhcmEgbyBxdWUgbyBtb2RlbCBzZWphIGxpbXBvLlxuICovXG5leHBvcnQgY2xhc3MgUG9NYXNrIHtcbiAgbWFzazogc3RyaW5nID0gJyc7XG4gIGZvcm1hdE1vZGVsOiBib29sZWFuID0gZmFsc2U7XG4gIC8vIGNvbnRyb2xlIGRlIHBvc2nDp8Ojb1xuICBpbml0aWFsUG9zaXRpb246IG51bWJlciA9IDA7XG4gIGZpbmFsUG9zaXRpb246IG51bWJlciA9IDA7XG5cbiAgcGF0dGVybjogc3RyaW5nID0gJyc7XG4gIGdldCBnZXRQYXR0ZXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGF0dGVybjtcbiAgfVxuXG4gIHZhbHVlVG9JbnB1dDogc3RyaW5nO1xuICBnZXQgZ2V0VmFsdWVUb0lucHV0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVUb0lucHV0O1xuICB9XG4gIHNldCBzZXRWYWx1ZVRvSW5wdXQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWVUb0lucHV0ID0gdmFsdWU7XG4gIH1cblxuICB2YWx1ZVRvTW9kZWw6IHN0cmluZztcbiAgZ2V0IGdldFZhbHVlVG9Nb2RlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnZhbHVlVG9Nb2RlbDtcbiAgfVxuICBzZXQgc2V0VmFsdWVUb01vZGVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlVG9Nb2RlbCA9IHZhbHVlO1xuICB9XG5cbiAgZm9ybWF0dGluZ0VuZHM6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IobWFzazogc3RyaW5nLCBmb3JtYXRNb2RlbDogYm9vbGVhbikge1xuICAgIHRoaXMubWFzayA9IG1hc2s7XG4gICAgdGhpcy5mb3JtYXRNb2RlbCA9IGZvcm1hdE1vZGVsO1xuICAgIHRoaXMucGF0dGVybiA9IHRoaXMuZ2V0UmVnZXhGcm9tTWFzayhtYXNrKTtcbiAgfVxuXG4gIGtleXVwKCRldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMubWFzaykge1xuICAgICAgY29uc3QgdmFsdWUgPSAkZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgLy8gZm9ybWF0YSBvIHZhbG9yIHF1YW5kbyBmb3IgY29sYWRvIGNvbSBjb250cm9sICsgdiBlIHJlcG9zaWNpb25hIG8gY3Vyc29yXG4gICAgICBpZiAoJGV2ZW50LmtleUNvZGUgPT09IDE3IHx8ICRldmVudC5rZXlDb2RlID09PSA5MSkge1xuICAgICAgICAkZXZlbnQudGFyZ2V0LnZhbHVlID0gdGhpcy5jb250cm9sRm9ybWF0dGluZyh2YWx1ZSk7XG4gICAgICAgIHRoaXMucmVzZXRQb3NpdGlvbnMoJGV2ZW50KTtcbiAgICAgIH1cblxuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgIHN3aXRjaCAoJGV2ZW50LmtleUNvZGUpIHtcbiAgICAgICAgY2FzZSAzNzogLy8gc2V0YSBlc3F1ZXJkYVxuICAgICAgICAgIGlmICh0aGlzLmluaXRpYWxQb3NpdGlvbiA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbFBvc2l0aW9uLS07XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb25Ob3RTaGlmdEtleSgkZXZlbnQpO1xuICAgICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uUmFuZ2UoJGV2ZW50KTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDM5OiAvLyBzZXRhIGRpcmVpdGFcbiAgICAgICAgICBpZiAodGhpcy5pbml0aWFsUG9zaXRpb24gPCB2YWx1ZS50b1N0cmluZygpLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsUG9zaXRpb24rKztcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zZXRQb3NpdGlvbk5vdFNoaWZ0S2V5KCRldmVudCk7XG4gICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb25SYW5nZSgkZXZlbnQpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMzU6IC8vIGVuZFxuICAgICAgICAgIHRoaXMuZmluYWxQb3NpdGlvbiA9IHZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoO1xuICAgICAgICAgIGlmICgkZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb25zKCRldmVudCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbFBvc2l0aW9uID0gdGhpcy5maW5hbFBvc2l0aW9uO1xuICAgICAgICAgICAgdGhpcy5zZXRQb3NpdGlvbnMoJGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAzNjogLy8gSE9NRVxuICAgICAgICAgIGlmICgkZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMuZmluYWxQb3NpdGlvbiA9IHRoaXMuaW5pdGlhbFBvc2l0aW9uO1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsUG9zaXRpb24gPSAwO1xuICAgICAgICAgICAgdGhpcy5zZXRQb3NpdGlvbnMoJGV2ZW50KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsUG9zaXRpb24gPSAwO1xuICAgICAgICAgICAgdGhpcy5maW5hbFBvc2l0aW9uID0gMDtcbiAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb25zKCRldmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFBvc2l0aW9uTm90U2hpZnRLZXkoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoISRldmVudC5zaGlmdEtleSkge1xuICAgICAgdGhpcy5maW5hbFBvc2l0aW9uID0gdGhpcy5pbml0aWFsUG9zaXRpb247XG4gICAgfVxuICB9XG5cbiAgc2V0U2VsZWN0aW9uUmFuZ2UoJGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5pbml0aWFsUG9zaXRpb24gPiB0aGlzLmZpbmFsUG9zaXRpb24pIHtcbiAgICAgICRldmVudC50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UodGhpcy5maW5hbFBvc2l0aW9uLCB0aGlzLmluaXRpYWxQb3NpdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgICRldmVudC50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UodGhpcy5pbml0aWFsUG9zaXRpb24sIHRoaXMuZmluYWxQb3NpdGlvbik7XG4gICAgfVxuICB9XG5cbiAga2V5ZG93bigkZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLm1hc2spIHtcbiAgICAgIGxldCB2YWx1ZTogc3RyaW5nID0gJGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgIGlmICgkZXZlbnQua2V5Q29kZSA9PT0gOSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghJGV2ZW50LmN0cmxLZXkgJiYgISRldmVudC5tZXRhS2V5KSB7XG4gICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBOw6NvIGZheiBuYWRhIHF1YW5kbyBmb3IgZGlnaXRhZG8gQ1RSTCBvdSBDT01NQU5EIGUgVlxuICAgICAgLy8gSsOhIGVzdMOhIHNlbmRvIHRyYXRhZG8gbm8gZXZlbnRvIGtleXVwXG4gICAgICBpZiAoXG4gICAgICAgICRldmVudC5jdHJsS2V5IHx8XG4gICAgICAgICgkZXZlbnQubWV0YUtleSAmJiAkZXZlbnQua2V5Q29kZSAhPT0gODYpIHx8XG4gICAgICAgICgkZXZlbnQua2V5Q29kZSA+PSAzNyAmJiAkZXZlbnQua2V5Q29kZSA8PSA0MCkgfHxcbiAgICAgICAgJGV2ZW50LmtleUNvZGUgPT09IDE2IHx8XG4gICAgICAgICRldmVudC5rZXlDb2RlID09PSA5XG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBWYWxpZGEgYSB0ZWNsYSBkaWdpdGFkYVxuICAgICAgaWYgKHRoaXMuaXNLZXlWYWxpZCgkZXZlbnQua2V5Q29kZSkpIHtcbiAgICAgICAgaWYgKHRoaXMuZmluYWxQb3NpdGlvbiA9PT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuZmluYWxQb3NpdGlvbiA9IHRoaXMuaW5pdGlhbFBvc2l0aW9uO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmV2ZXJ0UG9zaXRpb25zKHRoaXMuaW5pdGlhbFBvc2l0aW9uLCB0aGlzLmZpbmFsUG9zaXRpb24pO1xuXG4gICAgICAgIHN3aXRjaCAoJGV2ZW50LmtleUNvZGUpIHtcbiAgICAgICAgICBjYXNlIDg6IC8vIGJhY2tzcGFjZVxuICAgICAgICAgICAgdGhpcy5nZXRQb3NpdGlvbigkZXZlbnQpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbFBvc2l0aW9uIDwgMCkge1xuICAgICAgICAgICAgICB0aGlzLmluaXRpYWxQb3NpdGlvbiA9IDA7XG4gICAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb25zKCRldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5pbml0aWFsUG9zaXRpb24gPT09IHRoaXMuZmluYWxQb3NpdGlvbikge1xuICAgICAgICAgICAgICB0aGlzLmNoZWNrTWFza0JlZm9yZSgkZXZlbnQsIC0xKTtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbFBvc2l0aW9uICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgwLCB0aGlzLmluaXRpYWxQb3NpdGlvbiAtIDEpICsgdmFsdWUuc2xpY2UodGhpcy5maW5hbFBvc2l0aW9uKTtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuY29udHJvbEZvcm1hdHRpbmcodmFsdWUpO1xuICAgICAgICAgICAgICAgICRldmVudC50YXJnZXQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVBvc2l0aW9uKCRldmVudCwgLTEpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tNYXNrQmVmb3JlKCRldmVudCwgLTEpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb25zKCRldmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldFBvc2l0aW9ucygkZXZlbnQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmNsZWFyUmFuZ2VTZWxlY3Rpb24odmFsdWUsICRldmVudCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldFBvc2l0aW9ucygkZXZlbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlIDQ2OiAvLyBkZWxldGVcbiAgICAgICAgICAgIHRoaXMuZ2V0UG9zaXRpb24oJGV2ZW50KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmluaXRpYWxQb3NpdGlvbiA9PT0gdGhpcy5maW5hbFBvc2l0aW9uKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tNYXNrQWZ0ZXIoJGV2ZW50LCAxKTtcbiAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgwLCB0aGlzLmluaXRpYWxQb3NpdGlvbikgKyB2YWx1ZS5zbGljZSh0aGlzLmZpbmFsUG9zaXRpb24gKyAxKTtcbiAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmNvbnRyb2xGb3JtYXR0aW5nKHZhbHVlKTtcbiAgICAgICAgICAgICAgJGV2ZW50LnRhcmdldC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICB0aGlzLnNldFBvc2l0aW9ucygkZXZlbnQpO1xuICAgICAgICAgICAgICB0aGlzLnJlc2V0UG9zaXRpb25zKCRldmVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmNsZWFyUmFuZ2VTZWxlY3Rpb24odmFsdWUsICRldmVudCwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRQb3NpdGlvbnMoJGV2ZW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIC8vIHF1YWxxdWVyIG91dHJhIHRlY2xhIHbDoWxpZGFcbiAgICAgICAgICAgIHRoaXMuZ2V0UG9zaXRpb24oJGV2ZW50KTtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMCwgdGhpcy5pbml0aWFsUG9zaXRpb24pICsgJGV2ZW50LmtleSArIHZhbHVlLnNsaWNlKHRoaXMuZmluYWxQb3NpdGlvbik7XG4gICAgICAgICAgICB2YWx1ZSA9IHRoaXMuY29udHJvbEZvcm1hdHRpbmcodmFsdWUpO1xuICAgICAgICAgICAgJGV2ZW50LnRhcmdldC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VQb3NpdGlvbigkZXZlbnQsIDEpO1xuICAgICAgICAgICAgdGhpcy5jaGVja01hc2tCZWZvcmUoJGV2ZW50LCAxKTtcbiAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb25zKCRldmVudCk7XG4gICAgICAgICAgICB0aGlzLnJlc2V0UG9zaXRpb25zKCRldmVudCk7XG4gICAgICAgICAgICB0aGlzLnNldFBvc2l0aW9ucygkZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2xlYXJSYW5nZVNlbGVjdGlvbih2YWx1ZTogc3RyaW5nLCAkZXZlbnQ6IGFueSwgaXNCYWNrc3BhY2U6IGJvb2xlYW4pIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIHRoaXMuaW5pdGlhbFBvc2l0aW9uKSArIHZhbHVlLnNsaWNlKHRoaXMuZmluYWxQb3NpdGlvbik7XG4gICAgdmFsdWUgPSB0aGlzLmNvbnRyb2xGb3JtYXR0aW5nKHZhbHVlKTtcbiAgICAkZXZlbnQudGFyZ2V0LnZhbHVlID0gdmFsdWU7XG5cbiAgICBpZiAoaXNCYWNrc3BhY2UpIHtcbiAgICAgIHRoaXMuY2hlY2tNYXNrQmVmb3JlKCRldmVudCwgLTEpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0UG9zaXRpb25zKCRldmVudCk7XG4gICAgdGhpcy5yZXNldFBvc2l0aW9ucygkZXZlbnQpO1xuICB9XG5cbiAgLy8gcGFzc2EgYSBwb3Npw6fDo28gZG8gY2xpY2sgcGFyYSBvIGNvbnRyb2xlIGRlIHBvc2nDp8Ojb1xuICBjbGljaygkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuaW5pdGlhbFBvc2l0aW9uID0gJGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydDtcbiAgICB0aGlzLmZpbmFsUG9zaXRpb24gPSAkZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZDtcbiAgfVxuXG4gIGJsdXIoJGV2ZW50OiBhbnkpIHtcbiAgICAvLyBTZSBob3V2ZXIgYWxndW0gdmFsb3IgZGVmaW5pZG8gbmEgbcOhc2NhcmFcbiAgICBpZiAodGhpcy5tYXNrKSB7XG4gICAgICAvLyBwZWdhIG8gdmFsb3IgZG8gY2FtcG8sIGZvcm1hdGEgZSBwYXNzYSBwYXJhIG8gbW9kZWxcbiAgICAgIGxldCB2YWx1ZSA9ICRldmVudC50YXJnZXQudmFsdWU7XG4gICAgICB2YWx1ZSA9IHRoaXMuY29udHJvbEZvcm1hdHRpbmcodmFsdWUpO1xuICAgICAgJGV2ZW50LnRhcmdldC52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHJldmVydFBvc2l0aW9ucyhpbml0aWFsUG9zaXRpb246IG51bWJlciwgZmluYWxQb3NpdGlvbjogbnVtYmVyKSB7XG4gICAgaWYgKGluaXRpYWxQb3NpdGlvbiA+IGZpbmFsUG9zaXRpb24pIHtcbiAgICAgIC8vIGludmVydGUgbyBjb250cm9sZSBkZSBwb3Npw6fDo28gY2FzbyBvIGluaWNpYWwgZXN0ZWphIG1haW9yIHF1ZSBvIGZpbmFsXG4gICAgICBjb25zdCB0ZW1wUG9zaXRpb24gPSBpbml0aWFsUG9zaXRpb247XG4gICAgICB0aGlzLmluaXRpYWxQb3NpdGlvbiA9IGZpbmFsUG9zaXRpb247XG4gICAgICB0aGlzLmZpbmFsUG9zaXRpb24gPSB0ZW1wUG9zaXRpb247XG4gICAgfVxuICB9XG5cbiAgLy8gcmVzZXRhIG8gY29udHJvbGUgZGUgcG9zacOnw6NvXG4gIHJlc2V0UG9zaXRpb25zKCRldmVudDogYW55KSB7XG4gICAgdGhpcy5pbml0aWFsUG9zaXRpb24gPSAkZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xuICAgIHRoaXMuZmluYWxQb3NpdGlvbiA9IHRoaXMuaW5pdGlhbFBvc2l0aW9uO1xuICB9XG5cbiAgLy8gcG9zaWNpb25hIG8gY3Vyc29yIGRlIGFjb3JkbyBjb20gbyBjb250cm9sZSBkZSBwb3Npw6fDo29cbiAgc2V0UG9zaXRpb25zKCRldmVudDogYW55KSB7XG4gICAgJGV2ZW50LnRhcmdldC5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLmluaXRpYWxQb3NpdGlvbiwgdGhpcy5maW5hbFBvc2l0aW9uKTtcbiAgfVxuXG4gIC8vIG11ZGEgYSBwb3Npw6fDo28gZG8gY3Vyc29yIGUgYXR1YWxpemEgbyBjb250cm9sZSBkZSBwb3Npw6fDo29cbiAgY2hhbmdlUG9zaXRpb24oJGV2ZW50OiBhbnksIHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLmluaXRpYWxQb3NpdGlvbiA9IHRoaXMuaW5pdGlhbFBvc2l0aW9uICsgdmFsdWU7XG4gICAgdGhpcy5maW5hbFBvc2l0aW9uID0gdGhpcy5maW5hbFBvc2l0aW9uICsgdmFsdWU7XG4gICAgdGhpcy5zZXRQb3NpdGlvbnMoJGV2ZW50KTtcbiAgfVxuXG4gIGdldFBvc2l0aW9uKCRldmVudDogYW55KSB7XG4gICAgdGhpcy5pbml0aWFsUG9zaXRpb24gPSAkZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xuICAgIHRoaXMuZmluYWxQb3NpdGlvbiA9ICRldmVudC50YXJnZXQuc2VsZWN0aW9uRW5kO1xuICAgIHRoaXMuc2V0UG9zaXRpb25zKCRldmVudCk7XG4gIH1cblxuICAvLyBNw6l0b2RvIHJlc3BvbnPDoXZlbCBwb3IgY29udHJvbGFyIGEgZm9ybWF0YcOnw6NvIGUgYXBsaWNhciB0b2RhcyBhcyBtw6FzY2FyYSBwb3Nzw612ZWlzXG4gIC8vIHF1YW5kbyBob3V2ZXIgdmFsb3JlcyBvcGNpb25haXMgKD8pXG4gIGNvbnRyb2xGb3JtYXR0aW5nKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAvLyBTZSBvIHZhbG9yIGZvciB2YXppbywgcmV0b3JuYSB2YXppb1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWVUb0lucHV0ID0gJyc7XG4gICAgICB0aGlzLnZhbHVlVG9Nb2RlbCA9ICcnO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBsZXQgdmFsdWVQcm9jZXNzZWQ7XG4gICAgbGV0IG1hc2tUbXAgPSB0aGlzLm1hc2s7XG5cbiAgICAvLyBBcnJheSBxdWUgc2Vyw6EgdXNhZG8gcGFyYSBhcm1hemVuYXIgdG9kYXMgYXMgbcOhc2NhcmFzIHBvc3PDrXZlaXMgcGFyYVxuICAgIC8vIHF1YW5kbyBob3V2ZXIgdW0gdmFsb3Igb3BjaW9uYWwgKD8pXG4gICAgY29uc3QgYXJyTWFza3M6IEFycmF5PGFueT4gPSBbXTtcbiAgICBsZXQgY29udE1hc2tzID0gMDtcblxuICAgIC8vIEVucXVhbnRvIGhvdXZlciBhbGd1bSA5PyBuYSBtw6FzY2FyYVxuICAgIHdoaWxlICh0aGlzLmhhc09wdGlvbmFsTnVtYmVyKG1hc2tUbXApKSB7XG4gICAgICBhcnJNYXNrcy5wdXNoKG1hc2tUbXApO1xuICAgICAgbWFza1RtcCA9IHRoaXMucmVwbGFjZU9wdGlvbmFsTnVtYmVyKG1hc2tUbXApO1xuICAgIH1cbiAgICBhcnJNYXNrcy5wdXNoKG1hc2tUbXApO1xuXG4gICAgLy8gSW52ZXJ0ZSBvIGFycmF5XG4gICAgYXJyTWFza3MucmV2ZXJzZSgpO1xuXG4gICAgLy8gSW5mb3JtYSBxdWUgYSBmb3JtYXRhw6fDo28gYWluZGEgbsOjbyBjaGVnb3UgYW8gZmltXG4gICAgdGhpcy5mb3JtYXR0aW5nRW5kcyA9IGZhbHNlO1xuXG4gICAgd2hpbGUgKCF0aGlzLmZvcm1hdHRpbmdFbmRzKSB7XG4gICAgICAvLyBTZXRhIGEgZm9ybWF0YcOnw6NvIGNvbW8gdGVybWluYWRhXG4gICAgICAvLyBFbnTDo28gbyBtw6l0b2RvIGZvcm1hdFZhbHVlIGlyw6Egc2V0YXIgY29tbyBuw6NvIHRlcm1pbmFkbyBjYXNvIGhhamFcbiAgICAgIHRoaXMuZm9ybWF0dGluZ0VuZHMgPSB0cnVlO1xuXG4gICAgICAvLyBTZSBuw6NvIGV4aXN0ZSBtYWlzIG5lbmh1bWEgbcOhc2NhcmEgcG9zc8OtdmVsLCBlbnTDo28gZW5jZXJyYSBhIGZvcm1hdGHDp8Ojb1xuICAgICAgaWYgKCFhcnJNYXNrc1tjb250TWFza3NdKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGFtYSBhIGZvcm1hdGHDp8OjbyBwYXNzYW5kbyBhIG3DoXNjYXJhIGUgbyB2YWxvclxuICAgICAgdmFsdWVQcm9jZXNzZWQgPSB0aGlzLmZvcm1hdFZhbHVlKHZhbHVlLCBhcnJNYXNrc1tjb250TWFza3NdKTtcbiAgICAgIGNvbnRNYXNrcysrO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZVByb2Nlc3NlZDtcbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIHF1ZSBmb3JtYXRhIGEgbcOhc2NhcmEgY29tIG8gdmFsb3IgcGFzc2Fkb1xuICBmb3JtYXRWYWx1ZSh2YWx1ZTogc3RyaW5nLCBtYXNrOiBzdHJpbmcpIHtcbiAgICAvLyBSZW1vdmUgYXMgbWFyY2FzIGRlIHZhbG9yIG9wY2lvbmEgKD8pXG4gICAgbWFzayA9IG1hc2sucmVwbGFjZSgvXFw/L2csICcnKTtcblxuICAgIC8vIFN1YnN0aXR1aSB0b2RvcyBvcyBjYXJhY3RlcmVzIHF1ZSBuw6NvIHPDo28gZml4b3MgZGEgbcOhc2NhcmEgcG9yIF9cbiAgICBjb25zdCBndWlkZSA9IG1hc2sucmVwbGFjZSh0aGlzLmxpc3RWYWxpZEtleXMoKSwgJ18nKTtcblxuICAgIC8vIENvbnRhZG9yIHVzYWRvIHBhcmEgcGVyY29ycmVyIG8gZ3VpZGVcbiAgICBsZXQgY29udEd1aWRlOiBudW1iZXIgPSAwO1xuXG4gICAgLy8gU3RyaW5nIGZpbmFsIGZvcm1hdGFkYVxuICAgIGxldCB2YWx1ZVByb2Nlc3NlZDogc3RyaW5nID0gJyc7XG5cbiAgICAvLyBSZW1vdmUgZG8gdmFsb3IgdG9kb3Mgb3MgY2FyYWN0ZXJlcyBmaXhvcyBjb21vICgpLy0rXG4gICAgdmFsdWUgPSB0aGlzLnJlbW92ZUZvcm1hdHRpbmdWYWx1ZSh2YWx1ZSk7XG5cbiAgICAvLyBQZXJjb3JyZSB0b2RvIG8gdmFsb3IgZSBjb2xvY2EgYSBmb3JtYXRhw6fDo28gZGUgYWNvcmRvIGNvbSBhIG3DoXNjYXJhXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY2hhclZhbHVlID0gdmFsdWVbaV07XG5cbiAgICAgIC8vIFNlIG8gZ3VpZGUgYWNhYm91LCBzZXRhIGEgZm9ybWF0YcOnw6NvIGNvbW8gbsOjbyB0ZXJtaW5hZGEgcGFyYSBxdWUgbyBtw6l0b2RvIGNvbnRyb2xGb3JtYXR0aW5nXG4gICAgICAvLyB0ZW50ZSBmb3JtYXRhciBjb20gb3V0cmEgcG9zc8OtdmVsIG3DoXNjYXJhXG4gICAgICBpZiAoIWd1aWRlW2NvbnRHdWlkZV0pIHtcbiAgICAgICAgdGhpcy5mb3JtYXR0aW5nRW5kcyA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gUGVyY29ycmUgbyBHdWlkZSBlbnF1YW50byB0ZW0gY2FyYWN0ZXJlcyBmaXhvc1xuICAgICAgd2hpbGUgKHRoaXMuaXNGaXhlZENoYXJhY3Rlckd1aWRlKGd1aWRlW2NvbnRHdWlkZV0pICYmIGd1aWRlW2NvbnRHdWlkZV0pIHtcbiAgICAgICAgdmFsdWVQcm9jZXNzZWQgKz0gZ3VpZGVbY29udEd1aWRlXTtcbiAgICAgICAgY29udEd1aWRlKys7XG4gICAgICB9XG5cbiAgICAgIC8vIMOJIHVtIGNhcmFjdGVyIHbDoWxpZG8gZGUgYWNvcmRvIGNvbSBhIG3DoXNjYXJhXG4gICAgICBpZiAodGhpcy5pc0tleVZhbGlkTWFzayhjaGFyVmFsdWUsIG1hc2tbY29udEd1aWRlXSkpIHtcbiAgICAgICAgdmFsdWVQcm9jZXNzZWQgKz0gY2hhclZhbHVlO1xuICAgICAgICBjb250R3VpZGUrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNlIG7Do28gw6kgdW0gY2FyYWN0ZXIgdsOhbGlkbywgZGV2ZSBpbnRlcnJvbXBlci5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybWF0TW9kZWwpIHtcbiAgICAgIHRoaXMudmFsdWVUb0lucHV0ID0gdmFsdWVQcm9jZXNzZWQ7XG4gICAgICB0aGlzLnZhbHVlVG9Nb2RlbCA9IHZhbHVlUHJvY2Vzc2VkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlVG9JbnB1dCA9IHZhbHVlUHJvY2Vzc2VkO1xuICAgICAgdGhpcy52YWx1ZVRvTW9kZWwgPSB0aGlzLnJlbW92ZUZvcm1hdHRpbmdWYWx1ZSh2YWx1ZVByb2Nlc3NlZCk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZVByb2Nlc3NlZDtcbiAgfVxuICAvLyB2ZXJpZmljYSBzZSB0ZW0gYWxndW0gY2FyYWN0ZXIgZGUgbWFzY2FyYSBhbnRlcyBkbyBjdXJzb3JcbiAgY2hlY2tNYXNrQmVmb3JlKCRldmVudDogYW55LCBwb3NpdGlvbjogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuaXNGaXhlZENoYXJhY3Rlckd1aWRlKCRldmVudC50YXJnZXQudmFsdWUudG9TdHJpbmcoKS5jaGFyQXQodGhpcy5pbml0aWFsUG9zaXRpb24gLSAxKSkpIHtcbiAgICAgIHRoaXMuY2hhbmdlUG9zaXRpb24oJGV2ZW50LCBwb3NpdGlvbik7XG4gICAgICB0aGlzLmNoZWNrTWFza0JlZm9yZSgkZXZlbnQsIHBvc2l0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvLyB2ZXJpZmljYSBzZSB0ZW0gYWxndW0gY2FyYWN0ZXIgZGUgbWFzY2FyYSBkZXBvaXMgZG8gY3Vyc29yXG4gIGNoZWNrTWFza0FmdGVyKCRldmVudDogYW55LCBwb3NpdGlvbjogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuaXNGaXhlZENoYXJhY3Rlckd1aWRlKCRldmVudC50YXJnZXQudmFsdWUudG9TdHJpbmcoKS5jaGFyQXQodGhpcy5pbml0aWFsUG9zaXRpb24pKSkge1xuICAgICAgdGhpcy5jaGFuZ2VQb3NpdGlvbigkZXZlbnQsIHBvc2l0aW9uKTtcbiAgICAgIHRoaXMuY2hlY2tNYXNrQWZ0ZXIoJGV2ZW50LCBwb3NpdGlvbik7XG4gICAgfVxuICB9XG5cbiAgLy8gUmV0b3JuYSBhIG3DoXNjYXJhIHNlbSB1bSB2YWxvciBvcGNpb25hbFxuICByZXBsYWNlT3B0aW9uYWxOdW1iZXIobWFzazogc3RyaW5nKSB7XG4gICAgbGV0IGkgPSA5O1xuICAgIHdoaWxlIChpID49IDApIHtcbiAgICAgIGlmIChtYXNrLmluZGV4T2YoaSArICc/JykgPiAtMSkge1xuICAgICAgICByZXR1cm4gbWFzay5yZXBsYWNlKGkgKyAnPycsICcnKTtcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICB9XG4gICAgcmV0dXJuIG1hc2s7XG4gIH1cblxuICAvLyBWZXJpZmljYSBzZSBjb250w6ltIGNhcmFjdGVyZXMgcGVybWl0aWRvcyBzb21lbnRlIG5hIG3DoXNjYXJhIFxcLygpICstXG4gIGlzRml4ZWRDaGFyYWN0ZXJHdWlkZShrZXk6IGFueSkge1xuICAgIHJldHVybiB0aGlzLnRlc3RSZWdleChrZXksIHRoaXMuZ2V0Rml4ZWRDaGFyYWN0ZXJHdWlkZSgpKTtcbiAgfVxuXG4gIC8vIFJldG9ybmEgY2FyYWN0ZXJlcyBwZXJtaXRpZG9zIHNvbWVudGUgbmEgbcOhc2NhcmEgXFwvKCkgKy1cbiAgZ2V0Rml4ZWRDaGFyYWN0ZXJHdWlkZSgpIHtcbiAgICByZXR1cm4gL1tcXFxcXFwvKCkgKy0uXFw6XS9nO1xuICB9XG5cbiAgLy8gQ2FyYWN0ZXJlcyBwZXJtaXRpZG9zIGRlIHNlcmVtIGRpZ2l0YWRvc1xuICBsaXN0VmFsaWRLZXlzKCkge1xuICAgIHJldHVybiAvW2EtekEtWjAtOV0vZztcbiAgfVxuXG4gIC8vIFNlIMOpIHVtIGTDrWdpdG8gdsOhbGlkb1xuICBpc0tleVZhbGlkKGtleUNvZGU6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmlzS2V5Q29kZVZhbGlkKGtleUNvZGUpO1xuICB9XG5cbiAgLy8gVmVyaWZpY2Egc2UgYSB0ZWNsYSBkaWdpdGFkYSDDqSBwZXJtaXRpZGFcbiAgLy8gUGVybWl0ZSBhcGVuYXMgbsO6bWVyb3MsIGxldHJhcywgYmFja3NwYWNlIGUgZGVsXG4gIGlzS2V5Q29kZVZhbGlkKGtleUNvZGU6IG51bWJlcikge1xuICAgIHJldHVybiAoXG4gICAgICAoa2V5Q29kZSA+PSA0OCAmJiBrZXlDb2RlIDw9IDU3KSB8fFxuICAgICAgKGtleUNvZGUgPj0gNjUgJiYga2V5Q29kZSA8PSA5MCkgfHxcbiAgICAgIChrZXlDb2RlID49IDk2ICYmIGtleUNvZGUgPD0gMTA1KSB8fFxuICAgICAga2V5Q29kZSA9PT0gOCB8fFxuICAgICAga2V5Q29kZSA9PT0gOSB8fFxuICAgICAga2V5Q29kZSA9PT0gNDZcbiAgICApO1xuICB9XG5cbiAgLy8gU2UgZXN0w6EgZGUgYWNvcmRvIGNvbSBhIG3DoXNjYXJhXG4gIGlzS2V5VmFsaWRNYXNrKGtleTogYW55LCBrZXlNYXNrOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy50ZXN0UmVnZXgoa2V5LCB0aGlzLnJlcGxhY2VNYXNrKGtleU1hc2spKTtcbiAgfVxuXG4gIC8vIFJldG9ybmEgc2UgYSBjaGF2ZSBmb2kgYXByb3ZhZGEgcGVsYSBleHByZXNzw6NvIHJlZ3VsYXJcbiAgdGVzdFJlZ2V4KGtleTogYW55LCByZWdleDogYW55KSB7XG4gICAgcmV0dXJuIHJlZ2V4LnRlc3Qoa2V5KTtcbiAgfVxuXG4gIC8vIFJlbW92ZSBhIGZvcm1hdGFjw6NvIGRvIHZhbG9yXG4gIC8vIMOJIHBvc3PDrXZlbCBzZXIgbWVsaG9yYWRvIHBhcmEgcmVtb3ZlciBwb250dWFsbWVudGUgb3MgY2FyYWN0ZXJlcyBmaXhvcyBkZSBhY29yZG8gY29tIGEgbcOhc2NhcmFcbiAgcmVtb3ZlRm9ybWF0dGluZ1ZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSh0aGlzLmdldEZpeGVkQ2hhcmFjdGVyR3VpZGUoKSwgJycpO1xuICB9XG5cbiAgLy8gVmVyaWZpY2Egc2UgY29udMOpbSB2YWxvciBvcGNpb25hbCBuYSBtw6FzY2FyYSAwLTk/XG4gIGhhc09wdGlvbmFsTnVtYmVyKG1hc2s6IHN0cmluZykge1xuICAgIHJldHVybiBtYXNrLm1hdGNoKC9cXGRcXD8vZyk7XG4gIH1cblxuICAvLyBSZXRvcm5hIGEgZXhwcmVzc8OjbyByZWd1bGFyIGNvcnJlc3BvbmRlbnRlIGFvIGNvbWFuZG8gcGFzc2Fkb1xuICByZXBsYWNlTWFzayhjaGFyOiBzdHJpbmcpIHtcbiAgICBsZXQgcmVnZXggPSAvLi87XG4gICAgc3dpdGNoIChjaGFyKSB7XG4gICAgICBjYXNlICcwJzpcbiAgICAgICAgcmVnZXggPSAvWzBdLztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcxJzpcbiAgICAgICAgcmVnZXggPSAvWzAtMV0vO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzInOlxuICAgICAgICByZWdleCA9IC9bMC0yXS87XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnMyc6XG4gICAgICAgIHJlZ2V4ID0gL1swLTNdLztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICc0JzpcbiAgICAgICAgcmVnZXggPSAvWzAtNF0vO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzUnOlxuICAgICAgICByZWdleCA9IC9bMC01XS87XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnNic6XG4gICAgICAgIHJlZ2V4ID0gL1swLTZdLztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICc3JzpcbiAgICAgICAgcmVnZXggPSAvWzAtN10vO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzgnOlxuICAgICAgICByZWdleCA9IC9bMC04XS87XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnOSc6XG4gICAgICAgIHJlZ2V4ID0gL1swLTldLztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcgJzpcbiAgICAgICAgcmVnZXggPSAvXFxzLztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdAJzpcbiAgICAgICAgcmVnZXggPSAvW2EtekEtWl0vO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3cnOlxuICAgICAgICByZWdleCA9IC9bYS16QS1aMC05XS87XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVnZXg7XG4gIH1cblxuICBnZXRSZWdleEZyb21NYXNrKG1hc2s6IHN0cmluZykge1xuICAgIGlmIChtYXNrKSB7XG4gICAgICBsZXQgcGF0dGVybjtcbiAgICAgIGlmICh0aGlzLmZvcm1hdE1vZGVsKSB7XG4gICAgICAgIHBhdHRlcm4gPSBtYXNrLnJlcGxhY2UoL1xcXFwvZywgJ1xcXFxcXFxcJyk7XG4gICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UoL1xcKy9nLCAnXFxcXCsnKTtcbiAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZSgvXFwuL2csICdcXFxcLicpO1xuICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKC8tL2csICctJyk7XG4gICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UoL1xcKC9nLCAnXFxcXCgnKTtcbiAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZSgvXFwpL2csICdcXFxcKScpO1xuICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKC9cXC8vZywgJ1xcXFwvJyk7XG4gICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UoL1xccy9nLCAnXFxcXHMnKTtcbiAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZSgvOi9nLCAnXFxcXDonKTtcbiAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZSgvXFxAKD8hXFxzKS9nLCAnXFxcXHcnKTtcbiAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZSgvXFxkL2csICdcXFxcdycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGF0dGVybiA9IG1hc2sucmVwbGFjZSgvXFxcXC9nLCAnJyk7XG4gICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UoL1xcKy9nLCAnJyk7XG4gICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UoL1xcLi9nLCAnJyk7XG4gICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UoLy0vZywgJycpO1xuICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKC9cXCgvZywgJycpO1xuICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKC9cXCkvZywgJycpO1xuICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKC9cXC8vZywgJycpO1xuICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKC9cXHMvZywgJycpO1xuICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKC86L2csICcnKTtcbiAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZSgvXFxAL2csICdcXFxcdycpO1xuICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKC9cXGQvZywgJ1xcXFx3Jyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGF0dGVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG4iXX0=
1
+ /**
2
+ * Para usar o po-mask é preciso instanciar esta classe passando a máscara como
3
+ * primeiro parâmetro, e no segundo parâmetro, deve se informado true, caso queira
4
+ * que o model seja formatado ou false para o que o model seja limpo.
5
+ */
6
+ export class PoMask {
7
+ constructor(mask, formatModel) {
8
+ this.mask = '';
9
+ this.formatModel = false;
10
+ // controle de posição
11
+ this.initialPosition = 0;
12
+ this.finalPosition = 0;
13
+ this.pattern = '';
14
+ this.mask = mask;
15
+ this.formatModel = formatModel;
16
+ this.pattern = this.getRegexFromMask(mask);
17
+ }
18
+ get getPattern() {
19
+ return this.pattern;
20
+ }
21
+ get getValueToInput() {
22
+ return this.valueToInput;
23
+ }
24
+ set setValueToInput(value) {
25
+ this.valueToInput = value;
26
+ }
27
+ get getValueToModel() {
28
+ return this.valueToModel;
29
+ }
30
+ set setValueToModel(value) {
31
+ this.valueToModel = value;
32
+ }
33
+ keyup($event) {
34
+ if (this.mask) {
35
+ const value = $event.target.value;
36
+ // formata o valor quando for colado com control + v e reposiciona o cursor
37
+ if ($event.keyCode === 17 || $event.keyCode === 91) {
38
+ $event.target.value = this.controlFormatting(value);
39
+ this.resetPositions($event);
40
+ }
41
+ $event.preventDefault();
42
+ switch ($event.keyCode) {
43
+ case 37: // seta esquerda
44
+ if (this.initialPosition > 0) {
45
+ this.initialPosition--;
46
+ }
47
+ this.setPositionNotShiftKey($event);
48
+ this.setSelectionRange($event);
49
+ break;
50
+ case 39: // seta direita
51
+ if (this.initialPosition < value.toString().length) {
52
+ this.initialPosition++;
53
+ }
54
+ this.setPositionNotShiftKey($event);
55
+ this.setSelectionRange($event);
56
+ break;
57
+ case 35: // end
58
+ this.finalPosition = value.toString().length;
59
+ if ($event.shiftKey) {
60
+ this.setPositions($event);
61
+ }
62
+ else {
63
+ this.initialPosition = this.finalPosition;
64
+ this.setPositions($event);
65
+ }
66
+ break;
67
+ case 36: // HOME
68
+ if ($event.shiftKey) {
69
+ this.finalPosition = this.initialPosition;
70
+ this.initialPosition = 0;
71
+ this.setPositions($event);
72
+ }
73
+ else {
74
+ this.initialPosition = 0;
75
+ this.finalPosition = 0;
76
+ this.setPositions($event);
77
+ }
78
+ break;
79
+ }
80
+ }
81
+ }
82
+ setPositionNotShiftKey($event) {
83
+ if (!$event.shiftKey) {
84
+ this.finalPosition = this.initialPosition;
85
+ }
86
+ }
87
+ setSelectionRange($event) {
88
+ if (this.initialPosition > this.finalPosition) {
89
+ $event.target.setSelectionRange(this.finalPosition, this.initialPosition);
90
+ }
91
+ else {
92
+ $event.target.setSelectionRange(this.initialPosition, this.finalPosition);
93
+ }
94
+ }
95
+ keydown($event) {
96
+ if (this.mask) {
97
+ let value = $event.target.value;
98
+ if ($event.keyCode === 9) {
99
+ return;
100
+ }
101
+ if (!$event.ctrlKey && !$event.metaKey) {
102
+ $event.preventDefault();
103
+ }
104
+ // Não faz nada quando for digitado CTRL ou COMMAND e V
105
+ // Já está sendo tratado no evento keyup
106
+ if ($event.ctrlKey ||
107
+ ($event.metaKey && $event.keyCode !== 86) ||
108
+ ($event.keyCode >= 37 && $event.keyCode <= 40) ||
109
+ $event.keyCode === 16 ||
110
+ $event.keyCode === 9) {
111
+ return;
112
+ }
113
+ // Valida a tecla digitada
114
+ if (this.isKeyValid($event.keyCode)) {
115
+ if (this.finalPosition === null) {
116
+ this.finalPosition = this.initialPosition;
117
+ }
118
+ this.revertPositions(this.initialPosition, this.finalPosition);
119
+ switch ($event.keyCode) {
120
+ case 8: // backspace
121
+ this.getPosition($event);
122
+ if (this.initialPosition < 0) {
123
+ this.initialPosition = 0;
124
+ this.setPositions($event);
125
+ }
126
+ if (this.initialPosition === this.finalPosition) {
127
+ this.checkMaskBefore($event, -1);
128
+ if (this.initialPosition !== 0) {
129
+ value = value.slice(0, this.initialPosition - 1) + value.slice(this.finalPosition);
130
+ value = this.controlFormatting(value);
131
+ $event.target.value = value;
132
+ this.changePosition($event, -1);
133
+ this.checkMaskBefore($event, -1);
134
+ this.setPositions($event);
135
+ this.resetPositions($event);
136
+ }
137
+ }
138
+ else {
139
+ this.clearRangeSelection(value, $event, true);
140
+ }
141
+ this.setPositions($event);
142
+ break;
143
+ case 46: // delete
144
+ this.getPosition($event);
145
+ if (this.initialPosition === this.finalPosition) {
146
+ this.checkMaskAfter($event, 1);
147
+ value = value.slice(0, this.initialPosition) + value.slice(this.finalPosition + 1);
148
+ value = this.controlFormatting(value);
149
+ $event.target.value = value;
150
+ this.setPositions($event);
151
+ this.resetPositions($event);
152
+ }
153
+ else {
154
+ this.clearRangeSelection(value, $event, false);
155
+ }
156
+ this.setPositions($event);
157
+ break;
158
+ default:
159
+ // qualquer outra tecla válida
160
+ this.getPosition($event);
161
+ value = value.slice(0, this.initialPosition) + $event.key + value.slice(this.finalPosition);
162
+ value = this.controlFormatting(value);
163
+ $event.target.value = value;
164
+ this.changePosition($event, 1);
165
+ this.checkMaskBefore($event, 1);
166
+ this.setPositions($event);
167
+ this.resetPositions($event);
168
+ this.setPositions($event);
169
+ }
170
+ }
171
+ }
172
+ }
173
+ clearRangeSelection(value, $event, isBackspace) {
174
+ value = value.slice(0, this.initialPosition) + value.slice(this.finalPosition);
175
+ value = this.controlFormatting(value);
176
+ $event.target.value = value;
177
+ if (isBackspace) {
178
+ this.checkMaskBefore($event, -1);
179
+ }
180
+ this.setPositions($event);
181
+ this.resetPositions($event);
182
+ }
183
+ // passa a posição do click para o controle de posição
184
+ click($event) {
185
+ this.initialPosition = $event.target.selectionStart;
186
+ this.finalPosition = $event.target.selectionEnd;
187
+ }
188
+ blur($event) {
189
+ // Se houver algum valor definido na máscara
190
+ if (this.mask) {
191
+ // pega o valor do campo, formata e passa para o model
192
+ let value = $event.target.value;
193
+ value = this.controlFormatting(value);
194
+ $event.target.value = value;
195
+ }
196
+ }
197
+ revertPositions(initialPosition, finalPosition) {
198
+ if (initialPosition > finalPosition) {
199
+ // inverte o controle de posição caso o inicial esteja maior que o final
200
+ const tempPosition = initialPosition;
201
+ this.initialPosition = finalPosition;
202
+ this.finalPosition = tempPosition;
203
+ }
204
+ }
205
+ // reseta o controle de posição
206
+ resetPositions($event) {
207
+ this.initialPosition = $event.target.selectionStart;
208
+ this.finalPosition = this.initialPosition;
209
+ }
210
+ // posiciona o cursor de acordo com o controle de posição
211
+ setPositions($event) {
212
+ $event.target.setSelectionRange(this.initialPosition, this.finalPosition);
213
+ }
214
+ // muda a posição do cursor e atualiza o controle de posição
215
+ changePosition($event, value) {
216
+ this.initialPosition = this.initialPosition + value;
217
+ this.finalPosition = this.finalPosition + value;
218
+ this.setPositions($event);
219
+ }
220
+ getPosition($event) {
221
+ this.initialPosition = $event.target.selectionStart;
222
+ this.finalPosition = $event.target.selectionEnd;
223
+ this.setPositions($event);
224
+ }
225
+ // Método responsável por controlar a formatação e aplicar todas as máscara possíveis
226
+ // quando houver valores opcionais (?)
227
+ controlFormatting(value) {
228
+ // Se o valor for vazio, retorna vazio
229
+ if (!value) {
230
+ this.valueToInput = '';
231
+ this.valueToModel = '';
232
+ return '';
233
+ }
234
+ let valueProcessed;
235
+ let maskTmp = this.mask;
236
+ // Array que será usado para armazenar todas as máscaras possíveis para
237
+ // quando houver um valor opcional (?)
238
+ const arrMasks = [];
239
+ let contMasks = 0;
240
+ // Enquanto houver algum 9? na máscara
241
+ while (this.hasOptionalNumber(maskTmp)) {
242
+ arrMasks.push(maskTmp);
243
+ maskTmp = this.replaceOptionalNumber(maskTmp);
244
+ }
245
+ arrMasks.push(maskTmp);
246
+ // Inverte o array
247
+ arrMasks.reverse();
248
+ // Informa que a formatação ainda não chegou ao fim
249
+ this.formattingEnds = false;
250
+ while (!this.formattingEnds) {
251
+ // Seta a formatação como terminada
252
+ // Então o método formatValue irá setar como não terminado caso haja
253
+ this.formattingEnds = true;
254
+ // Se não existe mais nenhuma máscara possível, então encerra a formatação
255
+ if (!arrMasks[contMasks]) {
256
+ break;
257
+ }
258
+ // Chama a formatação passando a máscara e o valor
259
+ valueProcessed = this.formatValue(value, arrMasks[contMasks]);
260
+ contMasks++;
261
+ }
262
+ return valueProcessed;
263
+ }
264
+ // Função que formata a máscara com o valor passado
265
+ formatValue(value, mask) {
266
+ // Remove as marcas de valor opciona (?)
267
+ mask = mask.replace(/\?/g, '');
268
+ // Substitui todos os caracteres que não são fixos da máscara por _
269
+ const guide = mask.replace(this.listValidKeys(), '_');
270
+ // Contador usado para percorrer o guide
271
+ let contGuide = 0;
272
+ // String final formatada
273
+ let valueProcessed = '';
274
+ // Remove do valor todos os caracteres fixos como ()/-+
275
+ value = this.removeFormattingValue(value);
276
+ // Percorre todo o valor e coloca a formatação de acordo com a máscara
277
+ for (let i = 0; i < value.length; i++) {
278
+ const charValue = value[i];
279
+ // Se o guide acabou, seta a formatação como não terminada para que o método controlFormatting
280
+ // tente formatar com outra possível máscara
281
+ if (!guide[contGuide]) {
282
+ this.formattingEnds = false;
283
+ break;
284
+ }
285
+ // Percorre o Guide enquanto tem caracteres fixos
286
+ while (this.isFixedCharacterGuide(guide[contGuide]) && guide[contGuide]) {
287
+ valueProcessed += guide[contGuide];
288
+ contGuide++;
289
+ }
290
+ // É um caracter válido de acordo com a máscara
291
+ if (this.isKeyValidMask(charValue, mask[contGuide])) {
292
+ valueProcessed += charValue;
293
+ contGuide++;
294
+ }
295
+ else {
296
+ // Se não é um caracter válido, deve interromper.
297
+ break;
298
+ }
299
+ }
300
+ if (this.formatModel) {
301
+ this.valueToInput = valueProcessed;
302
+ this.valueToModel = valueProcessed;
303
+ }
304
+ else {
305
+ this.valueToInput = valueProcessed;
306
+ this.valueToModel = this.removeFormattingValue(valueProcessed);
307
+ }
308
+ return valueProcessed;
309
+ }
310
+ // verifica se tem algum caracter de mascara antes do cursor
311
+ checkMaskBefore($event, position) {
312
+ if (this.isFixedCharacterGuide($event.target.value.toString().charAt(this.initialPosition - 1))) {
313
+ this.changePosition($event, position);
314
+ this.checkMaskBefore($event, position);
315
+ }
316
+ }
317
+ // verifica se tem algum caracter de mascara depois do cursor
318
+ checkMaskAfter($event, position) {
319
+ if (this.isFixedCharacterGuide($event.target.value.toString().charAt(this.initialPosition))) {
320
+ this.changePosition($event, position);
321
+ this.checkMaskAfter($event, position);
322
+ }
323
+ }
324
+ // Retorna a máscara sem um valor opcional
325
+ replaceOptionalNumber(mask) {
326
+ let i = 9;
327
+ while (i >= 0) {
328
+ if (mask.indexOf(i + '?') > -1) {
329
+ return mask.replace(i + '?', '');
330
+ }
331
+ i--;
332
+ }
333
+ return mask;
334
+ }
335
+ // Verifica se contém caracteres permitidos somente na máscara \/() +-
336
+ isFixedCharacterGuide(key) {
337
+ return this.testRegex(key, this.getFixedCharacterGuide());
338
+ }
339
+ // Retorna caracteres permitidos somente na máscara \/() +-
340
+ getFixedCharacterGuide() {
341
+ return /[\\\/() +-.\:]/g;
342
+ }
343
+ // Caracteres permitidos de serem digitados
344
+ listValidKeys() {
345
+ return /[a-zA-Z0-9]/g;
346
+ }
347
+ // Se é um dígito válido
348
+ isKeyValid(keyCode) {
349
+ return this.isKeyCodeValid(keyCode);
350
+ }
351
+ // Verifica se a tecla digitada é permitida
352
+ // Permite apenas números, letras, backspace e del
353
+ isKeyCodeValid(keyCode) {
354
+ return ((keyCode >= 48 && keyCode <= 57) ||
355
+ (keyCode >= 65 && keyCode <= 90) ||
356
+ (keyCode >= 96 && keyCode <= 105) ||
357
+ keyCode === 8 ||
358
+ keyCode === 9 ||
359
+ keyCode === 46);
360
+ }
361
+ // Se está de acordo com a máscara
362
+ isKeyValidMask(key, keyMask) {
363
+ return this.testRegex(key, this.replaceMask(keyMask));
364
+ }
365
+ // Retorna se a chave foi aprovada pela expressão regular
366
+ testRegex(key, regex) {
367
+ return regex.test(key);
368
+ }
369
+ // Remove a formatacão do valor
370
+ // É possível ser melhorado para remover pontualmente os caracteres fixos de acordo com a máscara
371
+ removeFormattingValue(value) {
372
+ return value.replace(this.getFixedCharacterGuide(), '');
373
+ }
374
+ // Verifica se contém valor opcional na máscara 0-9?
375
+ hasOptionalNumber(mask) {
376
+ return mask.match(/\d\?/g);
377
+ }
378
+ // Retorna a expressão regular correspondente ao comando passado
379
+ replaceMask(char) {
380
+ let regex = /./;
381
+ switch (char) {
382
+ case '0':
383
+ regex = /[0]/;
384
+ break;
385
+ case '1':
386
+ regex = /[0-1]/;
387
+ break;
388
+ case '2':
389
+ regex = /[0-2]/;
390
+ break;
391
+ case '3':
392
+ regex = /[0-3]/;
393
+ break;
394
+ case '4':
395
+ regex = /[0-4]/;
396
+ break;
397
+ case '5':
398
+ regex = /[0-5]/;
399
+ break;
400
+ case '6':
401
+ regex = /[0-6]/;
402
+ break;
403
+ case '7':
404
+ regex = /[0-7]/;
405
+ break;
406
+ case '8':
407
+ regex = /[0-8]/;
408
+ break;
409
+ case '9':
410
+ regex = /[0-9]/;
411
+ break;
412
+ case ' ':
413
+ regex = /\s/;
414
+ break;
415
+ case '@':
416
+ regex = /[a-zA-Z]/;
417
+ break;
418
+ case 'w':
419
+ regex = /[a-zA-Z0-9]/;
420
+ break;
421
+ }
422
+ return regex;
423
+ }
424
+ getRegexFromMask(mask) {
425
+ if (mask) {
426
+ let pattern;
427
+ if (this.formatModel) {
428
+ pattern = mask.replace(/\\/g, '\\\\');
429
+ pattern = pattern.replace(/\+/g, '\\+');
430
+ pattern = pattern.replace(/\./g, '\\.');
431
+ pattern = pattern.replace(/-/g, '-');
432
+ pattern = pattern.replace(/\(/g, '\\(');
433
+ pattern = pattern.replace(/\)/g, '\\)');
434
+ pattern = pattern.replace(/\//g, '\\/');
435
+ pattern = pattern.replace(/\s/g, '\\s');
436
+ pattern = pattern.replace(/:/g, '\\:');
437
+ pattern = pattern.replace(/\@(?!\s)/g, '\\w');
438
+ pattern = pattern.replace(/\d/g, '\\w');
439
+ }
440
+ else {
441
+ pattern = mask.replace(/\\/g, '');
442
+ pattern = pattern.replace(/\+/g, '');
443
+ pattern = pattern.replace(/\./g, '');
444
+ pattern = pattern.replace(/-/g, '');
445
+ pattern = pattern.replace(/\(/g, '');
446
+ pattern = pattern.replace(/\)/g, '');
447
+ pattern = pattern.replace(/\//g, '');
448
+ pattern = pattern.replace(/\s/g, '');
449
+ pattern = pattern.replace(/:/g, '');
450
+ pattern = pattern.replace(/\@/g, '\\w');
451
+ pattern = pattern.replace(/\d/g, '\\w');
452
+ }
453
+ return pattern;
454
+ }
455
+ else {
456
+ return null;
457
+ }
458
+ }
459
+ }
460
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbWFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1pbnB1dC9wby1tYXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sTUFBTTtJQThCakIsWUFBWSxJQUFZLEVBQUUsV0FBb0I7UUE3QjlDLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDbEIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0Isc0JBQXNCO1FBQ3RCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBQzVCLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRTFCLFlBQU8sR0FBVyxFQUFFLENBQUM7UUF3Qm5CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUExQkQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFHRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFJLGVBQWUsQ0FBQyxLQUFhO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFHRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFJLGVBQWUsQ0FBQyxLQUFhO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFVRCxLQUFLLENBQUMsTUFBVztRQUNmLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLE1BQU0sS0FB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Q0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN4QyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDekM7WUFDRCxPQUFPLE9BQU8sQ0FBQztTQUNoQjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBQYXJhIHVzYXIgbyBwby1tYXNrIMOpIHByZWNpc28gaW5zdGFuY2lhciBlc3RhIGNsYXNzZSBwYXNzYW5kbyBhIG3DoXNjYXJhIGNvbW9cclxuICogcHJpbWVpcm8gcGFyw6JtZXRybywgZSBubyBzZWd1bmRvIHBhcsOibWV0cm8sIGRldmUgc2UgaW5mb3JtYWRvIHRydWUsIGNhc28gcXVlaXJhXHJcbiAqIHF1ZSBvIG1vZGVsIHNlamEgZm9ybWF0YWRvIG91IGZhbHNlIHBhcmEgbyBxdWUgbyBtb2RlbCBzZWphIGxpbXBvLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFBvTWFzayB7XHJcbiAgbWFzazogc3RyaW5nID0gJyc7XHJcbiAgZm9ybWF0TW9kZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvLyBjb250cm9sZSBkZSBwb3Npw6fDo29cclxuICBpbml0aWFsUG9zaXRpb246IG51bWJlciA9IDA7XHJcbiAgZmluYWxQb3NpdGlvbjogbnVtYmVyID0gMDtcclxuXHJcbiAgcGF0dGVybjogc3RyaW5nID0gJyc7XHJcbiAgZ2V0IGdldFBhdHRlcm4oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnBhdHRlcm47XHJcbiAgfVxyXG5cclxuICB2YWx1ZVRvSW5wdXQ6IHN0cmluZztcclxuICBnZXQgZ2V0VmFsdWVUb0lucHV0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy52YWx1ZVRvSW5wdXQ7XHJcbiAgfVxyXG4gIHNldCBzZXRWYWx1ZVRvSW5wdXQodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy52YWx1ZVRvSW5wdXQgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHZhbHVlVG9Nb2RlbDogc3RyaW5nO1xyXG4gIGdldCBnZXRWYWx1ZVRvTW9kZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnZhbHVlVG9Nb2RlbDtcclxuICB9XHJcbiAgc2V0IHNldFZhbHVlVG9Nb2RlbCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnZhbHVlVG9Nb2RlbCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0dGluZ0VuZHM6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKG1hc2s6IHN0cmluZywgZm9ybWF0TW9kZWw6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMubWFzayA9IG1hc2s7XHJcbiAgICB0aGlzLmZvcm1hdE1vZGVsID0gZm9ybWF0TW9kZWw7XHJcbiAgICB0aGlzLnBhdHRlcm4gPSB0aGlzLmdldFJlZ2V4RnJvbU1hc2sobWFzayk7XHJcbiAgfVxyXG5cclxuICBrZXl1cCgkZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMubWFzaykge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9ICRldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICAgIC8vIGZvcm1hdGEgbyB2YWxvciBxdWFuZG8gZm9yIGNvbGFkbyBjb20gY29udHJvbCArIHYgZSByZXBvc2ljaW9uYSBvIGN1cnNvclxyXG4gICAgICBpZiAoJGV2ZW50LmtleUNvZGUgPT09IDE3IHx8ICRldmVudC5rZXlDb2RlID09PSA5MSkge1xyXG4gICAgICAgICRldmVudC50YXJnZXQudmFsdWUgPSB0aGlzLmNvbnRyb2xGb3JtYXR0aW5nKHZhbHVlKTtcclxuICAgICAgICB0aGlzLnJlc2V0UG9zaXRpb25zKCRldmVudCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgICAgc3dpdGNoICgkZXZlbnQua2V5Q29kZSkge1xyXG4gICAgICAgIGNhc2UgMzc6IC8vIHNldGEgZXNxdWVyZGFcclxuICAgICAgICAgIGlmICh0aGlzLmluaXRpYWxQb3NpdGlvbiA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5pbml0aWFsUG9zaXRpb24tLTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb25Ob3RTaGlmdEtleSgkZXZlbnQpO1xyXG4gICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb25SYW5nZSgkZXZlbnQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgMzk6IC8vIHNldGEgZGlyZWl0YVxyXG4gICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbFBvc2l0aW9uIDwgdmFsdWUudG9TdHJpbmcoKS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5pbml0aWFsUG9zaXRpb24rKztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb25Ob3RTaGlmdEtleSgkZXZlbnQpO1xyXG4gICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb25SYW5nZSgkZXZlbnQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgMzU6IC8vIGVuZFxyXG4gICAgICAgICAgdGhpcy5maW5hbFBvc2l0aW9uID0gdmFsdWUudG9TdHJpbmcoKS5sZW5ndGg7XHJcbiAgICAgICAgICBpZiAoJGV2ZW50LnNoaWZ0S2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb25zKCRldmVudCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxQb3NpdGlvbiA9IHRoaXMuZmluYWxQb3NpdGlvbjtcclxuICAgICAgICAgICAgdGhpcy5zZXRQb3NpdGlvbnMoJGV2ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIDM2OiAvLyBIT01FXHJcbiAgICAgICAgICBpZiAoJGV2ZW50LnNoaWZ0S2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmluYWxQb3NpdGlvbiA9IHRoaXMuaW5pdGlhbFBvc2l0aW9uO1xyXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxQb3NpdGlvbiA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb25zKCRldmVudCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxQb3NpdGlvbiA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuZmluYWxQb3NpdGlvbiA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb25zKCRldmVudCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UG9zaXRpb25Ob3RTaGlmdEtleSgkZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKCEkZXZlbnQuc2hpZnRLZXkpIHtcclxuICAgICAgdGhpcy5maW5hbFBvc2l0aW9uID0gdGhpcy5pbml0aWFsUG9zaXRpb247XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3Rpb25SYW5nZSgkZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuaW5pdGlhbFBvc2l0aW9uID4gdGhpcy5maW5hbFBvc2l0aW9uKSB7XHJcbiAgICAgICRldmVudC50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UodGhpcy5maW5hbFBvc2l0aW9uLCB0aGlzLmluaXRpYWxQb3NpdGlvbik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAkZXZlbnQudGFyZ2V0LnNldFNlbGVjdGlvblJhbmdlKHRoaXMuaW5pdGlhbFBvc2l0aW9uLCB0aGlzLmZpbmFsUG9zaXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAga2V5ZG93bigkZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMubWFzaykge1xyXG4gICAgICBsZXQgdmFsdWU6IHN0cmluZyA9ICRldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICAgIGlmICgkZXZlbnQua2V5Q29kZSA9PT0gOSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCEkZXZlbnQuY3RybEtleSAmJiAhJGV2ZW50Lm1ldGFLZXkpIHtcclxuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gTsOjbyBmYXogbmFkYSBxdWFuZG8gZm9yIGRpZ2l0YWRvIENUUkwgb3UgQ09NTUFORCBlIFZcclxuICAgICAgLy8gSsOhIGVzdMOhIHNlbmRvIHRyYXRhZG8gbm8gZXZlbnRvIGtleXVwXHJcbiAgICAgIGlmIChcclxuICAgICAgICAkZXZlbnQuY3RybEtleSB8fFxyXG4gICAgICAgICgkZXZlbnQubWV0YUtleSAmJiAkZXZlbnQua2V5Q29kZSAhPT0gODYpIHx8XHJcbiAgICAgICAgKCRldmVudC5rZXlDb2RlID49IDM3ICYmICRldmVudC5rZXlDb2RlIDw9IDQwKSB8fFxyXG4gICAgICAgICRldmVudC5rZXlDb2RlID09PSAxNiB8fFxyXG4gICAgICAgICRldmVudC5rZXlDb2RlID09PSA5XHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gVmFsaWRhIGEgdGVjbGEgZGlnaXRhZGFcclxuICAgICAgaWYgKHRoaXMuaXNLZXlWYWxpZCgkZXZlbnQua2V5Q29kZSkpIHtcclxuICAgICAgICBpZiAodGhpcy5maW5hbFBvc2l0aW9uID09PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbmFsUG9zaXRpb24gPSB0aGlzLmluaXRpYWxQb3NpdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yZXZlcnRQb3NpdGlvbnModGhpcy5pbml0aWFsUG9zaXRpb24sIHRoaXMuZmluYWxQb3NpdGlvbik7XHJcblxyXG4gICAgICAgIHN3aXRjaCAoJGV2ZW50LmtleUNvZGUpIHtcclxuICAgICAgICAgIGNhc2UgODogLy8gYmFja3NwYWNlXHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UG9zaXRpb24oJGV2ZW50KTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbFBvc2l0aW9uIDwgMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaW5pdGlhbFBvc2l0aW9uID0gMDtcclxuICAgICAgICAgICAgICB0aGlzLnNldFBvc2l0aW9ucygkZXZlbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmluaXRpYWxQb3NpdGlvbiA9PT0gdGhpcy5maW5hbFBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGVja01hc2tCZWZvcmUoJGV2ZW50LCAtMSk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbFBvc2l0aW9uICE9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIHRoaXMuaW5pdGlhbFBvc2l0aW9uIC0gMSkgKyB2YWx1ZS5zbGljZSh0aGlzLmZpbmFsUG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmNvbnRyb2xGb3JtYXR0aW5nKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICRldmVudC50YXJnZXQudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlUG9zaXRpb24oJGV2ZW50LCAtMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrTWFza0JlZm9yZSgkZXZlbnQsIC0xKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb25zKCRldmVudCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0UG9zaXRpb25zKCRldmVudCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY2xlYXJSYW5nZVNlbGVjdGlvbih2YWx1ZSwgJGV2ZW50LCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNldFBvc2l0aW9ucygkZXZlbnQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIDQ2OiAvLyBkZWxldGVcclxuICAgICAgICAgICAgdGhpcy5nZXRQb3NpdGlvbigkZXZlbnQpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pbml0aWFsUG9zaXRpb24gPT09IHRoaXMuZmluYWxQb3NpdGlvbikge1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tNYXNrQWZ0ZXIoJGV2ZW50LCAxKTtcclxuICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDAsIHRoaXMuaW5pdGlhbFBvc2l0aW9uKSArIHZhbHVlLnNsaWNlKHRoaXMuZmluYWxQb3NpdGlvbiArIDEpO1xyXG4gICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5jb250cm9sRm9ybWF0dGluZyh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgJGV2ZW50LnRhcmdldC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb25zKCRldmVudCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5yZXNldFBvc2l0aW9ucygkZXZlbnQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuY2xlYXJSYW5nZVNlbGVjdGlvbih2YWx1ZSwgJGV2ZW50LCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZXRQb3NpdGlvbnMoJGV2ZW50KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgLy8gcXVhbHF1ZXIgb3V0cmEgdGVjbGEgdsOhbGlkYVxyXG4gICAgICAgICAgICB0aGlzLmdldFBvc2l0aW9uKCRldmVudCk7XHJcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMCwgdGhpcy5pbml0aWFsUG9zaXRpb24pICsgJGV2ZW50LmtleSArIHZhbHVlLnNsaWNlKHRoaXMuZmluYWxQb3NpdGlvbik7XHJcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy5jb250cm9sRm9ybWF0dGluZyh2YWx1ZSk7XHJcbiAgICAgICAgICAgICRldmVudC50YXJnZXQudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VQb3NpdGlvbigkZXZlbnQsIDEpO1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrTWFza0JlZm9yZSgkZXZlbnQsIDEpO1xyXG4gICAgICAgICAgICB0aGlzLnNldFBvc2l0aW9ucygkZXZlbnQpO1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0UG9zaXRpb25zKCRldmVudCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb25zKCRldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhclJhbmdlU2VsZWN0aW9uKHZhbHVlOiBzdHJpbmcsICRldmVudDogYW55LCBpc0JhY2tzcGFjZTogYm9vbGVhbikge1xyXG4gICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgwLCB0aGlzLmluaXRpYWxQb3NpdGlvbikgKyB2YWx1ZS5zbGljZSh0aGlzLmZpbmFsUG9zaXRpb24pO1xyXG4gICAgdmFsdWUgPSB0aGlzLmNvbnRyb2xGb3JtYXR0aW5nKHZhbHVlKTtcclxuICAgICRldmVudC50YXJnZXQudmFsdWUgPSB2YWx1ZTtcclxuXHJcbiAgICBpZiAoaXNCYWNrc3BhY2UpIHtcclxuICAgICAgdGhpcy5jaGVja01hc2tCZWZvcmUoJGV2ZW50LCAtMSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRQb3NpdGlvbnMoJGV2ZW50KTtcclxuICAgIHRoaXMucmVzZXRQb3NpdGlvbnMoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIC8vIHBhc3NhIGEgcG9zacOnw6NvIGRvIGNsaWNrIHBhcmEgbyBjb250cm9sZSBkZSBwb3Npw6fDo29cclxuICBjbGljaygkZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5pbml0aWFsUG9zaXRpb24gPSAkZXZlbnQudGFyZ2V0LnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgdGhpcy5maW5hbFBvc2l0aW9uID0gJGV2ZW50LnRhcmdldC5zZWxlY3Rpb25FbmQ7XHJcbiAgfVxyXG5cclxuICBibHVyKCRldmVudDogYW55KSB7XHJcbiAgICAvLyBTZSBob3V2ZXIgYWxndW0gdmFsb3IgZGVmaW5pZG8gbmEgbcOhc2NhcmFcclxuICAgIGlmICh0aGlzLm1hc2spIHtcclxuICAgICAgLy8gcGVnYSBvIHZhbG9yIGRvIGNhbXBvLCBmb3JtYXRhIGUgcGFzc2EgcGFyYSBvIG1vZGVsXHJcbiAgICAgIGxldCB2YWx1ZSA9ICRldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICAgIHZhbHVlID0gdGhpcy5jb250cm9sRm9ybWF0dGluZyh2YWx1ZSk7XHJcbiAgICAgICRldmVudC50YXJnZXQudmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldmVydFBvc2l0aW9ucyhpbml0aWFsUG9zaXRpb246IG51bWJlciwgZmluYWxQb3NpdGlvbjogbnVtYmVyKSB7XHJcbiAgICBpZiAoaW5pdGlhbFBvc2l0aW9uID4gZmluYWxQb3NpdGlvbikge1xyXG4gICAgICAvLyBpbnZlcnRlIG8gY29udHJvbGUgZGUgcG9zacOnw6NvIGNhc28gbyBpbmljaWFsIGVzdGVqYSBtYWlvciBxdWUgbyBmaW5hbFxyXG4gICAgICBjb25zdCB0ZW1wUG9zaXRpb24gPSBpbml0aWFsUG9zaXRpb247XHJcbiAgICAgIHRoaXMuaW5pdGlhbFBvc2l0aW9uID0gZmluYWxQb3NpdGlvbjtcclxuICAgICAgdGhpcy5maW5hbFBvc2l0aW9uID0gdGVtcFBvc2l0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gcmVzZXRhIG8gY29udHJvbGUgZGUgcG9zacOnw6NvXHJcbiAgcmVzZXRQb3NpdGlvbnMoJGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuaW5pdGlhbFBvc2l0aW9uID0gJGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydDtcclxuICAgIHRoaXMuZmluYWxQb3NpdGlvbiA9IHRoaXMuaW5pdGlhbFBvc2l0aW9uO1xyXG4gIH1cclxuXHJcbiAgLy8gcG9zaWNpb25hIG8gY3Vyc29yIGRlIGFjb3JkbyBjb20gbyBjb250cm9sZSBkZSBwb3Npw6fDo29cclxuICBzZXRQb3NpdGlvbnMoJGV2ZW50OiBhbnkpIHtcclxuICAgICRldmVudC50YXJnZXQuc2V0U2VsZWN0aW9uUmFuZ2UodGhpcy5pbml0aWFsUG9zaXRpb24sIHRoaXMuZmluYWxQb3NpdGlvbik7XHJcbiAgfVxyXG5cclxuICAvLyBtdWRhIGEgcG9zacOnw6NvIGRvIGN1cnNvciBlIGF0dWFsaXphIG8gY29udHJvbGUgZGUgcG9zacOnw6NvXHJcbiAgY2hhbmdlUG9zaXRpb24oJGV2ZW50OiBhbnksIHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuaW5pdGlhbFBvc2l0aW9uID0gdGhpcy5pbml0aWFsUG9zaXRpb24gKyB2YWx1ZTtcclxuICAgIHRoaXMuZmluYWxQb3NpdGlvbiA9IHRoaXMuZmluYWxQb3NpdGlvbiArIHZhbHVlO1xyXG4gICAgdGhpcy5zZXRQb3NpdGlvbnMoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGdldFBvc2l0aW9uKCRldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmluaXRpYWxQb3NpdGlvbiA9ICRldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICB0aGlzLmZpbmFsUG9zaXRpb24gPSAkZXZlbnQudGFyZ2V0LnNlbGVjdGlvbkVuZDtcclxuICAgIHRoaXMuc2V0UG9zaXRpb25zKCRldmVudCk7XHJcbiAgfVxyXG5cclxuICAvLyBNw6l0b2RvIHJlc3BvbnPDoXZlbCBwb3IgY29udHJvbGFyIGEgZm9ybWF0YcOnw6NvIGUgYXBsaWNhciB0b2RhcyBhcyBtw6FzY2FyYSBwb3Nzw612ZWlzXHJcbiAgLy8gcXVhbmRvIGhvdXZlciB2YWxvcmVzIG9wY2lvbmFpcyAoPylcclxuICBjb250cm9sRm9ybWF0dGluZyh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAvLyBTZSBvIHZhbG9yIGZvciB2YXppbywgcmV0b3JuYSB2YXppb1xyXG4gICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICB0aGlzLnZhbHVlVG9JbnB1dCA9ICcnO1xyXG4gICAgICB0aGlzLnZhbHVlVG9Nb2RlbCA9ICcnO1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBsZXQgdmFsdWVQcm9jZXNzZWQ7XHJcbiAgICBsZXQgbWFza1RtcCA9IHRoaXMubWFzaztcclxuXHJcbiAgICAvLyBBcnJheSBxdWUgc2Vyw6EgdXNhZG8gcGFyYSBhcm1hemVuYXIgdG9kYXMgYXMgbcOhc2NhcmFzIHBvc3PDrXZlaXMgcGFyYVxyXG4gICAgLy8gcXVhbmRvIGhvdXZlciB1bSB2YWxvciBvcGNpb25hbCAoPylcclxuICAgIGNvbnN0IGFyck1hc2tzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgICBsZXQgY29udE1hc2tzID0gMDtcclxuXHJcbiAgICAvLyBFbnF1YW50byBob3V2ZXIgYWxndW0gOT8gbmEgbcOhc2NhcmFcclxuICAgIHdoaWxlICh0aGlzLmhhc09wdGlvbmFsTnVtYmVyKG1hc2tUbXApKSB7XHJcbiAgICAgIGFyck1hc2tzLnB1c2gobWFza1RtcCk7XHJcbiAgICAgIG1hc2tUbXAgPSB0aGlzLnJlcGxhY2VPcHRpb25hbE51bWJlcihtYXNrVG1wKTtcclxuICAgIH1cclxuICAgIGFyck1hc2tzLnB1c2gobWFza1RtcCk7XHJcblxyXG4gICAgLy8gSW52ZXJ0ZSBvIGFycmF5XHJcbiAgICBhcnJNYXNrcy5yZXZlcnNlKCk7XHJcblxyXG4gICAgLy8gSW5mb3JtYSBxdWUgYSBmb3JtYXRhw6fDo28gYWluZGEgbsOjbyBjaGVnb3UgYW8gZmltXHJcbiAgICB0aGlzLmZvcm1hdHRpbmdFbmRzID0gZmFsc2U7XHJcblxyXG4gICAgd2hpbGUgKCF0aGlzLmZvcm1hdHRpbmdFbmRzKSB7XHJcbiAgICAgIC8vIFNldGEgYSBmb3JtYXRhw6fDo28gY29tbyB0ZXJtaW5hZGFcclxuICAgICAgLy8gRW50w6NvIG8gbcOpdG9kbyBmb3JtYXRWYWx1ZSBpcsOhIHNldGFyIGNvbW8gbsOjbyB0ZXJtaW5hZG8gY2FzbyBoYWphXHJcbiAgICAgIHRoaXMuZm9ybWF0dGluZ0VuZHMgPSB0cnVlO1xyXG5cclxuICAgICAgLy8gU2UgbsOjbyBleGlzdGUgbWFpcyBuZW5odW1hIG3DoXNjYXJhIHBvc3PDrXZlbCwgZW50w6NvIGVuY2VycmEgYSBmb3JtYXRhw6fDo29cclxuICAgICAgaWYgKCFhcnJNYXNrc1tjb250TWFza3NdKSB7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIENoYW1hIGEgZm9ybWF0YcOnw6NvIHBhc3NhbmRvIGEgbcOhc2NhcmEgZSBvIHZhbG9yXHJcbiAgICAgIHZhbHVlUHJvY2Vzc2VkID0gdGhpcy5mb3JtYXRWYWx1ZSh2YWx1ZSwgYXJyTWFza3NbY29udE1hc2tzXSk7XHJcbiAgICAgIGNvbnRNYXNrcysrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB2YWx1ZVByb2Nlc3NlZDtcclxuICB9XHJcblxyXG4gIC8vIEZ1bsOnw6NvIHF1ZSBmb3JtYXRhIGEgbcOhc2NhcmEgY29tIG8gdmFsb3IgcGFzc2Fkb1xyXG4gIGZvcm1hdFZhbHVlKHZhbHVlOiBzdHJpbmcsIG1hc2s6IHN0cmluZykge1xyXG4gICAgLy8gUmVtb3ZlIGFzIG1hcmNhcyBkZSB2YWxvciBvcGNpb25hICg/KVxyXG4gICAgbWFzayA9IG1hc2sucmVwbGFjZSgvXFw/L2csICcnKTtcclxuXHJcbiAgICAvLyBTdWJzdGl0dWkgdG9kb3Mgb3MgY2FyYWN0ZXJlcyBxdWUgbsOjbyBzw6NvIGZpeG9zIGRhIG3DoXNjYXJhIHBvciBfXHJcbiAgICBjb25zdCBndWlkZSA9IG1hc2sucmVwbGFjZSh0aGlzLmxpc3RWYWxpZEtleXMoKSwgJ18nKTtcclxuXHJcbiAgICAvLyBDb250YWRvciB1c2FkbyBwYXJhIHBlcmNvcnJlciBvIGd1aWRlXHJcbiAgICBsZXQgY29udEd1aWRlOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8vIFN0cmluZyBmaW5hbCBmb3JtYXRhZGFcclxuICAgIGxldCB2YWx1ZVByb2Nlc3NlZDogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgLy8gUmVtb3ZlIGRvIHZhbG9yIHRvZG9zIG9zIGNhcmFjdGVyZXMgZml4b3MgY29tbyAoKS8tK1xyXG4gICAgdmFsdWUgPSB0aGlzLnJlbW92ZUZvcm1hdHRpbmdWYWx1ZSh2YWx1ZSk7XHJcblxyXG4gICAgLy8gUGVyY29ycmUgdG9kbyBvIHZhbG9yIGUgY29sb2NhIGEgZm9ybWF0YcOnw6NvIGRlIGFjb3JkbyBjb20gYSBtw6FzY2FyYVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBjaGFyVmFsdWUgPSB2YWx1ZVtpXTtcclxuXHJcbiAgICAgIC8vIFNlIG8gZ3VpZGUgYWNhYm91LCBzZXRhIGEgZm9ybWF0YcOnw6NvIGNvbW8gbsOjbyB0ZXJtaW5hZGEgcGFyYSBxdWUgbyBtw6l0b2RvIGNvbnRyb2xGb3JtYXR0aW5nXHJcbiAgICAgIC8vIHRlbnRlIGZvcm1hdGFyIGNvbSBvdXRyYSBwb3Nzw612ZWwgbcOhc2NhcmFcclxuICAgICAgaWYgKCFndWlkZVtjb250R3VpZGVdKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtYXR0aW5nRW5kcyA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBQZXJjb3JyZSBvIEd1aWRlIGVucXVhbnRvIHRlbSBjYXJhY3RlcmVzIGZpeG9zXHJcbiAgICAgIHdoaWxlICh0aGlzLmlzRml4ZWRDaGFyYWN0ZXJHdWlkZShndWlkZVtjb250R3VpZGVdKSAmJiBndWlkZVtjb250R3VpZGVdKSB7XHJcbiAgICAgICAgdmFsdWVQcm9jZXNzZWQgKz0gZ3VpZGVbY29udEd1aWRlXTtcclxuICAgICAgICBjb250R3VpZGUrKztcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gw4kgdW0gY2FyYWN0ZXIgdsOhbGlkbyBkZSBhY29yZG8gY29tIGEgbcOhc2NhcmFcclxuICAgICAgaWYgKHRoaXMuaXNLZXlWYWxpZE1hc2soY2hhclZhbHVlLCBtYXNrW2NvbnRHdWlkZV0pKSB7XHJcbiAgICAgICAgdmFsdWVQcm9jZXNzZWQgKz0gY2hhclZhbHVlO1xyXG4gICAgICAgIGNvbnRHdWlkZSsrO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIFNlIG7Do28gw6kgdW0gY2FyYWN0ZXIgdsOhbGlkbywgZGV2ZSBpbnRlcnJvbXBlci5cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZvcm1hdE1vZGVsKSB7XHJcbiAgICAgIHRoaXMudmFsdWVUb0lucHV0ID0gdmFsdWVQcm9jZXNzZWQ7XHJcbiAgICAgIHRoaXMudmFsdWVUb01vZGVsID0gdmFsdWVQcm9jZXNzZWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZhbHVlVG9JbnB1dCA9IHZhbHVlUHJvY2Vzc2VkO1xyXG4gICAgICB0aGlzLnZhbHVlVG9Nb2RlbCA9IHRoaXMucmVtb3ZlRm9ybWF0dGluZ1ZhbHVlKHZhbHVlUHJvY2Vzc2VkKTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZVByb2Nlc3NlZDtcclxuICB9XHJcbiAgLy8gdmVyaWZpY2Egc2UgdGVtIGFsZ3VtIGNhcmFjdGVyIGRlIG1hc2NhcmEgYW50ZXMgZG8gY3Vyc29yXHJcbiAgY2hlY2tNYXNrQmVmb3JlKCRldmVudDogYW55LCBwb3NpdGlvbjogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5pc0ZpeGVkQ2hhcmFjdGVyR3VpZGUoJGV2ZW50LnRhcmdldC52YWx1ZS50b1N0cmluZygpLmNoYXJBdCh0aGlzLmluaXRpYWxQb3NpdGlvbiAtIDEpKSkge1xyXG4gICAgICB0aGlzLmNoYW5nZVBvc2l0aW9uKCRldmVudCwgcG9zaXRpb24pO1xyXG4gICAgICB0aGlzLmNoZWNrTWFza0JlZm9yZSgkZXZlbnQsIHBvc2l0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHZlcmlmaWNhIHNlIHRlbSBhbGd1bSBjYXJhY3RlciBkZSBtYXNjYXJhIGRlcG9pcyBkbyBjdXJzb3JcclxuICBjaGVja01hc2tBZnRlcigkZXZlbnQ6IGFueSwgcG9zaXRpb246IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuaXNGaXhlZENoYXJhY3Rlckd1aWRlKCRldmVudC50YXJnZXQudmFsdWUudG9TdHJpbmcoKS5jaGFyQXQodGhpcy5pbml0aWFsUG9zaXRpb24pKSkge1xyXG4gICAgICB0aGlzLmNoYW5nZVBvc2l0aW9uKCRldmVudCwgcG9zaXRpb24pO1xyXG4gICAgICB0aGlzLmNoZWNrTWFza0FmdGVyKCRldmVudCwgcG9zaXRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gUmV0b3JuYSBhIG3DoXNjYXJhIHNlbSB1bSB2YWxvciBvcGNpb25hbFxyXG4gIHJlcGxhY2VPcHRpb25hbE51bWJlcihtYXNrOiBzdHJpbmcpIHtcclxuICAgIGxldCBpID0gOTtcclxuICAgIHdoaWxlIChpID49IDApIHtcclxuICAgICAgaWYgKG1hc2suaW5kZXhPZihpICsgJz8nKSA+IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIG1hc2sucmVwbGFjZShpICsgJz8nLCAnJyk7XHJcbiAgICAgIH1cclxuICAgICAgaS0tO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1hc2s7XHJcbiAgfVxyXG5cclxuICAvLyBWZXJpZmljYSBzZSBjb250w6ltIGNhcmFjdGVyZXMgcGVybWl0aWRvcyBzb21lbnRlIG5hIG3DoXNjYXJhIFxcLygpICstXHJcbiAgaXNGaXhlZENoYXJhY3Rlckd1aWRlKGtleTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy50ZXN0UmVnZXgoa2V5LCB0aGlzLmdldEZpeGVkQ2hhcmFjdGVyR3VpZGUoKSk7XHJcbiAgfVxyXG5cclxuICAvLyBSZXRvcm5hIGNhcmFjdGVyZXMgcGVybWl0aWRvcyBzb21lbnRlIG5hIG3DoXNjYXJhIFxcLygpICstXHJcbiAgZ2V0Rml4ZWRDaGFyYWN0ZXJHdWlkZSgpIHtcclxuICAgIHJldHVybiAvW1xcXFxcXC8oKSArLS5cXDpdL2c7XHJcbiAgfVxyXG5cclxuICAvLyBDYXJhY3RlcmVzIHBlcm1pdGlkb3MgZGUgc2VyZW0gZGlnaXRhZG9zXHJcbiAgbGlzdFZhbGlkS2V5cygpIHtcclxuICAgIHJldHVybiAvW2EtekEtWjAtOV0vZztcclxuICB9XHJcblxyXG4gIC8vIFNlIMOpIHVtIGTDrWdpdG8gdsOhbGlkb1xyXG4gIGlzS2V5VmFsaWQoa2V5Q29kZTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0tleUNvZGVWYWxpZChrZXlDb2RlKTtcclxuICB9XHJcblxyXG4gIC8vIFZlcmlmaWNhIHNlIGEgdGVjbGEgZGlnaXRhZGEgw6kgcGVybWl0aWRhXHJcbiAgLy8gUGVybWl0ZSBhcGVuYXMgbsO6bWVyb3MsIGxldHJhcywgYmFja3NwYWNlIGUgZGVsXHJcbiAgaXNLZXlDb2RlVmFsaWQoa2V5Q29kZTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAoa2V5Q29kZSA+PSA0OCAmJiBrZXlDb2RlIDw9IDU3KSB8fFxyXG4gICAgICAoa2V5Q29kZSA+PSA2NSAmJiBrZXlDb2RlIDw9IDkwKSB8fFxyXG4gICAgICAoa2V5Q29kZSA+PSA5NiAmJiBrZXlDb2RlIDw9IDEwNSkgfHxcclxuICAgICAga2V5Q29kZSA9PT0gOCB8fFxyXG4gICAgICBrZXlDb2RlID09PSA5IHx8XHJcbiAgICAgIGtleUNvZGUgPT09IDQ2XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gU2UgZXN0w6EgZGUgYWNvcmRvIGNvbSBhIG3DoXNjYXJhXHJcbiAgaXNLZXlWYWxpZE1hc2soa2V5OiBhbnksIGtleU1hc2s6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMudGVzdFJlZ2V4KGtleSwgdGhpcy5yZXBsYWNlTWFzayhrZXlNYXNrKSk7XHJcbiAgfVxyXG5cclxuICAvLyBSZXRvcm5hIHNlIGEgY2hhdmUgZm9pIGFwcm92YWRhIHBlbGEgZXhwcmVzc8OjbyByZWd1bGFyXHJcbiAgdGVzdFJlZ2V4KGtleTogYW55LCByZWdleDogYW55KSB7XHJcbiAgICByZXR1cm4gcmVnZXgudGVzdChrZXkpO1xyXG4gIH1cclxuXHJcbiAgLy8gUmVtb3ZlIGEgZm9ybWF0YWPDo28gZG8gdmFsb3JcclxuICAvLyDDiSBwb3Nzw612ZWwgc2VyIG1lbGhvcmFkbyBwYXJhIHJlbW92ZXIgcG9udHVhbG1lbnRlIG9zIGNhcmFjdGVyZXMgZml4b3MgZGUgYWNvcmRvIGNvbSBhIG3DoXNjYXJhXHJcbiAgcmVtb3ZlRm9ybWF0dGluZ1ZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKHRoaXMuZ2V0Rml4ZWRDaGFyYWN0ZXJHdWlkZSgpLCAnJyk7XHJcbiAgfVxyXG5cclxuICAvLyBWZXJpZmljYSBzZSBjb250w6ltIHZhbG9yIG9wY2lvbmFsIG5hIG3DoXNjYXJhIDAtOT9cclxuICBoYXNPcHRpb25hbE51bWJlcihtYXNrOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBtYXNrLm1hdGNoKC9cXGRcXD8vZyk7XHJcbiAgfVxyXG5cclxuICAvLyBSZXRvcm5hIGEgZXhwcmVzc8OjbyByZWd1bGFyIGNvcnJlc3BvbmRlbnRlIGFvIGNvbWFuZG8gcGFzc2Fkb1xyXG4gIHJlcGxhY2VNYXNrKGNoYXI6IHN0cmluZykge1xyXG4gICAgbGV0IHJlZ2V4ID0gLy4vO1xyXG4gICAgc3dpdGNoIChjaGFyKSB7XHJcbiAgICAgIGNhc2UgJzAnOlxyXG4gICAgICAgIHJlZ2V4ID0gL1swXS87XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJzEnOlxyXG4gICAgICAgIHJlZ2V4ID0gL1swLTFdLztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnMic6XHJcbiAgICAgICAgcmVnZXggPSAvWzAtMl0vO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICczJzpcclxuICAgICAgICByZWdleCA9IC9bMC0zXS87XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJzQnOlxyXG4gICAgICAgIHJlZ2V4ID0gL1swLTRdLztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnNSc6XHJcbiAgICAgICAgcmVnZXggPSAvWzAtNV0vO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICc2JzpcclxuICAgICAgICByZWdleCA9IC9bMC02XS87XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJzcnOlxyXG4gICAgICAgIHJlZ2V4ID0gL1swLTddLztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnOCc6XHJcbiAgICAgICAgcmVnZXggPSAvWzAtOF0vO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICc5JzpcclxuICAgICAgICByZWdleCA9IC9bMC05XS87XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJyAnOlxyXG4gICAgICAgIHJlZ2V4ID0gL1xccy87XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0AnOlxyXG4gICAgICAgIHJlZ2V4ID0gL1thLXpBLVpdLztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAndyc6XHJcbiAgICAgICAgcmVnZXggPSAvW2EtekEtWjAtOV0vO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlZ2V4O1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVnZXhGcm9tTWFzayhtYXNrOiBzdHJpbmcpIHtcclxuICAgIGlmIChtYXNrKSB7XHJcbiAgICAgIGxldCBwYXR0ZXJuO1xyXG4gICAgICBpZiAodGhpcy5mb3JtYXRNb2RlbCkge1xyXG4gICAgICAgIHBhdHRlcm4gPSBtYXNrLnJlcGxhY2UoL1xcXFwvZywgJ1xcXFxcXFxcJyk7XHJcbiAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZSgvXFwrL2csICdcXFxcKycpO1xyXG4gICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UoL1xcLi9nLCAnXFxcXC4nKTtcclxuICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKC8tL2csICctJyk7XHJcbiAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZSgvXFwoL2csICdcXFxcKCcpO1xyXG4gICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UoL1xcKS9nLCAnXFxcXCknKTtcclxuICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKC9cXC8vZywgJ1xcXFwvJyk7XHJcbiAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZSgvXFxzL2csICdcXFxccycpO1xyXG4gICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UoLzovZywgJ1xcXFw6Jyk7XHJcbiAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZSgvXFxAKD8hXFxzKS9nLCAnXFxcXHcnKTtcclxuICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKC9cXGQvZywgJ1xcXFx3Jyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGF0dGVybiA9IG1hc2sucmVwbGFjZSgvXFxcXC9nLCAnJyk7XHJcbiAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZSgvXFwrL2csICcnKTtcclxuICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKC9cXC4vZywgJycpO1xyXG4gICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UoLy0vZywgJycpO1xyXG4gICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UoL1xcKC9nLCAnJyk7XHJcbiAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZSgvXFwpL2csICcnKTtcclxuICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi5yZXBsYWNlKC9cXC8vZywgJycpO1xyXG4gICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UoL1xccy9nLCAnJyk7XHJcbiAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZSgvOi9nLCAnJyk7XHJcbiAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZSgvXFxAL2csICdcXFxcdycpO1xyXG4gICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UoL1xcZC9nLCAnXFxcXHcnKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcGF0dGVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=