@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.
- package/README.md +36 -36
- package/bundles/po-ui-ng-components.umd.js +38669 -38615
- package/bundles/po-ui-ng-components.umd.js.map +1 -1
- package/esm2015/lib/components/components.module.js +122 -122
- package/esm2015/lib/components/index.js +38 -38
- package/esm2015/lib/components/po-accordion/index.js +4 -4
- package/esm2015/lib/components/po-accordion/po-accordion-base.component.js +29 -29
- package/esm2015/lib/components/po-accordion/po-accordion-item/po-accordion-item.component.js +66 -66
- package/esm2015/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.js +23 -23
- package/esm2015/lib/components/po-accordion/po-accordion-item-header/po-accordion-item-header.component.js +24 -24
- package/esm2015/lib/components/po-accordion/po-accordion.component.js +70 -70
- package/esm2015/lib/components/po-accordion/po-accordion.module.js +52 -52
- package/esm2015/lib/components/po-accordion/services/po-accordion.service.js +27 -27
- package/esm2015/lib/components/po-avatar/index.js +3 -3
- package/esm2015/lib/components/po-avatar/po-avatar-base.component.js +68 -68
- package/esm2015/lib/components/po-avatar/po-avatar.component.js +42 -42
- package/esm2015/lib/components/po-avatar/po-avatar.module.js +18 -18
- package/esm2015/lib/components/po-badge/po-badge-base.component.js +89 -89
- package/esm2015/lib/components/po-badge/po-badge.component.js +16 -16
- package/esm2015/lib/components/po-badge/po-badge.module.js +18 -18
- package/esm2015/lib/components/po-breadcrumb/index.js +5 -5
- package/esm2015/lib/components/po-breadcrumb/po-breadcrumb-base.component.js +48 -48
- package/esm2015/lib/components/po-breadcrumb/po-breadcrumb-dropdown/po-breadcrumb-dropdown.component.js +20 -20
- package/esm2015/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.component.js +77 -77
- package/esm2015/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.service.js +49 -49
- package/esm2015/lib/components/po-breadcrumb/po-breadcrumb-item/po-breadcrumb-item.component.js +27 -27
- package/esm2015/lib/components/po-breadcrumb/po-breadcrumb-item.interface.js +2 -2
- package/esm2015/lib/components/po-breadcrumb/po-breadcrumb.component.js +159 -159
- package/esm2015/lib/components/po-breadcrumb/po-breadcrumb.interface.js +2 -2
- package/esm2015/lib/components/po-breadcrumb/po-breadcrumb.module.js +28 -28
- package/esm2015/lib/components/po-button/index.js +3 -3
- package/esm2015/lib/components/po-button/po-button-base.component.js +127 -127
- package/esm2015/lib/components/po-button/po-button.component.js +69 -69
- package/esm2015/lib/components/po-button/po-button.module.js +20 -20
- package/esm2015/lib/components/po-button-group/index.js +5 -5
- package/esm2015/lib/components/po-button-group/po-button-group-base.component.js +95 -95
- package/esm2015/lib/components/po-button-group/po-button-group-item.interface.js +2 -2
- package/esm2015/lib/components/po-button-group/po-button-group-toggle.enum.js +17 -17
- package/esm2015/lib/components/po-button-group/po-button-group.component.js +43 -43
- package/esm2015/lib/components/po-button-group/po-button-group.module.js +20 -20
- package/esm2015/lib/components/po-calendar/index.js +4 -4
- package/esm2015/lib/components/po-calendar/po-calendar-base.component.js +176 -176
- package/esm2015/lib/components/po-calendar/po-calendar-header/po-calendar-header.component.js +24 -24
- package/esm2015/lib/components/po-calendar/po-calendar-mode.enum.js +13 -13
- package/esm2015/lib/components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.js +251 -251
- package/esm2015/lib/components/po-calendar/po-calendar.component.js +199 -199
- package/esm2015/lib/components/po-calendar/po-calendar.module.js +19 -19
- package/esm2015/lib/components/po-calendar/services/po-calendar.lang.service.js +187 -187
- package/esm2015/lib/components/po-calendar/services/po-calendar.service.js +44 -44
- package/esm2015/lib/components/po-chart/directives/po-resize-observer.directive.js +44 -44
- package/esm2015/lib/components/po-chart/enums/po-chart-type.enum.js +51 -51
- package/esm2015/lib/components/po-chart/helpers/po-chart-default-values.constant.js +18 -18
- package/esm2015/lib/components/po-chart/index.js +8 -8
- package/esm2015/lib/components/po-chart/interfaces/po-chart-axis-options.interface.js +2 -2
- package/esm2015/lib/components/po-chart/interfaces/po-chart-bar-coordinates.interface.js +2 -2
- package/esm2015/lib/components/po-chart/interfaces/po-chart-container-size.interface.js +11 -11
- package/esm2015/lib/components/po-chart/interfaces/po-chart-label-coordinates.interface.js +2 -2
- package/esm2015/lib/components/po-chart/interfaces/po-chart-min-max-values.interface.js +2 -2
- package/esm2015/lib/components/po-chart/interfaces/po-chart-options.interface.js +2 -2
- package/esm2015/lib/components/po-chart/interfaces/po-chart-path-coordinates.interface.js +2 -2
- package/esm2015/lib/components/po-chart/interfaces/po-chart-points-coordinates.interface.js +2 -2
- package/esm2015/lib/components/po-chart/interfaces/po-chart-serie.interface.js +2 -2
- package/esm2015/lib/components/po-chart/po-chart-base.component.js +244 -244
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis-label/po-chart-axis-label.component.js +23 -23
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis-path/po-chart-axis-path.component.js +19 -19
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis.component.js +287 -287
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar-base.component.js +94 -94
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar-path/po-chart-bar-path.component.js +33 -33
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar.component.js +58 -58
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-column/po-chart-column.component.js +59 -59
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-label/po-chart-circular-label.component.js +29 -29
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-path/po-chart-circular-path.component.js +35 -35
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-path/po-chart-tooltip.directive.js +76 -76
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular.component.js +142 -142
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-donut/po-chart-donut.component.js +115 -115
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-pie/po-chart-pie.component.js +57 -57
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-container.component.js +119 -119
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-area/po-chart-area.component.js +77 -77
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-line-base.component.js +151 -151
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-line.component.js +41 -41
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-path/po-chart-path.component.js +65 -65
- package/esm2015/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-series-point/po-chart-series-point.component.js +95 -95
- package/esm2015/lib/components/po-chart/po-chart-legend/po-chart-legend.component.js +21 -21
- package/esm2015/lib/components/po-chart/po-chart-types/po-chart-circular/po-chart-circular.constant.js +11 -11
- package/esm2015/lib/components/po-chart/po-chart-types/po-chart-circular/po-chart-circular.js +374 -374
- package/esm2015/lib/components/po-chart/po-chart-types/po-chart-dynamic-type.component.js +45 -45
- package/esm2015/lib/components/po-chart/po-chart-types/po-chart-gauge/po-chart-gauge-series.interface.js +2 -2
- 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
- package/esm2015/lib/components/po-chart/po-chart-types/po-chart-gauge/po-chart-gauge.component.js +85 -85
- package/esm2015/lib/components/po-chart/po-chart.component.js +203 -203
- package/esm2015/lib/components/po-chart/po-chart.module.js +61 -61
- package/esm2015/lib/components/po-chart/services/po-chart-maths.service.js +135 -135
- package/esm2015/lib/components/po-chart/services/po-chart-svg-container.service.js +57 -57
- package/esm2015/lib/components/po-container/index.js +3 -3
- package/esm2015/lib/components/po-container/po-container-base.component.js +88 -88
- package/esm2015/lib/components/po-container/po-container.component.js +32 -32
- package/esm2015/lib/components/po-container/po-container.module.js +18 -18
- package/esm2015/lib/components/po-disclaimer/index.js +4 -4
- package/esm2015/lib/components/po-disclaimer/po-disclaimer-base.component.js +77 -77
- package/esm2015/lib/components/po-disclaimer/po-disclaimer.component.js +29 -29
- package/esm2015/lib/components/po-disclaimer/po-disclaimer.interface.js +2 -2
- package/esm2015/lib/components/po-disclaimer/po-disclaimer.module.js +17 -17
- package/esm2015/lib/components/po-disclaimer-group/index.js +5 -5
- package/esm2015/lib/components/po-disclaimer-group/po-disclaimer-group-base.component.js +194 -194
- package/esm2015/lib/components/po-disclaimer-group/po-disclaimer-group-remove-action.interface.js +2 -2
- package/esm2015/lib/components/po-disclaimer-group/po-disclaimer-group.component.js +41 -41
- package/esm2015/lib/components/po-disclaimer-group/po-disclaimer-group.interface.js +2 -2
- package/esm2015/lib/components/po-disclaimer-group/po-disclaimer-group.module.js +20 -20
- package/esm2015/lib/components/po-disclaimer-group/po-disclaimer-remove/po-disclaimer-remove.component.js +30 -30
- package/esm2015/lib/components/po-divider/index.js +3 -3
- package/esm2015/lib/components/po-divider/po-divider-base.component.js +16 -16
- package/esm2015/lib/components/po-divider/po-divider.component.js +32 -32
- package/esm2015/lib/components/po-divider/po-divider.module.js +18 -18
- package/esm2015/lib/components/po-dropdown/index.js +4 -4
- package/esm2015/lib/components/po-dropdown/po-dropdown-action.interface.js +2 -2
- package/esm2015/lib/components/po-dropdown/po-dropdown-base.component.js +71 -71
- package/esm2015/lib/components/po-dropdown/po-dropdown.component.js +97 -97
- package/esm2015/lib/components/po-dropdown/po-dropdown.module.js +18 -18
- package/esm2015/lib/components/po-dynamic/index.js +11 -11
- package/esm2015/lib/components/po-dynamic/po-dynamic-field-type.enum.js +25 -25
- package/esm2015/lib/components/po-dynamic/po-dynamic-field.interface.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-base.component.js +104 -104
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-field-internal.interface.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields-base.component.js +200 -200
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.js +129 -129
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-load/po-dynamic-form-load.interface.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-load/po-dynamic-form-load.service.js +32 -32
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-operation/po-dynamic-form-operation.js +20 -20
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-response.interface.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-field-changed.interface.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-field-validation.interface.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.interface.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.service.js +39 -39
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form.component.js +167 -167
- package/esm2015/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.js +163 -163
- package/esm2015/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-field.interface.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.js +101 -101
- package/esm2015/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.service.js +17 -17
- package/esm2015/lib/components/po-dynamic/po-dynamic.module.js +35 -35
- package/esm2015/lib/components/po-dynamic/po-dynamic.util.js +18 -18
- package/esm2015/lib/components/po-field/index.js +51 -51
- package/esm2015/lib/components/po-field/po-checkbox/po-checkbox-base.component.js +98 -98
- package/esm2015/lib/components/po-field/po-checkbox/po-checkbox.component.js +94 -94
- package/esm2015/lib/components/po-field/po-checkbox-group/interfaces/po-checkbox-group-option-view.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-checkbox-group/interfaces/po-checkbox-group-option.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.js +297 -289
- package/esm2015/lib/components/po-field/po-checkbox-group/po-checkbox-group.component.js +98 -98
- package/esm2015/lib/components/po-field/po-checkbox-group/po-checkbox-group.module.js +20 -20
- package/esm2015/lib/components/po-field/po-clean/po-clean-base.component.js +42 -42
- package/esm2015/lib/components/po-field/po-clean/po-clean.component.js +33 -33
- package/esm2015/lib/components/po-field/po-clean/po-clean.module.js +18 -18
- package/esm2015/lib/components/po-field/po-combo/interfaces/po-combo-filter.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-combo/interfaces/po-combo-group.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-combo/interfaces/po-combo-literals.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-combo/interfaces/po-combo-option-group.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-combo/interfaces/po-combo-option.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-combo/interfaces/po-response.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-combo/po-combo-base.component.js +749 -741
- package/esm2015/lib/components/po-field/po-combo/po-combo-filter-mode.enum.js +17 -17
- package/esm2015/lib/components/po-field/po-combo/po-combo-filter.service.js +78 -78
- package/esm2015/lib/components/po-field/po-combo/po-combo-option-template/po-combo-option-template.directive.js +81 -81
- package/esm2015/lib/components/po-field/po-combo/po-combo.component.js +525 -525
- package/esm2015/lib/components/po-field/po-datepicker/enums/po-datepicker-iso-format.enum.js +17 -17
- package/esm2015/lib/components/po-field/po-datepicker/po-datepicker-base.component.js +396 -396
- package/esm2015/lib/components/po-field/po-datepicker/po-datepicker.component.js +345 -344
- package/esm2015/lib/components/po-field/po-datepicker/po-datepicker.module.js +22 -22
- package/esm2015/lib/components/po-field/po-datepicker-range/interfaces/po-datepicker-range-literals.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-datepicker-range/interfaces/po-datepicker-range.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.js +475 -475
- package/esm2015/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.js +443 -436
- package/esm2015/lib/components/po-field/po-datepicker-range/po-datepicker-range.literals.js +27 -27
- package/esm2015/lib/components/po-field/po-decimal/po-decimal.component.js +598 -598
- package/esm2015/lib/components/po-field/po-email/po-email.component.js +106 -106
- package/esm2015/lib/components/po-field/po-field-container/po-field-container-bottom/po-field-container-bottom.component.js +29 -29
- package/esm2015/lib/components/po-field/po-field-container/po-field-container-literals.js +15 -15
- package/esm2015/lib/components/po-field/po-field-container/po-field-container.component.js +39 -39
- package/esm2015/lib/components/po-field/po-field-container/po-field-container.module.js +19 -19
- package/esm2015/lib/components/po-field/po-field-validate.model.js +69 -69
- package/esm2015/lib/components/po-field/po-field.model.js +78 -78
- package/esm2015/lib/components/po-field/po-field.module.js +156 -156
- package/esm2015/lib/components/po-field/po-input/po-input-base.component.js +357 -357
- package/esm2015/lib/components/po-field/po-input/po-input.component.js +56 -56
- package/esm2015/lib/components/po-field/po-input/po-mask.js +460 -460
- package/esm2015/lib/components/po-field/po-input-generic/po-input-generic.js +187 -187
- package/esm2015/lib/components/po-field/po-login/po-login.component.js +65 -65
- package/esm2015/lib/components/po-field/po-lookup/interfaces/po-lookup-advanced-filter.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-lookup/interfaces/po-lookup-column.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-lookup/interfaces/po-lookup-filter.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-lookup/interfaces/po-lookup-filtered-items-params.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-lookup/interfaces/po-lookup-literals.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-lookup/interfaces/po-lookup-response-api.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-lookup/po-lookup-base.component.js +451 -451
- package/esm2015/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.js +357 -347
- package/esm2015/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.js +130 -130
- package/esm2015/lib/components/po-field/po-lookup/po-lookup.component.js +337 -337
- package/esm2015/lib/components/po-field/po-lookup/services/po-lookup-filter.service.js +59 -59
- package/esm2015/lib/components/po-field/po-lookup/services/po-lookup-modal.service.js +62 -62
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-base.component.js +576 -571
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.js +139 -139
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-filter-mode.enum.js +17 -17
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-filter.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-filter.service.js +50 -50
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-item/po-multiselect-item.component.js +33 -33
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-literals.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-option.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect-search/po-multiselect-search.component.js +57 -57
- package/esm2015/lib/components/po-field/po-multiselect/po-multiselect.component.js +359 -359
- package/esm2015/lib/components/po-field/po-number/po-number-base.component.js +114 -114
- package/esm2015/lib/components/po-field/po-number/po-number.component.js +119 -119
- package/esm2015/lib/components/po-field/po-password/po-password.component.js +92 -92
- package/esm2015/lib/components/po-field/po-radio-group/po-radio-group-base.component.js +184 -184
- package/esm2015/lib/components/po-field/po-radio-group/po-radio-group-option.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-radio-group/po-radio-group.component.js +119 -119
- package/esm2015/lib/components/po-field/po-rich-text/interfaces/po-rich-text-toolbar-button-group-item.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-rich-text/po-rich-text-base.component.js +181 -181
- package/esm2015/lib/components/po-field/po-rich-text/po-rich-text-body/po-rich-text-body.component.js +312 -312
- package/esm2015/lib/components/po-field/po-rich-text/po-rich-text-image-modal/po-rich-text-image-modal.component.js +96 -96
- package/esm2015/lib/components/po-field/po-rich-text/po-rich-text-link-modal/po-rich-text-link-modal.component.js +140 -140
- package/esm2015/lib/components/po-field/po-rich-text/po-rich-text-literals.js +83 -83
- package/esm2015/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.js +166 -166
- package/esm2015/lib/components/po-field/po-rich-text/po-rich-text.component.js +147 -147
- package/esm2015/lib/components/po-field/po-rich-text/po-rich-text.service.js +17 -17
- package/esm2015/lib/components/po-field/po-select/po-select-option-template/po-select-option-template.directive.js +59 -59
- package/esm2015/lib/components/po-field/po-select/po-select-option.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-select/po-select.component.js +366 -359
- package/esm2015/lib/components/po-field/po-switch/po-switch-label-position.enum.js +15 -15
- package/esm2015/lib/components/po-field/po-switch/po-switch.component.js +190 -190
- package/esm2015/lib/components/po-field/po-textarea/po-textarea-base.component.js +269 -269
- package/esm2015/lib/components/po-field/po-textarea/po-textarea.component.js +130 -130
- package/esm2015/lib/components/po-field/po-upload/interfaces/po-upload-file-restriction.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-upload/interfaces/po-upload-literals.interface.js +2 -2
- package/esm2015/lib/components/po-field/po-upload/po-upload-base.component.js +581 -573
- package/esm2015/lib/components/po-field/po-upload/po-upload-base.service.js +88 -88
- 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
- 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
- package/esm2015/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.component.js +60 -60
- package/esm2015/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.directive.js +165 -165
- package/esm2015/lib/components/po-field/po-upload/po-upload-file-restrictions/po-upload-file-restrictions.component.js +63 -63
- package/esm2015/lib/components/po-field/po-upload/po-upload-file.js +39 -39
- package/esm2015/lib/components/po-field/po-upload/po-upload-status.enum.js +13 -13
- package/esm2015/lib/components/po-field/po-upload/po-upload.component.js +326 -326
- package/esm2015/lib/components/po-field/po-upload/po-upload.service.js +8 -8
- package/esm2015/lib/components/po-field/po-url/po-url.component.js +86 -86
- package/esm2015/lib/components/po-field/validators.js +41 -41
- package/esm2015/lib/components/po-gauge/index.js +4 -4
- package/esm2015/lib/components/po-gauge/interfaces/po-gauge-coordinates.interface.js +2 -2
- package/esm2015/lib/components/po-gauge/interfaces/po-gauge-ranges.interface.js +2 -2
- package/esm2015/lib/components/po-gauge/interfaces/po-gauge-svg-container.interface.js +2 -2
- package/esm2015/lib/components/po-gauge/po-gauge-base.component.js +146 -146
- package/esm2015/lib/components/po-gauge/po-gauge-default-values.constant.js +11 -11
- package/esm2015/lib/components/po-gauge/po-gauge-description/po-gauge-description.component.js +27 -27
- package/esm2015/lib/components/po-gauge/po-gauge-legend/po-gauge-legend.component.js +27 -27
- package/esm2015/lib/components/po-gauge/po-gauge-svg/po-gauge-path/po-gauge-path.component.js +20 -20
- package/esm2015/lib/components/po-gauge/po-gauge-svg/po-gauge-pointer/po-gauge-pointer.component.js +50 -50
- package/esm2015/lib/components/po-gauge/po-gauge-svg/po-gauge-svg.component.js +204 -204
- package/esm2015/lib/components/po-gauge/po-gauge-title/po-gauge-title.component.js +13 -13
- package/esm2015/lib/components/po-gauge/po-gauge.component.js +72 -72
- package/esm2015/lib/components/po-gauge/po-gauge.module.js +32 -32
- package/esm2015/lib/components/po-grid/index.js +4 -4
- package/esm2015/lib/components/po-grid/po-grid-cell/po-grid-cell.component.js +111 -111
- package/esm2015/lib/components/po-grid/po-grid-cell-action/po-grid-cell-action.component.js +24 -24
- package/esm2015/lib/components/po-grid/po-grid-head/po-grid-head.component.js +30 -30
- package/esm2015/lib/components/po-grid/po-grid-row-actions.interface.js +2 -2
- package/esm2015/lib/components/po-grid/po-grid.component.js +314 -314
- package/esm2015/lib/components/po-grid/po-grid.module.js +23 -23
- package/esm2015/lib/components/po-icon/index.js +3 -3
- package/esm2015/lib/components/po-icon/po-icon.component.js +62 -62
- package/esm2015/lib/components/po-icon/po-icon.module.js +18 -18
- package/esm2015/lib/components/po-info/index.js +4 -4
- package/esm2015/lib/components/po-info/po-info-base.component.js +62 -62
- package/esm2015/lib/components/po-info/po-info-orietation.enum.js +15 -15
- package/esm2015/lib/components/po-info/po-info.component.js +36 -36
- package/esm2015/lib/components/po-info/po-info.module.js +21 -21
- package/esm2015/lib/components/po-list-view/index.js +7 -7
- package/esm2015/lib/components/po-list-view/interfaces/po-list-view-action.interface.js +2 -2
- package/esm2015/lib/components/po-list-view/interfaces/po-list-view-literals.interface.js +2 -2
- package/esm2015/lib/components/po-list-view/po-list-view-base.component.js +274 -274
- package/esm2015/lib/components/po-list-view/po-list-view-content-template/po-list-view-content-template.directive.js +101 -101
- package/esm2015/lib/components/po-list-view/po-list-view-detail-template/po-list-view-detail-template.directive.js +64 -64
- package/esm2015/lib/components/po-list-view/po-list-view.component.js +128 -128
- package/esm2015/lib/components/po-list-view/po-list-view.module.js +51 -51
- package/esm2015/lib/components/po-loading/index.js +5 -5
- package/esm2015/lib/components/po-loading/po-loading-base.component.js +24 -24
- package/esm2015/lib/components/po-loading/po-loading-icon/po-loading-icon.component.js +37 -37
- package/esm2015/lib/components/po-loading/po-loading-overlay/interfaces/po-loading-overlay-literals.interface.js +2 -2
- package/esm2015/lib/components/po-loading/po-loading-overlay/po-loading-overlay-base.component.js +91 -91
- package/esm2015/lib/components/po-loading/po-loading-overlay/po-loading-overlay.component.js +41 -41
- package/esm2015/lib/components/po-loading/po-loading.component.js +16 -16
- package/esm2015/lib/components/po-loading/po-loading.module.js +22 -22
- package/esm2015/lib/components/po-menu/index.js +9 -9
- package/esm2015/lib/components/po-menu/po-menu-base.component.js +299 -299
- package/esm2015/lib/components/po-menu/po-menu-filter/po-menu-filter-literals.interface.js +2 -2
- package/esm2015/lib/components/po-menu/po-menu-filter/po-menu-filter.component.js +40 -40
- package/esm2015/lib/components/po-menu/po-menu-filter/po-menu-filter.interface.js +2 -2
- package/esm2015/lib/components/po-menu/po-menu-header-template/po-menu-header-template.directive.js +51 -51
- package/esm2015/lib/components/po-menu/po-menu-item/po-menu-item-badge.interface.js +2 -2
- package/esm2015/lib/components/po-menu/po-menu-item/po-menu-item-filtered.interface.js +2 -2
- package/esm2015/lib/components/po-menu/po-menu-item/po-menu-item.component.js +173 -173
- package/esm2015/lib/components/po-menu/po-menu-item.interface.js +2 -2
- package/esm2015/lib/components/po-menu/po-menu.component.js +497 -497
- package/esm2015/lib/components/po-menu/po-menu.module.js +26 -26
- package/esm2015/lib/components/po-menu/services/po-menu-global.service.js +32 -32
- package/esm2015/lib/components/po-menu/services/po-menu-items.service.js +35 -35
- package/esm2015/lib/components/po-menu/services/po-menu.service.js +35 -35
- package/esm2015/lib/components/po-menu-panel/index.js +4 -4
- package/esm2015/lib/components/po-menu-panel/po-menu-panel-base.component.js +76 -76
- package/esm2015/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item-internal.interface.js +2 -2
- package/esm2015/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.component.js +54 -54
- package/esm2015/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.interface.js +2 -2
- package/esm2015/lib/components/po-menu-panel/po-menu-panel.component.js +145 -145
- package/esm2015/lib/components/po-menu-panel/po-menu-panel.module.js +24 -24
- package/esm2015/lib/components/po-menu-panel/services/po-menu-panel-items.service.js +35 -35
- package/esm2015/lib/components/po-modal/index.js +5 -5
- package/esm2015/lib/components/po-modal/po-modal-action.interface.js +2 -2
- package/esm2015/lib/components/po-modal/po-modal-base.component.js +121 -121
- package/esm2015/lib/components/po-modal/po-modal-footer/po-modal-footer.component.js +43 -43
- package/esm2015/lib/components/po-modal/po-modal.component.js +114 -114
- package/esm2015/lib/components/po-modal/po-modal.literals.js +15 -15
- package/esm2015/lib/components/po-modal/po-modal.module.js +19 -19
- package/esm2015/lib/components/po-navbar/index.js +5 -5
- package/esm2015/lib/components/po-navbar/interfaces/po-navbar-icon-action.interface.js +2 -2
- package/esm2015/lib/components/po-navbar/interfaces/po-navbar-item.interface.js +2 -2
- package/esm2015/lib/components/po-navbar/interfaces/po-navbar-literals.interface.js +2 -2
- package/esm2015/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.js +43 -43
- package/esm2015/lib/components/po-navbar/po-navbar-actions/po-navbar-action-popup/po-navbar-action-popup.component.js +18 -18
- package/esm2015/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.component.js +19 -19
- package/esm2015/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.module.js +18 -18
- package/esm2015/lib/components/po-navbar/po-navbar-base.component.js +147 -147
- package/esm2015/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation-icon/po-navbar-item-navigation-icon.component.js +18 -18
- package/esm2015/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.component.js +18 -18
- package/esm2015/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.module.js +15 -15
- package/esm2015/lib/components/po-navbar/po-navbar-items/po-navbar-item/po-navbar-item.component.js +30 -30
- package/esm2015/lib/components/po-navbar/po-navbar-items/po-navbar-items.component.js +53 -53
- package/esm2015/lib/components/po-navbar/po-navbar-items/po-navbar-items.module.js +15 -15
- package/esm2015/lib/components/po-navbar/po-navbar-logo/po-navbar-logo.component.js +13 -13
- package/esm2015/lib/components/po-navbar/po-navbar.component.js +213 -213
- package/esm2015/lib/components/po-navbar/po-navbar.module.js +57 -57
- package/esm2015/lib/components/po-page/index.js +15 -15
- package/esm2015/lib/components/po-page/po-page-action.interface.js +2 -2
- package/esm2015/lib/components/po-page/po-page-base.component.js +23 -23
- package/esm2015/lib/components/po-page/po-page-content/po-page-content-base.component.js +10 -10
- package/esm2015/lib/components/po-page/po-page-content/po-page-content.component.js +54 -54
- package/esm2015/lib/components/po-page/po-page-default/po-page-default-base.component.js +111 -111
- package/esm2015/lib/components/po-page/po-page-default/po-page-default-literals.interface.js +2 -2
- package/esm2015/lib/components/po-page/po-page-default/po-page-default.component.js +98 -98
- package/esm2015/lib/components/po-page/po-page-default/po-page-default.interface.js +2 -2
- package/esm2015/lib/components/po-page/po-page-detail/po-page-detail-base.component.js +141 -141
- package/esm2015/lib/components/po-page/po-page-detail/po-page-detail-literals.interface.js +2 -2
- package/esm2015/lib/components/po-page/po-page-detail/po-page-detail.component.js +62 -62
- package/esm2015/lib/components/po-page/po-page-edit/po-page-edit-base.component.js +146 -146
- package/esm2015/lib/components/po-page/po-page-edit/po-page-edit-literals.interface.js +2 -2
- package/esm2015/lib/components/po-page/po-page-edit/po-page-edit.component.js +65 -65
- package/esm2015/lib/components/po-page/po-page-filter.interface.js +2 -2
- package/esm2015/lib/components/po-page/po-page-header/po-page-header-base.component.js +26 -26
- package/esm2015/lib/components/po-page/po-page-header/po-page-header.component.js +15 -15
- package/esm2015/lib/components/po-page/po-page-list/po-page-list-base.component.js +137 -137
- package/esm2015/lib/components/po-page/po-page-list/po-page-list-literals.interface.js +2 -2
- package/esm2015/lib/components/po-page/po-page-list/po-page-list.component.js +188 -188
- package/esm2015/lib/components/po-page/po-page-slide/po-page-slide-base.component.js +135 -135
- package/esm2015/lib/components/po-page/po-page-slide/po-page-slide.component.js +121 -121
- package/esm2015/lib/components/po-page/po-page.component.js +16 -16
- package/esm2015/lib/components/po-page/po-page.interface.js +2 -2
- package/esm2015/lib/components/po-page/po-page.module.js +60 -60
- package/esm2015/lib/components/po-popover/index.js +3 -3
- package/esm2015/lib/components/po-popover/po-popover-base.component.js +113 -113
- package/esm2015/lib/components/po-popover/po-popover.component.js +138 -138
- package/esm2015/lib/components/po-popover/po-popover.module.js +17 -17
- package/esm2015/lib/components/po-popup/index.js +4 -4
- package/esm2015/lib/components/po-popup/po-popup-action.interface.js +2 -2
- package/esm2015/lib/components/po-popup/po-popup-base.component.js +186 -186
- package/esm2015/lib/components/po-popup/po-popup.component.js +169 -169
- package/esm2015/lib/components/po-popup/po-popup.module.js +21 -21
- package/esm2015/lib/components/po-progress/enums/po-progress-status.enum.js +17 -17
- package/esm2015/lib/components/po-progress/index.js +4 -4
- package/esm2015/lib/components/po-progress/po-progress-bar/po-progress-bar.component.js +18 -18
- package/esm2015/lib/components/po-progress/po-progress-base.component.js +107 -107
- package/esm2015/lib/components/po-progress/po-progress.component.js +56 -56
- package/esm2015/lib/components/po-progress/po-progress.module.js +19 -19
- package/esm2015/lib/components/po-slide/directives/po-slide-content-template.directive.js +59 -59
- package/esm2015/lib/components/po-slide/index.js +5 -5
- package/esm2015/lib/components/po-slide/interfaces/po-slide-item.interface.js +2 -2
- package/esm2015/lib/components/po-slide/po-slide-base.component.js +104 -104
- package/esm2015/lib/components/po-slide/po-slide-circles/po-slide-circles.component.js +26 -26
- package/esm2015/lib/components/po-slide/po-slide-control/po-slide-control.component.js +25 -25
- package/esm2015/lib/components/po-slide/po-slide-item/po-slide-item.component.js +37 -37
- package/esm2015/lib/components/po-slide/po-slide.component.js +256 -256
- package/esm2015/lib/components/po-slide/po-slide.module.js +58 -58
- package/esm2015/lib/components/po-stepper/enums/po-stepper-orientation.enum.js +18 -18
- package/esm2015/lib/components/po-stepper/enums/po-stepper-status.enum.js +23 -23
- package/esm2015/lib/components/po-stepper/index.js +7 -7
- package/esm2015/lib/components/po-stepper/po-step/po-step.component.js +78 -78
- package/esm2015/lib/components/po-stepper/po-stepper-base.component.js +144 -144
- package/esm2015/lib/components/po-stepper/po-stepper-circle/po-stepper-circle.component.js +47 -47
- package/esm2015/lib/components/po-stepper/po-stepper-item.interface.js +2 -2
- package/esm2015/lib/components/po-stepper/po-stepper-label/po-stepper-label.component.js +20 -20
- package/esm2015/lib/components/po-stepper/po-stepper-step/po-stepper-step.component.js +116 -116
- package/esm2015/lib/components/po-stepper/po-stepper.component.js +219 -219
- package/esm2015/lib/components/po-stepper/po-stepper.module.js +27 -27
- package/esm2015/lib/components/po-table/enums/po-table-column-sort-type.enum.js +14 -14
- package/esm2015/lib/components/po-table/enums/po-table-row-template-arrow-direction.enum.js +14 -14
- package/esm2015/lib/components/po-table/index.js +18 -18
- package/esm2015/lib/components/po-table/interfaces/po-table-action.interface.js +2 -2
- package/esm2015/lib/components/po-table/interfaces/po-table-boolean.interface.js +2 -2
- package/esm2015/lib/components/po-table/interfaces/po-table-column-sort.interface.js +2 -2
- package/esm2015/lib/components/po-table/interfaces/po-table-column.interface.js +2 -2
- package/esm2015/lib/components/po-table/interfaces/po-table-filter.interface.js +2 -2
- package/esm2015/lib/components/po-table/interfaces/po-table-filtered-items-params.interface.js +2 -2
- package/esm2015/lib/components/po-table/interfaces/po-table-literals.interface.js +2 -2
- package/esm2015/lib/components/po-table/interfaces/po-table-response-api.interface.js +2 -2
- package/esm2015/lib/components/po-table/po-table-base.component.js +860 -860
- package/esm2015/lib/components/po-table/po-table-cell-template/po-table-cell-template.directive.js +82 -82
- package/esm2015/lib/components/po-table/po-table-column-icon/po-table-column-icon.component.js +72 -72
- package/esm2015/lib/components/po-table/po-table-column-icon/po-table-column-icon.interface.js +2 -2
- package/esm2015/lib/components/po-table/po-table-column-label/po-table-column-label.component.js +38 -38
- package/esm2015/lib/components/po-table/po-table-column-label/po-table-column-label.interface.js +2 -2
- package/esm2015/lib/components/po-table/po-table-column-link/po-table-column-link.component.js +38 -38
- package/esm2015/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.js +250 -250
- package/esm2015/lib/components/po-table/po-table-column-template/po-table-column-template.directive.js +90 -90
- package/esm2015/lib/components/po-table/po-table-detail/po-table-detail-column.interface.js +2 -2
- package/esm2015/lib/components/po-table/po-table-detail/po-table-detail.component.js +88 -88
- package/esm2015/lib/components/po-table/po-table-detail/po-table-detail.interface.js +2 -2
- package/esm2015/lib/components/po-table/po-table-icon/po-table-icon.component.js +46 -46
- package/esm2015/lib/components/po-table/po-table-row-template/po-table-row-template.directive.js +128 -128
- package/esm2015/lib/components/po-table/po-table-show-subtitle/po-table-show-subtitle.component.js +21 -21
- package/esm2015/lib/components/po-table/po-table-subtitle-circle/po-table-subtitle-circle.component.js +41 -41
- package/esm2015/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-column.interface.js +2 -2
- package/esm2015/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-footer.component.js +70 -70
- package/esm2015/lib/components/po-table/po-table.component.js +542 -542
- package/esm2015/lib/components/po-table/po-table.module.js +75 -75
- package/esm2015/lib/components/po-table/services/po-table.service.js +38 -38
- package/esm2015/lib/components/po-tabs/index.js +5 -5
- package/esm2015/lib/components/po-tabs/po-tab/po-tab-base.component.js +82 -82
- package/esm2015/lib/components/po-tabs/po-tab/po-tab.component.js +27 -27
- package/esm2015/lib/components/po-tabs/po-tab/po-tab.interface.js +2 -2
- package/esm2015/lib/components/po-tabs/po-tab-button/po-tab-button.component.js +75 -75
- package/esm2015/lib/components/po-tabs/po-tab-dropdown/po-tab-dropdown.component.js +44 -44
- package/esm2015/lib/components/po-tabs/po-tabs-base.component.js +49 -49
- package/esm2015/lib/components/po-tabs/po-tabs.component.js +126 -126
- package/esm2015/lib/components/po-tabs/po-tabs.module.js +21 -21
- package/esm2015/lib/components/po-tag/enums/po-tag-icon.enum.js +19 -19
- package/esm2015/lib/components/po-tag/enums/po-tag-orientation.enum.js +15 -15
- package/esm2015/lib/components/po-tag/enums/po-tag-type.enum.js +19 -19
- package/esm2015/lib/components/po-tag/index.js +5 -5
- package/esm2015/lib/components/po-tag/interfaces/po-tag-item.interface.js +2 -2
- package/esm2015/lib/components/po-tag/po-tag-base.component.js +175 -175
- package/esm2015/lib/components/po-tag/po-tag.component.js +71 -71
- package/esm2015/lib/components/po-tag/po-tag.module.js +21 -21
- package/esm2015/lib/components/po-toolbar/index.js +5 -5
- package/esm2015/lib/components/po-toolbar/po-toolbar-action.interface.js +2 -2
- package/esm2015/lib/components/po-toolbar/po-toolbar-actions/po-toolbar-actions.component.js +35 -35
- package/esm2015/lib/components/po-toolbar/po-toolbar-base.component.js +43 -43
- package/esm2015/lib/components/po-toolbar/po-toolbar-notification/po-toolbar-notification.component.js +39 -39
- package/esm2015/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.component.js +28 -28
- package/esm2015/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.interface.js +2 -2
- package/esm2015/lib/components/po-toolbar/po-toolbar.component.js +46 -46
- package/esm2015/lib/components/po-toolbar/po-toolbar.module.js +32 -32
- package/esm2015/lib/components/po-tree-view/index.js +4 -4
- package/esm2015/lib/components/po-tree-view/po-tree-view-base.component.js +197 -197
- package/esm2015/lib/components/po-tree-view/po-tree-view-item/po-tree-view-item.component.js +58 -58
- package/esm2015/lib/components/po-tree-view/po-tree-view-item/po-tree-view-item.interface.js +2 -2
- package/esm2015/lib/components/po-tree-view/po-tree-view-item-header/po-tree-view-item-header.component.js +26 -26
- package/esm2015/lib/components/po-tree-view/po-tree-view.component.js +60 -60
- package/esm2015/lib/components/po-tree-view/po-tree-view.module.js +49 -49
- package/esm2015/lib/components/po-tree-view/services/po-tree-view.service.js +24 -24
- package/esm2015/lib/components/po-widget/index.js +3 -3
- package/esm2015/lib/components/po-widget/po-widget-base.component.js +216 -216
- package/esm2015/lib/components/po-widget/po-widget.component.js +114 -114
- package/esm2015/lib/components/po-widget/po-widget.module.js +19 -19
- package/esm2015/lib/decorators/index.js +3 -3
- package/esm2015/lib/decorators/input-boolean/input-boolean.decorator.js +18 -18
- package/esm2015/lib/decorators/input-required/input-required.decorator.js +34 -34
- package/esm2015/lib/decorators/property-decorator.interface.js +2 -2
- package/esm2015/lib/decorators/utils-decorators.js +64 -64
- package/esm2015/lib/directives/directives.module.js +14 -14
- package/esm2015/lib/directives/index.js +3 -3
- package/esm2015/lib/directives/po-tooltip/index.js +3 -3
- package/esm2015/lib/directives/po-tooltip/po-tooltip-base.directive.js +106 -106
- package/esm2015/lib/directives/po-tooltip/po-tooltip-control-position.service.js +8 -8
- package/esm2015/lib/directives/po-tooltip/po-tooltip.directive.js +147 -147
- package/esm2015/lib/directives/po-tooltip/po-tooltip.module.js +18 -18
- package/esm2015/lib/enums/po-color-palette.enum.js +35 -35
- package/esm2015/lib/enums/po-key-code.enum.js +31 -31
- package/esm2015/lib/guards/guards.module.js +13 -13
- package/esm2015/lib/guards/index.js +2 -2
- package/esm2015/lib/index.js +10 -10
- package/esm2015/lib/interceptors/index.js +4 -4
- package/esm2015/lib/interceptors/interceptors.module.js +15 -15
- package/esm2015/lib/interceptors/po-http-interceptor/index.js +3 -3
- package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor-base.service.js +249 -249
- package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail-literals.interface.js +39 -39
- package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail.component.js +83 -83
- package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail.interface.js +2 -2
- package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor-literals.js +23 -23
- package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor.module.js +28 -28
- package/esm2015/lib/interceptors/po-http-interceptor/po-http-interceptor.service.js +28 -28
- package/esm2015/lib/interceptors/po-http-request/index.js +3 -3
- package/esm2015/lib/interceptors/po-http-request/po-http-request-control-service.js +23 -23
- package/esm2015/lib/interceptors/po-http-request/po-http-request-interceptor.service.js +169 -169
- package/esm2015/lib/interceptors/po-http-request/po-http-request.module.js +24 -24
- package/esm2015/lib/interfaces/index.js +2 -2
- package/esm2015/lib/interfaces/po-http/po-response-api.interface.js +2 -2
- package/esm2015/lib/pipes/index.js +3 -3
- package/esm2015/lib/pipes/pipes.module.js +14 -14
- package/esm2015/lib/pipes/po-time/index.js +3 -3
- package/esm2015/lib/pipes/po-time/po-time.module.js +19 -19
- package/esm2015/lib/pipes/po-time/po-time.pipe.js +55 -55
- package/esm2015/lib/po.module.js +34 -34
- package/esm2015/lib/services/index.js +11 -11
- package/esm2015/lib/services/po-active-overlay/index.js +3 -3
- package/esm2015/lib/services/po-active-overlay/po-active-overlay.module.js +16 -16
- package/esm2015/lib/services/po-active-overlay/po-active-overlay.service.js +14 -14
- package/esm2015/lib/services/po-color/po-color.service.js +60 -60
- package/esm2015/lib/services/po-color/po-colors.constant.js +43 -43
- package/esm2015/lib/services/po-color-palette/index.js +3 -3
- package/esm2015/lib/services/po-color-palette/po-color-palette.module.js +16 -16
- package/esm2015/lib/services/po-color-palette/po-color-palette.service.js +25 -25
- package/esm2015/lib/services/po-component-injector/index.js +3 -3
- package/esm2015/lib/services/po-component-injector/po-component-injector.module.js +14 -14
- package/esm2015/lib/services/po-component-injector/po-component-injector.service.js +34 -34
- package/esm2015/lib/services/po-control-position/index.js +3 -3
- package/esm2015/lib/services/po-control-position/po-control-position.constants.js +16 -16
- package/esm2015/lib/services/po-control-position/po-control-position.module.js +15 -15
- package/esm2015/lib/services/po-control-position/po-control-position.service.js +361 -361
- package/esm2015/lib/services/po-date/index.js +3 -3
- package/esm2015/lib/services/po-date/po-date.module.js +16 -16
- package/esm2015/lib/services/po-date/po-date.service.js +201 -201
- package/esm2015/lib/services/po-dialog/index.js +8 -8
- package/esm2015/lib/services/po-dialog/interfaces/po-dialog-alert-literals.interface.js +2 -2
- package/esm2015/lib/services/po-dialog/interfaces/po-dialog-confirm-literals.interface.js +2 -2
- package/esm2015/lib/services/po-dialog/interfaces/po-dialog.interface.js +2 -2
- package/esm2015/lib/services/po-dialog/po-dialog-base.service.js +18 -18
- package/esm2015/lib/services/po-dialog/po-dialog.component.js +115 -115
- package/esm2015/lib/services/po-dialog/po-dialog.enum.js +16 -16
- package/esm2015/lib/services/po-dialog/po-dialog.module.js +15 -15
- package/esm2015/lib/services/po-dialog/po-dialog.service.js +42 -42
- package/esm2015/lib/services/po-i18n/index.js +8 -8
- package/esm2015/lib/services/po-i18n/interfaces/po-i18n-config-default.interface.js +2 -2
- package/esm2015/lib/services/po-i18n/interfaces/po-i18n-config.interface.js +2 -2
- package/esm2015/lib/services/po-i18n/interfaces/po-i18n-literals.interface.js +2 -2
- package/esm2015/lib/services/po-i18n/po-i18n-base.pipe.js +40 -40
- package/esm2015/lib/services/po-i18n/po-i18n-base.service.js +439 -439
- package/esm2015/lib/services/po-i18n/po-i18n-config-injection-token.js +3 -3
- package/esm2015/lib/services/po-i18n/po-i18n.module.js +188 -188
- package/esm2015/lib/services/po-i18n/po-i18n.pipe.js +21 -21
- package/esm2015/lib/services/po-i18n/po-i18n.service.js +20 -20
- package/esm2015/lib/services/po-language/index.js +5 -5
- package/esm2015/lib/services/po-language/po-language.constant.js +75 -75
- package/esm2015/lib/services/po-language/po-language.interface.js +2 -2
- package/esm2015/lib/services/po-language/po-language.module.js +15 -15
- package/esm2015/lib/services/po-language/po-language.service.js +136 -136
- package/esm2015/lib/services/po-notification/index.js +6 -6
- package/esm2015/lib/services/po-notification/po-notification-base.service.js +111 -111
- package/esm2015/lib/services/po-notification/po-notification.interface.js +2 -2
- package/esm2015/lib/services/po-notification/po-notification.module.js +15 -15
- package/esm2015/lib/services/po-notification/po-notification.service.js +92 -92
- package/esm2015/lib/services/po-notification/po-toaster/po-toaster-base.component.js +15 -15
- package/esm2015/lib/services/po-notification/po-toaster/po-toaster-orientation.enum.js +13 -13
- package/esm2015/lib/services/po-notification/po-toaster/po-toaster-type.enum.js +17 -17
- package/esm2015/lib/services/po-notification/po-toaster/po-toaster.component.js +132 -132
- package/esm2015/lib/services/po-notification/po-toaster/po-toaster.interface.js +2 -2
- package/esm2015/lib/services/services.module.js +40 -40
- package/esm2015/lib/utils/util.js +508 -508
- package/esm2015/po-ui-ng-components.js +205 -205
- package/esm2015/public-api.js +2 -2
- package/fesm2015/po-ui-ng-components.js +35214 -35160
- package/fesm2015/po-ui-ng-components.js.map +1 -1
- package/lib/components/components.module.d.ts +2 -2
- package/lib/components/index.d.ts +37 -37
- package/lib/components/po-accordion/index.d.ts +3 -3
- package/lib/components/po-accordion/po-accordion-base.component.d.ts +28 -28
- package/lib/components/po-accordion/po-accordion-item/po-accordion-item.component.d.ts +49 -49
- package/lib/components/po-accordion/po-accordion-item-body/po-accordion-item-body.component.d.ts +3 -3
- package/lib/components/po-accordion/po-accordion-item-header/po-accordion-item-header.component.d.ts +7 -7
- package/lib/components/po-accordion/po-accordion.component.d.ts +37 -37
- package/lib/components/po-accordion/po-accordion.module.d.ts +33 -33
- package/lib/components/po-accordion/services/po-accordion.service.d.ts +13 -13
- package/lib/components/po-avatar/index.d.ts +2 -2
- package/lib/components/po-avatar/po-avatar-base.component.d.ts +53 -53
- package/lib/components/po-avatar/po-avatar.component.d.ts +28 -28
- package/lib/components/po-avatar/po-avatar.module.d.ts +7 -7
- package/lib/components/po-badge/po-badge-base.component.d.ts +55 -55
- package/lib/components/po-badge/po-badge.component.d.ts +8 -8
- package/lib/components/po-badge/po-badge.module.d.ts +7 -7
- package/lib/components/po-breadcrumb/index.d.ts +4 -4
- package/lib/components/po-breadcrumb/po-breadcrumb-base.component.d.ts +104 -104
- package/lib/components/po-breadcrumb/po-breadcrumb-dropdown/po-breadcrumb-dropdown.component.d.ts +11 -11
- package/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.component.d.ts +29 -29
- package/lib/components/po-breadcrumb/po-breadcrumb-favorite/po-breadcrumb-favorite.service.d.ts +27 -27
- package/lib/components/po-breadcrumb/po-breadcrumb-item/po-breadcrumb-item.component.d.ts +13 -13
- package/lib/components/po-breadcrumb/po-breadcrumb-item.interface.d.ts +31 -31
- package/lib/components/po-breadcrumb/po-breadcrumb.component.d.ts +53 -53
- package/lib/components/po-breadcrumb/po-breadcrumb.interface.d.ts +42 -42
- package/lib/components/po-breadcrumb/po-breadcrumb.module.d.ts +8 -8
- package/lib/components/po-button/index.d.ts +2 -2
- package/lib/components/po-button/po-button-base.component.d.ts +120 -120
- package/lib/components/po-button/po-button.component.d.ts +49 -49
- package/lib/components/po-button/po-button.module.d.ts +7 -7
- package/lib/components/po-button-group/index.d.ts +4 -4
- package/lib/components/po-button-group/po-button-group-base.component.d.ts +53 -53
- package/lib/components/po-button-group/po-button-group-item.interface.d.ts +64 -64
- package/lib/components/po-button-group/po-button-group-toggle.enum.d.ts +15 -15
- package/lib/components/po-button-group/po-button-group.component.d.ts +31 -31
- package/lib/components/po-button-group/po-button-group.module.d.ts +7 -7
- package/lib/components/po-calendar/index.d.ts +3 -3
- package/lib/components/po-calendar/po-calendar-base.component.d.ts +129 -129
- package/lib/components/po-calendar/po-calendar-header/po-calendar-header.component.d.ts +8 -8
- package/lib/components/po-calendar/po-calendar-mode.enum.d.ts +11 -11
- package/lib/components/po-calendar/po-calendar-wrapper/po-calendar-wrapper.component.d.ts +77 -77
- package/lib/components/po-calendar/po-calendar.component.d.ts +53 -53
- package/lib/components/po-calendar/po-calendar.module.d.ts +6 -6
- package/lib/components/po-calendar/services/po-calendar.lang.service.d.ts +16 -16
- package/lib/components/po-calendar/services/po-calendar.service.d.ts +5 -5
- package/lib/components/po-chart/directives/po-resize-observer.directive.d.ts +12 -12
- package/lib/components/po-chart/enums/po-chart-type.enum.d.ts +49 -49
- package/lib/components/po-chart/helpers/po-chart-default-values.constant.d.ts +8 -8
- package/lib/components/po-chart/index.d.ts +7 -7
- package/lib/components/po-chart/interfaces/po-chart-axis-options.interface.d.ts +37 -37
- package/lib/components/po-chart/interfaces/po-chart-bar-coordinates.interface.d.ts +23 -23
- package/lib/components/po-chart/interfaces/po-chart-container-size.interface.d.ts +23 -23
- package/lib/components/po-chart/interfaces/po-chart-label-coordinates.interface.d.ts +19 -19
- package/lib/components/po-chart/interfaces/po-chart-min-max-values.interface.d.ts +19 -19
- package/lib/components/po-chart/interfaces/po-chart-options.interface.d.ts +20 -20
- package/lib/components/po-chart/interfaces/po-chart-path-coordinates.interface.d.ts +23 -23
- package/lib/components/po-chart/interfaces/po-chart-points-coordinates.interface.d.ts +26 -26
- package/lib/components/po-chart/interfaces/po-chart-serie.interface.d.ts +101 -101
- package/lib/components/po-chart/po-chart-base.component.d.ts +152 -152
- package/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis-label/po-chart-axis-label.component.d.ts +10 -10
- package/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis-path/po-chart-axis-path.component.d.ts +7 -7
- package/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis.component.d.ts +60 -60
- package/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar-base.component.d.ts +31 -31
- package/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar-path/po-chart-bar-path.component.d.ts +13 -13
- package/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-bar.component.d.ts +13 -13
- package/lib/components/po-chart/po-chart-container/po-chart-bar/po-chart-column/po-chart-column.component.d.ts +13 -13
- package/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-label/po-chart-circular-label.component.d.ts +11 -11
- package/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-path/po-chart-circular-path.component.d.ts +13 -13
- package/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular-path/po-chart-tooltip.directive.d.ts +20 -20
- package/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-circular.component.d.ts +42 -42
- package/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-donut/po-chart-donut.component.d.ts +16 -16
- package/lib/components/po-chart/po-chart-container/po-chart-circular/po-chart-pie/po-chart-pie.component.d.ts +8 -8
- package/lib/components/po-chart/po-chart-container/po-chart-container.component.d.ts +43 -43
- package/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-area/po-chart-area.component.d.ts +20 -20
- package/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-line-base.component.d.ts +46 -46
- package/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-line.component.d.ts +13 -13
- package/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-path/po-chart-path.component.d.ts +19 -19
- package/lib/components/po-chart/po-chart-container/po-chart-line/po-chart-series-point/po-chart-series-point.component.d.ts +30 -30
- package/lib/components/po-chart/po-chart-legend/po-chart-legend.component.d.ts +7 -7
- package/lib/components/po-chart/po-chart-types/po-chart-circular/po-chart-circular.constant.d.ts +7 -7
- package/lib/components/po-chart/po-chart-types/po-chart-circular/po-chart-circular.d.ts +55 -55
- package/lib/components/po-chart/po-chart-types/po-chart-dynamic-type.component.d.ts +36 -36
- package/lib/components/po-chart/po-chart-types/po-chart-gauge/po-chart-gauge-series.interface.d.ts +39 -39
- 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
- package/lib/components/po-chart/po-chart-types/po-chart-gauge/po-chart-gauge.component.d.ts +20 -20
- package/lib/components/po-chart/po-chart.component.d.ts +67 -67
- package/lib/components/po-chart/po-chart.module.d.ts +7 -7
- package/lib/components/po-chart/services/po-chart-maths.service.d.ts +63 -63
- package/lib/components/po-chart/services/po-chart-svg-container.service.d.ts +21 -21
- package/lib/components/po-container/index.d.ts +2 -2
- package/lib/components/po-container/po-container-base.component.d.ts +59 -59
- package/lib/components/po-container/po-container.component.d.ts +24 -24
- package/lib/components/po-container/po-container.module.d.ts +7 -7
- package/lib/components/po-disclaimer/index.d.ts +3 -3
- package/lib/components/po-disclaimer/po-disclaimer-base.component.d.ts +56 -56
- package/lib/components/po-disclaimer/po-disclaimer.component.d.ts +16 -16
- package/lib/components/po-disclaimer/po-disclaimer.interface.d.ts +17 -17
- package/lib/components/po-disclaimer/po-disclaimer.module.d.ts +6 -6
- package/lib/components/po-disclaimer-group/index.d.ts +4 -4
- package/lib/components/po-disclaimer-group/po-disclaimer-group-base.component.d.ts +114 -114
- package/lib/components/po-disclaimer-group/po-disclaimer-group-remove-action.interface.d.ts +18 -18
- package/lib/components/po-disclaimer-group/po-disclaimer-group.component.d.ts +28 -28
- package/lib/components/po-disclaimer-group/po-disclaimer-group.interface.d.ts +78 -78
- package/lib/components/po-disclaimer-group/po-disclaimer-group.module.d.ts +7 -7
- package/lib/components/po-disclaimer-group/po-disclaimer-remove/po-disclaimer-remove.component.d.ts +16 -16
- package/lib/components/po-divider/index.d.ts +2 -2
- package/lib/components/po-divider/po-divider-base.component.d.ts +10 -10
- package/lib/components/po-divider/po-divider.component.d.ts +23 -23
- package/lib/components/po-divider/po-divider.module.d.ts +7 -7
- package/lib/components/po-dropdown/index.d.ts +3 -3
- package/lib/components/po-dropdown/po-dropdown-action.interface.d.ts +11 -11
- package/lib/components/po-dropdown/po-dropdown-base.component.d.ts +54 -54
- package/lib/components/po-dropdown/po-dropdown.component.d.ts +41 -41
- package/lib/components/po-dropdown/po-dropdown.module.d.ts +6 -6
- package/lib/components/po-dynamic/index.d.ts +10 -10
- package/lib/components/po-dynamic/po-dynamic-field-type.enum.d.ts +23 -23
- package/lib/components/po-dynamic/po-dynamic-field.interface.d.ts +130 -130
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-base.component.d.ts +215 -215
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.d.ts +249 -251
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-field-internal.interface.d.ts +14 -14
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields-base.component.d.ts +44 -44
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.d.ts +36 -36
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-load/po-dynamic-form-load.interface.d.ts +20 -20
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-load/po-dynamic-form-load.service.d.ts +8 -8
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-operation/po-dynamic-form-operation.d.ts +10 -10
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-response.interface.d.ts +29 -29
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-field-changed.interface.d.ts +13 -13
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-field-validation.interface.d.ts +21 -21
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.interface.d.ts +20 -20
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-validation/po-dynamic-form-validation.service.d.ts +12 -12
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form.component.d.ts +83 -83
- package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.d.ts +134 -134
- package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-field.interface.d.ts +104 -104
- package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.d.ts +36 -36
- package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.service.d.ts +10 -10
- package/lib/components/po-dynamic/po-dynamic.module.d.ts +2 -2
- package/lib/components/po-dynamic/po-dynamic.util.d.ts +4 -4
- package/lib/components/po-field/index.d.ts +50 -50
- package/lib/components/po-field/po-checkbox/po-checkbox-base.component.d.ts +62 -62
- package/lib/components/po-field/po-checkbox/po-checkbox.component.d.ts +51 -51
- package/lib/components/po-field/po-checkbox-group/interfaces/po-checkbox-group-option-view.interface.d.ts +14 -14
- package/lib/components/po-field/po-checkbox-group/interfaces/po-checkbox-group-option.interface.d.ts +24 -24
- package/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.d.ts +184 -176
- package/lib/components/po-field/po-checkbox-group/po-checkbox-group.component.d.ts +50 -50
- package/lib/components/po-field/po-checkbox-group/po-checkbox-group.module.d.ts +7 -7
- package/lib/components/po-field/po-clean/po-clean-base.component.d.ts +30 -30
- package/lib/components/po-field/po-clean/po-clean.component.d.ts +17 -17
- package/lib/components/po-field/po-clean/po-clean.module.d.ts +7 -7
- package/lib/components/po-field/po-combo/interfaces/po-combo-filter.interface.d.ts +27 -27
- package/lib/components/po-field/po-combo/interfaces/po-combo-group.interface.d.ts +11 -11
- package/lib/components/po-field/po-combo/interfaces/po-combo-literals.interface.d.ts +11 -11
- package/lib/components/po-field/po-combo/interfaces/po-combo-option-group.interface.d.ts +14 -14
- package/lib/components/po-field/po-combo/interfaces/po-combo-option.interface.d.ts +21 -21
- package/lib/components/po-field/po-combo/interfaces/po-response.interface.d.ts +11 -11
- package/lib/components/po-field/po-combo/po-combo-base.component.d.ts +409 -401
- package/lib/components/po-field/po-combo/po-combo-filter-mode.enum.d.ts +15 -15
- package/lib/components/po-field/po-combo/po-combo-filter.service.d.ts +28 -28
- package/lib/components/po-field/po-combo/po-combo-option-template/po-combo-option-template.directive.d.ts +70 -70
- package/lib/components/po-field/po-combo/po-combo.component.d.ts +139 -139
- package/lib/components/po-field/po-datepicker/enums/po-datepicker-iso-format.enum.d.ts +15 -15
- package/lib/components/po-field/po-datepicker/po-datepicker-base.component.d.ts +223 -223
- package/lib/components/po-field/po-datepicker/po-datepicker.component.d.ts +101 -101
- package/lib/components/po-field/po-datepicker/po-datepicker.module.d.ts +7 -7
- package/lib/components/po-field/po-datepicker-range/interfaces/po-datepicker-range-literals.interface.d.ts +17 -17
- package/lib/components/po-field/po-datepicker-range/interfaces/po-datepicker-range.interface.d.ts +16 -16
- package/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.d.ts +269 -269
- package/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.d.ts +125 -124
- package/lib/components/po-field/po-datepicker-range/po-datepicker-range.literals.d.ts +7 -7
- package/lib/components/po-field/po-decimal/po-decimal.component.d.ts +180 -180
- package/lib/components/po-field/po-email/po-email.component.d.ts +42 -42
- package/lib/components/po-field/po-field-container/po-field-container-bottom/po-field-container-bottom.component.d.ts +15 -15
- package/lib/components/po-field/po-field-container/po-field-container-literals.d.ts +14 -14
- package/lib/components/po-field/po-field-container/po-field-container.component.d.ts +18 -18
- package/lib/components/po-field/po-field-container/po-field-container.module.d.ts +7 -7
- package/lib/components/po-field/po-field-validate.model.d.ts +38 -38
- package/lib/components/po-field/po-field.model.d.ts +51 -51
- package/lib/components/po-field/po-field.module.d.ts +12 -12
- package/lib/components/po-field/po-input/po-input-base.component.d.ts +265 -265
- package/lib/components/po-field/po-input/po-input.component.d.ts +29 -29
- package/lib/components/po-field/po-input/po-mask.d.ts +49 -49
- package/lib/components/po-field/po-input-generic/po-input-generic.d.ts +35 -35
- package/lib/components/po-field/po-login/po-login.component.d.ts +34 -34
- package/lib/components/po-field/po-lookup/interfaces/po-lookup-advanced-filter.interface.d.ts +8 -8
- package/lib/components/po-field/po-lookup/interfaces/po-lookup-column.interface.d.ts +44 -44
- package/lib/components/po-field/po-lookup/interfaces/po-lookup-filter.interface.d.ts +29 -29
- package/lib/components/po-field/po-lookup/interfaces/po-lookup-filtered-items-params.interface.d.ts +40 -40
- package/lib/components/po-field/po-lookup/interfaces/po-lookup-literals.interface.d.ts +40 -40
- package/lib/components/po-field/po-lookup/interfaces/po-lookup-response-api.interface.d.ts +8 -8
- package/lib/components/po-field/po-lookup/po-lookup-base.component.d.ts +387 -387
- package/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.d.ts +119 -119
- package/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.d.ts +41 -41
- package/lib/components/po-field/po-lookup/po-lookup.component.d.ts +113 -113
- package/lib/components/po-field/po-lookup/services/po-lookup-filter.service.d.ts +25 -25
- package/lib/components/po-field/po-lookup/services/po-lookup-modal.service.d.ts +44 -44
- package/lib/components/po-field/po-multiselect/po-multiselect-base.component.d.ts +345 -345
- package/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.d.ts +57 -57
- package/lib/components/po-field/po-multiselect/po-multiselect-filter-mode.enum.d.ts +15 -15
- package/lib/components/po-field/po-multiselect/po-multiselect-filter.interface.d.ts +28 -28
- package/lib/components/po-field/po-multiselect/po-multiselect-filter.service.d.ts +18 -18
- package/lib/components/po-field/po-multiselect/po-multiselect-item/po-multiselect-item.component.d.ts +17 -17
- package/lib/components/po-field/po-multiselect/po-multiselect-literals.interface.d.ts +15 -15
- package/lib/components/po-field/po-multiselect/po-multiselect-option.interface.d.ts +13 -13
- package/lib/components/po-field/po-multiselect/po-multiselect-search/po-multiselect-search.component.d.ts +34 -34
- package/lib/components/po-field/po-multiselect/po-multiselect.component.d.ts +107 -107
- package/lib/components/po-field/po-number/po-number-base.component.d.ts +18 -18
- package/lib/components/po-field/po-number/po-number.component.d.ts +59 -59
- package/lib/components/po-field/po-password/po-password.component.d.ts +48 -48
- package/lib/components/po-field/po-radio-group/po-radio-group-base.component.d.ts +119 -119
- package/lib/components/po-field/po-radio-group/po-radio-group-option.interface.d.ts +15 -15
- package/lib/components/po-field/po-radio-group/po-radio-group.component.d.ts +64 -64
- package/lib/components/po-field/po-rich-text/interfaces/po-rich-text-toolbar-button-group-item.interface.d.ts +4 -4
- package/lib/components/po-field/po-rich-text/po-rich-text-base.component.d.ts +144 -144
- package/lib/components/po-field/po-rich-text/po-rich-text-body/po-rich-text-body.component.d.ts +52 -52
- package/lib/components/po-field/po-rich-text/po-rich-text-image-modal/po-rich-text-image-modal.component.d.ts +34 -34
- package/lib/components/po-field/po-rich-text/po-rich-text-link-modal/po-rich-text-link-modal.component.d.ts +45 -45
- package/lib/components/po-field/po-rich-text/po-rich-text-literals.d.ts +82 -82
- package/lib/components/po-field/po-rich-text/po-rich-text-toolbar/po-rich-text-toolbar.component.d.ts +45 -45
- package/lib/components/po-field/po-rich-text/po-rich-text.component.d.ts +60 -60
- package/lib/components/po-field/po-rich-text/po-rich-text.service.d.ts +5 -5
- package/lib/components/po-field/po-select/po-select-option-template/po-select-option-template.directive.d.ts +48 -48
- package/lib/components/po-field/po-select/po-select-option.interface.d.ts +13 -13
- package/lib/components/po-field/po-select/po-select.component.d.ts +158 -151
- package/lib/components/po-field/po-switch/po-switch-label-position.enum.d.ts +13 -13
- package/lib/components/po-field/po-switch/po-switch.component.d.ts +102 -102
- package/lib/components/po-field/po-textarea/po-textarea-base.component.d.ts +178 -178
- package/lib/components/po-field/po-textarea/po-textarea.component.d.ts +59 -59
- package/lib/components/po-field/po-upload/interfaces/po-upload-file-restriction.interface.d.ts +37 -37
- package/lib/components/po-field/po-upload/interfaces/po-upload-literals.interface.d.ts +45 -45
- package/lib/components/po-field/po-upload/po-upload-base.component.d.ts +333 -325
- package/lib/components/po-field/po-upload/po-upload-base.service.d.ts +32 -32
- 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
- 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
- package/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.component.d.ts +24 -24
- package/lib/components/po-field/po-upload/po-upload-drag-drop/po-upload-drag-drop.directive.d.ts +32 -32
- package/lib/components/po-field/po-upload/po-upload-file-restrictions/po-upload-file-restrictions.component.d.ts +21 -21
- package/lib/components/po-field/po-upload/po-upload-file.d.ts +15 -15
- package/lib/components/po-field/po-upload/po-upload-status.enum.d.ts +6 -6
- package/lib/components/po-field/po-upload/po-upload.component.d.ts +106 -106
- package/lib/components/po-field/po-upload/po-upload.service.d.ts +3 -3
- package/lib/components/po-field/po-url/po-url.component.d.ts +41 -41
- package/lib/components/po-field/validators.d.ts +7 -7
- package/lib/components/po-gauge/index.d.ts +3 -3
- package/lib/components/po-gauge/interfaces/po-gauge-coordinates.interface.d.ts +19 -19
- package/lib/components/po-gauge/interfaces/po-gauge-ranges.interface.d.ts +44 -44
- package/lib/components/po-gauge/interfaces/po-gauge-svg-container.interface.d.ts +15 -15
- package/lib/components/po-gauge/po-gauge-base.component.d.ts +98 -98
- package/lib/components/po-gauge/po-gauge-default-values.constant.d.ts +5 -5
- package/lib/components/po-gauge/po-gauge-description/po-gauge-description.component.d.ts +11 -11
- package/lib/components/po-gauge/po-gauge-legend/po-gauge-legend.component.d.ts +9 -9
- package/lib/components/po-gauge/po-gauge-svg/po-gauge-path/po-gauge-path.component.d.ts +9 -9
- package/lib/components/po-gauge/po-gauge-svg/po-gauge-pointer/po-gauge-pointer.component.d.ts +15 -15
- package/lib/components/po-gauge/po-gauge-svg/po-gauge-svg.component.d.ts +32 -32
- package/lib/components/po-gauge/po-gauge-title/po-gauge-title.component.d.ts +3 -3
- package/lib/components/po-gauge/po-gauge.component.d.ts +37 -37
- package/lib/components/po-gauge/po-gauge.module.d.ts +6 -6
- package/lib/components/po-grid/index.d.ts +3 -3
- package/lib/components/po-grid/po-grid-cell/po-grid-cell.component.d.ts +27 -27
- package/lib/components/po-grid/po-grid-cell-action/po-grid-cell-action.component.d.ts +6 -6
- package/lib/components/po-grid/po-grid-head/po-grid-head.component.d.ts +10 -10
- package/lib/components/po-grid/po-grid-row-actions.interface.d.ts +86 -86
- package/lib/components/po-grid/po-grid.component.d.ts +80 -80
- package/lib/components/po-grid/po-grid.module.d.ts +7 -7
- package/lib/components/po-icon/index.d.ts +2 -2
- package/lib/components/po-icon/po-icon.component.d.ts +39 -39
- package/lib/components/po-icon/po-icon.module.d.ts +7 -7
- package/lib/components/po-info/index.d.ts +3 -3
- package/lib/components/po-info/po-info-base.component.d.ts +46 -46
- package/lib/components/po-info/po-info-orietation.enum.d.ts +13 -13
- package/lib/components/po-info/po-info.component.d.ts +24 -24
- package/lib/components/po-info/po-info.module.d.ts +7 -7
- package/lib/components/po-list-view/index.d.ts +6 -6
- package/lib/components/po-list-view/interfaces/po-list-view-action.interface.d.ts +15 -15
- package/lib/components/po-list-view/interfaces/po-list-view-literals.interface.d.ts +19 -19
- package/lib/components/po-list-view/po-list-view-base.component.d.ts +165 -165
- package/lib/components/po-list-view/po-list-view-content-template/po-list-view-content-template.directive.d.ts +97 -97
- package/lib/components/po-list-view/po-list-view-detail-template/po-list-view-detail-template.directive.d.ts +60 -60
- package/lib/components/po-list-view/po-list-view.component.d.ts +53 -53
- package/lib/components/po-list-view/po-list-view.module.d.ts +33 -33
- package/lib/components/po-loading/index.d.ts +4 -4
- package/lib/components/po-loading/po-loading-base.component.d.ts +14 -14
- package/lib/components/po-loading/po-loading-icon/po-loading-icon.component.d.ts +22 -22
- package/lib/components/po-loading/po-loading-overlay/interfaces/po-loading-overlay-literals.interface.d.ts +13 -13
- package/lib/components/po-loading/po-loading-overlay/po-loading-overlay-base.component.d.ts +59 -59
- package/lib/components/po-loading/po-loading-overlay/po-loading-overlay.component.d.ts +28 -28
- package/lib/components/po-loading/po-loading.component.d.ts +8 -8
- package/lib/components/po-loading/po-loading.module.d.ts +8 -8
- package/lib/components/po-menu/index.d.ts +8 -8
- package/lib/components/po-menu/po-menu-base.component.d.ts +182 -182
- package/lib/components/po-menu/po-menu-filter/po-menu-filter-literals.interface.d.ts +14 -14
- package/lib/components/po-menu/po-menu-filter/po-menu-filter.component.d.ts +25 -25
- package/lib/components/po-menu/po-menu-filter/po-menu-filter.interface.d.ts +19 -19
- package/lib/components/po-menu/po-menu-header-template/po-menu-header-template.directive.d.ts +40 -40
- package/lib/components/po-menu/po-menu-item/po-menu-item-badge.interface.d.ts +49 -49
- package/lib/components/po-menu/po-menu-item/po-menu-item-filtered.interface.d.ts +13 -13
- package/lib/components/po-menu/po-menu-item/po-menu-item.component.d.ts +54 -54
- package/lib/components/po-menu/po-menu-item.interface.d.ts +78 -78
- package/lib/components/po-menu/po-menu.component.d.ts +178 -178
- package/lib/components/po-menu/po-menu.module.d.ts +7 -7
- package/lib/components/po-menu/services/po-menu-global.service.d.ts +14 -14
- package/lib/components/po-menu/services/po-menu-items.service.d.ts +16 -16
- package/lib/components/po-menu/services/po-menu.service.d.ts +20 -20
- package/lib/components/po-menu-panel/index.d.ts +3 -3
- package/lib/components/po-menu-panel/po-menu-panel-base.component.d.ts +33 -33
- package/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item-internal.interface.d.ts +16 -16
- package/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.component.d.ts +23 -23
- package/lib/components/po-menu-panel/po-menu-panel-item/po-menu-panel-item.interface.d.ts +18 -18
- package/lib/components/po-menu-panel/po-menu-panel.component.d.ts +91 -91
- package/lib/components/po-menu-panel/po-menu-panel.module.d.ts +7 -7
- package/lib/components/po-menu-panel/services/po-menu-panel-items.service.d.ts +16 -16
- package/lib/components/po-modal/index.d.ts +4 -4
- package/lib/components/po-modal/po-modal-action.interface.d.ts +23 -23
- package/lib/components/po-modal/po-modal-base.component.d.ts +79 -79
- package/lib/components/po-modal/po-modal-footer/po-modal-footer.component.d.ts +30 -30
- package/lib/components/po-modal/po-modal.component.d.ts +46 -46
- package/lib/components/po-modal/po-modal.literals.d.ts +14 -14
- package/lib/components/po-modal/po-modal.module.d.ts +6 -6
- package/lib/components/po-navbar/index.d.ts +4 -4
- package/lib/components/po-navbar/interfaces/po-navbar-icon-action.interface.d.ts +55 -55
- package/lib/components/po-navbar/interfaces/po-navbar-item.interface.d.ts +21 -21
- package/lib/components/po-navbar/interfaces/po-navbar-literals.interface.d.ts +11 -11
- package/lib/components/po-navbar/po-navbar-actions/po-navbar-action/po-navbar-action.component.d.ts +13 -13
- package/lib/components/po-navbar/po-navbar-actions/po-navbar-action-popup/po-navbar-action-popup.component.d.ts +5 -5
- package/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.component.d.ts +6 -6
- package/lib/components/po-navbar/po-navbar-actions/po-navbar-actions.module.d.ts +2 -2
- package/lib/components/po-navbar/po-navbar-base.component.d.ts +129 -129
- package/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation-icon/po-navbar-item-navigation-icon.component.d.ts +6 -6
- package/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.component.d.ts +6 -6
- package/lib/components/po-navbar/po-navbar-item-navigation/po-navbar-item-navigation.module.d.ts +2 -2
- package/lib/components/po-navbar/po-navbar-items/po-navbar-item/po-navbar-item.component.d.ts +11 -11
- package/lib/components/po-navbar/po-navbar-items/po-navbar-items.component.d.ts +17 -17
- package/lib/components/po-navbar/po-navbar-items/po-navbar-items.module.d.ts +2 -2
- package/lib/components/po-navbar/po-navbar-logo/po-navbar-logo.component.d.ts +3 -3
- package/lib/components/po-navbar/po-navbar.component.d.ts +57 -57
- package/lib/components/po-navbar/po-navbar.module.d.ts +33 -33
- package/lib/components/po-page/index.d.ts +14 -14
- package/lib/components/po-page/po-page-action.interface.d.ts +16 -16
- package/lib/components/po-page/po-page-base.component.d.ts +22 -22
- package/lib/components/po-page/po-page-content/po-page-content-base.component.d.ts +10 -10
- package/lib/components/po-page/po-page-content/po-page-content.component.d.ts +20 -20
- package/lib/components/po-page/po-page-default/po-page-default-base.component.d.ts +75 -75
- package/lib/components/po-page/po-page-default/po-page-default-literals.interface.d.ts +11 -11
- package/lib/components/po-page/po-page-default/po-page-default.component.d.ts +45 -45
- package/lib/components/po-page/po-page-default/po-page-default.interface.d.ts +13 -13
- package/lib/components/po-page/po-page-detail/po-page-detail-base.component.d.ts +100 -100
- package/lib/components/po-page/po-page-detail/po-page-detail-literals.interface.d.ts +15 -15
- package/lib/components/po-page/po-page-detail/po-page-detail.component.d.ts +28 -28
- package/lib/components/po-page/po-page-edit/po-page-edit-base.component.d.ts +106 -106
- package/lib/components/po-page/po-page-edit/po-page-edit-literals.interface.d.ts +15 -15
- package/lib/components/po-page/po-page-edit/po-page-edit.component.d.ts +29 -29
- package/lib/components/po-page/po-page-filter.interface.d.ts +26 -26
- package/lib/components/po-page/po-page-header/po-page-header-base.component.d.ts +17 -17
- package/lib/components/po-page/po-page-header/po-page-header.component.d.ts +7 -7
- package/lib/components/po-page/po-page-list/po-page-list-base.component.d.ts +108 -108
- package/lib/components/po-page/po-page-list/po-page-list-literals.interface.d.ts +11 -11
- package/lib/components/po-page/po-page-list/po-page-list.component.d.ts +71 -71
- package/lib/components/po-page/po-page-slide/po-page-slide-base.component.d.ts +111 -111
- package/lib/components/po-page/po-page-slide/po-page-slide.component.d.ts +42 -42
- package/lib/components/po-page/po-page.component.d.ts +8 -8
- package/lib/components/po-page/po-page.interface.d.ts +14 -14
- package/lib/components/po-page/po-page.module.d.ts +7 -7
- package/lib/components/po-popover/index.d.ts +2 -2
- package/lib/components/po-popover/po-popover-base.component.d.ts +131 -131
- package/lib/components/po-popover/po-popover.component.d.ts +47 -47
- package/lib/components/po-popover/po-popover.module.d.ts +6 -6
- package/lib/components/po-popup/index.d.ts +3 -3
- package/lib/components/po-popup/po-popup-action.interface.d.ts +91 -91
- package/lib/components/po-popup/po-popup-base.component.d.ts +151 -151
- package/lib/components/po-popup/po-popup.component.d.ts +69 -69
- package/lib/components/po-popup/po-popup.module.d.ts +7 -7
- package/lib/components/po-progress/enums/po-progress-status.enum.d.ts +15 -15
- package/lib/components/po-progress/index.d.ts +3 -3
- package/lib/components/po-progress/po-progress-bar/po-progress-bar.component.d.ts +5 -5
- package/lib/components/po-progress/po-progress-base.component.d.ts +103 -103
- package/lib/components/po-progress/po-progress.component.d.ts +28 -28
- package/lib/components/po-progress/po-progress.module.d.ts +7 -7
- package/lib/components/po-slide/directives/po-slide-content-template.directive.d.ts +48 -48
- package/lib/components/po-slide/index.d.ts +4 -4
- package/lib/components/po-slide/interfaces/po-slide-item.interface.d.ts +17 -17
- package/lib/components/po-slide/po-slide-base.component.d.ts +75 -75
- package/lib/components/po-slide/po-slide-circles/po-slide-circles.component.d.ts +16 -16
- package/lib/components/po-slide/po-slide-control/po-slide-control.component.d.ts +14 -14
- package/lib/components/po-slide/po-slide-item/po-slide-item.component.d.ts +28 -28
- package/lib/components/po-slide/po-slide.component.d.ts +110 -110
- package/lib/components/po-slide/po-slide.module.d.ts +33 -33
- package/lib/components/po-stepper/enums/po-stepper-orientation.enum.d.ts +16 -16
- package/lib/components/po-stepper/enums/po-stepper-status.enum.d.ts +21 -21
- package/lib/components/po-stepper/index.d.ts +6 -6
- package/lib/components/po-stepper/po-step/po-step.component.d.ts +76 -76
- package/lib/components/po-stepper/po-stepper-base.component.d.ts +132 -132
- package/lib/components/po-stepper/po-stepper-circle/po-stepper-circle.component.d.ts +20 -20
- package/lib/components/po-stepper/po-stepper-item.interface.d.ts +14 -14
- package/lib/components/po-stepper/po-stepper-label/po-stepper-label.component.d.ts +10 -10
- package/lib/components/po-stepper/po-stepper-step/po-stepper-step.component.d.ts +37 -37
- package/lib/components/po-stepper/po-stepper.component.d.ts +80 -80
- package/lib/components/po-stepper/po-stepper.module.d.ts +6 -6
- package/lib/components/po-table/enums/po-table-column-sort-type.enum.d.ts +12 -12
- package/lib/components/po-table/enums/po-table-row-template-arrow-direction.enum.d.ts +12 -12
- package/lib/components/po-table/index.d.ts +17 -17
- package/lib/components/po-table/interfaces/po-table-action.interface.d.ts +8 -8
- package/lib/components/po-table/interfaces/po-table-boolean.interface.d.ts +13 -13
- package/lib/components/po-table/interfaces/po-table-column-sort.interface.d.ts +15 -15
- package/lib/components/po-table/interfaces/po-table-column.interface.d.ts +242 -242
- package/lib/components/po-table/interfaces/po-table-filter.interface.d.ts +16 -16
- package/lib/components/po-table/interfaces/po-table-filtered-items-params.interface.d.ts +33 -33
- package/lib/components/po-table/interfaces/po-table-literals.interface.d.ts +25 -25
- package/lib/components/po-table/interfaces/po-table-response-api.interface.d.ts +7 -7
- package/lib/components/po-table/po-table-base.component.d.ts +501 -501
- package/lib/components/po-table/po-table-cell-template/po-table-cell-template.directive.d.ts +71 -71
- package/lib/components/po-table/po-table-column-icon/po-table-column-icon.component.d.ts +26 -26
- package/lib/components/po-table/po-table-column-icon/po-table-column-icon.interface.d.ts +80 -80
- package/lib/components/po-table/po-table-column-label/po-table-column-label.component.d.ts +17 -17
- package/lib/components/po-table/po-table-column-label/po-table-column-label.interface.d.ts +42 -42
- package/lib/components/po-table/po-table-column-link/po-table-column-link.component.d.ts +15 -15
- package/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.d.ts +74 -74
- package/lib/components/po-table/po-table-column-template/po-table-column-template.directive.d.ts +86 -86
- package/lib/components/po-table/po-table-detail/po-table-detail-column.interface.d.ts +61 -61
- package/lib/components/po-table/po-table-detail/po-table-detail.component.d.ts +44 -44
- package/lib/components/po-table/po-table-detail/po-table-detail.interface.d.ts +36 -36
- package/lib/components/po-table/po-table-icon/po-table-icon.component.d.ts +27 -27
- package/lib/components/po-table/po-table-row-template/po-table-row-template.directive.d.ts +120 -120
- package/lib/components/po-table/po-table-show-subtitle/po-table-show-subtitle.component.d.ts +14 -14
- package/lib/components/po-table/po-table-subtitle-circle/po-table-subtitle-circle.component.d.ts +19 -19
- package/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-column.interface.d.ts +39 -39
- package/lib/components/po-table/po-table-subtitle-footer/po-table-subtitle-footer.component.d.ts +31 -31
- package/lib/components/po-table/po-table.component.d.ts +229 -229
- package/lib/components/po-table/po-table.module.d.ts +6 -6
- package/lib/components/po-table/services/po-table.service.d.ts +14 -14
- package/lib/components/po-tabs/index.d.ts +4 -4
- package/lib/components/po-tabs/po-tab/po-tab-base.component.d.ts +57 -57
- package/lib/components/po-tabs/po-tab/po-tab.component.d.ts +11 -11
- package/lib/components/po-tabs/po-tab/po-tab.interface.d.ts +45 -45
- package/lib/components/po-tabs/po-tab-button/po-tab-button.component.d.ts +29 -29
- package/lib/components/po-tabs/po-tab-dropdown/po-tab-dropdown.component.d.ts +23 -23
- package/lib/components/po-tabs/po-tabs-base.component.d.ts +34 -34
- package/lib/components/po-tabs/po-tabs.component.d.ts +50 -50
- package/lib/components/po-tabs/po-tabs.module.d.ts +6 -6
- package/lib/components/po-tag/enums/po-tag-icon.enum.d.ts +17 -17
- package/lib/components/po-tag/enums/po-tag-orientation.enum.d.ts +13 -13
- package/lib/components/po-tag/enums/po-tag-type.enum.d.ts +17 -17
- package/lib/components/po-tag/index.d.ts +4 -4
- package/lib/components/po-tag/interfaces/po-tag-item.interface.d.ts +13 -13
- package/lib/components/po-tag/po-tag-base.component.d.ts +144 -144
- package/lib/components/po-tag/po-tag.component.d.ts +32 -32
- package/lib/components/po-tag/po-tag.module.d.ts +7 -7
- package/lib/components/po-toolbar/index.d.ts +4 -4
- package/lib/components/po-toolbar/po-toolbar-action.interface.d.ts +8 -8
- package/lib/components/po-toolbar/po-toolbar-actions/po-toolbar-actions.component.d.ts +19 -19
- package/lib/components/po-toolbar/po-toolbar-base.component.d.ts +75 -75
- package/lib/components/po-toolbar/po-toolbar-notification/po-toolbar-notification.component.d.ts +22 -22
- package/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.component.d.ts +18 -18
- package/lib/components/po-toolbar/po-toolbar-profile/po-toolbar-profile.interface.d.ts +15 -15
- package/lib/components/po-toolbar/po-toolbar.component.d.ts +29 -29
- package/lib/components/po-toolbar/po-toolbar.module.d.ts +8 -8
- package/lib/components/po-tree-view/index.d.ts +3 -3
- package/lib/components/po-tree-view/po-tree-view-base.component.d.ts +86 -86
- package/lib/components/po-tree-view/po-tree-view-item/po-tree-view-item.component.d.ts +12 -12
- package/lib/components/po-tree-view/po-tree-view-item/po-tree-view-item.interface.d.ts +24 -24
- package/lib/components/po-tree-view/po-tree-view-item-header/po-tree-view-item-header.component.d.ts +10 -10
- package/lib/components/po-tree-view/po-tree-view.component.d.ts +35 -35
- package/lib/components/po-tree-view/po-tree-view.module.d.ts +33 -33
- package/lib/components/po-tree-view/services/po-tree-view.service.d.ts +9 -9
- package/lib/components/po-widget/index.d.ts +2 -2
- package/lib/components/po-widget/po-widget-base.component.d.ts +162 -162
- package/lib/components/po-widget/po-widget.component.d.ts +41 -41
- package/lib/components/po-widget/po-widget.module.d.ts +7 -7
- package/lib/decorators/index.d.ts +2 -2
- package/lib/decorators/input-boolean/input-boolean.decorator.d.ts +10 -10
- package/lib/decorators/input-required/input-required.decorator.d.ts +22 -22
- package/lib/decorators/property-decorator.interface.d.ts +13 -13
- package/lib/decorators/utils-decorators.d.ts +27 -27
- package/lib/directives/directives.module.d.ts +2 -2
- package/lib/directives/index.d.ts +2 -2
- package/lib/directives/po-tooltip/index.d.ts +2 -2
- package/lib/directives/po-tooltip/po-tooltip-base.directive.d.ts +67 -67
- package/lib/directives/po-tooltip/po-tooltip-control-position.service.d.ts +3 -3
- package/lib/directives/po-tooltip/po-tooltip.directive.d.ts +52 -52
- package/lib/directives/po-tooltip/po-tooltip.module.d.ts +7 -7
- package/lib/enums/po-color-palette.enum.d.ts +33 -33
- package/lib/enums/po-key-code.enum.d.ts +29 -29
- package/lib/guards/guards.module.d.ts +2 -2
- package/lib/guards/index.d.ts +1 -1
- package/lib/index.d.ts +9 -9
- package/lib/interceptors/index.d.ts +3 -3
- package/lib/interceptors/interceptors.module.d.ts +2 -2
- package/lib/interceptors/po-http-interceptor/index.d.ts +2 -2
- package/lib/interceptors/po-http-interceptor/po-http-interceptor-base.service.d.ts +154 -154
- package/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail-literals.interface.d.ts +6 -6
- package/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail.component.d.ts +39 -39
- package/lib/interceptors/po-http-interceptor/po-http-interceptor-detail/po-http-interceptor-detail.interface.d.ts +23 -23
- package/lib/interceptors/po-http-interceptor/po-http-interceptor-literals.d.ts +6 -6
- package/lib/interceptors/po-http-interceptor/po-http-interceptor.module.d.ts +2 -2
- package/lib/interceptors/po-http-interceptor/po-http-interceptor.service.d.ts +16 -16
- package/lib/interceptors/po-http-request/index.d.ts +2 -2
- package/lib/interceptors/po-http-request/po-http-request-control-service.d.ts +12 -12
- package/lib/interceptors/po-http-request/po-http-request-interceptor.service.d.ts +102 -102
- package/lib/interceptors/po-http-request/po-http-request.module.d.ts +2 -2
- package/lib/interfaces/index.d.ts +1 -1
- package/lib/interfaces/po-http/po-response-api.interface.d.ts +13 -13
- package/lib/pipes/index.d.ts +2 -2
- package/lib/pipes/pipes.module.d.ts +2 -2
- package/lib/pipes/po-time/index.d.ts +2 -2
- package/lib/pipes/po-time/po-time.module.d.ts +7 -7
- package/lib/pipes/po-time/po-time.pipe.d.ts +14 -14
- package/lib/po.module.d.ts +2 -2
- package/lib/services/index.d.ts +10 -10
- package/lib/services/po-active-overlay/index.d.ts +2 -2
- package/lib/services/po-active-overlay/po-active-overlay.module.d.ts +7 -7
- package/lib/services/po-active-overlay/po-active-overlay.service.d.ts +3 -3
- package/lib/services/po-color/po-color.service.d.ts +16 -16
- package/lib/services/po-color/po-colors.constant.d.ts +2 -2
- package/lib/services/po-color-palette/index.d.ts +2 -2
- package/lib/services/po-color-palette/po-color-palette.module.d.ts +7 -7
- package/lib/services/po-color-palette/po-color-palette.service.d.ts +7 -7
- package/lib/services/po-component-injector/index.d.ts +2 -2
- package/lib/services/po-component-injector/po-component-injector.module.d.ts +2 -2
- package/lib/services/po-component-injector/po-component-injector.service.d.ts +9 -9
- package/lib/services/po-control-position/index.d.ts +2 -2
- package/lib/services/po-control-position/po-control-position.constants.d.ts +1 -1
- package/lib/services/po-control-position/po-control-position.module.d.ts +7 -7
- package/lib/services/po-control-position/po-control-position.service.d.ts +56 -56
- package/lib/services/po-date/index.d.ts +2 -2
- package/lib/services/po-date/po-date.module.d.ts +7 -7
- package/lib/services/po-date/po-date.service.d.ts +94 -94
- package/lib/services/po-dialog/index.d.ts +7 -7
- package/lib/services/po-dialog/interfaces/po-dialog-alert-literals.interface.d.ts +11 -11
- package/lib/services/po-dialog/interfaces/po-dialog-confirm-literals.interface.d.ts +13 -13
- package/lib/services/po-dialog/interfaces/po-dialog.interface.d.ts +82 -82
- package/lib/services/po-dialog/po-dialog-base.service.d.ts +15 -15
- package/lib/services/po-dialog/po-dialog.component.d.ts +48 -48
- package/lib/services/po-dialog/po-dialog.enum.d.ts +12 -12
- package/lib/services/po-dialog/po-dialog.module.d.ts +2 -2
- package/lib/services/po-dialog/po-dialog.service.d.ts +29 -29
- package/lib/services/po-i18n/index.d.ts +7 -7
- package/lib/services/po-i18n/interfaces/po-i18n-config-default.interface.d.ts +35 -35
- package/lib/services/po-i18n/interfaces/po-i18n-config.interface.d.ts +78 -78
- package/lib/services/po-i18n/interfaces/po-i18n-literals.interface.d.ts +15 -15
- package/lib/services/po-i18n/po-i18n-base.pipe.d.ts +29 -29
- package/lib/services/po-i18n/po-i18n-base.service.d.ts +212 -212
- package/lib/services/po-i18n/po-i18n-config-injection-token.d.ts +3 -3
- package/lib/services/po-i18n/po-i18n.module.d.ts +150 -150
- package/lib/services/po-i18n/po-i18n.pipe.d.ts +15 -15
- package/lib/services/po-i18n/po-i18n.service.d.ts +10 -10
- package/lib/services/po-language/index.d.ts +4 -4
- package/lib/services/po-language/po-language.constant.d.ts +58 -58
- package/lib/services/po-language/po-language.interface.d.ts +43 -43
- package/lib/services/po-language/po-language.module.d.ts +7 -7
- package/lib/services/po-language/po-language.service.d.ts +95 -95
- package/lib/services/po-notification/index.d.ts +5 -5
- package/lib/services/po-notification/po-notification-base.service.d.ts +84 -84
- package/lib/services/po-notification/po-notification.interface.d.ts +33 -33
- package/lib/services/po-notification/po-notification.module.d.ts +2 -2
- package/lib/services/po-notification/po-notification.service.d.ts +31 -31
- package/lib/services/po-notification/po-toaster/po-toaster-base.component.d.ts +41 -41
- package/lib/services/po-notification/po-toaster/po-toaster-orientation.enum.d.ts +11 -11
- package/lib/services/po-notification/po-toaster/po-toaster-type.enum.d.ts +15 -15
- package/lib/services/po-notification/po-toaster/po-toaster.component.d.ts +33 -33
- package/lib/services/po-notification/po-toaster/po-toaster.interface.d.ts +15 -15
- package/lib/services/services.module.d.ts +2 -2
- package/lib/utils/util.d.ts +217 -217
- package/package.json +5 -5
- package/po-ui-ng-components-5.22.3.tgz +0 -0
- package/po-ui-ng-components.d.ts +205 -205
- package/po-ui-ng-components.metadata.json +1 -1
- package/public-api.d.ts +1 -1
- package/schematics/README.md +74 -74
- package/schematics/collection.json +40 -40
- package/schematics/migrations.json +25 -25
- package/schematics/ng-add/index.d.ts +8 -8
- package/schematics/ng-add/index.js +25 -25
- package/schematics/ng-add/index.spec.d.ts +1 -1
- package/schematics/ng-add/index.spec.js +91 -91
- package/schematics/ng-add/schema.json +16 -16
- package/schematics/ng-add/setup-project.d.ts +8 -8
- package/schematics/ng-add/setup-project.js +55 -55
- package/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
- package/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +3 -3
- package/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
- package/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +18 -18
- package/schematics/ng-generate/po-page-default/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
- package/schematics/ng-generate/po-page-default/index.d.ts +4 -4
- package/schematics/ng-generate/po-page-default/index.js +12 -12
- package/schematics/ng-generate/po-page-default/index.spec.d.ts +1 -1
- package/schematics/ng-generate/po-page-default/index.spec.js +120 -120
- package/schematics/ng-generate/po-page-default/schema.d.ts +3 -3
- package/schematics/ng-generate/po-page-default/schema.js +2 -2
- package/schematics/ng-generate/po-page-default/schema.json +67 -67
- package/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
- package/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +8 -8
- package/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
- package/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +26 -26
- package/schematics/ng-generate/po-page-detail/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
- package/schematics/ng-generate/po-page-detail/index.d.ts +4 -4
- package/schematics/ng-generate/po-page-detail/index.js +12 -12
- package/schematics/ng-generate/po-page-detail/index.spec.d.ts +1 -1
- package/schematics/ng-generate/po-page-detail/index.spec.js +120 -120
- package/schematics/ng-generate/po-page-detail/schema.d.ts +3 -3
- package/schematics/ng-generate/po-page-detail/schema.js +2 -2
- package/schematics/ng-generate/po-page-detail/schema.json +67 -67
- package/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
- package/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +8 -8
- package/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +32 -32
- package/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +26 -26
- package/schematics/ng-generate/po-page-edit/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
- package/schematics/ng-generate/po-page-edit/index.d.ts +4 -4
- package/schematics/ng-generate/po-page-edit/index.js +12 -12
- package/schematics/ng-generate/po-page-edit/index.spec.d.ts +1 -1
- package/schematics/ng-generate/po-page-edit/index.spec.js +120 -120
- package/schematics/ng-generate/po-page-edit/schema.d.ts +3 -3
- package/schematics/ng-generate/po-page-edit/schema.js +2 -2
- package/schematics/ng-generate/po-page-edit/schema.json +67 -67
- package/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__-routing.module.ts.template +14 -14
- package/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.component.html.template +28 -28
- package/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +35 -35
- package/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +33 -33
- package/schematics/ng-generate/po-page-list/files/__path__/__name@dasherize__/__name@dasherize__.module.ts.template +19 -19
- package/schematics/ng-generate/po-page-list/index.d.ts +7 -7
- package/schematics/ng-generate/po-page-list/index.js +15 -15
- package/schematics/ng-generate/po-page-list/index.spec.d.ts +1 -1
- package/schematics/ng-generate/po-page-list/index.spec.js +120 -120
- package/schematics/ng-generate/po-page-list/schema.d.ts +5 -5
- package/schematics/ng-generate/po-page-list/schema.js +2 -2
- package/schematics/ng-generate/po-page-list/schema.json +78 -78
- package/schematics/ng-generate/sidemenu/files/app.component.html.template +9 -9
- package/schematics/ng-generate/sidemenu/files/app.component.spec.ts.template +30 -30
- package/schematics/ng-generate/sidemenu/files/app.component.ts.template +20 -20
- package/schematics/ng-generate/sidemenu/index.d.ts +8 -8
- package/schematics/ng-generate/sidemenu/index.js +51 -51
- package/schematics/ng-generate/sidemenu/index.spec.d.ts +1 -1
- package/schematics/ng-generate/sidemenu/index.spec.js +62 -62
- package/schematics/ng-generate/sidemenu/schema.d.ts +13 -13
- package/schematics/ng-generate/sidemenu/schema.js +2 -2
- package/schematics/ng-generate/sidemenu/schema.json +32 -32
- package/schematics/ng-update/v2/changes.d.ts +19 -19
- package/schematics/ng-update/v2/changes.js +58 -58
- package/schematics/ng-update/v2/index.d.ts +1 -1
- package/schematics/ng-update/v2/index.js +145 -145
- package/schematics/ng-update/v3/changes.d.ts +4 -4
- package/schematics/ng-update/v3/changes.js +20 -20
- package/schematics/ng-update/v3/index.d.ts +1 -1
- package/schematics/ng-update/v3/index.js +66 -66
- package/schematics/ng-update/v4/changes.d.ts +4 -4
- package/schematics/ng-update/v4/changes.js +20 -20
- package/schematics/ng-update/v4/index.d.ts +1 -1
- package/schematics/ng-update/v4/index.js +65 -65
- package/schematics/ng-update/v5/changes.d.ts +4 -4
- package/schematics/ng-update/v5/changes.js +25 -25
- package/schematics/ng-update/v5/index.d.ts +1 -1
- package/schematics/ng-update/v5/index.js +65 -65
- package/po-ui-ng-components-5.21.0.tgz +0 -0
package/esm2015/lib/components/po-chart/po-chart-container/po-chart-axis/po-chart-axis.component.js
CHANGED
|
@@ -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
|