@po-ui/ng-components 5.21.0 → 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 -38615
  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 -289
  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 -741
  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 -344
  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 -436
  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 -571
  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 -359
  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 -573
  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 -35160
  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 -251
  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 -176
  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 -401
  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 -124
  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 -151
  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 -325
  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 +5 -5
  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.21.0.tgz +0 -0
@@ -1,287 +1,287 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { PoChartGridLines, PoChartPadding, PoChartPlotAreaPaddingTop } from '../../helpers/po-chart-default-values.constant';
3
- import { PoChartMathsService } from '../../services/po-chart-maths.service';
4
- import { PoChartType } from '../../enums/po-chart-type.enum';
5
- export class PoChartAxisComponent {
6
- constructor(mathsService) {
7
- this.mathsService = mathsService;
8
- this.alignByTheCorners = false;
9
- this.categoriesCoordinates = new EventEmitter();
10
- this.axisXLabels = [];
11
- this.axisYLabels = [];
12
- this.gridLines = PoChartGridLines;
13
- this.seriesLength = 0;
14
- this._categories = [];
15
- this._containerSize = {};
16
- this._series = [];
17
- }
18
- set series(seriesList) {
19
- const seriesDataArrayFilter = seriesList.filter(serie => Array.isArray(serie.data));
20
- if (seriesDataArrayFilter.length) {
21
- this._series = seriesDataArrayFilter;
22
- this.seriesLength = this.mathsService.seriesGreaterLength(this.series);
23
- this.checkAxisOptions(this.axisOptions);
24
- this.setAxisXCoordinates(this.gridLines, this.seriesLength, this.containerSize, this.range, this.type);
25
- this.setAxisYCoordinates(this.gridLines, this.seriesLength, this.containerSize, this.range, this.type);
26
- }
27
- else {
28
- this._series = [];
29
- this.cleanUpCoordinates();
30
- }
31
- }
32
- get series() {
33
- return this._series;
34
- }
35
- set categories(value) {
36
- this._categories = value;
37
- if (this.type === PoChartType.Bar) {
38
- this.setAxisXCoordinates(this.gridLines, this.seriesLength, this.containerSize, this.range, this.type);
39
- }
40
- else {
41
- this.setAxisYCoordinates(this.gridLines, this.seriesLength, this.containerSize, this.range, this.type);
42
- }
43
- }
44
- get categories() {
45
- return this._categories;
46
- }
47
- set containerSize(value) {
48
- this._containerSize = value;
49
- this.checkAxisOptions(this.axisOptions);
50
- this.setAxisXCoordinates(this.gridLines, this.seriesLength, this._containerSize, this.range, this.type);
51
- this.setAxisYCoordinates(this.gridLines, this.seriesLength, this._containerSize, this.range, this.type);
52
- }
53
- get containerSize() {
54
- return this._containerSize;
55
- }
56
- set axisOptions(value) {
57
- this._axisOptions = value;
58
- this.checkAxisOptions(this._axisOptions);
59
- if (this.type === PoChartType.Bar) {
60
- this.setAxisYCoordinates(this.gridLines, this.seriesLength, this.containerSize, this.range, this.type);
61
- }
62
- else {
63
- this.setAxisXCoordinates(this.gridLines, this.seriesLength, this.containerSize, this.range, this.type);
64
- }
65
- }
66
- get axisOptions() {
67
- return this._axisOptions;
68
- }
69
- setAxisXCoordinates(gridLines, seriesLength, containerSize, minMaxAxisValues, type) {
70
- if (seriesLength) {
71
- const amountOfAxisLabels = type === PoChartType.Bar ? seriesLength : gridLines;
72
- this.calculateAxisXLabelCoordinates(amountOfAxisLabels, containerSize, minMaxAxisValues, type);
73
- }
74
- const amountOfAxisXLines = this.amountOfAxisXLines(seriesLength, gridLines, type);
75
- this.calculateAxisXCoordinates(amountOfAxisXLines, containerSize, minMaxAxisValues);
76
- }
77
- amountOfAxisXLines(seriesLength, gridLines, type) {
78
- if (type === PoChartType.Bar) {
79
- return seriesLength <= 1 ? 2 : seriesLength + 1;
80
- }
81
- return gridLines === 0 ? 1 : gridLines;
82
- }
83
- setAxisYCoordinates(gridLines, seriesLength, containerSize, minMaxAxisValues, type) {
84
- const amountOfAxisY = type === PoChartType.Bar ? gridLines : seriesLength;
85
- if (seriesLength) {
86
- this.calculateAxisYLabelCoordinates(amountOfAxisY, containerSize, minMaxAxisValues, type);
87
- }
88
- if (type === PoChartType.Area) {
89
- this.getCategoriesRangeForMouseMove(amountOfAxisY, containerSize);
90
- }
91
- this.calculateAxisYCoordinates(amountOfAxisY, containerSize, type, minMaxAxisValues);
92
- }
93
- calculateAxisXCoordinates(amountOfAxisX, containerSize, range) {
94
- const startX = containerSize.axisXLabelWidth;
95
- const endX = containerSize.svgWidth;
96
- let coordinatesReferedToZero;
97
- let coordinatesList = [...Array(amountOfAxisX)].map((_, index) => {
98
- const yCoordinate = this.calculateAxisXCoordinateY(amountOfAxisX, containerSize, index);
99
- const coordinates = `M${startX} ${yCoordinate} L${endX}, ${yCoordinate}`;
100
- return { coordinates };
101
- });
102
- // Avalia a necessidade de adicionar a linha referente ao valor zero em gráficos do tipo `column`, `area` e `line`.
103
- if (this.type !== PoChartType.Bar && range.minValue < 0 && !this.axisXLabels.includes('0')) {
104
- coordinatesReferedToZero = this.getCoordinatesRelatedToZero(containerSize, range, startX, endX);
105
- coordinatesList = [...coordinatesList, coordinatesReferedToZero];
106
- }
107
- this.axisXCoordinates = coordinatesList;
108
- }
109
- getCoordinatesRelatedToZero(containerSize, range, start, end, isAxisY = false) {
110
- const type = isAxisY ? PoChartType.Bar : PoChartType.Column;
111
- const basePosition = this.axisCoordinatesForValueZero(range, 0, containerSize, isAxisY);
112
- const coordinates = {
113
- column: {
114
- startX: start,
115
- endX: end,
116
- startY: basePosition,
117
- endY: basePosition
118
- },
119
- bar: {
120
- startX: basePosition,
121
- endX: basePosition,
122
- startY: start,
123
- endY: end
124
- }
125
- };
126
- return {
127
- coordinates: `M${coordinates[type].startX} ${coordinates[type].startY} L${coordinates[type].endX} ${coordinates[type].endY}`
128
- };
129
- }
130
- axisCoordinatesForValueZero(range, data, containerSize, isAxisY) {
131
- const { axisXLabelWidth, svgWidth, svgPlottingAreaHeight } = containerSize;
132
- const ratio = this.mathsService.getSeriePercentage(range, data);
133
- return Math.floor(isAxisY
134
- ? axisXLabelWidth + (svgWidth - axisXLabelWidth) * ratio
135
- : svgPlottingAreaHeight - svgPlottingAreaHeight * ratio + PoChartPlotAreaPaddingTop);
136
- }
137
- calculateAxisXLabelCoordinates(amountOfAxisX, containerSize, minMaxAxisValues, type) {
138
- this.axisXLabels = this.getAxisXLabels(type, minMaxAxisValues, amountOfAxisX);
139
- this.axisXLabelCoordinates = [...Array(amountOfAxisX)].map((_, index) => {
140
- const label = this.axisXLabels[index];
141
- const xCoordinate = this.calculateAxisXLabelXCoordinate(containerSize.axisXLabelWidth);
142
- const yCoordinate = this.calculateAxisXLabelYCoordinate(amountOfAxisX, containerSize, type, index);
143
- return { label, xCoordinate, yCoordinate };
144
- });
145
- }
146
- calculateAxisYCoordinates(amountOfAxisY, containerSize, type, range) {
147
- const startY = PoChartPlotAreaPaddingTop;
148
- const endY = containerSize.svgPlottingAreaHeight + PoChartPlotAreaPaddingTop;
149
- // tratamento necessário para criar uma linha a mais para fechar o gráfico
150
- const length = amountOfAxisY === 0 || type === PoChartType.Bar ? amountOfAxisY : amountOfAxisY + 1;
151
- let coordinatesReferedToZero;
152
- let coordinatesList = [...Array(length)].map((_, index) => {
153
- const xCoordinate = this.calculateAxisYCoordinateX(containerSize, amountOfAxisY, index);
154
- const coordinates = `M${xCoordinate} ${startY} L${xCoordinate}, ${endY}`;
155
- return { coordinates };
156
- });
157
- // Avalia a necessidade de adicionar a linha referente ao valor zero em gráficos do tipo `bar`.
158
- if (type === PoChartType.Bar && range.minValue < 0 && !this.axisYLabels.includes('0')) {
159
- coordinatesReferedToZero = this.getCoordinatesRelatedToZero(containerSize, range, startY, endY, true);
160
- coordinatesList = [...coordinatesList, coordinatesReferedToZero];
161
- }
162
- this.axisYCoordinates = [...coordinatesList];
163
- }
164
- calculateAxisYLabelCoordinates(amountOfAxisY, containerSize, minMaxAxisValues, type) {
165
- this.axisYLabels = this.getAxisYLabels(type, minMaxAxisValues, amountOfAxisY);
166
- this.axisYLabelCoordinates = [...Array(amountOfAxisY)].map((_, index) => {
167
- const label = this.axisYLabels[index];
168
- const xCoordinate = this.getAxisXCoordinates(containerSize, amountOfAxisY, type, index);
169
- const yCoordinate = this.calculateAxisYLabelYCoordinate(containerSize);
170
- return { label, xCoordinate, yCoordinate };
171
- });
172
- }
173
- calculateAxisXLabelXCoordinate(axisXLabelWidth) {
174
- const labelPoChartPadding = PoChartPadding / 3;
175
- return axisXLabelWidth - labelPoChartPadding;
176
- }
177
- calculateAxisXLabelYCoordinate(amountOfAxisX, containerSize, type, index) {
178
- const amountOfLines = type === PoChartType.Bar ? amountOfAxisX : amountOfAxisX - 1;
179
- const yRatio = index / amountOfLines;
180
- if (type !== PoChartType.Bar) {
181
- return (containerSize.svgPlottingAreaHeight - containerSize.svgPlottingAreaHeight * yRatio + PoChartPlotAreaPaddingTop);
182
- }
183
- const halfCategoryHeight = containerSize.svgPlottingAreaHeight / amountOfAxisX / 2;
184
- return (containerSize.svgPlottingAreaHeight -
185
- halfCategoryHeight -
186
- containerSize.svgPlottingAreaHeight * yRatio +
187
- PoChartPlotAreaPaddingTop);
188
- }
189
- calculateAxisXCoordinateY(amountOfAxisX, containerSize, index) {
190
- const yRatio = index / (amountOfAxisX - 1);
191
- return (containerSize.svgPlottingAreaHeight - containerSize.svgPlottingAreaHeight * yRatio + PoChartPlotAreaPaddingTop);
192
- }
193
- calculateAxisYLabelYCoordinate(containerSize) {
194
- const textPoChartPadding = PoChartPadding / 3;
195
- return containerSize.svgHeight - textPoChartPadding;
196
- }
197
- centeredInCategoryArea(containerSize, amountOfAxisY, type, index) {
198
- const amountOfLines = type === PoChartType.Bar ? amountOfAxisY - 1 : amountOfAxisY;
199
- const xRatio = index / amountOfLines;
200
- if (type === PoChartType.Bar) {
201
- return Math.round(containerSize.axisXLabelWidth + (containerSize.svgWidth - containerSize.axisXLabelWidth) * xRatio);
202
- }
203
- const halfCategoryWidth = (containerSize.svgWidth - containerSize.axisXLabelWidth) / amountOfAxisY / 2;
204
- return Math.round(containerSize.axisXLabelWidth +
205
- halfCategoryWidth +
206
- (containerSize.svgWidth - containerSize.axisXLabelWidth) * xRatio);
207
- }
208
- calculateAxisYCoordinateX(containerSize, amountOfAxisY, index, subtractCategoryWidth = false) {
209
- const amountOfLines = this.alignByTheCorners ? amountOfAxisY - 1 : amountOfAxisY;
210
- const halfCategoryWidth = this.alignByTheCorners && subtractCategoryWidth
211
- ? (containerSize.svgWidth - containerSize.axisXLabelWidth) / (amountOfAxisY - 1) / 2
212
- : 0;
213
- const divideIndexByAmountOfLines = index / amountOfLines;
214
- const xRatio = divideIndexByAmountOfLines === Infinity ? 0 : divideIndexByAmountOfLines;
215
- return Math.round(containerSize.axisXLabelWidth +
216
- (containerSize.svgWidth - containerSize.axisXLabelWidth) * xRatio -
217
- halfCategoryWidth);
218
- }
219
- checkAxisOptions(options = {}) {
220
- this.gridLines =
221
- options.gridLines && this.isValidGridLinesLengthOption(options.gridLines) ? options.gridLines : PoChartGridLines;
222
- }
223
- cleanUpCoordinates() {
224
- this.axisXCoordinates = [];
225
- this.axisYCoordinates = [];
226
- this.axisXLabelCoordinates = [];
227
- this.axisYLabelCoordinates = [];
228
- this.seriesLength = 0;
229
- }
230
- getAxisXCoordinates(containerSize, amountOfAxisY, type, index) {
231
- return this.alignByTheCorners
232
- ? this.calculateAxisYCoordinateX(containerSize, amountOfAxisY, index)
233
- : this.centeredInCategoryArea(containerSize, amountOfAxisY, type, index);
234
- }
235
- getCategoriesRangeForMouseMove(amountOfAxisY, containerSize) {
236
- const categoriesCoordinates = [...Array(amountOfAxisY)].map((_, index) => this.calculateAxisYCoordinateX(containerSize, amountOfAxisY, index, true));
237
- this.categoriesCoordinates.emit(categoriesCoordinates);
238
- }
239
- isValidGridLinesLengthOption(gridLines) {
240
- return gridLines >= 2 && gridLines <= 10;
241
- }
242
- getAxisXLabels(type, minMaxAxisValues, amountOfAxisX) {
243
- if (type === PoChartType.Bar) {
244
- const axisXLabelsList = this.formatCategoriesLabels(amountOfAxisX, this.categories);
245
- return axisXLabelsList.reverse();
246
- }
247
- return this.generateAverageOfLabels(minMaxAxisValues, amountOfAxisX);
248
- }
249
- getAxisYLabels(type, minMaxAxisValues, amountOfAxisX) {
250
- return type === PoChartType.Bar
251
- ? this.generateAverageOfLabels(minMaxAxisValues, amountOfAxisX)
252
- : this.formatCategoriesLabels(amountOfAxisX, this.categories);
253
- }
254
- formatCategoriesLabels(amountOfAxisX, categories = []) {
255
- return [...Array(amountOfAxisX)].map((_, index) => { var _a; return (_a = categories[index]) !== null && _a !== void 0 ? _a : '-'; });
256
- }
257
- generateAverageOfLabels(minMaxAxisValues, amountOfAxisLines) {
258
- const averageLabelsList = this.mathsService.range(minMaxAxisValues, amountOfAxisLines);
259
- return averageLabelsList.map(label => {
260
- const formattedDigit = label.toFixed(label % 1 && 2);
261
- // Remove dígitos com zero.
262
- // Também trata caso quando o valor retornado era -0, substituindo-o por 0.
263
- const removeZeroDigits = formattedDigit.replace(/\.00$/, '').replace(/\-0$/, 0);
264
- return removeZeroDigits.toString();
265
- });
266
- }
267
- }
268
- PoChartAxisComponent.decorators = [
269
- { type: Component, args: [{
270
- selector: '[po-chart-axis]',
271
- template: "<svg:g po-chart-axis-path [p-axis-x-coordinates]=\"axisXCoordinates\" [p-axis-y-coordinates]=\"axisYCoordinates\"></svg:g>\n\n<svg:g po-chart-axis-label \n [p-align-by-the-corners]=\"alignByTheCorners\" \n [p-axis-x-label-coordinates]=\"axisXLabelCoordinates\" \n [p-axis-y-label-coordinates]=\"axisYLabelCoordinates\" \n [p-type]=\"type\"\n >\n</svg:g>"
272
- },] }
273
- ];
274
- PoChartAxisComponent.ctorParameters = () => [
275
- { type: PoChartMathsService }
276
- ];
277
- PoChartAxisComponent.propDecorators = {
278
- alignByTheCorners: [{ type: Input, args: ['p-align-by-the-corners',] }],
279
- type: [{ type: Input, args: ['p-type',] }],
280
- range: [{ type: Input, args: ['p-range',] }],
281
- categoriesCoordinates: [{ type: Output, args: ['p-categories-coordinates',] }],
282
- series: [{ type: Input, args: ['p-series',] }],
283
- categories: [{ type: Input, args: ['p-categories',] }],
284
- containerSize: [{ type: Input, args: ['p-container-size',] }],
285
- axisOptions: [{ type: Input, args: ['p-options',] }]
286
- };
287
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY2hhcnQtYXhpcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tY2hhcnQvcG8tY2hhcnQtY29udGFpbmVyL3BvLWNoYXJ0LWF4aXMvcG8tY2hhcnQtYXhpcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCx5QkFBeUIsRUFDMUIsTUFBTSxnREFBZ0QsQ0FBQztBQUV4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQU01RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFNN0QsTUFBTSxPQUFPLG9CQUFvQjtJQXNGL0IsWUFBb0IsWUFBaUM7UUFBakMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBckZwQixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFNaEMsMEJBQXFCLEdBQWdDLElBQUksWUFBWSxFQUFFLENBQUM7UUFPcEcsZ0JBQVcsR0FBa0IsRUFBRSxDQUFDO1FBQ2hDLGdCQUFXLEdBQWtCLEVBQUUsQ0FBQztRQUNoQyxjQUFTLEdBQVcsZ0JBQWdCLENBQUM7UUFDckMsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFHekIsZ0JBQVcsR0FBa0IsRUFBRSxDQUFDO1FBQ2hDLG1CQUFjLEdBQXlCLEVBQUUsQ0FBQztRQUMxQyxZQUFPLEdBQWUsRUFBRSxDQUFDO0lBZ0V1QixDQUFDO0lBOUR6RCxJQUF1QixNQUFNLENBQUMsVUFBc0I7UUFDbEQsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9B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b25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBQb0NoYXJ0R3JpZExpbmVzLFxuICBQb0NoYXJ0UGFkZGluZyxcbiAgUG9DaGFydFBsb3RBcmVhUGFkZGluZ1RvcFxufSBmcm9tICcuLi8uLi9oZWxwZXJzL3BvLWNoYXJ0LWRlZmF1bHQtdmFsdWVzLmNvbnN0YW50JztcblxuaW1wb3J0IHsgUG9DaGFydE1hdGhzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BvLWNoYXJ0LW1hdGhzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9DaGFydENvbnRhaW5lclNpemUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BvLWNoYXJ0LWNvbnRhaW5lci1zaXplLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0NoYXJ0TWluTWF4VmFsdWVzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9wby1jaGFydC1taW4tbWF4LXZhbHVlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9DaGFydFBhdGhDb29yZGluYXRlcyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcG8tY2hhcnQtcGF0aC1jb29yZGluYXRlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9DaGFydExhYmVsQ29vcmRpbmF0ZXMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BvLWNoYXJ0LWxhYmVsLWNvb3JkaW5hdGVzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0NoYXJ0QXhpc09wdGlvbnMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BvLWNoYXJ0LWF4aXMtb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9DaGFydFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9wby1jaGFydC10eXBlLmVudW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbcG8tY2hhcnQtYXhpc10nLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tY2hhcnQtYXhpcy5jb21wb25lbnQuc3ZnJ1xufSlcbmV4cG9ydCBjbGFzcyBQb0NoYXJ0QXhpc0NvbXBvbmVudCB7XG4gIEBJbnB1dCgncC1hbGlnbi1ieS10aGUtY29ybmVycycpIGFsaWduQnlUaGVDb3JuZXJzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdwLXR5cGUnKSB0eXBlOiBQb0NoYXJ0VHlwZTtcblxuICBASW5wdXQoJ3AtcmFuZ2UnKSByYW5nZTogUG9DaGFydE1pbk1heFZhbHVlcztcblxuICBAT3V0cHV0KCdwLWNhdGVnb3JpZXMtY29vcmRpbmF0ZXMnKSBjYXRlZ29yaWVzQ29vcmRpbmF0ZXM6IEV2ZW50RW1pdHRlcjxBcnJheTxudW1iZXI+PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBheGlzWENvb3JkaW5hdGVzOiBBcnJheTxQb0NoYXJ0UGF0aENvb3JkaW5hdGVzPjtcbiAgYXhpc1hMYWJlbENvb3JkaW5hdGVzOiBBcnJheTxQb0NoYXJ0TGFiZWxDb29yZGluYXRlcz47XG4gIGF4aXNZQ29vcmRpbmF0ZXM6IEFycmF5PFBvQ2hhcnRQYXRoQ29vcmRpbmF0ZXM+O1xuICBheGlzWUxhYmVsQ29vcmRpbmF0ZXM6IEFycmF5PFBvQ2hhcnRMYWJlbENvb3JkaW5hdGVzPjtcblxuICBwcml2YXRlIGF4aXNYTGFiZWxzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gIHByaXZhdGUgYXhpc1lMYWJlbHM6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgcHJpdmF0ZSBncmlkTGluZXM6IG51bWJlciA9IFBvQ2hhcnRHcmlkTGluZXM7XG4gIHByaXZhdGUgc2VyaWVzTGVuZ3RoOiBudW1iZXIgPSAwO1xuXG4gIHByaXZhdGUgX2F4aXNPcHRpb25zOiBQb0NoYXJ0QXhpc09wdGlvbnM7XG4gIHByaXZhdGUgX2NhdGVnb3JpZXM6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgcHJpdmF0ZSBfY29udGFpbmVyU2l6ZTogUG9DaGFydENvbnRhaW5lclNpemUgPSB7fTtcbiAgcHJpdmF0ZSBfc2VyaWVzOiBBcnJheTxhbnk+ID0gW107XG5cbiAgQElucHV0KCdwLXNlcmllcycpIHNldCBzZXJpZXMoc2VyaWVzTGlzdDogQXJyYXk8YW55Pikge1xuICAgIGNvbnN0IHNlcmllc0RhdGFBcnJheUZpbHRlciA9IHNlcmllc0xpc3QuZmlsdGVyKHNlcmllID0+IEFycmF5LmlzQXJyYXkoc2VyaWUuZGF0YSkpO1xuXG4gICAgaWYgKHNlcmllc0RhdGFBcnJheUZpbHRlci5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX3NlcmllcyA9IHNlcmllc0RhdGFBcnJheUZpbHRlcjtcblxuICAgICAgdGhpcy5zZXJpZXNMZW5ndGggPSB0aGlzLm1hdGhzU2VydmljZS5zZXJpZXNHcmVhdGVyTGVuZ3RoKHRoaXMuc2VyaWVzKTtcbiAgICAgIHRoaXMuY2hlY2tBeGlzT3B0aW9ucyh0aGlzLmF4aXNPcHRpb25zKTtcbiAgICAgIHRoaXMuc2V0QXhpc1hDb29yZGluYXRlcyh0aGlzLmdyaWRMaW5lcywgdGhpcy5zZXJpZXNMZW5ndGgsIHRoaXMuY29udGFpbmVyU2l6ZSwgdGhpcy5yYW5nZSwgdGhpcy50eXBlKTtcbiAgICAgIHRoaXMuc2V0QXhpc1lDb29yZGluYXRlcyh0aGlzLmdyaWRMaW5lcywgdGhpcy5zZXJpZXNMZW5ndGgsIHRoaXMuY29udGFpbmVyU2l6ZSwgdGhpcy5yYW5nZSwgdGhpcy50eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2VyaWVzID0gW107XG4gICAgICB0aGlzLmNsZWFuVXBDb29yZGluYXRlcygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzZXJpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlcmllcztcbiAgfVxuXG4gIEBJbnB1dCgncC1jYXRlZ29yaWVzJykgc2V0IGNhdGVnb3JpZXModmFsdWU6IEFycmF5PHN0cmluZz4pIHtcbiAgICB0aGlzLl9jYXRlZ29yaWVzID0gdmFsdWU7XG5cbiAgICBpZiAodGhpcy50eXBlID09PSBQb0NoYXJ0VHlwZS5CYXIpIHtcbiAgICAgIHRoaXMuc2V0QXhpc1hDb29yZGluYXRlcyh0aGlzLmdyaWRMaW5lcywgdGhpcy5zZXJpZXNMZW5ndGgsIHRoaXMuY29udGFpbmVyU2l6ZSwgdGhpcy5yYW5nZSwgdGhpcy50eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRBeGlzWUNvb3JkaW5hdGVzKHRoaXMuZ3JpZExpbmVzLCB0aGlzLnNlcmllc0xlbmd0aCwgdGhpcy5jb250YWluZXJTaXplLCB0aGlzLnJhbmdlLCB0aGlzLnR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBjYXRlZ29yaWVzKCkge1xuICAgIHJldHVybiB0aGlzLl9jYXRlZ29yaWVzO1xuICB9XG5cbiAgQElucHV0KCdwLWNvbnRhaW5lci1zaXplJykgc2V0IGNvbnRhaW5lclNpemUodmFsdWU6IFBvQ2hhcnRDb250YWluZXJTaXplKSB7XG4gICAgdGhpcy5fY29udGFpbmVyU2l6ZSA9IHZhbHVlO1xuXG4gICAgdGhpcy5jaGVja0F4aXNPcHRpb25zKHRoaXMuYXhpc09wdGlvbnMpO1xuICAgIHRoaXMuc2V0QXhpc1hDb29yZGluYXRlcyh0aGlzLmdyaWRMaW5lcywgdGhpcy5zZXJpZXNMZW5ndGgsIHRoaXMuX2NvbnRhaW5lclNpemUsIHRoaXMucmFuZ2UsIHRoaXMudHlwZSk7XG4gICAgdGhpcy5zZXRBeGlzWUNvb3JkaW5hdGVzKHRoaXMuZ3JpZExpbmVzLCB0aGlzLnNlcmllc0xlbmd0aCwgdGhpcy5fY29udGFpbmVyU2l6ZSwgdGhpcy5yYW5nZSwgdGhpcy50eXBlKTtcbiAgfVxuXG4gIGdldCBjb250YWluZXJTaXplKCkge1xuICAgIHJldHVybiB0aGlzLl9jb250YWluZXJTaXplO1xuICB9XG5cbiAgQElucHV0KCdwLW9wdGlvbnMnKSBzZXQgYXhpc09wdGlvbnModmFsdWU6IFBvQ2hhcnRBeGlzT3B0aW9ucykge1xuICAgIHRoaXMuX2F4aXNPcHRpb25zID0gdmFsdWU7XG5cbiAgICB0aGlzLmNoZWNrQXhpc09wdGlvbnModGhpcy5fYXhpc09wdGlvbnMpO1xuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gUG9DaGFydFR5cGUuQmFyKSB7XG4gICAgICB0aGlzLnNldEF4aXNZQ29vcmRpbmF0ZXModGhpcy5ncmlkTGluZXMsIHRoaXMuc2VyaWVzTGVuZ3RoLCB0aGlzLmNvbnRhaW5lclNpemUsIHRoaXMucmFuZ2UsIHRoaXMudHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0QXhpc1hDb29yZGluYXRlcyh0aGlzLmdyaWRMaW5lcywgdGhpcy5zZXJpZXNMZW5ndGgsIHRoaXMuY29udGFpbmVyU2l6ZSwgdGhpcy5yYW5nZSwgdGhpcy50eXBlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgYXhpc09wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2F4aXNPcHRpb25zO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtYXRoc1NlcnZpY2U6IFBvQ2hhcnRNYXRoc1NlcnZpY2UpIHt9XG5cbiAgcHJpdmF0ZSBzZXRBeGlzWENvb3JkaW5hdGVzKFxuICAgIGdyaWRMaW5lczogbnVtYmVyLFxuICAgIHNlcmllc0xlbmd0aDogbnVtYmVyLFxuICAgIGNvbnRhaW5lclNpemU6IFBvQ2hhcnRDb250YWluZXJTaXplLFxuICAgIG1pbk1heEF4aXNWYWx1ZXM6IFBvQ2hhcnRNaW5NYXhWYWx1ZXMsXG4gICAgdHlwZTogUG9DaGFydFR5cGVcbiAgKSB7XG4gICAgaWYgKHNlcmllc0xlbmd0aCkge1xuICAgICAgY29uc3QgYW1vdW50T2ZBeGlzTGFiZWxzID0gdHlwZSA9PT0gUG9DaGFydFR5cGUuQmFyID8gc2VyaWVzTGVuZ3RoIDogZ3JpZExpbmVzO1xuICAgICAgdGhpcy5jYWxjdWxhdGVBeGlzWExhYmVsQ29vcmRpbmF0ZXMoYW1vdW50T2ZBeGlzTGFiZWxzLCBjb250YWluZXJTaXplLCBtaW5NYXhBeGlzVmFsdWVzLCB0eXBlKTtcbiAgICB9XG5cbiAgICBjb25zdCBhbW91bnRPZkF4aXNYTGluZXMgPSB0aGlzLmFtb3VudE9mQXhpc1hMaW5lcyhzZXJpZXNMZW5ndGgsIGdyaWRMaW5lcywgdHlwZSk7XG4gICAgdGhpcy5jYWxjdWxhdGVBeGlzWENvb3JkaW5hdGVzKGFtb3VudE9mQXhpc1hMaW5lcywgY29udGFpbmVyU2l6ZSwgbWluTWF4QXhpc1ZhbHVlcyk7XG4gIH1cblxuICBwcml2YXRlIGFtb3VudE9mQXhpc1hMaW5lcyhzZXJpZXNMZW5ndGg6IG51bWJlciwgZ3JpZExpbmVzOiBudW1iZXIsIHR5cGU6IFBvQ2hhcnRUeXBlKTogbnVtYmVyIHtcbiAgICBpZiAodHlwZSA9PT0gUG9DaGFydFR5cGUuQmFyKSB7XG4gICAgICByZXR1cm4gc2VyaWVzTGVuZ3RoIDw9IDEgPyAyIDogc2VyaWVzTGVuZ3RoICsgMTtcbiAgICB9XG4gICAgcmV0dXJuIGdyaWRMaW5lcyA9PT0gMCA/IDEgOiBncmlkTGluZXM7XG4gIH1cblxuICBwcml2YXRlIHNldEF4aXNZQ29vcmRpbmF0ZXMoXG4gICAgZ3JpZExpbmVzOiBudW1iZXIsXG4gICAgc2VyaWVzTGVuZ3RoOiBudW1iZXIsXG4gICAgY29udGFpbmVyU2l6ZTogUG9DaGFydENvbnRhaW5lclNpemUsXG4gICAgbWluTWF4QXhpc1ZhbHVlczogUG9DaGFydE1pbk1heFZhbHVlcyxcbiAgICB0eXBlOiBQb0NoYXJ0VHlwZVxuICApIHtcbiAgICBjb25zdCBhbW91bnRPZkF4aXNZID0gdHlwZSA9PT0gUG9DaGFydFR5cGUuQmFyID8gZ3JpZExpbmVzIDogc2VyaWVzTGVuZ3RoO1xuXG4gICAgaWYgKHNlcmllc0xlbmd0aCkge1xuICAgICAgdGhpcy5jYWxjdWxhdGVBeGlzWUxhYmVsQ29vcmRpbmF0ZXMoYW1vdW50T2ZBeGlzWSwgY29udGFpbmVyU2l6ZSwgbWluTWF4QXhpc1ZhbHVlcywgdHlwZSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09IFBvQ2hhcnRUeXBlLkFyZWEpIHtcbiAgICAgIHRoaXMuZ2V0Q2F0ZWdvcmllc1JhbmdlRm9yTW91c2VNb3ZlKGFtb3VudE9mQXhpc1ksIGNvbnRhaW5lclNpemUpO1xuICAgIH1cblxuICAgIHRoaXMuY2FsY3VsYXRlQXhpc1lDb29yZGluYXRlcyhhbW91bnRPZkF4aXNZLCBjb250YWluZXJTaXplLCB0eXBlLCBtaW5NYXhBeGlzVmFsdWVzKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlQXhpc1hDb29yZGluYXRlcyhcbiAgICBhbW91bnRPZkF4aXNYOiBudW1iZXIsXG4gICAgY29udGFpbmVyU2l6ZTogUG9DaGFydENvbnRhaW5lclNpemUsXG4gICAgcmFuZ2U6IFBvQ2hhcnRNaW5NYXhWYWx1ZXNcbiAgKSB7XG4gICAgY29uc3Qgc3RhcnRYID0gY29udGFpbmVyU2l6ZS5heGlzWExhYmVsV2lkdGg7XG4gICAgY29uc3QgZW5kWCA9IGNvbnRhaW5lclNpemUuc3ZnV2lkdGg7XG5cbiAgICBsZXQgY29vcmRpbmF0ZXNSZWZlcmVkVG9aZXJvO1xuICAgIGxldCBjb29yZGluYXRlc0xpc3QgPSBbLi4uQXJyYXkoYW1vdW50T2ZBeGlzWCldLm1hcCgoXywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgeUNvb3JkaW5hdGUgPSB0aGlzLmNhbGN1bGF0ZUF4aXNYQ29vcmRpbmF0ZVkoYW1vdW50T2ZBeGlzWCwgY29udGFpbmVyU2l6ZSwgaW5kZXgpO1xuICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBgTSR7c3RhcnRYfSAke3lDb29yZGluYXRlfSBMJHtlbmRYfSwgJHt5Q29vcmRpbmF0ZX1gO1xuXG4gICAgICByZXR1cm4geyBjb29yZGluYXRlcyB9O1xuICAgIH0pO1xuXG4gICAgLy8gQXZhbGlhIGEgbmVjZXNzaWRhZGUgZGUgYWRpY2lvbmFyIGEgbGluaGEgcmVmZXJlbnRlIGFvIHZhbG9yIHplcm8gZW0gZ3LDoWZpY29zIGRvIHRpcG8gYGNvbHVtbmAsIGBhcmVhYCBlIGBsaW5lYC5cbiAgICBpZiAodGhpcy50eXBlICE9PSBQb0NoYXJ0VHlwZS5CYXIgJiYgcmFuZ2UubWluVmFsdWUgPCAwICYmICF0aGlzLmF4aXNYTGFiZWxzLmluY2x1ZGVzKCcwJykpIHtcbiAgICAgIGNvb3JkaW5hdGVzUmVmZXJlZFRvWmVybyA9IHRoaXMuZ2V0Q29vcmRpbmF0ZXNSZWxhdGVkVG9aZXJvKGNvbnRhaW5lclNpemUsIHJhbmdlLCBzdGFydFgsIGVuZFgpO1xuICAgICAgY29vcmRpbmF0ZXNMaXN0ID0gWy4uLmNvb3JkaW5hdGVzTGlzdCwgY29vcmRpbmF0ZXNSZWZlcmVkVG9aZXJvXTtcbiAgICB9XG5cbiAgICB0aGlzLmF4aXNYQ29vcmRpbmF0ZXMgPSBjb29yZGluYXRlc0xpc3Q7XG4gIH1cblxuICBwcml2YXRlIGdldENvb3JkaW5hdGVzUmVsYXRlZFRvWmVybyhcbiAgICBjb250YWluZXJTaXplOiBQb0NoYXJ0Q29udGFpbmVyU2l6ZSxcbiAgICByYW5nZTogUG9DaGFydE1pbk1heFZhbHVlcyxcbiAgICBzdGFydDogbnVtYmVyLFxuICAgIGVuZDogbnVtYmVyLFxuICAgIGlzQXhpc1k6IGJvb2xlYW4gPSBmYWxzZVxuICApIHtcbiAgICBjb25zdCB0eXBlID0gaXNBeGlzWSA/IFBvQ2hhcnRUeXBlLkJhciA6IFBvQ2hhcnRUeXBlLkNvbHVtbjtcbiAgICBjb25zdCBiYXNlUG9zaXRpb24gPSB0aGlzLmF4aXNDb29yZGluYXRlc0ZvclZhbHVlWmVybyhyYW5nZSwgMCwgY29udGFpbmVyU2l6ZSwgaXNBeGlzWSk7XG4gICAgY29uc3QgY29vcmRpbmF0ZXMgPSB7XG4gICAgICBjb2x1bW46IHtcbiAgICAgICAgc3RhcnRYOiBzdGFydCxcbiAgICAgICAgZW5kWDogZW5kLFxuICAgICAgICBzdGFydFk6IGJhc2VQb3NpdGlvbixcbiAgICAgICAgZW5kWTogYmFzZVBvc2l0aW9uXG4gICAgICB9LFxuICAgICAgYmFyOiB7XG4gICAgICAgIHN0YXJ0WDogYmFzZVBvc2l0aW9uLFxuICAgICAgICBlbmRYOiBiYXNlUG9zaXRpb24sXG4gICAgICAgIHN0YXJ0WTogc3RhcnQsXG4gICAgICAgIGVuZFk6IGVuZFxuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29vcmRpbmF0ZXM6IGBNJHtjb29yZGluYXRlc1t0eXBlXS5zdGFydFh9ICR7Y29vcmRpbmF0ZXNbdHlwZV0uc3RhcnRZfSBMJHtjb29yZGluYXRlc1t0eXBlXS5lbmRYfSAke2Nvb3JkaW5hdGVzW3R5cGVdLmVuZFl9YFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGF4aXNDb29yZGluYXRlc0ZvclZhbHVlWmVybyhcbiAgICByYW5nZTogUG9DaGFydE1pbk1heFZhbHVlcyxcbiAgICBkYXRhOiBudW1iZXIsXG4gICAgY29udGFpbmVyU2l6ZTogUG9DaGFydENvbnRhaW5lclNpemUsXG4gICAgaXNBeGlzWTogYm9vbGVhblxuICApIHtcbiAgICBjb25zdCB7IGF4aXNYTGFiZWxXaWR0aCwgc3ZnV2lkdGgsIHN2Z1Bsb3R0aW5nQXJlYUhlaWdodCB9ID0gY29udGFpbmVyU2l6ZTtcbiAgICBjb25zdCByYXRpbyA9IHRoaXMubWF0aHNTZXJ2aWNlLmdldFNlcmllUGVyY2VudGFnZShyYW5nZSwgZGF0YSk7XG5cbiAgICByZXR1cm4gTWF0aC5mbG9vcihcbiAgICAgIGlzQXhpc1lcbiAgICAgICAgPyBheGlzWExhYmVsV2lkdGggKyAoc3ZnV2lkdGggLSBheGlzWExhYmVsV2lkdGgpICogcmF0aW9cbiAgICAgICAgOiBzdmdQbG90dGluZ0FyZWFIZWlnaHQgLSBzdmdQbG90dGluZ0FyZWFIZWlnaHQgKiByYXRpbyArIFBvQ2hhcnRQbG90QXJlYVBhZGRpbmdUb3BcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVBeGlzWExhYmVsQ29vcmRpbmF0ZXMoXG4gICAgYW1vdW50T2ZBeGlzWDogbnVtYmVyLFxuICAgIGNvbnRhaW5lclNpemU6IFBvQ2hhcnRDb250YWluZXJTaXplLFxuICAgIG1pbk1heEF4aXNWYWx1ZXM6IFBvQ2hhcnRNaW5NYXhWYWx1ZXMsXG4gICAgdHlwZTogUG9DaGFydFR5cGVcbiAgKSB7XG4gICAgdGhpcy5heGlzWExhYmVscyA9IHRoaXMuZ2V0QXhpc1hMYWJlbHModHlwZSwgbWluTWF4QXhpc1ZhbHVlcywgYW1vdW50T2ZBeGlzWCk7XG5cbiAgICB0aGlzLmF4aXNYTGFiZWxDb29yZGluYXRlcyA9IFsuLi5BcnJheShhbW91bnRPZkF4aXNYKV0ubWFwKChfLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBsYWJlbCA9IHRoaXMuYXhpc1hMYWJlbHNbaW5kZXhdO1xuICAgICAgY29uc3QgeENvb3JkaW5hdGUgPSB0aGlzLmNhbGN1bGF0ZUF4aXNYTGFiZWxYQ29vcmRpbmF0ZShjb250YWluZXJTaXplLmF4aXNYTGFiZWxXaWR0aCk7XG4gICAgICBjb25zdCB5Q29vcmRpbmF0ZSA9IHRoaXMuY2FsY3VsYXRlQXhpc1hMYWJlbFlDb29yZGluYXRlKGFtb3VudE9mQXhpc1gsIGNvbnRhaW5lclNpemUsIHR5cGUsIGluZGV4KTtcblxuICAgICAgcmV0dXJuIHsgbGFiZWwsIHhDb29yZGluYXRlLCB5Q29vcmRpbmF0ZSB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVBeGlzWUNvb3JkaW5hdGVzKFxuICAgIGFtb3VudE9mQXhpc1k6IG51bWJlcixcbiAgICBjb250YWluZXJTaXplOiBQb0NoYXJ0Q29udGFpbmVyU2l6ZSxcbiAgICB0eXBlOiBQb0NoYXJ0VHlwZSxcbiAgICByYW5nZTogUG9DaGFydE1pbk1heFZhbHVlc1xuICApIHtcbiAgICBjb25zdCBzdGFydFkgPSBQb0NoYXJ0UGxvdEFyZWFQYWRkaW5nVG9wO1xuICAgIGNvbnN0IGVuZFkgPSBjb250YWluZXJTaXplLnN2Z1Bsb3R0aW5nQXJlYUhlaWdodCArIFBvQ2hhcnRQbG90QXJlYVBhZGRpbmdUb3A7XG5cbiAgICAvLyB0cmF0YW1lbnRvIG5lY2Vzc8OhcmlvIHBhcmEgY3JpYXIgdW1hIGxpbmhhIGEgbWFpcyBwYXJhIGZlY2hhciBvIGdyw6FmaWNvXG4gICAgY29uc3QgbGVuZ3RoID0gYW1vdW50T2ZBeGlzWSA9PT0gMCB8fCB0eXBlID09PSBQb0NoYXJ0VHlwZS5CYXIgPyBhbW91bnRPZkF4aXNZIDogYW1vdW50T2ZBeGlzWSArIDE7XG5cbiAgICBsZXQgY29vcmRpbmF0ZXNSZWZlcmVkVG9aZXJvO1xuICAgIGxldCBjb29yZGluYXRlc0xpc3QgPSBbLi4uQXJyYXkobGVuZ3RoKV0ubWFwKChfLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCB4Q29vcmRpbmF0ZSA9IHRoaXMuY2FsY3VsYXRlQXhpc1lDb29yZGluYXRlWChjb250YWluZXJTaXplLCBhbW91bnRPZkF4aXNZLCBpbmRleCk7XG4gICAgICBjb25zdCBjb29yZGluYXRlcyA9IGBNJHt4Q29vcmRpbmF0ZX0gJHtzdGFydFl9IEwke3hDb29yZGluYXRlfSwgJHtlbmRZfWA7XG5cbiAgICAgIHJldHVybiB7IGNvb3JkaW5hdGVzIH07XG4gICAgfSk7XG5cbiAgICAvLyBBdmFsaWEgYSBuZWNlc3NpZGFkZSBkZSBhZGljaW9uYXIgYSBsaW5oYSByZWZlcmVudGUgYW8gdmFsb3IgemVybyBlbSBncsOhZmljb3MgZG8gdGlwbyBgYmFyYC5cbiAgICBpZiAodHlwZSA9PT0gUG9DaGFydFR5cGUuQmFyICYmIHJhbmdlLm1pblZhbHVlIDwgMCAmJiAhdGhpcy5heGlzWUxhYmVscy5pbmNsdWRlcygnMCcpKSB7XG4gICAgICBjb29yZGluYXRlc1JlZmVyZWRUb1plcm8gPSB0aGlzLmdldENvb3JkaW5hdGVzUmVsYXRlZFRvWmVybyhjb250YWluZXJTaXplLCByYW5nZSwgc3RhcnRZLCBlbmRZLCB0cnVlKTtcbiAgICAgIGNvb3JkaW5hdGVzTGlzdCA9IFsuLi5jb29yZGluYXRlc0xpc3QsIGNvb3JkaW5hdGVzUmVmZXJlZFRvWmVyb107XG4gICAgfVxuXG4gICAgdGhpcy5heGlzWUNvb3JkaW5hdGVzID0gWy4uLmNvb3JkaW5hdGVzTGlzdF07XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZUF4aXNZTGFiZWxDb29yZGluYXRlcyhcbiAgICBhbW91bnRPZkF4aXNZOiBudW1iZXIsXG4gICAgY29udGFpbmVyU2l6ZTogUG9DaGFydENvbnRhaW5lclNpemUsXG4gICAgbWluTWF4QXhpc1ZhbHVlczogUG9DaGFydE1pbk1heFZhbHVlcyxcbiAgICB0eXBlOiBQb0NoYXJ0VHlwZVxuICApIHtcbiAgICB0aGlzLmF4aXNZTGFiZWxzID0gdGhpcy5nZXRBeGlzWUxhYmVscyh0eXBlLCBtaW5NYXhBeGlzVmFsdWVzLCBhbW91bnRPZkF4aXNZKTtcblxuICAgIHRoaXMuYXhpc1lMYWJlbENvb3JkaW5hdGVzID0gWy4uLkFycmF5KGFtb3VudE9mQXhpc1kpXS5tYXAoKF8sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5heGlzWUxhYmVsc1tpbmRleF07XG5cbiAgICAgIGNvbnN0IHhDb29yZGluYXRlID0gdGhpcy5nZXRBeGlzWENvb3JkaW5hdGVzKGNvbnRhaW5lclNpemUsIGFtb3VudE9mQXhpc1ksIHR5cGUsIGluZGV4KTtcbiAgICAgIGNvbnN0IHlDb29yZGluYXRlID0gdGhpcy5jYWxjdWxhdGVBeGlzWUxhYmVsWUNvb3JkaW5hdGUoY29udGFpbmVyU2l6ZSk7XG5cbiAgICAgIHJldHVybiB7IGxhYmVsLCB4Q29vcmRpbmF0ZSwgeUNvb3JkaW5hdGUgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlQXhpc1hMYWJlbFhDb29yZGluYXRlKGF4aXNYTGFiZWxXaWR0aDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBsYWJlbFBvQ2hhcnRQYWRkaW5nID0gUG9DaGFydFBhZGRpbmcgLyAzO1xuXG4gICAgcmV0dXJuIGF4aXNYTGFiZWxXaWR0aCAtIGxhYmVsUG9DaGFydFBhZGRpbmc7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZUF4aXNYTGFiZWxZQ29vcmRpbmF0ZShcbiAgICBhbW91bnRPZkF4aXNYOiBudW1iZXIsXG4gICAgY29udGFpbmVyU2l6ZTogUG9DaGFydENvbnRhaW5lclNpemUsXG4gICAgdHlwZTogUG9DaGFydFR5cGUsXG4gICAgaW5kZXg6IG51bWJlclxuICApOiBudW1iZXIge1xuICAgIGNvbnN0IGFtb3VudE9mTGluZXMgPSB0eXBlID09PSBQb0NoYXJ0VHlwZS5CYXIgPyBhbW91bnRPZkF4aXNYIDogYW1vdW50T2ZBeGlzWCAtIDE7XG4gICAgY29uc3QgeVJhdGlvID0gaW5kZXggLyBhbW91bnRPZkxpbmVzO1xuXG4gICAgaWYgKHR5cGUgIT09IFBvQ2hhcnRUeXBlLkJhcikge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgY29udGFpbmVyU2l6ZS5zdmdQbG90dGluZ0FyZWFIZWlnaHQgLSBjb250YWluZXJTaXplLnN2Z1Bsb3R0aW5nQXJlYUhlaWdodCAqIHlSYXRpbyArIFBvQ2hhcnRQbG90QXJlYVBhZGRpbmdUb3BcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgaGFsZkNhdGVnb3J5SGVpZ2h0ID0gY29udGFpbmVyU2l6ZS5zdmdQbG90dGluZ0FyZWFIZWlnaHQgLyBhbW91bnRPZkF4aXNYIC8gMjtcbiAgICByZXR1cm4gKFxuICAgICAgY29udGFpbmVyU2l6ZS5zdmdQbG90dGluZ0FyZWFIZWlnaHQgLVxuICAgICAgaGFsZkNhdGVnb3J5SGVpZ2h0IC1cbiAgICAgIGNvbnRhaW5lclNpemUuc3ZnUGxvdHRpbmdBcmVhSGVpZ2h0ICogeVJhdGlvICtcbiAgICAgIFBvQ2hhcnRQbG90QXJlYVBhZGRpbmdUb3BcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVBeGlzWENvb3JkaW5hdGVZKGFtb3VudE9mQXhpc1g6IG51bWJlciwgY29udGFpbmVyU2l6ZTogUG9DaGFydENvbnRhaW5lclNpemUsIGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHlSYXRpbyA9IGluZGV4IC8gKGFtb3VudE9mQXhpc1ggLSAxKTtcblxuICAgIHJldHVybiAoXG4gICAgICBjb250YWluZXJTaXplLnN2Z1Bsb3R0aW5nQXJlYUhlaWdodCAtIGNvbnRhaW5lclNpemUuc3ZnUGxvdHRpbmdBcmVhSGVpZ2h0ICogeVJhdGlvICsgUG9DaGFydFBsb3RBcmVhUGFkZGluZ1RvcFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZUF4aXNZTGFiZWxZQ29vcmRpbmF0ZShjb250YWluZXJTaXplOiBQb0NoYXJ0Q29udGFpbmVyU2l6ZSk6IG51bWJlciB7XG4gICAgY29uc3QgdGV4dFBvQ2hhcnRQYWRkaW5nID0gUG9DaGFydFBhZGRpbmcgLyAzO1xuXG4gICAgcmV0dXJuIGNvbnRhaW5lclNpemUuc3ZnSGVpZ2h0IC0gdGV4dFBvQ2hhcnRQYWRkaW5nO1xuICB9XG5cbiAgcHJpdmF0ZSBjZW50ZXJlZEluQ2F0ZWdvcnlBcmVhKFxuICAgIGNvbnRhaW5lclNpemU6IFBvQ2hhcnRDb250YWluZXJTaXplLFxuICAgIGFtb3VudE9mQXhpc1k6IG51bWJlcixcbiAgICB0eXBlOiBQb0NoYXJ0VHlwZSxcbiAgICBpbmRleDogbnVtYmVyXG4gICk6IG51bWJlciB7XG4gICAgY29uc3QgYW1vdW50T2ZMaW5lcyA9IHR5cGUgPT09IFBvQ2hhcnRUeXBlLkJhciA/IGFtb3VudE9mQXhpc1kgLSAxIDogYW1vdW50T2ZBeGlzWTtcbiAgICBjb25zdCB4UmF0aW8gPSBpbmRleCAvIGFtb3VudE9mTGluZXM7XG5cbiAgICBpZiAodHlwZSA9PT0gUG9DaGFydFR5cGUuQmFyKSB7XG4gICAgICByZXR1cm4gTWF0aC5yb3VuZChcbiAgICAgICAgY29udGFpbmVyU2l6ZS5heGlzWExhYmVsV2lkdGggKyAoY29udGFpbmVyU2l6ZS5zdmdXaWR0aCAtIGNvbnRhaW5lclNpemUuYXhpc1hMYWJlbFdpZHRoKSAqIHhSYXRpb1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBoYWxmQ2F0ZWdvcnlXaWR0aCA9IChjb250YWluZXJTaXplLnN2Z1dpZHRoIC0gY29udGFpbmVyU2l6ZS5heGlzWExhYmVsV2lkdGgpIC8gYW1vdW50T2ZBeGlzWSAvIDI7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoXG4gICAgICBjb250YWluZXJTaXplLmF4aXNYTGFiZWxXaWR0aCArXG4gICAgICAgIGhhbGZDYXRlZ29yeVdpZHRoICtcbiAgICAgICAgKGNvbnRhaW5lclNpemUuc3ZnV2lkdGggLSBjb250YWluZXJTaXplLmF4aXNYTGFiZWxXaWR0aCkgKiB4UmF0aW9cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVBeGlzWUNvb3JkaW5hdGVYKFxuICAgIGNvbnRhaW5lclNpemU6IFBvQ2hhcnRDb250YWluZXJTaXplLFxuICAgIGFtb3VudE9mQXhpc1k6IG51bWJlcixcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIHN1YnRyYWN0Q2F0ZWdvcnlXaWR0aDogYm9vbGVhbiA9IGZhbHNlXG4gICk6IG51bWJlciB7XG4gICAgY29uc3QgYW1vdW50T2ZMaW5lcyA9IHRoaXMuYWxpZ25CeVRoZUNvcm5lcnMgPyBhbW91bnRPZkF4aXNZIC0gMSA6IGFtb3VudE9mQXhpc1k7XG4gICAgY29uc3QgaGFsZkNhdGVnb3J5V2lkdGggPVxuICAgICAgdGhpcy5hbGlnbkJ5VGhlQ29ybmVycyAmJiBzdWJ0cmFjdENhdGVnb3J5V2lkdGhcbiAgICAgICAgPyAoY29udGFpbmVyU2l6ZS5zdmdXaWR0aCAtIGNvbnRhaW5lclNpemUuYXhpc1hMYWJlbFdpZHRoKSAvIChhbW91bnRPZkF4aXNZIC0gMSkgLyAyXG4gICAgICAgIDogMDtcbiAgICBjb25zdCBkaXZpZGVJbmRleEJ5QW1vdW50T2ZMaW5lcyA9IGluZGV4IC8gYW1vdW50T2ZMaW5lcztcbiAgICBjb25zdCB4UmF0aW8gPSBkaXZpZGVJbmRleEJ5QW1vdW50T2ZMaW5lcyA9PT0gSW5maW5pdHkgPyAwIDogZGl2aWRlSW5kZXhCeUFtb3VudE9mTGluZXM7XG5cbiAgICByZXR1cm4gTWF0aC5yb3VuZChcbiAgICAgIGNvbnRhaW5lclNpemUuYXhpc1hMYWJlbFdpZHRoICtcbiAgICAgICAgKGNvbnRhaW5lclNpemUuc3ZnV2lkdGggLSBjb250YWluZXJTaXplLmF4aXNYTGFiZWxXaWR0aCkgKiB4UmF0aW8gLVxuICAgICAgICBoYWxmQ2F0ZWdvcnlXaWR0aFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQXhpc09wdGlvbnMob3B0aW9uczogUG9DaGFydEF4aXNPcHRpb25zID0ge30pOiB2b2lkIHtcbiAgICB0aGlzLmdyaWRMaW5lcyA9XG4gICAgICBvcHRpb25zLmdyaWRMaW5lcyAmJiB0aGlzLmlzVmFsaWRHcmlkTGluZXNMZW5ndGhPcHRpb24ob3B0aW9ucy5ncmlkTGluZXMpID8gb3B0aW9ucy5ncmlkTGluZXMgOiBQb0NoYXJ0R3JpZExpbmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhblVwQ29vcmRpbmF0ZXMoKSB7XG4gICAgdGhpcy5heGlzWENvb3JkaW5hdGVzID0gW107XG4gICAgdGhpcy5heGlzWUNvb3JkaW5hdGVzID0gW107XG4gICAgdGhpcy5heGlzWExhYmVsQ29vcmRpbmF0ZXMgPSBbXTtcbiAgICB0aGlzLmF4aXNZTGFiZWxDb29yZGluYXRlcyA9IFtdO1xuICAgIHRoaXMuc2VyaWVzTGVuZ3RoID0gMDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXhpc1hDb29yZGluYXRlcyhcbiAgICBjb250YWluZXJTaXplOiBQb0NoYXJ0Q29udGFpbmVyU2l6ZSxcbiAgICBhbW91bnRPZkF4aXNZOiBudW1iZXIsXG4gICAgdHlwZTogUG9DaGFydFR5cGUsXG4gICAgaW5kZXg6IG51bWJlclxuICApOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmFsaWduQnlUaGVDb3JuZXJzXG4gICAgICA/IHRoaXMuY2FsY3VsYXRlQXhpc1lDb29yZGluYXRlWChjb250YWluZXJTaXplLCBhbW91bnRPZkF4aXNZLCBpbmRleClcbiAgICAgIDogdGhpcy5jZW50ZXJlZEluQ2F0ZWdvcnlBcmVhKGNvbnRhaW5lclNpemUsIGFtb3VudE9mQXhpc1ksIHR5cGUsIGluZGV4KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2F0ZWdvcmllc1JhbmdlRm9yTW91c2VNb3ZlKGFtb3VudE9mQXhpc1k6IG51bWJlciwgY29udGFpbmVyU2l6ZTogUG9DaGFydENvbnRhaW5lclNpemUpIHtcbiAgICBjb25zdCBjYXRlZ29yaWVzQ29vcmRpbmF0ZXMgPSBbLi4uQXJyYXkoYW1vdW50T2ZBeGlzWSldLm1hcCgoXywgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgIHRoaXMuY2FsY3VsYXRlQXhpc1lDb29yZGluYXRlWChjb250YWluZXJTaXplLCBhbW91bnRPZkF4aXNZLCBpbmRleCwgdHJ1ZSlcbiAgICApO1xuXG4gICAgdGhpcy5jYXRlZ29yaWVzQ29vcmRpbmF0ZXMuZW1pdChjYXRlZ29yaWVzQ29vcmRpbmF0ZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkR3JpZExpbmVzTGVuZ3RoT3B0aW9uKGdyaWRMaW5lczogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGdyaWRMaW5lcyA+PSAyICYmIGdyaWRMaW5lcyA8PSAxMDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXhpc1hMYWJlbHModHlwZTogUG9DaGFydFR5cGUsIG1pbk1heEF4aXNWYWx1ZXM6IFBvQ2hhcnRNaW5NYXhWYWx1ZXMsIGFtb3VudE9mQXhpc1g6IG51bWJlcikge1xuICAgIGlmICh0eXBlID09PSBQb0NoYXJ0VHlwZS5CYXIpIHtcbiAgICAgIGNvbnN0IGF4aXNYTGFiZWxzTGlzdCA9IHRoaXMuZm9ybWF0Q2F0ZWdvcmllc0xhYmVscyhhbW91bnRPZkF4aXNYLCB0aGlzLmNhdGVnb3JpZXMpO1xuICAgICAgcmV0dXJuIGF4aXNYTGFiZWxzTGlzdC5yZXZlcnNlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVBdmVyYWdlT2ZMYWJlbHMobWluTWF4QXhpc1ZhbHVlcywgYW1vdW50T2ZBeGlzWCk7XG4gIH1cblxuICBwcml2YXRlIGdldEF4aXNZTGFiZWxzKHR5cGU6IFBvQ2hhcnRUeXBlLCBtaW5NYXhBeGlzVmFsdWVzOiBQb0NoYXJ0TWluTWF4VmFsdWVzLCBhbW91bnRPZkF4aXNYOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdHlwZSA9PT0gUG9DaGFydFR5cGUuQmFyXG4gICAgICA/IHRoaXMuZ2VuZXJhdGVBdmVyYWdlT2ZMYWJlbHMobWluTWF4QXhpc1ZhbHVlcywgYW1vdW50T2ZBeGlzWClcbiAgICAgIDogdGhpcy5mb3JtYXRDYXRlZ29yaWVzTGFiZWxzKGFtb3VudE9mQXhpc1gsIHRoaXMuY2F0ZWdvcmllcyk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdENhdGVnb3JpZXNMYWJlbHMoYW1vdW50T2ZBeGlzWDogbnVtYmVyLCBjYXRlZ29yaWVzOiBBcnJheTxzdHJpbmc+ID0gW10pIHtcbiAgICByZXR1cm4gWy4uLkFycmF5KGFtb3VudE9mQXhpc1gpXS5tYXAoKF8sIGluZGV4OiBudW1iZXIpID0+IGNhdGVnb3JpZXNbaW5kZXhdID8/ICctJyk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQXZlcmFnZU9mTGFiZWxzKG1pbk1heEF4aXNWYWx1ZXM6IFBvQ2hhcnRNaW5NYXhWYWx1ZXMsIGFtb3VudE9mQXhpc0xpbmVzOiBudW1iZXIpIHtcbiAgICBjb25zdCBhdmVyYWdlTGFiZWxzTGlzdCA9IHRoaXMubWF0aHNTZXJ2aWNlLnJhbmdlKG1pbk1heEF4aXNWYWx1ZXMsIGFtb3VudE9mQXhpc0xpbmVzKTtcblxuICAgIHJldHVybiBhdmVyYWdlTGFiZWxzTGlzdC5tYXAobGFiZWwgPT4ge1xuICAgICAgY29uc3QgZm9ybWF0dGVkRGlnaXQgPSBsYWJlbC50b0ZpeGVkKGxhYmVsICUgMSAmJiAyKTtcbiAgICAgIC8vIFJlbW92ZSBkw61naXRvcyBjb20gemVyby5cbiAgICAgIC8vIFRhbWLDqW0gdHJhdGEgY2FzbyBxdWFuZG8gbyB2YWxvciByZXRvcm5hZG8gZXJhIC0wLCBzdWJzdGl0dWluZG8tbyBwb3IgMC5cbiAgICAgIGNvbnN0IHJlbW92ZVplcm9EaWdpdHMgPSBmb3JtYXR0ZWREaWdpdC5yZXBsYWNlKC9cXC4wMCQvLCAnJykucmVwbGFjZSgvXFwtMCQvLCAwKTtcblxuICAgICAgcmV0dXJuIHJlbW92ZVplcm9EaWdpdHMudG9TdHJpbmcoKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { PoChartGridLines, PoChartPadding, PoChartPlotAreaPaddingTop } from '../../helpers/po-chart-default-values.constant';
3
+ import { PoChartMathsService } from '../../services/po-chart-maths.service';
4
+ import { PoChartType } from '../../enums/po-chart-type.enum';
5
+ export class PoChartAxisComponent {
6
+ constructor(mathsService) {
7
+ this.mathsService = mathsService;
8
+ this.alignByTheCorners = false;
9
+ this.categoriesCoordinates = new EventEmitter();
10
+ this.axisXLabels = [];
11
+ this.axisYLabels = [];
12
+ this.gridLines = PoChartGridLines;
13
+ this.seriesLength = 0;
14
+ this._categories = [];
15
+ this._containerSize = {};
16
+ this._series = [];
17
+ }
18
+ set series(seriesList) {
19
+ const seriesDataArrayFilter = seriesList.filter(serie => Array.isArray(serie.data));
20
+ if (seriesDataArrayFilter.length) {
21
+ this._series = seriesDataArrayFilter;
22
+ this.seriesLength = this.mathsService.seriesGreaterLength(this.series);
23
+ this.checkAxisOptions(this.axisOptions);
24
+ this.setAxisXCoordinates(this.gridLines, this.seriesLength, this.containerSize, this.range, this.type);
25
+ this.setAxisYCoordinates(this.gridLines, this.seriesLength, this.containerSize, this.range, this.type);
26
+ }
27
+ else {
28
+ this._series = [];
29
+ this.cleanUpCoordinates();
30
+ }
31
+ }
32
+ get series() {
33
+ return this._series;
34
+ }
35
+ set categories(value) {
36
+ this._categories = value;
37
+ if (this.type === PoChartType.Bar) {
38
+ this.setAxisXCoordinates(this.gridLines, this.seriesLength, this.containerSize, this.range, this.type);
39
+ }
40
+ else {
41
+ this.setAxisYCoordinates(this.gridLines, this.seriesLength, this.containerSize, this.range, this.type);
42
+ }
43
+ }
44
+ get categories() {
45
+ return this._categories;
46
+ }
47
+ set containerSize(value) {
48
+ this._containerSize = value;
49
+ this.checkAxisOptions(this.axisOptions);
50
+ this.setAxisXCoordinates(this.gridLines, this.seriesLength, this._containerSize, this.range, this.type);
51
+ this.setAxisYCoordinates(this.gridLines, this.seriesLength, this._containerSize, this.range, this.type);
52
+ }
53
+ get containerSize() {
54
+ return this._containerSize;
55
+ }
56
+ set axisOptions(value) {
57
+ this._axisOptions = value;
58
+ this.checkAxisOptions(this._axisOptions);
59
+ if (this.type === PoChartType.Bar) {
60
+ this.setAxisYCoordinates(this.gridLines, this.seriesLength, this.containerSize, this.range, this.type);
61
+ }
62
+ else {
63
+ this.setAxisXCoordinates(this.gridLines, this.seriesLength, this.containerSize, this.range, this.type);
64
+ }
65
+ }
66
+ get axisOptions() {
67
+ return this._axisOptions;
68
+ }
69
+ setAxisXCoordinates(gridLines, seriesLength, containerSize, minMaxAxisValues, type) {
70
+ if (seriesLength) {
71
+ const amountOfAxisLabels = type === PoChartType.Bar ? seriesLength : gridLines;
72
+ this.calculateAxisXLabelCoordinates(amountOfAxisLabels, containerSize, minMaxAxisValues, type);
73
+ }
74
+ const amountOfAxisXLines = this.amountOfAxisXLines(seriesLength, gridLines, type);
75
+ this.calculateAxisXCoordinates(amountOfAxisXLines, containerSize, minMaxAxisValues);
76
+ }
77
+ amountOfAxisXLines(seriesLength, gridLines, type) {
78
+ if (type === PoChartType.Bar) {
79
+ return seriesLength <= 1 ? 2 : seriesLength + 1;
80
+ }
81
+ return gridLines === 0 ? 1 : gridLines;
82
+ }
83
+ setAxisYCoordinates(gridLines, seriesLength, containerSize, minMaxAxisValues, type) {
84
+ const amountOfAxisY = type === PoChartType.Bar ? gridLines : seriesLength;
85
+ if (seriesLength) {
86
+ this.calculateAxisYLabelCoordinates(amountOfAxisY, containerSize, minMaxAxisValues, type);
87
+ }
88
+ if (type === PoChartType.Area) {
89
+ this.getCategoriesRangeForMouseMove(amountOfAxisY, containerSize);
90
+ }
91
+ this.calculateAxisYCoordinates(amountOfAxisY, containerSize, type, minMaxAxisValues);
92
+ }
93
+ calculateAxisXCoordinates(amountOfAxisX, containerSize, range) {
94
+ const startX = containerSize.axisXLabelWidth;
95
+ const endX = containerSize.svgWidth;
96
+ let coordinatesReferedToZero;
97
+ let coordinatesList = [...Array(amountOfAxisX)].map((_, index) => {
98
+ const yCoordinate = this.calculateAxisXCoordinateY(amountOfAxisX, containerSize, index);
99
+ const coordinates = `M${startX} ${yCoordinate} L${endX}, ${yCoordinate}`;
100
+ return { coordinates };
101
+ });
102
+ // Avalia a necessidade de adicionar a linha referente ao valor zero em gráficos do tipo `column`, `area` e `line`.
103
+ if (this.type !== PoChartType.Bar && range.minValue < 0 && !this.axisXLabels.includes('0')) {
104
+ coordinatesReferedToZero = this.getCoordinatesRelatedToZero(containerSize, range, startX, endX);
105
+ coordinatesList = [...coordinatesList, coordinatesReferedToZero];
106
+ }
107
+ this.axisXCoordinates = coordinatesList;
108
+ }
109
+ getCoordinatesRelatedToZero(containerSize, range, start, end, isAxisY = false) {
110
+ const type = isAxisY ? PoChartType.Bar : PoChartType.Column;
111
+ const basePosition = this.axisCoordinatesForValueZero(range, 0, containerSize, isAxisY);
112
+ const coordinates = {
113
+ column: {
114
+ startX: start,
115
+ endX: end,
116
+ startY: basePosition,
117
+ endY: basePosition
118
+ },
119
+ bar: {
120
+ startX: basePosition,
121
+ endX: basePosition,
122
+ startY: start,
123
+ endY: end
124
+ }
125
+ };
126
+ return {
127
+ coordinates: `M${coordinates[type].startX} ${coordinates[type].startY} L${coordinates[type].endX} ${coordinates[type].endY}`
128
+ };
129
+ }
130
+ axisCoordinatesForValueZero(range, data, containerSize, isAxisY) {
131
+ const { axisXLabelWidth, svgWidth, svgPlottingAreaHeight } = containerSize;
132
+ const ratio = this.mathsService.getSeriePercentage(range, data);
133
+ return Math.floor(isAxisY
134
+ ? axisXLabelWidth + (svgWidth - axisXLabelWidth) * ratio
135
+ : svgPlottingAreaHeight - svgPlottingAreaHeight * ratio + PoChartPlotAreaPaddingTop);
136
+ }
137
+ calculateAxisXLabelCoordinates(amountOfAxisX, containerSize, minMaxAxisValues, type) {
138
+ this.axisXLabels = this.getAxisXLabels(type, minMaxAxisValues, amountOfAxisX);
139
+ this.axisXLabelCoordinates = [...Array(amountOfAxisX)].map((_, index) => {
140
+ const label = this.axisXLabels[index];
141
+ const xCoordinate = this.calculateAxisXLabelXCoordinate(containerSize.axisXLabelWidth);
142
+ const yCoordinate = this.calculateAxisXLabelYCoordinate(amountOfAxisX, containerSize, type, index);
143
+ return { label, xCoordinate, yCoordinate };
144
+ });
145
+ }
146
+ calculateAxisYCoordinates(amountOfAxisY, containerSize, type, range) {
147
+ const startY = PoChartPlotAreaPaddingTop;
148
+ const endY = containerSize.svgPlottingAreaHeight + PoChartPlotAreaPaddingTop;
149
+ // tratamento necessário para criar uma linha a mais para fechar o gráfico
150
+ const length = amountOfAxisY === 0 || type === PoChartType.Bar ? amountOfAxisY : amountOfAxisY + 1;
151
+ let coordinatesReferedToZero;
152
+ let coordinatesList = [...Array(length)].map((_, index) => {
153
+ const xCoordinate = this.calculateAxisYCoordinateX(containerSize, amountOfAxisY, index);
154
+ const coordinates = `M${xCoordinate} ${startY} L${xCoordinate}, ${endY}`;
155
+ return { coordinates };
156
+ });
157
+ // Avalia a necessidade de adicionar a linha referente ao valor zero em gráficos do tipo `bar`.
158
+ if (type === PoChartType.Bar && range.minValue < 0 && !this.axisYLabels.includes('0')) {
159
+ coordinatesReferedToZero = this.getCoordinatesRelatedToZero(containerSize, range, startY, endY, true);
160
+ coordinatesList = [...coordinatesList, coordinatesReferedToZero];
161
+ }
162
+ this.axisYCoordinates = [...coordinatesList];
163
+ }
164
+ calculateAxisYLabelCoordinates(amountOfAxisY, containerSize, minMaxAxisValues, type) {
165
+ this.axisYLabels = this.getAxisYLabels(type, minMaxAxisValues, amountOfAxisY);
166
+ this.axisYLabelCoordinates = [...Array(amountOfAxisY)].map((_, index) => {
167
+ const label = this.axisYLabels[index];
168
+ const xCoordinate = this.getAxisXCoordinates(containerSize, amountOfAxisY, type, index);
169
+ const yCoordinate = this.calculateAxisYLabelYCoordinate(containerSize);
170
+ return { label, xCoordinate, yCoordinate };
171
+ });
172
+ }
173
+ calculateAxisXLabelXCoordinate(axisXLabelWidth) {
174
+ const labelPoChartPadding = PoChartPadding / 3;
175
+ return axisXLabelWidth - labelPoChartPadding;
176
+ }
177
+ calculateAxisXLabelYCoordinate(amountOfAxisX, containerSize, type, index) {
178
+ const amountOfLines = type === PoChartType.Bar ? amountOfAxisX : amountOfAxisX - 1;
179
+ const yRatio = index / amountOfLines;
180
+ if (type !== PoChartType.Bar) {
181
+ return (containerSize.svgPlottingAreaHeight - containerSize.svgPlottingAreaHeight * yRatio + PoChartPlotAreaPaddingTop);
182
+ }
183
+ const halfCategoryHeight = containerSize.svgPlottingAreaHeight / amountOfAxisX / 2;
184
+ return (containerSize.svgPlottingAreaHeight -
185
+ halfCategoryHeight -
186
+ containerSize.svgPlottingAreaHeight * yRatio +
187
+ PoChartPlotAreaPaddingTop);
188
+ }
189
+ calculateAxisXCoordinateY(amountOfAxisX, containerSize, index) {
190
+ const yRatio = index / (amountOfAxisX - 1);
191
+ return (containerSize.svgPlottingAreaHeight - containerSize.svgPlottingAreaHeight * yRatio + PoChartPlotAreaPaddingTop);
192
+ }
193
+ calculateAxisYLabelYCoordinate(containerSize) {
194
+ const textPoChartPadding = PoChartPadding / 3;
195
+ return containerSize.svgHeight - textPoChartPadding;
196
+ }
197
+ centeredInCategoryArea(containerSize, amountOfAxisY, type, index) {
198
+ const amountOfLines = type === PoChartType.Bar ? amountOfAxisY - 1 : amountOfAxisY;
199
+ const xRatio = index / amountOfLines;
200
+ if (type === PoChartType.Bar) {
201
+ return Math.round(containerSize.axisXLabelWidth + (containerSize.svgWidth - containerSize.axisXLabelWidth) * xRatio);
202
+ }
203
+ const halfCategoryWidth = (containerSize.svgWidth - containerSize.axisXLabelWidth) / amountOfAxisY / 2;
204
+ return Math.round(containerSize.axisXLabelWidth +
205
+ halfCategoryWidth +
206
+ (containerSize.svgWidth - containerSize.axisXLabelWidth) * xRatio);
207
+ }
208
+ calculateAxisYCoordinateX(containerSize, amountOfAxisY, index, subtractCategoryWidth = false) {
209
+ const amountOfLines = this.alignByTheCorners ? amountOfAxisY - 1 : amountOfAxisY;
210
+ const halfCategoryWidth = this.alignByTheCorners && subtractCategoryWidth
211
+ ? (containerSize.svgWidth - containerSize.axisXLabelWidth) / (amountOfAxisY - 1) / 2
212
+ : 0;
213
+ const divideIndexByAmountOfLines = index / amountOfLines;
214
+ const xRatio = divideIndexByAmountOfLines === Infinity ? 0 : divideIndexByAmountOfLines;
215
+ return Math.round(containerSize.axisXLabelWidth +
216
+ (containerSize.svgWidth - containerSize.axisXLabelWidth) * xRatio -
217
+ halfCategoryWidth);
218
+ }
219
+ checkAxisOptions(options = {}) {
220
+ this.gridLines =
221
+ options.gridLines && this.isValidGridLinesLengthOption(options.gridLines) ? options.gridLines : PoChartGridLines;
222
+ }
223
+ cleanUpCoordinates() {
224
+ this.axisXCoordinates = [];
225
+ this.axisYCoordinates = [];
226
+ this.axisXLabelCoordinates = [];
227
+ this.axisYLabelCoordinates = [];
228
+ this.seriesLength = 0;
229
+ }
230
+ getAxisXCoordinates(containerSize, amountOfAxisY, type, index) {
231
+ return this.alignByTheCorners
232
+ ? this.calculateAxisYCoordinateX(containerSize, amountOfAxisY, index)
233
+ : this.centeredInCategoryArea(containerSize, amountOfAxisY, type, index);
234
+ }
235
+ getCategoriesRangeForMouseMove(amountOfAxisY, containerSize) {
236
+ const categoriesCoordinates = [...Array(amountOfAxisY)].map((_, index) => this.calculateAxisYCoordinateX(containerSize, amountOfAxisY, index, true));
237
+ this.categoriesCoordinates.emit(categoriesCoordinates);
238
+ }
239
+ isValidGridLinesLengthOption(gridLines) {
240
+ return gridLines >= 2 && gridLines <= 10;
241
+ }
242
+ getAxisXLabels(type, minMaxAxisValues, amountOfAxisX) {
243
+ if (type === PoChartType.Bar) {
244
+ const axisXLabelsList = this.formatCategoriesLabels(amountOfAxisX, this.categories);
245
+ return axisXLabelsList.reverse();
246
+ }
247
+ return this.generateAverageOfLabels(minMaxAxisValues, amountOfAxisX);
248
+ }
249
+ getAxisYLabels(type, minMaxAxisValues, amountOfAxisX) {
250
+ return type === PoChartType.Bar
251
+ ? this.generateAverageOfLabels(minMaxAxisValues, amountOfAxisX)
252
+ : this.formatCategoriesLabels(amountOfAxisX, this.categories);
253
+ }
254
+ formatCategoriesLabels(amountOfAxisX, categories = []) {
255
+ return [...Array(amountOfAxisX)].map((_, index) => { var _a; return (_a = categories[index]) !== null && _a !== void 0 ? _a : '-'; });
256
+ }
257
+ generateAverageOfLabels(minMaxAxisValues, amountOfAxisLines) {
258
+ const averageLabelsList = this.mathsService.range(minMaxAxisValues, amountOfAxisLines);
259
+ return averageLabelsList.map(label => {
260
+ const formattedDigit = label.toFixed(label % 1 && 2);
261
+ // Remove dígitos com zero.
262
+ // Também trata caso quando o valor retornado era -0, substituindo-o por 0.
263
+ const removeZeroDigits = formattedDigit.replace(/\.00$/, '').replace(/\-0$/, 0);
264
+ return removeZeroDigits.toString();
265
+ });
266
+ }
267
+ }
268
+ PoChartAxisComponent.decorators = [
269
+ { type: Component, args: [{
270
+ selector: '[po-chart-axis]',
271
+ template: "<svg:g po-chart-axis-path [p-axis-x-coordinates]=\"axisXCoordinates\" [p-axis-y-coordinates]=\"axisYCoordinates\"></svg:g>\r\n\r\n<svg:g po-chart-axis-label \r\n [p-align-by-the-corners]=\"alignByTheCorners\" \r\n [p-axis-x-label-coordinates]=\"axisXLabelCoordinates\" \r\n [p-axis-y-label-coordinates]=\"axisYLabelCoordinates\" \r\n [p-type]=\"type\"\r\n >\r\n</svg:g>"
272
+ },] }
273
+ ];
274
+ PoChartAxisComponent.ctorParameters = () => [
275
+ { type: PoChartMathsService }
276
+ ];
277
+ PoChartAxisComponent.propDecorators = {
278
+ alignByTheCorners: [{ type: Input, args: ['p-align-by-the-corners',] }],
279
+ type: [{ type: Input, args: ['p-type',] }],
280
+ range: [{ type: Input, args: ['p-range',] }],
281
+ categoriesCoordinates: [{ type: Output, args: ['p-categories-coordinates',] }],
282
+ series: [{ type: Input, args: ['p-series',] }],
283
+ categories: [{ type: Input, args: ['p-categories',] }],
284
+ containerSize: [{ type: Input, args: ['p-container-size',] }],
285
+ axisOptions: [{ type: Input, args: ['p-options',] }]
286
+ };
287
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tY2hhcnQtYXhpcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tY2hhcnQvcG8tY2hhcnQtY29udGFpbmVyL3BvLWNoYXJ0LWF4aXMvcG8tY2hhcnQtYXhpcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCx5QkFBeUIsRUFDMUIsTUFBTSxnREFBZ0QsQ0FBQztBQUV4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQU01RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFNN0QsTUFBTSxPQUFPLG9CQUFvQjtJQXNGL0IsWUFBb0IsWUFBaUM7UUFBakMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBckZwQixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFNaEMsMEJBQXFCLEdBQWdDLElBQUksWUFBWSxFQUFFLENBQUM7UUFPcEcsZ0JBQVcsR0FBa0IsRUFBRSxDQUFDO1FBQ2hDLGdCQUFXLEdBQWtCLEVBQUUsQ0FBQztRQUNoQyxjQUFTLEdBQVcsZ0JBQWdCLENBQUM7UUFDckMsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFHekIsZ0JBQVcsR0FBa0IsRUFBRSxDQUFDO1FBQ2hDLG1CQUFjLEdBQXlCLEVBQUUsQ0FBQztRQUMxQyxZQUFPLEdBQWUsRUFBRSxDQUFDO0lBZ0V1QixDQUFDO0lBOUR6RCxJQUF1QixNQUFNLENBQUMsVUFBc0I7UUFDbEQsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9B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b25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHtcclxuICBQb0NoYXJ0R3JpZExpbmVzLFxyXG4gIFBvQ2hhcnRQYWRkaW5nLFxyXG4gIFBvQ2hhcnRQbG90QXJlYVBhZGRpbmdUb3BcclxufSBmcm9tICcuLi8uLi9oZWxwZXJzL3BvLWNoYXJ0LWRlZmF1bHQtdmFsdWVzLmNvbnN0YW50JztcclxuXHJcbmltcG9ydCB7IFBvQ2hhcnRNYXRoc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1jaGFydC1tYXRocy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUG9DaGFydENvbnRhaW5lclNpemUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BvLWNoYXJ0LWNvbnRhaW5lci1zaXplLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFBvQ2hhcnRNaW5NYXhWYWx1ZXMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BvLWNoYXJ0LW1pbi1tYXgtdmFsdWVzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFBvQ2hhcnRQYXRoQ29vcmRpbmF0ZXMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BvLWNoYXJ0LXBhdGgtY29vcmRpbmF0ZXMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgUG9DaGFydExhYmVsQ29vcmRpbmF0ZXMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BvLWNoYXJ0LWxhYmVsLWNvb3JkaW5hdGVzLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFBvQ2hhcnRBeGlzT3B0aW9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcG8tY2hhcnQtYXhpcy1vcHRpb25zLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFBvQ2hhcnRUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvcG8tY2hhcnQtdHlwZS5lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnW3BvLWNoYXJ0LWF4aXNdJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcG8tY2hhcnQtYXhpcy5jb21wb25lbnQuc3ZnJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUG9DaGFydEF4aXNDb21wb25lbnQge1xyXG4gIEBJbnB1dCgncC1hbGlnbi1ieS10aGUtY29ybmVycycpIGFsaWduQnlUaGVDb3JuZXJzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgncC10eXBlJykgdHlwZTogUG9DaGFydFR5cGU7XHJcblxyXG4gIEBJbnB1dCgncC1yYW5nZScpIHJhbmdlOiBQb0NoYXJ0TWluTWF4VmFsdWVzO1xyXG5cclxuICBAT3V0cHV0KCdwLWNhdGVnb3JpZXMtY29vcmRpbmF0ZXMnKSBjYXRlZ29yaWVzQ29vcmRpbmF0ZXM6IEV2ZW50RW1pdHRlcjxBcnJheTxudW1iZXI+PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgYXhpc1hDb29yZGluYXRlczogQXJyYXk8UG9DaGFydFBhdGhDb29yZGluYXRlcz47XHJcbiAgYXhpc1hMYWJlbENvb3JkaW5hdGVzOiBBcnJheTxQb0NoYXJ0TGFiZWxDb29yZGluYXRlcz47XHJcbiAgYXhpc1lDb29yZGluYXRlczogQXJyYXk8UG9DaGFydFBhdGhDb29yZGluYXRlcz47XHJcbiAgYXhpc1lMYWJlbENvb3JkaW5hdGVzOiBBcnJheTxQb0NoYXJ0TGFiZWxDb29yZGluYXRlcz47XHJcblxyXG4gIHByaXZhdGUgYXhpc1hMYWJlbHM6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuICBwcml2YXRlIGF4aXNZTGFiZWxzOiBBcnJheTxzdHJpbmc+ID0gW107XHJcbiAgcHJpdmF0ZSBncmlkTGluZXM6IG51bWJlciA9IFBvQ2hhcnRHcmlkTGluZXM7XHJcbiAgcHJpdmF0ZSBzZXJpZXNMZW5ndGg6IG51bWJlciA9IDA7XHJcblxyXG4gIHByaXZhdGUgX2F4aXNPcHRpb25zOiBQb0NoYXJ0QXhpc09wdGlvbnM7XHJcbiAgcHJpdmF0ZSBfY2F0ZWdvcmllczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gIHByaXZhdGUgX2NvbnRhaW5lclNpemU6IFBvQ2hhcnRDb250YWluZXJTaXplID0ge307XHJcbiAgcHJpdmF0ZSBfc2VyaWVzOiBBcnJheTxhbnk+ID0gW107XHJcblxyXG4gIEBJbnB1dCgncC1zZXJpZXMnKSBzZXQgc2VyaWVzKHNlcmllc0xpc3Q6IEFycmF5PGFueT4pIHtcclxuICAgIGNvbnN0IHNlcmllc0RhdGFBcnJheUZpbHRlciA9IHNlcmllc0xpc3QuZmlsdGVyKHNlcmllID0+IEFycmF5LmlzQXJyYXkoc2VyaWUuZGF0YSkpO1xyXG5cclxuICAgIGlmIChzZXJpZXNEYXRhQXJyYXlGaWx0ZXIubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuX3NlcmllcyA9IHNlcmllc0RhdGFBcnJheUZpbHRlcjtcclxuXHJcbiAgICAgIHRoaXMuc2VyaWVzTGVuZ3RoID0gdGhpcy5tYXRoc1NlcnZpY2Uuc2VyaWVzR3JlYXRlckxlbmd0aCh0aGlzLnNlcmllcyk7XHJcbiAgICAgIHRoaXMuY2hlY2tBeGlzT3B0aW9ucyh0aGlzLmF4aXNPcHRpb25zKTtcclxuICAgICAgdGhpcy5zZXRBeGlzWENvb3JkaW5hdGVzKHRoaXMuZ3JpZExpbmVzLCB0aGlzLnNlcmllc0xlbmd0aCwgdGhpcy5jb250YWluZXJTaXplLCB0aGlzLnJhbmdlLCB0aGlzLnR5cGUpO1xyXG4gICAgICB0aGlzLnNldEF4aXNZQ29vcmRpbmF0ZXModGhpcy5ncmlkTGluZXMsIHRoaXMuc2VyaWVzTGVuZ3RoLCB0aGlzLmNvbnRhaW5lclNpemUsIHRoaXMucmFuZ2UsIHRoaXMudHlwZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9zZXJpZXMgPSBbXTtcclxuICAgICAgdGhpcy5jbGVhblVwQ29vcmRpbmF0ZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBzZXJpZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VyaWVzO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCdwLWNhdGVnb3JpZXMnKSBzZXQgY2F0ZWdvcmllcyh2YWx1ZTogQXJyYXk8c3RyaW5nPikge1xyXG4gICAgdGhpcy5fY2F0ZWdvcmllcyA9IHZhbHVlO1xyXG5cclxuICAgIGlmICh0aGlzLnR5cGUgPT09IFBvQ2hhcnRUeXBlLkJhcikge1xyXG4gICAgICB0aGlzLnNldEF4aXNYQ29vcmRpbmF0ZXModGhpcy5ncmlkTGluZXMsIHRoaXMuc2VyaWVzTGVuZ3RoLCB0aGlzLmNvbnRhaW5lclNpemUsIHRoaXMucmFuZ2UsIHRoaXMudHlwZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldEF4aXNZQ29vcmRpbmF0ZXModGhpcy5ncmlkTGluZXMsIHRoaXMuc2VyaWVzTGVuZ3RoLCB0aGlzLmNvbnRhaW5lclNpemUsIHRoaXMucmFuZ2UsIHRoaXMudHlwZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgY2F0ZWdvcmllcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9jYXRlZ29yaWVzO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCdwLWNvbnRhaW5lci1zaXplJykgc2V0IGNvbnRhaW5lclNpemUodmFsdWU6IFBvQ2hhcnRDb250YWluZXJTaXplKSB7XHJcbiAgICB0aGlzLl9jb250YWluZXJTaXplID0gdmFsdWU7XHJcblxyXG4gICAgdGhpcy5jaGVja0F4aXNPcHRpb25zKHRoaXMuYXhpc09wdGlvbnMpO1xyXG4gICAgdGhpcy5zZXRBeGlzWENvb3JkaW5hdGVzKHRoaXMuZ3JpZExpbmVzLCB0aGlzLnNlcmllc0xlbmd0aCwgdGhpcy5fY29udGFpbmVyU2l6ZSwgdGhpcy5yYW5nZSwgdGhpcy50eXBlKTtcclxuICAgIHRoaXMuc2V0QXhpc1lDb29yZGluYXRlcyh0aGlzLmdyaWRMaW5lcywgdGhpcy5zZXJpZXNMZW5ndGgsIHRoaXMuX2NvbnRhaW5lclNpemUsIHRoaXMucmFuZ2UsIHRoaXMudHlwZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgY29udGFpbmVyU2l6ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jb250YWluZXJTaXplO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCdwLW9wdGlvbnMnKSBzZXQgYXhpc09wdGlvbnModmFsdWU6IFBvQ2hhcnRBeGlzT3B0aW9ucykge1xyXG4gICAgdGhpcy5fYXhpc09wdGlvbnMgPSB2YWx1ZTtcclxuXHJcbiAgICB0aGlzLmNoZWNrQXhpc09wdGlvbnModGhpcy5fYXhpc09wdGlvbnMpO1xyXG5cclxuICAgIGlmICh0aGlzLnR5cGUgPT09IFBvQ2hhcnRUeXBlLkJhcikge1xyXG4gICAgICB0aGlzLnNldEF4aXNZQ29vcmRpbmF0ZXModGhpcy5ncmlkTGluZXMsIHRoaXMuc2VyaWVzTGVuZ3RoLCB0aGlzLmNvbnRhaW5lclNpemUsIHRoaXMucmFuZ2UsIHRoaXMudHlwZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldEF4aXNYQ29vcmRpbmF0ZXModGhpcy5ncmlkTGluZXMsIHRoaXMuc2VyaWVzTGVuZ3RoLCB0aGlzLmNvbnRhaW5lclNpemUsIHRoaXMucmFuZ2UsIHRoaXMudHlwZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgYXhpc09wdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXhpc09wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1hdGhzU2VydmljZTogUG9DaGFydE1hdGhzU2VydmljZSkge31cclxuXHJcbiAgcHJpdmF0ZSBzZXRBeGlzWENvb3JkaW5hdGVzKFxyXG4gICAgZ3JpZExpbmVzOiBudW1iZXIsXHJcbiAgICBzZXJpZXNMZW5ndGg6IG51bWJlcixcclxuICAgIGNvbnRhaW5lclNpemU6IFBvQ2hhcnRDb250YWluZXJTaXplLFxyXG4gICAgbWluTWF4QXhpc1ZhbHVlczogUG9DaGFydE1pbk1heFZhbHVlcyxcclxuICAgIHR5cGU6IFBvQ2hhcnRUeXBlXHJcbiAgKSB7XHJcbiAgICBpZiAoc2VyaWVzTGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IGFtb3VudE9mQXhpc0xhYmVscyA9IHR5cGUgPT09IFBvQ2hhcnRUeXBlLkJhciA/IHNlcmllc0xlbmd0aCA6IGdyaWRMaW5lcztcclxuICAgICAgdGhpcy5jYWxjdWxhdGVBeGlzWExhYmVsQ29vcmRpbmF0ZXMoYW1vdW50T2ZBeGlzTGFiZWxzLCBjb250YWluZXJTaXplLCBtaW5NYXhBeGlzVmFsdWVzLCB0eXBlKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhbW91bnRPZkF4aXNYTGluZXMgPSB0aGlzLmFtb3VudE9mQXhpc1hMaW5lcyhzZXJpZXNMZW5ndGgsIGdyaWRMaW5lcywgdHlwZSk7XHJcbiAgICB0aGlzLmNhbGN1bGF0ZUF4aXNYQ29vcmRpbmF0ZXMoYW1vdW50T2ZBeGlzWExpbmVzLCBjb250YWluZXJTaXplLCBtaW5NYXhBeGlzVmFsdWVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYW1vdW50T2ZBeGlzWExpbmVzKHNlcmllc0xlbmd0aDogbnVtYmVyLCBncmlkTGluZXM6IG51bWJlciwgdHlwZTogUG9DaGFydFR5cGUpOiBudW1iZXIge1xyXG4gICAgaWYgKHR5cGUgPT09IFBvQ2hhcnRUeXBlLkJhcikge1xyXG4gICAgICByZXR1cm4gc2VyaWVzTGVuZ3RoIDw9IDEgPyAyIDogc2VyaWVzTGVuZ3RoICsgMTtcclxuICAgIH1cclxuICAgIHJldHVybiBncmlkTGluZXMgPT09IDAgPyAxIDogZ3JpZExpbmVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRBeGlzWUNvb3JkaW5hdGVzKFxyXG4gICAgZ3JpZExpbmVzOiBudW1iZXIsXHJcbiAgICBzZXJpZXNMZW5ndGg6IG51bWJlcixcclxuICAgIGNvbnRhaW5lclNpemU6IFBvQ2hhcnRDb250YWluZXJTaXplLFxyXG4gICAgbWluTWF4QXhpc1ZhbHVlczogUG9DaGFydE1pbk1heFZhbHVlcyxcclxuICAgIHR5cGU6IFBvQ2hhcnRUeXBlXHJcbiAgKSB7XHJcbiAgICBjb25zdCBhbW91bnRPZkF4aXNZID0gdHlwZSA9PT0gUG9DaGFydFR5cGUuQmFyID8gZ3JpZExpbmVzIDogc2VyaWVzTGVuZ3RoO1xyXG5cclxuICAgIGlmIChzZXJpZXNMZW5ndGgpIHtcclxuICAgICAgdGhpcy5jYWxjdWxhdGVBeGlzWUxhYmVsQ29vcmRpbmF0ZXMoYW1vdW50T2ZBeGlzWSwgY29udGFpbmVyU2l6ZSwgbWluTWF4QXhpc1ZhbHVlcywgdHlwZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGUgPT09IFBvQ2hhcnRUeXBlLkFyZWEpIHtcclxuICAgICAgdGhpcy5nZXRDYXRlZ29yaWVzUmFuZ2VGb3JNb3VzZU1vdmUoYW1vdW50T2ZBeGlzWSwgY29udGFpbmVyU2l6ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jYWxjdWxhdGVBeGlzWUNvb3JkaW5hdGVzKGFtb3VudE9mQXhpc1ksIGNvbnRhaW5lclNpemUsIHR5cGUsIG1pbk1heEF4aXNWYWx1ZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVBeGlzWENvb3JkaW5hdGVzKFxyXG4gICAgYW1vdW50T2ZBeGlzWDogbnVtYmVyLFxyXG4gICAgY29udGFpbmVyU2l6ZTogUG9DaGFydENvbnRhaW5lclNpemUsXHJcbiAgICByYW5nZTogUG9DaGFydE1pbk1heFZhbHVlc1xyXG4gICkge1xyXG4gICAgY29uc3Qgc3RhcnRYID0gY29udGFpbmVyU2l6ZS5heGlzWExhYmVsV2lkdGg7XHJcbiAgICBjb25zdCBlbmRYID0gY29udGFpbmVyU2l6ZS5zdmdXaWR0aDtcclxuXHJcbiAgICBsZXQgY29vcmRpbmF0ZXNSZWZlcmVkVG9aZXJvO1xyXG4gICAgbGV0IGNvb3JkaW5hdGVzTGlzdCA9IFsuLi5BcnJheShhbW91bnRPZkF4aXNYKV0ubWFwKChfLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGNvbnN0IHlDb29yZGluYXRlID0gdGhpcy5jYWxjdWxhdGVBeGlzWENvb3JkaW5hdGVZKGFtb3VudE9mQXhpc1gsIGNvbnRhaW5lclNpemUsIGluZGV4KTtcclxuICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBgTSR7c3RhcnRYfSAke3lDb29yZGluYXRlfSBMJHtlbmRYfSwgJHt5Q29vcmRpbmF0ZX1gO1xyXG5cclxuICAgICAgcmV0dXJuIHsgY29vcmRpbmF0ZXMgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIEF2YWxpYSBhIG5lY2Vzc2lkYWRlIGRlIGFkaWNpb25hciBhIGxpbmhhIHJlZmVyZW50ZSBhbyB2YWxvciB6ZXJvIGVtIGdyw6FmaWNvcyBkbyB0aXBvIGBjb2x1bW5gLCBgYXJlYWAgZSBgbGluZWAuXHJcbiAgICBpZiAodGhpcy50eXBlICE9PSBQb0NoYXJ0VHlwZS5CYXIgJiYgcmFuZ2UubWluVmFsdWUgPCAwICYmICF0aGlzLmF4aXNYTGFiZWxzLmluY2x1ZGVzKCcwJykpIHtcclxuICAgICAgY29vcmRpbmF0ZXNSZWZlcmVkVG9aZXJvID0gdGhpcy5nZXRDb29yZGluYXRlc1JlbGF0ZWRUb1plcm8oY29udGFpbmVyU2l6ZSwgcmFuZ2UsIHN0YXJ0WCwgZW5kWCk7XHJcbiAgICAgIGNvb3JkaW5hdGVzTGlzdCA9IFsuLi5jb29yZGluYXRlc0xpc3QsIGNvb3JkaW5hdGVzUmVmZXJlZFRvWmVyb107XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5heGlzWENvb3JkaW5hdGVzID0gY29vcmRpbmF0ZXNMaXN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDb29yZGluYXRlc1JlbGF0ZWRUb1plcm8oXHJcbiAgICBjb250YWluZXJTaXplOiBQb0NoYXJ0Q29udGFpbmVyU2l6ZSxcclxuICAgIHJhbmdlOiBQb0NoYXJ0TWluTWF4VmFsdWVzLFxyXG4gICAgc3RhcnQ6IG51bWJlcixcclxuICAgIGVuZDogbnVtYmVyLFxyXG4gICAgaXNBeGlzWTogYm9vbGVhbiA9IGZhbHNlXHJcbiAgKSB7XHJcbiAgICBjb25zdCB0eXBlID0gaXNBeGlzWSA/IFBvQ2hhcnRUeXBlLkJhciA6IFBvQ2hhcnRUeXBlLkNvbHVtbjtcclxuICAgIGNvbnN0IGJhc2VQb3NpdGlvbiA9IHRoaXMuYXhpc0Nvb3JkaW5hdGVzRm9yVmFsdWVaZXJvKHJhbmdlLCAwLCBjb250YWluZXJTaXplLCBpc0F4aXNZKTtcclxuICAgIGNvbnN0IGNvb3JkaW5hdGVzID0ge1xyXG4gICAgICBjb2x1bW46IHtcclxuICAgICAgICBzdGFydFg6IHN0YXJ0LFxyXG4gICAgICAgIGVuZFg6IGVuZCxcclxuICAgICAgICBzdGFydFk6IGJhc2VQb3NpdGlvbixcclxuICAgICAgICBlbmRZOiBiYXNlUG9zaXRpb25cclxuICAgICAgfSxcclxuICAgICAgYmFyOiB7XHJcbiAgICAgICAgc3RhcnRYOiBiYXNlUG9zaXRpb24sXHJcbiAgICAgICAgZW5kWDogYmFzZVBvc2l0aW9uLFxyXG4gICAgICAgIHN0YXJ0WTogc3RhcnQsXHJcbiAgICAgICAgZW5kWTogZW5kXHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY29vcmRpbmF0ZXM6IGBNJHtjb29yZGluYXRlc1t0eXBlXS5zdGFydFh9ICR7Y29vcmRpbmF0ZXNbdHlwZV0uc3RhcnRZfSBMJHtjb29yZGluYXRlc1t0eXBlXS5lbmRYfSAke2Nvb3JkaW5hdGVzW3R5cGVdLmVuZFl9YFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXhpc0Nvb3JkaW5hdGVzRm9yVmFsdWVaZXJvKFxyXG4gICAgcmFuZ2U6IFBvQ2hhcnRNaW5NYXhWYWx1ZXMsXHJcbiAgICBkYXRhOiBudW1iZXIsXHJcbiAgICBjb250YWluZXJTaXplOiBQb0NoYXJ0Q29udGFpbmVyU2l6ZSxcclxuICAgIGlzQXhpc1k6IGJvb2xlYW5cclxuICApIHtcclxuICAgIGNvbnN0IHsgYXhpc1hMYWJlbFdpZHRoLCBzdmdXaWR0aCwgc3ZnUGxvdHRpbmdBcmVhSGVpZ2h0IH0gPSBjb250YWluZXJTaXplO1xyXG4gICAgY29uc3QgcmF0aW8gPSB0aGlzLm1hdGhzU2VydmljZS5nZXRTZXJpZVBlcmNlbnRhZ2UocmFuZ2UsIGRhdGEpO1xyXG5cclxuICAgIHJldHVybiBNYXRoLmZsb29yKFxyXG4gICAgICBpc0F4aXNZXHJcbiAgICAgICAgPyBheGlzWExhYmVsV2lkdGggKyAoc3ZnV2lkdGggLSBheGlzWExhYmVsV2lkdGgpICogcmF0aW9cclxuICAgICAgICA6IHN2Z1Bsb3R0aW5nQXJlYUhlaWdodCAtIHN2Z1Bsb3R0aW5nQXJlYUhlaWdodCAqIHJhdGlvICsgUG9DaGFydFBsb3RBcmVhUGFkZGluZ1RvcFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FsY3VsYXRlQXhpc1hMYWJlbENvb3JkaW5hdGVzKFxyXG4gICAgYW1vdW50T2ZBeGlzWDogbnVtYmVyLFxyXG4gICAgY29udGFpbmVyU2l6ZTogUG9DaGFydENvbnRhaW5lclNpemUsXHJcbiAgICBtaW5NYXhBeGlzVmFsdWVzOiBQb0NoYXJ0TWluTWF4VmFsdWVzLFxyXG4gICAgdHlwZTogUG9DaGFydFR5cGVcclxuICApIHtcclxuICAgIHRoaXMuYXhpc1hMYWJlbHMgPSB0aGlzLmdldEF4aXNYTGFiZWxzKHR5cGUsIG1pbk1heEF4aXNWYWx1ZXMsIGFtb3VudE9mQXhpc1gpO1xyXG5cclxuICAgIHRoaXMuYXhpc1hMYWJlbENvb3JkaW5hdGVzID0gWy4uLkFycmF5KGFtb3VudE9mQXhpc1gpXS5tYXAoKF8sIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLmF4aXNYTGFiZWxzW2luZGV4XTtcclxuICAgICAgY29uc3QgeENvb3JkaW5hdGUgPSB0aGlzLmNhbGN1bGF0ZUF4aXNYTGFiZWxYQ29vcmRpbmF0ZShjb250YWluZXJTaXplLmF4aXNYTGFiZWxXaWR0aCk7XHJcbiAgICAgIGNvbnN0IHlDb29yZGluYXRlID0gdGhpcy5jYWxjdWxhdGVBeGlzWExhYmVsWUNvb3JkaW5hdGUoYW1vdW50T2ZBeGlzWCwgY29udGFpbmVyU2l6ZSwgdHlwZSwgaW5kZXgpO1xyXG5cclxuICAgICAgcmV0dXJuIHsgbGFiZWwsIHhDb29yZGluYXRlLCB5Q29vcmRpbmF0ZSB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGN1bGF0ZUF4aXNZQ29vcmRpbmF0ZXMoXHJcbiAgICBhbW91bnRPZkF4aXNZOiBudW1iZXIsXHJcbiAgICBjb250YWluZXJTaXplOiBQb0NoYXJ0Q29udGFpbmVyU2l6ZSxcclxuICAgIHR5cGU6IFBvQ2hhcnRUeXBlLFxyXG4gICAgcmFuZ2U6IFBvQ2hhcnRNaW5NYXhWYWx1ZXNcclxuICApIHtcclxuICAgIGNvbnN0IHN0YXJ0WSA9IFBvQ2hhcnRQbG90QXJlYVBhZGRpbmdUb3A7XHJcbiAgICBjb25zdCBlbmRZID0gY29udGFpbmVyU2l6ZS5zdmdQbG90dGluZ0FyZWFIZWlnaHQgKyBQb0NoYXJ0UGxvdEFyZWFQYWRkaW5nVG9wO1xyXG5cclxuICAgIC8vIHRyYXRhbWVudG8gbmVjZXNzw6FyaW8gcGFyYSBjcmlhciB1bWEgbGluaGEgYSBtYWlzIHBhcmEgZmVjaGFyIG8gZ3LDoWZpY29cclxuICAgIGNvbnN0IGxlbmd0aCA9IGFtb3VudE9mQXhpc1kgPT09IDAgfHwgdHlwZSA9PT0gUG9DaGFydFR5cGUuQmFyID8gYW1vdW50T2ZBeGlzWSA6IGFtb3VudE9mQXhpc1kgKyAxO1xyXG5cclxuICAgIGxldCBjb29yZGluYXRlc1JlZmVyZWRUb1plcm87XHJcbiAgICBsZXQgY29vcmRpbmF0ZXNMaXN0ID0gWy4uLkFycmF5KGxlbmd0aCldLm1hcCgoXywgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBjb25zdCB4Q29vcmRpbmF0ZSA9IHRoaXMuY2FsY3VsYXRlQXhpc1lDb29yZGluYXRlWChjb250YWluZXJTaXplLCBhbW91bnRPZkF4aXNZLCBpbmRleCk7XHJcbiAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gYE0ke3hDb29yZGluYXRlfSAke3N0YXJ0WX0gTCR7eENvb3JkaW5hdGV9LCAke2VuZFl9YDtcclxuXHJcbiAgICAgIHJldHVybiB7IGNvb3JkaW5hdGVzIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBBdmFsaWEgYSBuZWNlc3NpZGFkZSBkZSBhZGljaW9uYXIgYSBsaW5oYSByZWZlcmVudGUgYW8gdmFsb3IgemVybyBlbSBncsOhZmljb3MgZG8gdGlwbyBgYmFyYC5cclxuICAgIGlmICh0eXBlID09PSBQb0NoYXJ0VHlwZS5CYXIgJiYgcmFuZ2UubWluVmFsdWUgPCAwICYmICF0aGlzLmF4aXNZTGFiZWxzLmluY2x1ZGVzKCcwJykpIHtcclxuICAgICAgY29vcmRpbmF0ZXNSZWZlcmVkVG9aZXJvID0gdGhpcy5nZXRDb29yZGluYXRlc1JlbGF0ZWRUb1plcm8oY29udGFpbmVyU2l6ZSwgcmFuZ2UsIHN0YXJ0WSwgZW5kWSwgdHJ1ZSk7XHJcbiAgICAgIGNvb3JkaW5hdGVzTGlzdCA9IFsuLi5jb29yZGluYXRlc0xpc3QsIGNvb3JkaW5hdGVzUmVmZXJlZFRvWmVyb107XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5heGlzWUNvb3JkaW5hdGVzID0gWy4uLmNvb3JkaW5hdGVzTGlzdF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGN1bGF0ZUF4aXNZTGFiZWxDb29yZGluYXRlcyhcclxuICAgIGFtb3VudE9mQXhpc1k6IG51bWJlcixcclxuICAgIGNvbnRhaW5lclNpemU6IFBvQ2hhcnRDb250YWluZXJTaXplLFxyXG4gICAgbWluTWF4QXhpc1ZhbHVlczogUG9DaGFydE1pbk1heFZhbHVlcyxcclxuICAgIHR5cGU6IFBvQ2hhcnRUeXBlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmF4aXNZTGFiZWxzID0gdGhpcy5nZXRBeGlzWUxhYmVscyh0eXBlLCBtaW5NYXhBeGlzVmFsdWVzLCBhbW91bnRPZkF4aXNZKTtcclxuXHJcbiAgICB0aGlzLmF4aXNZTGFiZWxDb29yZGluYXRlcyA9IFsuLi5BcnJheShhbW91bnRPZkF4aXNZKV0ubWFwKChfLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5heGlzWUxhYmVsc1tpbmRleF07XHJcblxyXG4gICAgICBjb25zdCB4Q29vcmRpbmF0ZSA9IHRoaXMuZ2V0QXhpc1hDb29yZGluYXRlcyhjb250YWluZXJTaXplLCBhbW91bnRPZkF4aXNZLCB0eXBlLCBpbmRleCk7XHJcbiAgICAgIGNvbnN0IHlDb29yZGluYXRlID0gdGhpcy5jYWxjdWxhdGVBeGlzWUxhYmVsWUNvb3JkaW5hdGUoY29udGFpbmVyU2l6ZSk7XHJcblxyXG4gICAgICByZXR1cm4geyBsYWJlbCwgeENvb3JkaW5hdGUsIHlDb29yZGluYXRlIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FsY3VsYXRlQXhpc1hMYWJlbFhDb29yZGluYXRlKGF4aXNYTGFiZWxXaWR0aDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IGxhYmVsUG9DaGFydFBhZGRpbmcgPSBQb0NoYXJ0UGFkZGluZyAvIDM7XHJcblxyXG4gICAgcmV0dXJuIGF4aXNYTGFiZWxXaWR0aCAtIGxhYmVsUG9DaGFydFBhZGRpbmc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGN1bGF0ZUF4aXNYTGFiZWxZQ29vcmRpbmF0ZShcclxuICAgIGFtb3VudE9mQXhpc1g6IG51bWJlcixcclxuICAgIGNvbnRhaW5lclNpemU6IFBvQ2hhcnRDb250YWluZXJTaXplLFxyXG4gICAgdHlwZTogUG9DaGFydFR5cGUsXHJcbiAgICBpbmRleDogbnVtYmVyXHJcbiAgKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IGFtb3VudE9mTGluZXMgPSB0eXBlID09PSBQb0NoYXJ0VHlwZS5CYXIgPyBhbW91bnRPZkF4aXNYIDogYW1vdW50T2ZBeGlzWCAtIDE7XHJcbiAgICBjb25zdCB5UmF0aW8gPSBpbmRleCAvIGFtb3VudE9mTGluZXM7XHJcblxyXG4gICAgaWYgKHR5cGUgIT09IFBvQ2hhcnRUeXBlLkJhcikge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIGNvbnRhaW5lclNpemUuc3ZnUGxvdHRpbmdBcmVhSGVpZ2h0IC0gY29udGFpbmVyU2l6ZS5zdmdQbG90dGluZ0FyZWFIZWlnaHQgKiB5UmF0aW8gKyBQb0NoYXJ0UGxvdEFyZWFQYWRkaW5nVG9wXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaGFsZkNhdGVnb3J5SGVpZ2h0ID0gY29udGFpbmVyU2l6ZS5zdmdQbG90dGluZ0FyZWFIZWlnaHQgLyBhbW91bnRPZkF4aXNYIC8gMjtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGNvbnRhaW5lclNpemUuc3ZnUGxvdHRpbmdBcmVhSGVpZ2h0IC1cclxuICAgICAgaGFsZkNhdGVnb3J5SGVpZ2h0IC1cclxuICAgICAgY29udGFpbmVyU2l6ZS5zdmdQbG90dGluZ0FyZWFIZWlnaHQgKiB5UmF0aW8gK1xyXG4gICAgICBQb0NoYXJ0UGxvdEFyZWFQYWRkaW5nVG9wXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVBeGlzWENvb3JkaW5hdGVZKGFtb3VudE9mQXhpc1g6IG51bWJlciwgY29udGFpbmVyU2l6ZTogUG9DaGFydENvbnRhaW5lclNpemUsIGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgY29uc3QgeVJhdGlvID0gaW5kZXggLyAoYW1vdW50T2ZBeGlzWCAtIDEpO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIGNvbnRhaW5lclNpemUuc3ZnUGxvdHRpbmdBcmVhSGVpZ2h0IC0gY29udGFpbmVyU2l6ZS5zdmdQbG90dGluZ0FyZWFIZWlnaHQgKiB5UmF0aW8gKyBQb0NoYXJ0UGxvdEFyZWFQYWRkaW5nVG9wXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVBeGlzWUxhYmVsWUNvb3JkaW5hdGUoY29udGFpbmVyU2l6ZTogUG9DaGFydENvbnRhaW5lclNpemUpOiBudW1iZXIge1xyXG4gICAgY29uc3QgdGV4dFBvQ2hhcnRQYWRkaW5nID0gUG9DaGFydFBhZGRpbmcgLyAzO1xyXG5cclxuICAgIHJldHVybiBjb250YWluZXJTaXplLnN2Z0hlaWdodCAtIHRleHRQb0NoYXJ0UGFkZGluZztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2VudGVyZWRJbkNhdGVnb3J5QXJlYShcclxuICAgIGNvbnRhaW5lclNpemU6IFBvQ2hhcnRDb250YWluZXJTaXplLFxyXG4gICAgYW1vdW50T2ZBeGlzWTogbnVtYmVyLFxyXG4gICAgdHlwZTogUG9DaGFydFR5cGUsXHJcbiAgICBpbmRleDogbnVtYmVyXHJcbiAgKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IGFtb3VudE9mTGluZXMgPSB0eXBlID09PSBQb0NoYXJ0VHlwZS5CYXIgPyBhbW91bnRPZkF4aXNZIC0gMSA6IGFtb3VudE9mQXhpc1k7XHJcbiAgICBjb25zdCB4UmF0aW8gPSBpbmRleCAvIGFtb3VudE9mTGluZXM7XHJcblxyXG4gICAgaWYgKHR5cGUgPT09IFBvQ2hhcnRUeXBlLkJhcikge1xyXG4gICAgICByZXR1cm4gTWF0aC5yb3VuZChcclxuICAgICAgICBjb250YWluZXJTaXplLmF4aXNYTGFiZWxXaWR0aCArIChjb250YWluZXJTaXplLnN2Z1dpZHRoIC0gY29udGFpbmVyU2l6ZS5heGlzWExhYmVsV2lkdGgpICogeFJhdGlvXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaGFsZkNhdGVnb3J5V2lkdGggPSAoY29udGFpbmVyU2l6ZS5zdmdXaWR0aCAtIGNvbnRhaW5lclNpemUuYXhpc1hMYWJlbFdpZHRoKSAvIGFtb3VudE9mQXhpc1kgLyAyO1xyXG4gICAgcmV0dXJuIE1hdGgucm91bmQoXHJcbiAgICAgIGNvbnRhaW5lclNpemUuYXhpc1hMYWJlbFdpZHRoICtcclxuICAgICAgICBoYWxmQ2F0ZWdvcnlXaWR0aCArXHJcbiAgICAgICAgKGNvbnRhaW5lclNpemUuc3ZnV2lkdGggLSBjb250YWluZXJTaXplLmF4aXNYTGFiZWxXaWR0aCkgKiB4UmF0aW9cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGN1bGF0ZUF4aXNZQ29vcmRpbmF0ZVgoXHJcbiAgICBjb250YWluZXJTaXplOiBQb0NoYXJ0Q29udGFpbmVyU2l6ZSxcclxuICAgIGFtb3VudE9mQXhpc1k6IG51bWJlcixcclxuICAgIGluZGV4OiBudW1iZXIsXHJcbiAgICBzdWJ0cmFjdENhdGVnb3J5V2lkdGg6IGJvb2xlYW4gPSBmYWxzZVxyXG4gICk6IG51bWJlciB7XHJcbiAgICBjb25zdCBhbW91bnRPZkxpbmVzID0gdGhpcy5hbGlnbkJ5VGhlQ29ybmVycyA/IGFtb3VudE9mQXhpc1kgLSAxIDogYW1vdW50T2ZBeGlzWTtcclxuICAgIGNvbnN0IGhhbGZDYXRlZ29yeVdpZHRoID1cclxuICAgICAgdGhpcy5hbGlnbkJ5VGhlQ29ybmVycyAmJiBzdWJ0cmFjdENhdGVnb3J5V2lkdGhcclxuICAgICAgICA/IChjb250YWluZXJTaXplLnN2Z1dpZHRoIC0gY29udGFpbmVyU2l6ZS5heGlzWExhYmVsV2lkdGgpIC8gKGFtb3VudE9mQXhpc1kgLSAxKSAvIDJcclxuICAgICAgICA6IDA7XHJcbiAgICBjb25zdCBkaXZpZGVJbmRleEJ5QW1vdW50T2ZMaW5lcyA9IGluZGV4IC8gYW1vdW50T2ZMaW5lcztcclxuICAgIGNvbnN0IHhSYXRpbyA9IGRpdmlkZUluZGV4QnlBbW91bnRPZkxpbmVzID09PSBJbmZpbml0eSA/IDAgOiBkaXZpZGVJbmRleEJ5QW1vdW50T2ZMaW5lcztcclxuXHJcbiAgICByZXR1cm4gTWF0aC5yb3VuZChcclxuICAgICAgY29udGFpbmVyU2l6ZS5heGlzWExhYmVsV2lkdGggK1xyXG4gICAgICAgIChjb250YWluZXJTaXplLnN2Z1dpZHRoIC0gY29udGFpbmVyU2l6ZS5heGlzWExhYmVsV2lkdGgpICogeFJhdGlvIC1cclxuICAgICAgICBoYWxmQ2F0ZWdvcnlXaWR0aFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tBeGlzT3B0aW9ucyhvcHRpb25zOiBQb0NoYXJ0QXhpc09wdGlvbnMgPSB7fSk6IHZvaWQge1xyXG4gICAgdGhpcy5ncmlkTGluZXMgPVxyXG4gICAgICBvcHRpb25zLmdyaWRMaW5lcyAmJiB0aGlzLmlzVmFsaWRHcmlkTGluZXNMZW5ndGhPcHRpb24ob3B0aW9ucy5ncmlkTGluZXMpID8gb3B0aW9ucy5ncmlkTGluZXMgOiBQb0NoYXJ0R3JpZExpbmVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhblVwQ29vcmRpbmF0ZXMoKSB7XHJcbiAgICB0aGlzLmF4aXNYQ29vcmRpbmF0ZXMgPSBbXTtcclxuICAgIHRoaXMuYXhpc1lDb29yZGluYXRlcyA9IFtdO1xyXG4gICAgdGhpcy5heGlzWExhYmVsQ29vcmRpbmF0ZXMgPSBbXTtcclxuICAgIHRoaXMuYXhpc1lMYWJlbENvb3JkaW5hdGVzID0gW107XHJcbiAgICB0aGlzLnNlcmllc0xlbmd0aCA9IDA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEF4aXNYQ29vcmRpbmF0ZXMoXHJcbiAgICBjb250YWluZXJTaXplOiBQb0NoYXJ0Q29udGFpbmVyU2l6ZSxcclxuICAgIGFtb3VudE9mQXhpc1k6IG51bWJlcixcclxuICAgIHR5cGU6IFBvQ2hhcnRUeXBlLFxyXG4gICAgaW5kZXg6IG51bWJlclxyXG4gICk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5hbGlnbkJ5VGhlQ29ybmVyc1xyXG4gICAgICA/IHRoaXMuY2FsY3VsYXRlQXhpc1lDb29yZGluYXRlWChjb250YWluZXJTaXplLCBhbW91bnRPZkF4aXNZLCBpbmRleClcclxuICAgICAgOiB0aGlzLmNlbnRlcmVkSW5DYXRlZ29yeUFyZWEoY29udGFpbmVyU2l6ZSwgYW1vdW50T2ZBeGlzWSwgdHlwZSwgaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDYXRlZ29yaWVzUmFuZ2VGb3JNb3VzZU1vdmUoYW1vdW50T2ZBeGlzWTogbnVtYmVyLCBjb250YWluZXJTaXplOiBQb0NoYXJ0Q29udGFpbmVyU2l6ZSkge1xyXG4gICAgY29uc3QgY2F0ZWdvcmllc0Nvb3JkaW5hdGVzID0gWy4uLkFycmF5KGFtb3VudE9mQXhpc1kpXS5tYXAoKF8sIGluZGV4OiBudW1iZXIpID0+XHJcbiAgICAgIHRoaXMuY2FsY3VsYXRlQXhpc1lDb29yZGluYXRlWChjb250YWluZXJTaXplLCBhbW91bnRPZkF4aXNZLCBpbmRleCwgdHJ1ZSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5jYXRlZ29yaWVzQ29vcmRpbmF0ZXMuZW1pdChjYXRlZ29yaWVzQ29vcmRpbmF0ZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1ZhbGlkR3JpZExpbmVzTGVuZ3RoT3B0aW9uKGdyaWRMaW5lczogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gZ3JpZExpbmVzID49IDIgJiYgZ3JpZExpbmVzIDw9IDEwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBeGlzWExhYmVscyh0eXBlOiBQb0NoYXJ0VHlwZSwgbWluTWF4QXhpc1ZhbHVlczogUG9DaGFydE1pbk1heFZhbHVlcywgYW1vdW50T2ZBeGlzWDogbnVtYmVyKSB7XHJcbiAgICBpZiAodHlwZSA9PT0gUG9DaGFydFR5cGUuQmFyKSB7XHJcbiAgICAgIGNvbnN0IGF4aXNYTGFiZWxzTGlzdCA9IHRoaXMuZm9ybWF0Q2F0ZWdvcmllc0xhYmVscyhhbW91bnRPZkF4aXNYLCB0aGlzLmNhdGVnb3JpZXMpO1xyXG4gICAgICByZXR1cm4gYXhpc1hMYWJlbHNMaXN0LnJldmVyc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUF2ZXJhZ2VPZkxhYmVscyhtaW5NYXhBeGlzVmFsdWVzLCBhbW91bnRPZkF4aXNYKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QXhpc1lMYWJlbHModHlwZTogUG9DaGFydFR5cGUsIG1pbk1heEF4aXNWYWx1ZXM6IFBvQ2hhcnRNaW5NYXhWYWx1ZXMsIGFtb3VudE9mQXhpc1g6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHR5cGUgPT09IFBvQ2hhcnRUeXBlLkJhclxyXG4gICAgICA/IHRoaXMuZ2VuZXJhdGVBdmVyYWdlT2ZMYWJlbHMobWluTWF4QXhpc1ZhbHVlcywgYW1vdW50T2ZBeGlzWClcclxuICAgICAgOiB0aGlzLmZvcm1hdENhdGVnb3JpZXNMYWJlbHMoYW1vdW50T2ZBeGlzWCwgdGhpcy5jYXRlZ29yaWVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0Q2F0ZWdvcmllc0xhYmVscyhhbW91bnRPZkF4aXNYOiBudW1iZXIsIGNhdGVnb3JpZXM6IEFycmF5PHN0cmluZz4gPSBbXSkge1xyXG4gICAgcmV0dXJuIFsuLi5BcnJheShhbW91bnRPZkF4aXNYKV0ubWFwKChfLCBpbmRleDogbnVtYmVyKSA9PiBjYXRlZ29yaWVzW2luZGV4XSA/PyAnLScpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUF2ZXJhZ2VPZkxhYmVscyhtaW5NYXhBeGlzVmFsdWVzOiBQb0NoYXJ0TWluTWF4VmFsdWVzLCBhbW91bnRPZkF4aXNMaW5lczogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBhdmVyYWdlTGFiZWxzTGlzdCA9IHRoaXMubWF0aHNTZXJ2aWNlLnJhbmdlKG1pbk1heEF4aXNWYWx1ZXMsIGFtb3VudE9mQXhpc0xpbmVzKTtcclxuXHJcbiAgICByZXR1cm4gYXZlcmFnZUxhYmVsc0xpc3QubWFwKGxhYmVsID0+IHtcclxuICAgICAgY29uc3QgZm9ybWF0dGVkRGlnaXQgPSBsYWJlbC50b0ZpeGVkKGxhYmVsICUgMSAmJiAyKTtcclxuICAgICAgLy8gUmVtb3ZlIGTDrWdpdG9zIGNvbSB6ZXJvLlxyXG4gICAgICAvLyBUYW1iw6ltIHRyYXRhIGNhc28gcXVhbmRvIG8gdmFsb3IgcmV0b3JuYWRvIGVyYSAtMCwgc3Vic3RpdHVpbmRvLW8gcG9yIDAuXHJcbiAgICAgIGNvbnN0IHJlbW92ZVplcm9EaWdpdHMgPSBmb3JtYXR0ZWREaWdpdC5yZXBsYWNlKC9cXC4wMCQvLCAnJykucmVwbGFjZSgvXFwtMCQvLCAwKTtcclxuXHJcbiAgICAgIHJldHVybiByZW1vdmVaZXJvRGlnaXRzLnRvU3RyaW5nKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19