ngx-vector-components 4.70.1 → 4.70.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/CHANGELOG.md +1040 -1029
- package/README.md +35 -35
- package/assets/icons/chevron_down_icon.svg +3 -3
- package/assets/icons/home_menu_icon.svg +3 -3
- package/assets/icons/logout_icon.svg +9 -9
- package/assets/icons/menu_footer_icon.svg +3 -3
- package/assets/icons/menu_hamburguer_icon.svg +3 -3
- package/assets/icons/terms_of_use_icon.svg +9 -9
- package/assets/icons/vector_admin_icon.svg +4 -4
- package/assets/icons/vector_fintech_icon.svg +3 -3
- package/assets/icons/vector_logtech_icon.svg +6 -6
- package/assets/icons/vector_marketplace_icon.svg +3 -3
- package/assets/images/bunge_logo.svg +23 -23
- package/assets/images/cofco_logo.svg +117 -117
- package/assets/images/emote_bad.svg +6 -6
- package/assets/images/emote_cool.svg +5 -5
- package/assets/images/emote_nice.svg +5 -5
- package/assets/images/success_sign.svg +4 -4
- package/assets/images/vector-logo-horizontal-inverse-color.svg +13 -13
- package/assets/images/vector_logo_horizontal.svg +13 -13
- package/assets/images/warn_sign.svg +4 -4
- package/assets/styles/_fonts.scss +114 -114
- package/assets/styles/_mixins.scss +7 -7
- package/assets/styles/_primeng-custom-theme.scss +978 -978
- package/assets/styles/_spinner.scss +35 -35
- package/assets/styles/_styles.scss +115 -115
- package/assets/styles/_variables.scss +27 -27
- package/esm2020/lib/components/badge/badge.component.mjs +39 -39
- package/esm2020/lib/components/badge/badge.module.mjs +19 -19
- package/esm2020/lib/components/badge/index.mjs +3 -3
- package/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +66 -66
- package/esm2020/lib/components/breadcrumb/breadcrumb.module.mjs +18 -18
- package/esm2020/lib/components/breadcrumb/index.mjs +3 -3
- package/esm2020/lib/components/crud-base/crud-base.component.mjs +47 -47
- package/esm2020/lib/components/crud-base/index.mjs +2 -2
- package/esm2020/lib/components/crud-footer/crud-footer.component.mjs +32 -32
- package/esm2020/lib/components/crud-footer/crud-footer.module.mjs +20 -20
- package/esm2020/lib/components/crud-footer/index.mjs +3 -3
- package/esm2020/lib/components/crud-header/crud-header.component.mjs +30 -30
- package/esm2020/lib/components/crud-header/crud-header.module.mjs +19 -19
- package/esm2020/lib/components/crud-header/index.mjs +3 -3
- package/esm2020/lib/components/crud-history/crud-history.component.mjs +82 -82
- package/esm2020/lib/components/crud-history/crud-history.module.mjs +20 -20
- package/esm2020/lib/components/crud-history/index.mjs +3 -3
- package/esm2020/lib/components/fields/button/button.component.mjs +41 -41
- package/esm2020/lib/components/fields/button/index.mjs +2 -2
- package/esm2020/lib/components/fields/calendar-field/calendar-field.component.mjs +74 -74
- package/esm2020/lib/components/fields/calendar-field/index.mjs +2 -2
- package/esm2020/lib/components/fields/checkbox-field/checkbox-field.component.mjs +46 -46
- package/esm2020/lib/components/fields/checkbox-field/index.mjs +2 -2
- package/esm2020/lib/components/fields/currency-field/currency-field.component.mjs +95 -95
- package/esm2020/lib/components/fields/currency-field/index.mjs +2 -2
- package/esm2020/lib/components/fields/data-table/data-table.component.mjs +382 -382
- package/esm2020/lib/components/fields/data-table/index.mjs +2 -2
- package/esm2020/lib/components/fields/dropdown-field/dropdown-field.component.mjs +197 -197
- package/esm2020/lib/components/fields/dropdown-field/index.mjs +2 -2
- package/esm2020/lib/components/fields/field-error-message/field-error-message.component.mjs +30 -30
- package/esm2020/lib/components/fields/field-error-message/index.mjs +2 -2
- package/esm2020/lib/components/fields/fields.module.mjs +213 -213
- package/esm2020/lib/components/fields/filters/filters.component.mjs +203 -203
- package/esm2020/lib/components/fields/filters/index.mjs +2 -2
- package/esm2020/lib/components/fields/index.mjs +19 -19
- package/esm2020/lib/components/fields/input-number-field/index.mjs +2 -2
- package/esm2020/lib/components/fields/input-number-field/input-number-field.component.mjs +85 -85
- package/esm2020/lib/components/fields/multiselect-field/index.mjs +2 -2
- package/esm2020/lib/components/fields/multiselect-field/multiselect-field.component.mjs +47 -47
- package/esm2020/lib/components/fields/percentage-field/index.mjs +2 -2
- package/esm2020/lib/components/fields/percentage-field/percentage-field.component.mjs +42 -42
- package/esm2020/lib/components/fields/radio-button-field/index.mjs +2 -2
- package/esm2020/lib/components/fields/radio-button-field/radio-button-field.component.mjs +48 -48
- package/esm2020/lib/components/fields/range-value/index.mjs +2 -2
- package/esm2020/lib/components/fields/range-value/range-value.component.mjs +72 -72
- package/esm2020/lib/components/fields/search-field/index.mjs +2 -2
- package/esm2020/lib/components/fields/search-field/search-field.component.mjs +33 -33
- package/esm2020/lib/components/fields/select-button-field/index.mjs +2 -2
- package/esm2020/lib/components/fields/select-button-field/select-button-field.component.mjs +20 -20
- package/esm2020/lib/components/fields/text-field/index.mjs +2 -2
- package/esm2020/lib/components/fields/text-field/text-field.component.mjs +217 -217
- package/esm2020/lib/components/fields/textarea-field/index.mjs +2 -2
- package/esm2020/lib/components/fields/textarea-field/textarea-field.component.mjs +81 -81
- package/esm2020/lib/components/generic-error-modal/generic-error-modal.component.mjs +30 -30
- package/esm2020/lib/components/generic-error-modal/generic-error-modal.module.mjs +20 -20
- package/esm2020/lib/components/generic-error-modal/index.mjs +3 -3
- package/esm2020/lib/components/generic-modal/generic-modal.component.mjs +66 -66
- package/esm2020/lib/components/generic-modal/generic-modal.module.mjs +20 -20
- package/esm2020/lib/components/generic-modal/index.mjs +3 -3
- package/esm2020/lib/components/index.mjs +14 -14
- package/esm2020/lib/components/menu/index.mjs +4 -4
- package/esm2020/lib/components/menu/menu.component.mjs +305 -305
- package/esm2020/lib/components/menu/menu.module.mjs +20 -20
- package/esm2020/lib/components/menu/sub-menus-list/sub-menus-list.component.mjs +42 -42
- package/esm2020/lib/components/panel/index.mjs +3 -3
- package/esm2020/lib/components/panel/panel.component.mjs +15 -15
- package/esm2020/lib/components/panel/panel.module.mjs +19 -19
- package/esm2020/lib/components/score/index.mjs +3 -3
- package/esm2020/lib/components/score/score.component.mjs +17 -17
- package/esm2020/lib/components/score/score.module.mjs +16 -16
- package/esm2020/lib/components/top-bar/index.mjs +3 -3
- package/esm2020/lib/components/top-bar/top-bar.component.mjs +120 -120
- package/esm2020/lib/components/top-bar/top-bar.module.mjs +20 -20
- package/esm2020/lib/guards/crud-list-has-items.guard.mjs +22 -22
- package/esm2020/lib/guards/get-token-by-guid.guard.mjs +54 -54
- package/esm2020/lib/guards/has-permission.guard.mjs +27 -27
- package/esm2020/lib/guards/index.mjs +6 -6
- package/esm2020/lib/guards/role.guard.mjs +24 -24
- package/esm2020/lib/guards/token-is-present.guard.mjs +26 -26
- package/esm2020/lib/interceptors/http-interceptor.mjs +183 -183
- package/esm2020/lib/interceptors/index.mjs +2 -2
- package/esm2020/lib/models/app-name.enum.mjs +10 -10
- package/esm2020/lib/models/boolean-type.enum.mjs +6 -6
- package/esm2020/lib/models/crud-history.model.mjs +3 -3
- package/esm2020/lib/models/crud-mode.enum.mjs +7 -7
- package/esm2020/lib/models/currency.enum.mjs +7 -7
- package/esm2020/lib/models/data-table.model.mjs +23 -23
- package/esm2020/lib/models/document-type.enum.mjs +6 -6
- package/esm2020/lib/models/filters.model.mjs +2 -2
- package/esm2020/lib/models/generic-modal.model.mjs +2 -2
- package/esm2020/lib/models/http-response.model.mjs +2 -2
- package/esm2020/lib/models/index.mjs +18 -18
- package/esm2020/lib/models/ip-info.enum.mjs +2 -2
- package/esm2020/lib/models/list-item.model.mjs +2 -2
- package/esm2020/lib/models/locale.enum.mjs +7 -7
- package/esm2020/lib/models/menu-item.model.mjs +2 -2
- package/esm2020/lib/models/message-status.enum.mjs +8 -8
- package/esm2020/lib/models/profile.model.mjs +237 -237
- package/esm2020/lib/models/role.enum.mjs +5 -5
- package/esm2020/lib/models/status.enum.mjs +8 -8
- package/esm2020/lib/models/vector-app.model.mjs +2 -2
- package/esm2020/lib/models/vector-notification.model.mjs +2 -2
- package/esm2020/lib/models/view.enum.mjs +7 -7
- package/esm2020/lib/pipes/currency-brl.pipe.mjs +18 -18
- package/esm2020/lib/pipes/format-document.pipe.mjs +17 -17
- package/esm2020/lib/pipes/index.mjs +9 -9
- package/esm2020/lib/pipes/mask.pipe.mjs +21 -21
- package/esm2020/lib/pipes/not-hidden.pipe.mjs +16 -16
- package/esm2020/lib/pipes/only-active.pipe.mjs +16 -16
- package/esm2020/lib/pipes/pipes.module.mjs +50 -50
- package/esm2020/lib/pipes/remove-last-child.pipe.mjs +18 -18
- package/esm2020/lib/pipes/unread-notifications.pipe.mjs +15 -15
- package/esm2020/lib/resolvers/get-selected-crud-item.resolver.mjs +28 -28
- package/esm2020/lib/resolvers/index.mjs +2 -2
- package/esm2020/lib/services/auth.service.mjs +77 -77
- package/esm2020/lib/services/base-dropdown.mjs +2 -2
- package/esm2020/lib/services/crud-base.service.mjs +14 -14
- package/esm2020/lib/services/enum.service.mjs +43 -43
- package/esm2020/lib/services/error-message.service.mjs +16 -16
- package/esm2020/lib/services/geolocation.service.mjs +23 -23
- package/esm2020/lib/services/index.mjs +13 -13
- package/esm2020/lib/services/loading.service.mjs +15 -15
- package/esm2020/lib/services/menu.service.mjs +152 -152
- package/esm2020/lib/services/modal.service.mjs +15 -15
- package/esm2020/lib/services/notifications.service.mjs +64 -64
- package/esm2020/lib/services/profile.service.mjs +100 -100
- package/esm2020/lib/services/storage.service.mjs +108 -108
- package/esm2020/lib/shared/shared.module.mjs +19 -19
- package/esm2020/lib/utils/cpf-cnpj-validator.util.mjs +116 -116
- package/esm2020/lib/utils/file.util.mjs +15 -15
- package/esm2020/lib/utils/index.mjs +8 -8
- package/esm2020/lib/utils/mask.util.mjs +76 -76
- package/esm2020/lib/utils/object.util.mjs +27 -27
- package/esm2020/lib/utils/string.util.mjs +16 -16
- package/esm2020/lib/utils/validation.util.mjs +234 -234
- package/esm2020/lib/utils/window.util.mjs +9 -9
- package/esm2020/ngx-vector-components.mjs +4 -4
- package/esm2020/public-api.mjs +9 -9
- package/fesm2015/ngx-vector-components.mjs +4465 -4465
- package/fesm2015/ngx-vector-components.mjs.map +1 -1
- package/fesm2020/ngx-vector-components.mjs +4443 -4443
- package/fesm2020/ngx-vector-components.mjs.map +1 -1
- package/lib/components/badge/badge.component.d.ts +15 -15
- package/lib/components/badge/badge.module.d.ts +9 -9
- package/lib/components/badge/index.d.ts +2 -2
- package/lib/components/breadcrumb/breadcrumb.component.d.ts +19 -19
- package/lib/components/breadcrumb/breadcrumb.module.d.ts +8 -8
- package/lib/components/breadcrumb/index.d.ts +2 -2
- package/lib/components/crud-base/crud-base.component.d.ts +20 -20
- package/lib/components/crud-base/index.d.ts +1 -1
- package/lib/components/crud-footer/crud-footer.component.d.ts +13 -13
- package/lib/components/crud-footer/crud-footer.module.d.ts +10 -10
- package/lib/components/crud-footer/index.d.ts +2 -2
- package/lib/components/crud-header/crud-header.component.d.ts +11 -11
- package/lib/components/crud-header/crud-header.module.d.ts +9 -9
- package/lib/components/crud-header/index.d.ts +2 -2
- package/lib/components/crud-history/crud-history.component.d.ts +12 -12
- package/lib/components/crud-history/crud-history.module.d.ts +10 -10
- package/lib/components/crud-history/index.d.ts +2 -2
- package/lib/components/fields/button/button.component.d.ts +17 -17
- package/lib/components/fields/button/index.d.ts +1 -1
- package/lib/components/fields/calendar-field/calendar-field.component.d.ts +23 -23
- package/lib/components/fields/calendar-field/index.d.ts +1 -1
- package/lib/components/fields/checkbox-field/checkbox-field.component.d.ts +19 -19
- package/lib/components/fields/checkbox-field/index.d.ts +1 -1
- package/lib/components/fields/currency-field/currency-field.component.d.ts +31 -31
- package/lib/components/fields/currency-field/index.d.ts +1 -1
- package/lib/components/fields/data-table/data-table.component.d.ts +81 -81
- package/lib/components/fields/data-table/index.d.ts +1 -1
- package/lib/components/fields/dropdown-field/dropdown-field.component.d.ts +50 -50
- package/lib/components/fields/dropdown-field/index.d.ts +1 -1
- package/lib/components/fields/field-error-message/field-error-message.component.d.ts +10 -10
- package/lib/components/fields/field-error-message/index.d.ts +1 -1
- package/lib/components/fields/fields.module.d.ts +48 -48
- package/lib/components/fields/filters/filters.component.d.ts +62 -62
- package/lib/components/fields/filters/index.d.ts +1 -1
- package/lib/components/fields/index.d.ts +18 -18
- package/lib/components/fields/input-number-field/index.d.ts +1 -1
- package/lib/components/fields/input-number-field/input-number-field.component.d.ts +28 -28
- package/lib/components/fields/multiselect-field/index.d.ts +1 -1
- package/lib/components/fields/multiselect-field/multiselect-field.component.d.ts +15 -15
- package/lib/components/fields/percentage-field/index.d.ts +1 -1
- package/lib/components/fields/percentage-field/percentage-field.component.d.ts +16 -16
- package/lib/components/fields/radio-button-field/index.d.ts +1 -1
- package/lib/components/fields/radio-button-field/radio-button-field.component.d.ts +25 -25
- package/lib/components/fields/range-value/index.d.ts +1 -1
- package/lib/components/fields/range-value/range-value.component.d.ts +18 -18
- package/lib/components/fields/search-field/index.d.ts +1 -1
- package/lib/components/fields/search-field/search-field.component.d.ts +14 -14
- package/lib/components/fields/select-button-field/index.d.ts +1 -1
- package/lib/components/fields/select-button-field/select-button-field.component.d.ts +9 -9
- package/lib/components/fields/text-field/index.d.ts +1 -1
- package/lib/components/fields/text-field/text-field.component.d.ts +50 -50
- package/lib/components/fields/textarea-field/index.d.ts +1 -1
- package/lib/components/fields/textarea-field/textarea-field.component.d.ts +22 -22
- package/lib/components/generic-error-modal/generic-error-modal.component.d.ts +14 -14
- package/lib/components/generic-error-modal/generic-error-modal.module.d.ts +10 -10
- package/lib/components/generic-error-modal/index.d.ts +2 -2
- package/lib/components/generic-modal/generic-modal.component.d.ts +24 -24
- package/lib/components/generic-modal/generic-modal.module.d.ts +10 -10
- package/lib/components/generic-modal/index.d.ts +2 -2
- package/lib/components/index.d.ts +13 -13
- package/lib/components/menu/index.d.ts +3 -3
- package/lib/components/menu/menu.component.d.ts +53 -53
- package/lib/components/menu/menu.module.d.ts +10 -10
- package/lib/components/menu/sub-menus-list/sub-menus-list.component.d.ts +14 -14
- package/lib/components/panel/index.d.ts +2 -2
- package/lib/components/panel/panel.component.d.ts +8 -8
- package/lib/components/panel/panel.module.d.ts +9 -9
- package/lib/components/score/index.d.ts +2 -2
- package/lib/components/score/score.component.d.ts +9 -9
- package/lib/components/score/score.module.d.ts +7 -7
- package/lib/components/top-bar/index.d.ts +2 -2
- package/lib/components/top-bar/top-bar.component.d.ts +46 -46
- package/lib/components/top-bar/top-bar.module.d.ts +10 -10
- package/lib/guards/crud-list-has-items.guard.d.ts +10 -10
- package/lib/guards/get-token-by-guid.guard.d.ts +15 -15
- package/lib/guards/has-permission.guard.d.ts +13 -13
- package/lib/guards/index.d.ts +5 -5
- package/lib/guards/role.guard.d.ts +11 -11
- package/lib/guards/token-is-present.guard.d.ts +11 -11
- package/lib/interceptors/http-interceptor.d.ts +31 -31
- package/lib/interceptors/index.d.ts +1 -1
- package/lib/models/app-name.enum.d.ts +8 -8
- package/lib/models/boolean-type.enum.d.ts +4 -4
- package/lib/models/crud-history.model.d.ts +13 -13
- package/lib/models/crud-mode.enum.d.ts +5 -5
- package/lib/models/currency.enum.d.ts +5 -5
- package/lib/models/data-table.model.d.ts +65 -65
- package/lib/models/document-type.enum.d.ts +4 -4
- package/lib/models/filters.model.d.ts +4 -4
- package/lib/models/generic-modal.model.d.ts +13 -13
- package/lib/models/http-response.model.d.ts +40 -40
- package/lib/models/index.d.ts +17 -17
- package/lib/models/ip-info.enum.d.ts +6 -6
- package/lib/models/list-item.model.d.ts +6 -6
- package/lib/models/locale.enum.d.ts +5 -5
- package/lib/models/menu-item.model.d.ts +16 -16
- package/lib/models/message-status.enum.d.ts +6 -6
- package/lib/models/profile.model.d.ts +258 -258
- package/lib/models/role.enum.d.ts +3 -3
- package/lib/models/status.enum.d.ts +6 -6
- package/lib/models/vector-app.model.d.ts +9 -9
- package/lib/models/vector-notification.model.d.ts +8 -8
- package/lib/models/view.enum.d.ts +5 -5
- package/lib/pipes/currency-brl.pipe.d.ts +7 -7
- package/lib/pipes/format-document.pipe.d.ts +7 -7
- package/lib/pipes/index.d.ts +8 -8
- package/lib/pipes/mask.pipe.d.ts +7 -7
- package/lib/pipes/not-hidden.pipe.d.ts +7 -7
- package/lib/pipes/only-active.pipe.d.ts +7 -7
- package/lib/pipes/pipes.module.d.ts +13 -13
- package/lib/pipes/remove-last-child.pipe.d.ts +7 -7
- package/lib/pipes/unread-notifications.pipe.d.ts +9 -9
- package/lib/resolvers/get-selected-crud-item.resolver.d.ts +10 -10
- package/lib/resolvers/index.d.ts +1 -1
- package/lib/services/auth.service.d.ts +24 -24
- package/lib/services/base-dropdown.d.ts +7 -7
- package/lib/services/crud-base.service.d.ts +7 -7
- package/lib/services/enum.service.d.ts +13 -13
- package/lib/services/error-message.service.d.ts +8 -8
- package/lib/services/geolocation.service.d.ts +13 -13
- package/lib/services/index.d.ts +12 -12
- package/lib/services/loading.service.d.ts +7 -7
- package/lib/services/menu.service.d.ts +35 -35
- package/lib/services/modal.service.d.ts +7 -7
- package/lib/services/notifications.service.d.ts +13 -13
- package/lib/services/profile.service.d.ts +26 -26
- package/lib/services/storage.service.d.ts +43 -43
- package/lib/shared/shared.module.d.ts +10 -10
- package/lib/utils/cpf-cnpj-validator.util.d.ts +5 -5
- package/lib/utils/file.util.d.ts +4 -4
- package/lib/utils/index.d.ts +7 -7
- package/lib/utils/mask.util.d.ts +21 -21
- package/lib/utils/object.util.d.ts +5 -5
- package/lib/utils/string.util.d.ts +4 -4
- package/lib/utils/validation.util.d.ts +17 -17
- package/lib/utils/window.util.d.ts +4 -4
- package/ngx-vector-components.d.ts +5 -5
- package/package.json +1 -1
- package/public-api.d.ts +8 -8
|
@@ -1,203 +1,203 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { FormControl, FormGroup, Validators } from '@angular/forms';
|
|
3
|
-
import { Subscription } from 'rxjs';
|
|
4
|
-
import { ObjectUtil, ValidationUtil } from '../../../utils';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/router";
|
|
7
|
-
import * as i2 from "../text-field/text-field.component";
|
|
8
|
-
import * as i3 from "../dropdown-field/dropdown-field.component";
|
|
9
|
-
import * as i4 from "../currency-field/currency-field.component";
|
|
10
|
-
import * as i5 from "../calendar-field/calendar-field.component";
|
|
11
|
-
import * as i6 from "../select-button-field/select-button-field.component";
|
|
12
|
-
import * as i7 from "../multiselect-field/multiselect-field.component";
|
|
13
|
-
import * as i8 from "../button/button.component";
|
|
14
|
-
import * as i9 from "@angular/common";
|
|
15
|
-
import * as i10 from "@angular/forms";
|
|
16
|
-
import * as i11 from "../../../pipes/not-hidden.pipe";
|
|
17
|
-
import * as i12 from "@ngx-translate/core";
|
|
18
|
-
export var FieldType;
|
|
19
|
-
(function (FieldType) {
|
|
20
|
-
FieldType[FieldType["DROPDOWN"] = 0] = "DROPDOWN";
|
|
21
|
-
FieldType[FieldType["TEXT"] = 1] = "TEXT";
|
|
22
|
-
FieldType[FieldType["DATE"] = 2] = "DATE";
|
|
23
|
-
FieldType[FieldType["NUMBER"] = 3] = "NUMBER";
|
|
24
|
-
FieldType[FieldType["CURRENCY"] = 4] = "CURRENCY";
|
|
25
|
-
FieldType[FieldType["DYNAMIC_DROPDOWN"] = 5] = "DYNAMIC_DROPDOWN";
|
|
26
|
-
FieldType[FieldType["SELECT_BUTTON"] = 6] = "SELECT_BUTTON";
|
|
27
|
-
FieldType[FieldType["DATE_RANGE"] = 7] = "DATE_RANGE";
|
|
28
|
-
FieldType[FieldType["MULTISELECT"] = 8] = "MULTISELECT";
|
|
29
|
-
})(FieldType || (FieldType = {}));
|
|
30
|
-
export class FiltersComponent {
|
|
31
|
-
constructor(activatedRoute) {
|
|
32
|
-
this.activatedRoute = activatedRoute;
|
|
33
|
-
this.onSearch = new EventEmitter();
|
|
34
|
-
this.formBuilded = new EventEmitter();
|
|
35
|
-
this.fieldTypes = FieldType;
|
|
36
|
-
this.formGroup = new FormGroup({});
|
|
37
|
-
this._fields = [];
|
|
38
|
-
this.fieldsSubscription = new Subscription();
|
|
39
|
-
}
|
|
40
|
-
set fields(_fields) {
|
|
41
|
-
const isFirstSet = !this._fields.length && _fields?.length;
|
|
42
|
-
this._fields = _fields;
|
|
43
|
-
this.formGroup = new FormGroup({});
|
|
44
|
-
this.fieldsSubscription.unsubscribe();
|
|
45
|
-
this.fieldsSubscription = new Subscription();
|
|
46
|
-
this.fields?.forEach((field) => {
|
|
47
|
-
if (field?.defaultValue && typeof field?.defaultValue === 'object') {
|
|
48
|
-
field.initiateValue = !!field.defaultValue?.code;
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
field.initiateValue = !!field.defaultValue;
|
|
52
|
-
}
|
|
53
|
-
if (field.type === FieldType.DATE_RANGE) {
|
|
54
|
-
this.formGroup.addControl(field.name, new FormGroup({
|
|
55
|
-
startDate: new FormControl({ value: field.defaultValue?.startDate, disabled: field.readonly }, [
|
|
56
|
-
...this.buildValidators(field),
|
|
57
|
-
ValidationUtil.lowerThanOrEqualTo('endDate'),
|
|
58
|
-
]),
|
|
59
|
-
endDate: new FormControl({ value: field.defaultValue?.endDate, disabled: field.readonly }, [
|
|
60
|
-
...this.buildValidators(field),
|
|
61
|
-
ValidationUtil.greaterThanOrEqualTo('startDate'),
|
|
62
|
-
]),
|
|
63
|
-
}));
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
this.formGroup.addControl(field.name, new FormControl({ value: field.defaultValue, disabled: field.readonly }, this.buildValidators(field)));
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
this.fields
|
|
70
|
-
?.filter((field) => field.dependencies)
|
|
71
|
-
.forEach((field) => {
|
|
72
|
-
field.dependencies?.forEach((dependency) => {
|
|
73
|
-
this.fieldsSubscription.add(this.formGroup.get(dependency)?.valueChanges.subscribe((value) => {
|
|
74
|
-
this.formGroup.get(field.name)?.reset();
|
|
75
|
-
}));
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
this.patchFormFromQueryParams({ ...this.activatedRoute.snapshot.queryParams });
|
|
79
|
-
if (this._fields?.length && this.formGroup.valid && isFirstSet) {
|
|
80
|
-
this.search();
|
|
81
|
-
}
|
|
82
|
-
this.formBuilded.emit();
|
|
83
|
-
this.fieldsSubscription.add(this.activatedRoute.queryParams.subscribe((queryParams) => {
|
|
84
|
-
this.patchFormFromQueryParams({ ...queryParams });
|
|
85
|
-
}));
|
|
86
|
-
}
|
|
87
|
-
get fields() {
|
|
88
|
-
return this._fields;
|
|
89
|
-
}
|
|
90
|
-
get hideFilters() {
|
|
91
|
-
return !this.fields?.filter((item) => !item.hidden).length;
|
|
92
|
-
}
|
|
93
|
-
ngOnInit() { }
|
|
94
|
-
ngOnDestroy() {
|
|
95
|
-
this.fieldsSubscription.unsubscribe();
|
|
96
|
-
}
|
|
97
|
-
search() {
|
|
98
|
-
this.formGroup.markAllAsTouched();
|
|
99
|
-
if (this.formGroup.valid) {
|
|
100
|
-
const filterValue = this.formGroup.getRawValue();
|
|
101
|
-
Object.keys(filterValue).forEach((key) => {
|
|
102
|
-
if (filterValue[key]?.hasOwnProperty('code')) {
|
|
103
|
-
filterValue[key] = filterValue[key].code;
|
|
104
|
-
}
|
|
105
|
-
if (!ObjectUtil.isValid(filterValue[key])) {
|
|
106
|
-
const fieldType = this.fields.find((field) => field.name === key)?.type || FieldType.TEXT;
|
|
107
|
-
filterValue[key] = [FieldType.DROPDOWN, FieldType.NUMBER].includes(fieldType) ? -1 : '';
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
this.onSearch.emit(filterValue);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
isTextFieldType(field) {
|
|
114
|
-
return [FieldType.TEXT, FieldType.NUMBER].includes(field.type);
|
|
115
|
-
}
|
|
116
|
-
getFieldDependencies(field) {
|
|
117
|
-
if (!field.dependencies) {
|
|
118
|
-
return undefined;
|
|
119
|
-
}
|
|
120
|
-
return field.dependencies.reduce((prev, curr) => {
|
|
121
|
-
let depValue = this.formGroup.get(curr)?.value?.code;
|
|
122
|
-
if (!ObjectUtil.isValid(depValue)) {
|
|
123
|
-
depValue = -1;
|
|
124
|
-
}
|
|
125
|
-
return {
|
|
126
|
-
...prev,
|
|
127
|
-
[curr]: depValue,
|
|
128
|
-
};
|
|
129
|
-
}, {});
|
|
130
|
-
}
|
|
131
|
-
getGridClass(field) {
|
|
132
|
-
switch (field.size) {
|
|
133
|
-
case 'small':
|
|
134
|
-
return 'md:col-1';
|
|
135
|
-
case 'medium':
|
|
136
|
-
return 'md:col-3';
|
|
137
|
-
case 'large':
|
|
138
|
-
return 'md:col-4';
|
|
139
|
-
case 'largest':
|
|
140
|
-
return 'md:col-8';
|
|
141
|
-
case 'full':
|
|
142
|
-
return 'md:col-12';
|
|
143
|
-
default:
|
|
144
|
-
return 'md:col-4';
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
patchFormFromQueryParams(queryParams) {
|
|
148
|
-
if (Object.keys(queryParams).length) {
|
|
149
|
-
this.fields.forEach((field) => {
|
|
150
|
-
if (queryParams.hasOwnProperty(field.name)) {
|
|
151
|
-
try {
|
|
152
|
-
queryParams[field.name] = queryParams[field.name]
|
|
153
|
-
? JSON.parse(queryParams[field.name])
|
|
154
|
-
: queryParams[field.name];
|
|
155
|
-
}
|
|
156
|
-
catch (_) { }
|
|
157
|
-
if (field.type === FieldType.DATE_RANGE) {
|
|
158
|
-
queryParams[field.name] = {
|
|
159
|
-
startDate: queryParams[field.name].startDate ? new Date(queryParams[field.name].startDate) : undefined,
|
|
160
|
-
endDate: queryParams[field.name].endDate ? new Date(queryParams[field.name].endDate) : undefined,
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
if (field.type === FieldType.DATE) {
|
|
164
|
-
queryParams[field.name] = queryParams[field.name] ? new Date(queryParams[field.name]) : undefined;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
});
|
|
168
|
-
this.formGroup.patchValue(queryParams);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
buildValidators(field) {
|
|
172
|
-
const validators = [];
|
|
173
|
-
if (field.required) {
|
|
174
|
-
validators.push(Validators.required);
|
|
175
|
-
}
|
|
176
|
-
if (field.minLength) {
|
|
177
|
-
validators.push(Validators.minLength(field.minLength));
|
|
178
|
-
}
|
|
179
|
-
if (field.maxLength) {
|
|
180
|
-
validators.push(Validators.maxLength(field.maxLength));
|
|
181
|
-
}
|
|
182
|
-
if (field.min) {
|
|
183
|
-
validators.push(Validators.min(field.min));
|
|
184
|
-
}
|
|
185
|
-
if (field.max) {
|
|
186
|
-
validators.push(Validators.max(field.max));
|
|
187
|
-
}
|
|
188
|
-
return validators;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
FiltersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: FiltersComponent, deps: [{ token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
192
|
-
FiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: FiltersComponent, selector: "vector-filters", inputs: { fields: "fields" }, outputs: { onSearch: "onSearch", formBuilded: "formBuilded" }, ngImport: i0, template: "<div class=\"grid filter-container\" [ngClass]=\"{ 'display-none': hideFilters }\" [formGroup]=\"formGroup\">\n <div *ngFor=\"let field of fields | notHidden\" class=\"field col-12 sm:col-8 {{ getGridClass(field) }}\">\n <label>{{ field.label }}</label>\n <vector-text-field\n *ngIf=\"isTextFieldType(field)\"\n [control]=\"formGroup.get(field.name)\"\n [mask]=\"field.mask\"\n [label]=\"field.placeholder\"\n [isRequired]=\"field.required\"\n [numeric]=\"field.type === fieldTypes.NUMBER\"\n ></vector-text-field>\n <vector-dropdown-field\n *ngIf=\"[fieldTypes.DYNAMIC_DROPDOWN, fieldTypes.DROPDOWN].includes(field.type)\"\n [dynamicFilters]=\"field.filterTypes\"\n [options]=\"field.options || []\"\n [service]=\"field.service\"\n [isRequired]=\"field.required\"\n [minLengthToService]=\"field.minLengthToService || 0\"\n [control]=\"formGroup.get(field.name)\"\n [paged]=\"false\"\n [dependencies]=\"getFieldDependencies(field)\"\n [initialLoad]=\"field.initiateValue\"\n ></vector-dropdown-field>\n <vector-currency-field\n *ngIf=\"field.type === fieldTypes.CURRENCY\"\n [control]=\"formGroup.get(field.name)\"\n [outlined]=\"true\"\n ></vector-currency-field>\n <vector-calendar-field\n *ngIf=\"field.type === fieldTypes.DATE\"\n [control]=\"formGroup.get(field.name)\"\n [isRequired]=\"field.required\"\n [label]=\"field.placeholder || ''\"\n ></vector-calendar-field>\n <vector-select-button-field\n *ngIf=\"field.type === fieldTypes.SELECT_BUTTON\"\n [control]=\"formGroup.get(field.name)\"\n [options]=\"field.options\"\n (click)=\"search()\"\n >\n </vector-select-button-field>\n <div *ngIf=\"field.type === fieldTypes.DATE_RANGE\" class=\"range-date-container\">\n <vector-calendar-field\n [control]=\"formGroup.get(field.name + '.startDate')\"\n [isRequired]=\"field.required\"\n [label]=\"field.placeholder || ''\"\n ></vector-calendar-field>\n At\u00E9\n <vector-calendar-field\n [control]=\"formGroup.get(field.name + '.endDate')\"\n [isRequired]=\"field.required\"\n [label]=\"field.placeholder || ''\"\n ></vector-calendar-field>\n </div>\n <vector-multiselect-field\n *ngIf=\"field.type === fieldTypes.MULTISELECT\"\n [control]=\"formGroup.get(field.name)\"\n [options]=\"field.options || []\"\n >\n </vector-multiselect-field>\n </div>\n <div class=\"search-button sm:col-4\">\n <vector-button\n [label]=\"'app.label.search' | translate\"\n (click)=\"search()\"\n [disabled]=\"!formGroup.valid\"\n ></vector-button>\n </div>\n</div>\n", styles: [".filter-container{align-items:center}.filter-container .field{display:flex;flex-direction:column}.filter-container .search-button{flex:1;padding-right:7px;display:flex;justify-content:flex-end}@media (min-width: 768px){.filter-container .search-button{padding-top:36px}}.filter-container .range-date-container{display:flex;align-items:center;gap:10px}.display-none{display:none!important}\n"], components: [{ type: i2.TextFieldComponent, selector: "vector-text-field", inputs: ["isRequired", "label", "maxlength", "isPassword", "numeric", "decimal", "onlyText", "alphaNumeric", "alphaNumericAndWhitespace", "mask", "autoClear", "rightIcon", "centered", "enableDocumentTypeChoice", "hiddenErrorMessage", "leftLabel", "control"], outputs: ["blurEvent", "enterKeyPress", "focusEvent", "onDocumentTypeChange"] }, { type: i3.DropdownFieldComponent, selector: "vector-dropdown-field", inputs: ["options", "isRequired", "control", "label", "service", "paged", "buttonAction", "dependencies", "hiddenErrorMessage", "dynamicFilters", "minLengthToService", "initialLoad"], outputs: ["onFocus", "onChange"] }, { type: i4.CurrencyFieldComponent, selector: "vector-currency-field", inputs: ["minValue", "maxValue", "placeholder", "numberOfDecimals", "control", "outlined", "rounded", "label", "isBankingField", "inputClassName", "localePrefix", "currencyPrefix", "disabled"] }, { type: i5.CalendarComponent, selector: "vector-calendar-field", inputs: ["isRequired", "control", "label", "showCalendarOnFocus", "min", "max", "disabledDates", "disabled", "defaultDate", "hiddenErrorMessage"] }, { type: i6.SelectButtonFieldComponent, selector: "vector-select-button-field", inputs: ["options", "control"] }, { type: i7.MultiselectFieldComponent, selector: "vector-multiselect-field", inputs: ["isRequired", "control", "label", "options", "filter"], outputs: ["onChange"] }, { type: i8.ButtonComponent, selector: "vector-button", inputs: ["disabled", "label", "type", "leftIcon", "rightIcon", "noShadow", "style"], outputs: ["onClick"] }], directives: [{ type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "notHidden": i11.NotHiddenPipe, "translate": i12.TranslatePipe } });
|
|
193
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: FiltersComponent, decorators: [{
|
|
194
|
-
type: Component,
|
|
195
|
-
args: [{ selector: 'vector-filters', template: "<div class=\"grid filter-container\" [ngClass]=\"{ 'display-none': hideFilters }\" [formGroup]=\"formGroup\">\n <div *ngFor=\"let field of fields | notHidden\" class=\"field col-12 sm:col-8 {{ getGridClass(field) }}\">\n <label>{{ field.label }}</label>\n <vector-text-field\n *ngIf=\"isTextFieldType(field)\"\n [control]=\"formGroup.get(field.name)\"\n [mask]=\"field.mask\"\n [label]=\"field.placeholder\"\n [isRequired]=\"field.required\"\n [numeric]=\"field.type === fieldTypes.NUMBER\"\n ></vector-text-field>\n <vector-dropdown-field\n *ngIf=\"[fieldTypes.DYNAMIC_DROPDOWN, fieldTypes.DROPDOWN].includes(field.type)\"\n [dynamicFilters]=\"field.filterTypes\"\n [options]=\"field.options || []\"\n [service]=\"field.service\"\n [isRequired]=\"field.required\"\n [minLengthToService]=\"field.minLengthToService || 0\"\n [control]=\"formGroup.get(field.name)\"\n [paged]=\"false\"\n [dependencies]=\"getFieldDependencies(field)\"\n [initialLoad]=\"field.initiateValue\"\n ></vector-dropdown-field>\n <vector-currency-field\n *ngIf=\"field.type === fieldTypes.CURRENCY\"\n [control]=\"formGroup.get(field.name)\"\n [outlined]=\"true\"\n ></vector-currency-field>\n <vector-calendar-field\n *ngIf=\"field.type === fieldTypes.DATE\"\n [control]=\"formGroup.get(field.name)\"\n [isRequired]=\"field.required\"\n [label]=\"field.placeholder || ''\"\n ></vector-calendar-field>\n <vector-select-button-field\n *ngIf=\"field.type === fieldTypes.SELECT_BUTTON\"\n [control]=\"formGroup.get(field.name)\"\n [options]=\"field.options\"\n (click)=\"search()\"\n >\n </vector-select-button-field>\n <div *ngIf=\"field.type === fieldTypes.DATE_RANGE\" class=\"range-date-container\">\n <vector-calendar-field\n [control]=\"formGroup.get(field.name + '.startDate')\"\n [isRequired]=\"field.required\"\n [label]=\"field.placeholder || ''\"\n ></vector-calendar-field>\n At\u00E9\n <vector-calendar-field\n [control]=\"formGroup.get(field.name + '.endDate')\"\n [isRequired]=\"field.required\"\n [label]=\"field.placeholder || ''\"\n ></vector-calendar-field>\n </div>\n <vector-multiselect-field\n *ngIf=\"field.type === fieldTypes.MULTISELECT\"\n [control]=\"formGroup.get(field.name)\"\n [options]=\"field.options || []\"\n >\n </vector-multiselect-field>\n </div>\n <div class=\"search-button sm:col-4\">\n <vector-button\n [label]=\"'app.label.search' | translate\"\n (click)=\"search()\"\n [disabled]=\"!formGroup.valid\"\n ></vector-button>\n </div>\n</div>\n", styles: [".filter-container{align-items:center}.filter-container .field{display:flex;flex-direction:column}.filter-container .search-button{flex:1;padding-right:7px;display:flex;justify-content:flex-end}@media (min-width: 768px){.filter-container .search-button{padding-top:36px}}.filter-container .range-date-container{display:flex;align-items:center;gap:10px}.display-none{display:none!important}\n"] }]
|
|
196
|
-
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }]; }, propDecorators: { fields: [{
|
|
197
|
-
type: Input
|
|
198
|
-
}], onSearch: [{
|
|
199
|
-
type: Output
|
|
200
|
-
}], formBuilded: [{
|
|
201
|
-
type: Output
|
|
202
|
-
}] } });
|
|
203
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9maWx0ZXJzL2ZpbHRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvZmlsdGVycy9maWx0ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFFNUQsTUFBTSxDQUFOLElBQVksU0FVWDtBQVZELFdBQVksU0FBUztJQUNuQixpREFBUSxDQUFBO0lBQ1IseUNBQUksQ0FBQTtJQUNKLHlDQUFJLENBQUE7SUFDSiw2Q0FBTSxDQUFBO0lBQ04saURBQVEsQ0FBQTtJQUNSLGlFQUFnQixDQUFBO0lBQ2hCLDJEQUFhLENBQUE7SUFDYixxREFBVSxDQUFBO0lBQ1YsdURBQVcsQ0FBQTtBQUNiLENBQUMsRUFWVyxTQUFTLEtBQVQsU0FBUyxRQVVwQjtBQThCRCxNQUFNLE9BQU8sZ0JBQWdCO0lBaUYzQixZQUFvQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFqQjNDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRW5DLGdCQUFXLEdB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T25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEJhc2VEcm9wZG93biB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IE9iamVjdFV0aWwsIFZhbGlkYXRpb25VdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xuXG5leHBvcnQgZW51bSBGaWVsZFR5cGUge1xuICBEUk9QRE9XTixcbiAgVEVYVCxcbiAgREFURSxcbiAgTlVNQkVSLFxuICBDVVJSRU5DWSxcbiAgRFlOQU1JQ19EUk9QRE9XTixcbiAgU0VMRUNUX0JVVFRPTixcbiAgREFURV9SQU5HRSxcbiAgTVVMVElTRUxFQ1QsXG59XG5cbmV4cG9ydCB0eXBlIEZpbHRlckZpZWxkID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IEZpZWxkVHlwZTtcbiAgbWluTGVuZ3RoPzogbnVtYmVyO1xuICBtYXhMZW5ndGg/OiBudW1iZXI7XG4gIG1pbj86IG51bWJlcjtcbiAgbWF4PzogbnVtYmVyO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5PzogYm9vbGVhbjtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIG1hc2s/OiBzdHJpbmc7XG4gIG9wdGlvbnM/OiBMaXN0SXRlbVtdO1xuICBmaWx0ZXJUeXBlcz86IExpc3RJdGVtW107XG4gIHNlcnZpY2U/OiBCYXNlRHJvcGRvd247XG4gIGRlZmF1bHRWYWx1ZT86IGFueTtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIGRlcGVuZGVuY2llcz86IHN0cmluZ1tdO1xuICBzaXplPzogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyB8ICdsYXJnZXN0JyB8ICdmdWxsJztcbiAgbWluTGVuZ3RoVG9TZXJ2aWNlPzogbnVtYmVyO1xuICBpbml0aWF0ZVZhbHVlPzogYm9vbGVhbjtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlY3Rvci1maWx0ZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXJzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZmllbGRzKF9maWVsZHM6IEZpbHRlckZpZWxkW10pIHtcbiAgICBjb25zdCBpc0ZpcnN0U2V0ID0gIXRoaXMuX2ZpZWxkcy5sZW5ndGggJiYgX2ZpZWxkcz8ubGVuZ3RoO1xuICAgIHRoaXMuX2ZpZWxkcyA9IF9maWVsZHM7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcblxuICAgIHRoaXMuZmllbGRzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5maWVsZHNTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICB0aGlzLmZpZWxkcz8uZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIGlmIChmaWVsZD8uZGVmYXVsdFZhbHVlICYmIHR5cGVvZiBmaWVsZD8uZGVmYXVsdFZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBmaWVsZC5pbml0aWF0ZVZhbHVlID0gISFmaWVsZC5kZWZhdWx0VmFsdWU/LmNvZGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWVsZC5pbml0aWF0ZVZhbHVlID0gISFmaWVsZC5kZWZhdWx0VmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gRmllbGRUeXBlLkRBVEVfUkFOR0UpIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICBmaWVsZC5uYW1lLFxuICAgICAgICAgIG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICAgICAgc3RhcnREYXRlOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogZmllbGQuZGVmYXVsdFZhbHVlPy5zdGFydERhdGUsIGRpc2FibGVkOiBmaWVsZC5yZWFkb25seSB9LCBbXG4gICAgICAgICAgICAgIC4uLnRoaXMuYnVpbGRWYWxpZGF0b3JzKGZpZWxkKSxcbiAgICAgICAgICAgICAgVmFsaWRhdGlvblV0aWwubG93ZXJUaGFuT3JFcXVhbFRvKCdlbmREYXRlJyksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIGVuZERhdGU6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiBmaWVsZC5kZWZhdWx0VmFsdWU/LmVuZERhdGUsIGRpc2FibGVkOiBmaWVsZC5yZWFkb25seSB9LCBbXG4gICAgICAgICAgICAgIC4uLnRoaXMuYnVpbGRWYWxpZGF0b3JzKGZpZWxkKSxcbiAgICAgICAgICAgICAgVmFsaWRhdGlvblV0aWwuZ3JlYXRlclRoYW5PckVxdWFsVG8oJ3N0YXJ0RGF0ZScpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICAgICAgZmllbGQubmFtZSxcbiAgICAgICAgICBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogZmllbGQuZGVmYXVsdFZhbHVlLCBkaXNhYmxlZDogZmllbGQucmVhZG9ubHkgfSwgdGhpcy5idWlsZFZhbGlkYXRvcnMoZmllbGQpKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5maWVsZHNcbiAgICAgID8uZmlsdGVyKChmaWVsZCkgPT4gZmllbGQuZGVwZW5kZW5jaWVzKVxuICAgICAgLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgIGZpZWxkLmRlcGVuZGVuY2llcz8uZm9yRWFjaCgoZGVwZW5kZW5jeSkgPT4ge1xuICAgICAgICAgIHRoaXMuZmllbGRzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChkZXBlbmRlbmN5KT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpPy5yZXNldCgpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5wYXRjaEZvcm1Gcm9tUXVlcnlQYXJhbXMoeyAuLi50aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zIH0pO1xuXG4gICAgaWYgKHRoaXMuX2ZpZWxkcz8ubGVuZ3RoICYmIHRoaXMuZm9ybUdyb3VwLnZhbGlkICYmIGlzRmlyc3RTZXQpIHtcbiAgICAgIHRoaXMuc2VhcmNoKCk7XG4gICAgfVxuICAgIHRoaXMuZm9ybUJ1aWxkZWQuZW1pdCgpO1xuXG4gICAgdGhpcy5maWVsZHNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHF1ZXJ5UGFyYW1zKSA9PiB7XG4gICAgICAgIHRoaXMucGF0Y2hGb3JtRnJvbVF1ZXJ5UGFyYW1zKHsgLi4ucXVlcnlQYXJhbXMgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvblNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KClcbiAgcHVibGljIGZvcm1CdWlsZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHB1YmxpYyBnZXQgZmllbGRzKCkge1xuICAgIHJldHVybiB0aGlzLl9maWVsZHM7XG4gIH1cblxuICBwdWJsaWMgZmllbGRUeXBlcyA9IEZpZWxkVHlwZTtcbiAgcHVibGljIGZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICBwcml2YXRlIF9maWVsZHM6IEZpbHRlckZpZWxkW10gPSBbXTtcbiAgcHJpdmF0ZSBmaWVsZHNTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgZ2V0IGhpZGVGaWx0ZXJzKCkge1xuICAgIHJldHVybiAhdGhpcy5maWVsZHM/LmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uaGlkZGVuKS5sZW5ndGg7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5maWVsZHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2goKSB7XG4gICAgdGhpcy5mb3JtR3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIGlmICh0aGlzLmZvcm1Hcm91cC52YWxpZCkge1xuICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB0aGlzLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpO1xuICAgICAgT2JqZWN0LmtleXMoZmlsdGVyVmFsdWUpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpZiAoZmlsdGVyVmFsdWVba2V5XT8uaGFzT3duUHJvcGVydHkoJ2NvZGUnKSkge1xuICAgICAgICAgIGZpbHRlclZhbHVlW2tleV0gPSBmaWx0ZXJWYWx1ZVtrZXldLmNvZGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzVmFsaWQoZmlsdGVyVmFsdWVba2V5XSkpIHtcbiAgICAgICAgICBjb25zdCBmaWVsZFR5cGUgPSB0aGlzLmZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0ga2V5KT8udHlwZSB8fCBGaWVsZFR5cGUuVEVYVDtcbiAgICAgICAgICBmaWx0ZXJWYWx1ZVtrZXldID0gW0ZpZWxkVHlwZS5EUk9QRE9XTiwgRmllbGRUeXBlLk5VTUJFUl0uaW5jbHVkZXMoZmllbGRUeXBlKSA/IC0xIDogJyc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5vblNlYXJjaC5lbWl0KGZpbHRlclZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNUZXh0RmllbGRUeXBlKGZpZWxkOiBGaWx0ZXJGaWVsZCkge1xuICAgIHJldHVybiBbRmllbGRUeXBlLlRFWFQsIEZpZWxkVHlwZS5OVU1CRVJdLmluY2x1ZGVzKGZpZWxkLnR5cGUpO1xuICB9XG5cbiAgcHVibGljIGdldEZpZWxkRGVwZW5kZW5jaWVzKGZpZWxkOiBGaWx0ZXJGaWVsZCkge1xuICAgIGlmICghZmllbGQuZGVwZW5kZW5jaWVzKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gZmllbGQuZGVwZW5kZW5jaWVzLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgICAgbGV0IGRlcFZhbHVlOiBhbnkgPSB0aGlzLmZvcm1Hcm91cC5nZXQoY3Vycik/LnZhbHVlPy5jb2RlO1xuICAgICAgaWYgKCFPYmplY3RVdGlsLmlzVmFsaWQoZGVwVmFsdWUpKSB7XG4gICAgICAgIGRlcFZhbHVlID0gLTE7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBbY3Vycl06IGRlcFZhbHVlLFxuICAgICAgfTtcbiAgICB9LCB7fSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0R3JpZENsYXNzKGZpZWxkOiBGaWx0ZXJGaWVsZCkge1xuICAgIHN3aXRjaCAoZmllbGQuc2l6ZSkge1xuICAgICAgY2FzZSAnc21hbGwnOlxuICAgICAgICByZXR1cm4gJ21kOmNvbC0xJztcbiAgICAgIGNhc2UgJ21lZGl1bSc6XG4gICAgICAgIHJldHVybiAnbWQ6Y29sLTMnO1xuICAgICAgY2FzZSAnbGFyZ2UnOlxuICAgICAgICByZXR1cm4gJ21kOmNvbC00JztcbiAgICAgIGNhc2UgJ2xhcmdlc3QnOlxuICAgICAgICByZXR1cm4gJ21kOmNvbC04JztcbiAgICAgIGNhc2UgJ2Z1bGwnOlxuICAgICAgICByZXR1cm4gJ21kOmNvbC0xMic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ21kOmNvbC00JztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhdGNoRm9ybUZyb21RdWVyeVBhcmFtcyhxdWVyeVBhcmFtczogYW55KSB7XG4gICAgaWYgKE9iamVjdC5rZXlzKHF1ZXJ5UGFyYW1zKS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgIGlmIChxdWVyeVBhcmFtcy5oYXNPd25Qcm9wZXJ0eShmaWVsZC5uYW1lKSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtc1tmaWVsZC5uYW1lXSA9IHF1ZXJ5UGFyYW1zW2ZpZWxkLm5hbWVdXG4gICAgICAgICAgICAgID8gSlNPTi5wYXJzZShxdWVyeVBhcmFtc1tmaWVsZC5uYW1lXSlcbiAgICAgICAgICAgICAgOiBxdWVyeVBhcmFtc1tmaWVsZC5uYW1lXTtcbiAgICAgICAgICB9IGNhdGNoIChfKSB7fVxuICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSBGaWVsZFR5cGUuREFURV9SQU5HRSkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbXNbZmllbGQubmFtZV0gPSB7XG4gICAgICAgICAgICAgIHN0YXJ0RGF0ZTogcXVlcnlQYXJhbXNbZmllbGQubmFtZV0uc3RhcnREYXRlID8gbmV3IERhdGUocXVlcnlQYXJhbXNbZmllbGQubmFtZV0uc3RhcnREYXRlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgZW5kRGF0ZTogcXVlcnlQYXJhbXNbZmllbGQubmFtZV0uZW5kRGF0ZSA/IG5ldyBEYXRlKHF1ZXJ5UGFyYW1zW2ZpZWxkLm5hbWVdLmVuZERhdGUpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IEZpZWxkVHlwZS5EQVRFKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtc1tmaWVsZC5uYW1lXSA9IHF1ZXJ5UGFyYW1zW2ZpZWxkLm5hbWVdID8gbmV3IERhdGUocXVlcnlQYXJhbXNbZmllbGQubmFtZV0pIDogdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHF1ZXJ5UGFyYW1zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVmFsaWRhdG9ycyhmaWVsZDogRmlsdGVyRmllbGQpOiBWYWxpZGF0b3JGbltdIHtcbiAgICBjb25zdCB2YWxpZGF0b3JzID0gW107XG4gICAgaWYgKGZpZWxkLnJlcXVpcmVkKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgfVxuICAgIGlmIChmaWVsZC5taW5MZW5ndGgpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aChmaWVsZC5taW5MZW5ndGgpKTtcbiAgICB9XG4gICAgaWYgKGZpZWxkLm1heExlbmd0aCkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKGZpZWxkLm1heExlbmd0aCkpO1xuICAgIH1cbiAgICBpZiAoZmllbGQubWluKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW4oZmllbGQubWluKSk7XG4gICAgfVxuICAgIGlmIChmaWVsZC5tYXgpIHtcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heChmaWVsZC5tYXgpKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkYXRvcnM7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJncmlkIGZpbHRlci1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7ICdkaXNwbGF5LW5vbmUnOiBoaWRlRmlsdGVycyB9XCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZmllbGRzIHwgbm90SGlkZGVuXCIgY2xhc3M9XCJmaWVsZCBjb2wtMTIgc206Y29sLTgge3sgZ2V0R3JpZENsYXNzKGZpZWxkKSB9fVwiPlxuICAgIDxsYWJlbD57eyBmaWVsZC5sYWJlbCB9fTwvbGFiZWw+XG4gICAgPHZlY3Rvci10ZXh0LWZpZWxkXG4gICAgICAqbmdJZj1cImlzVGV4dEZpZWxkVHlwZShmaWVsZClcIlxuICAgICAgW2NvbnRyb2xdPVwiZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKVwiXG4gICAgICBbbWFza109XCJmaWVsZC5tYXNrXCJcbiAgICAgIFtsYWJlbF09XCJmaWVsZC5wbGFjZWhvbGRlclwiXG4gICAgICBbaXNSZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXG4gICAgICBbbnVtZXJpY109XCJmaWVsZC50eXBlID09PSBmaWVsZFR5cGVzLk5VTUJFUlwiXG4gICAgPjwvdmVjdG9yLXRleHQtZmllbGQ+XG4gICAgPHZlY3Rvci1kcm9wZG93bi1maWVsZFxuICAgICAgKm5nSWY9XCJbZmllbGRUeXBlcy5EWU5BTUlDX0RST1BET1dOLCBmaWVsZFR5cGVzLkRST1BET1dOXS5pbmNsdWRlcyhmaWVsZC50eXBlKVwiXG4gICAgICBbZHluYW1pY0ZpbHRlcnNdPVwiZmllbGQuZmlsdGVyVHlwZXNcIlxuICAgICAgW29wdGlvbnNdPVwiZmllbGQub3B0aW9ucyB8fCBbXVwiXG4gICAgICBbc2VydmljZV09XCJmaWVsZC5zZXJ2aWNlXCJcbiAgICAgIFtpc1JlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcbiAgICAgIFttaW5MZW5ndGhUb1NlcnZpY2VdPVwiZmllbGQubWluTGVuZ3RoVG9TZXJ2aWNlIHx8IDBcIlxuICAgICAgW2NvbnRyb2xdPVwiZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKVwiXG4gICAgICBbcGFnZWRdPVwiZmFsc2VcIlxuICAgICAgW2RlcGVuZGVuY2llc109XCJnZXRGaWVsZERlcGVuZGVuY2llcyhmaWVsZClcIlxuICAgICAgW2luaXRpYWxMb2FkXT1cImZpZWxkLmluaXRpYXRlVmFsdWVcIlxuICAgID48L3ZlY3Rvci1kcm9wZG93bi1maWVsZD5cbiAgICA8dmVjdG9yLWN1cnJlbmN5LWZpZWxkXG4gICAgICAqbmdJZj1cImZpZWxkLnR5cGUgPT09IGZpZWxkVHlwZXMuQ1VSUkVOQ1lcIlxuICAgICAgW2NvbnRyb2xdPVwiZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKVwiXG4gICAgICBbb3V0bGluZWRdPVwidHJ1ZVwiXG4gICAgPjwvdmVjdG9yLWN1cnJlbmN5LWZpZWxkPlxuICAgIDx2ZWN0b3ItY2FsZW5kYXItZmllbGRcbiAgICAgICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gZmllbGRUeXBlcy5EQVRFXCJcbiAgICAgIFtjb250cm9sXT1cImZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSlcIlxuICAgICAgW2lzUmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxuICAgICAgW2xhYmVsXT1cImZpZWxkLnBsYWNlaG9sZGVyIHx8ICcnXCJcbiAgICA+PC92ZWN0b3ItY2FsZW5kYXItZmllbGQ+XG4gICAgPHZlY3Rvci1zZWxlY3QtYnV0dG9uLWZpZWxkXG4gICAgICAqbmdJZj1cImZpZWxkLnR5cGUgPT09IGZpZWxkVHlwZXMuU0VMRUNUX0JVVFRPTlwiXG4gICAgICBbY29udHJvbF09XCJmb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpXCJcbiAgICAgIFtvcHRpb25zXT1cImZpZWxkLm9wdGlvbnNcIlxuICAgICAgKGNsaWNrKT1cInNlYXJjaCgpXCJcbiAgICA+XG4gICAgPC92ZWN0b3Itc2VsZWN0LWJ1dHRvbi1maWVsZD5cbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gZmllbGRUeXBlcy5EQVRFX1JBTkdFXCIgY2xhc3M9XCJyYW5nZS1kYXRlLWNvbnRhaW5lclwiPlxuICAgICAgPHZlY3Rvci1jYWxlbmRhci1maWVsZFxuICAgICAgICBbY29udHJvbF09XCJmb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUgKyAnLnN0YXJ0RGF0ZScpXCJcbiAgICAgICAgW2lzUmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxuICAgICAgICBbbGFiZWxdPVwiZmllbGQucGxhY2Vob2xkZXIgfHwgJydcIlxuICAgICAgPjwvdmVjdG9yLWNhbGVuZGFyLWZpZWxkPlxuICAgICAgQXTDqVxuICAgICAgPHZlY3Rvci1jYWxlbmRhci1maWVsZFxuICAgICAgICBbY29udHJvbF09XCJmb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUgKyAnLmVuZERhdGUnKVwiXG4gICAgICAgIFtpc1JlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcbiAgICAgICAgW2xhYmVsXT1cImZpZWxkLnBsYWNlaG9sZGVyIHx8ICcnXCJcbiAgICAgID48L3ZlY3Rvci1jYWxlbmRhci1maWVsZD5cbiAgICA8L2Rpdj5cbiAgICA8dmVjdG9yLW11bHRpc2VsZWN0LWZpZWxkXG4gICAgICAqbmdJZj1cImZpZWxkLnR5cGUgPT09IGZpZWxkVHlwZXMuTVVMVElTRUxFQ1RcIlxuICAgICAgW2NvbnRyb2xdPVwiZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKVwiXG4gICAgICBbb3B0aW9uc109XCJmaWVsZC5vcHRpb25zIHx8IFtdXCJcbiAgICA+XG4gICAgPC92ZWN0b3ItbXVsdGlzZWxlY3QtZmllbGQ+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2VhcmNoLWJ1dHRvbiBzbTpjb2wtNFwiPlxuICAgIDx2ZWN0b3ItYnV0dG9uXG4gICAgICBbbGFiZWxdPVwiJ2FwcC5sYWJlbC5zZWFyY2gnIHwgdHJhbnNsYXRlXCJcbiAgICAgIChjbGljayk9XCJzZWFyY2goKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiIWZvcm1Hcm91cC52YWxpZFwiXG4gICAgPjwvdmVjdG9yLWJ1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { FormControl, FormGroup, Validators } from '@angular/forms';
|
|
3
|
+
import { Subscription } from 'rxjs';
|
|
4
|
+
import { ObjectUtil, ValidationUtil } from '../../../utils';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/router";
|
|
7
|
+
import * as i2 from "../text-field/text-field.component";
|
|
8
|
+
import * as i3 from "../dropdown-field/dropdown-field.component";
|
|
9
|
+
import * as i4 from "../currency-field/currency-field.component";
|
|
10
|
+
import * as i5 from "../calendar-field/calendar-field.component";
|
|
11
|
+
import * as i6 from "../select-button-field/select-button-field.component";
|
|
12
|
+
import * as i7 from "../multiselect-field/multiselect-field.component";
|
|
13
|
+
import * as i8 from "../button/button.component";
|
|
14
|
+
import * as i9 from "@angular/common";
|
|
15
|
+
import * as i10 from "@angular/forms";
|
|
16
|
+
import * as i11 from "../../../pipes/not-hidden.pipe";
|
|
17
|
+
import * as i12 from "@ngx-translate/core";
|
|
18
|
+
export var FieldType;
|
|
19
|
+
(function (FieldType) {
|
|
20
|
+
FieldType[FieldType["DROPDOWN"] = 0] = "DROPDOWN";
|
|
21
|
+
FieldType[FieldType["TEXT"] = 1] = "TEXT";
|
|
22
|
+
FieldType[FieldType["DATE"] = 2] = "DATE";
|
|
23
|
+
FieldType[FieldType["NUMBER"] = 3] = "NUMBER";
|
|
24
|
+
FieldType[FieldType["CURRENCY"] = 4] = "CURRENCY";
|
|
25
|
+
FieldType[FieldType["DYNAMIC_DROPDOWN"] = 5] = "DYNAMIC_DROPDOWN";
|
|
26
|
+
FieldType[FieldType["SELECT_BUTTON"] = 6] = "SELECT_BUTTON";
|
|
27
|
+
FieldType[FieldType["DATE_RANGE"] = 7] = "DATE_RANGE";
|
|
28
|
+
FieldType[FieldType["MULTISELECT"] = 8] = "MULTISELECT";
|
|
29
|
+
})(FieldType || (FieldType = {}));
|
|
30
|
+
export class FiltersComponent {
|
|
31
|
+
constructor(activatedRoute) {
|
|
32
|
+
this.activatedRoute = activatedRoute;
|
|
33
|
+
this.onSearch = new EventEmitter();
|
|
34
|
+
this.formBuilded = new EventEmitter();
|
|
35
|
+
this.fieldTypes = FieldType;
|
|
36
|
+
this.formGroup = new FormGroup({});
|
|
37
|
+
this._fields = [];
|
|
38
|
+
this.fieldsSubscription = new Subscription();
|
|
39
|
+
}
|
|
40
|
+
set fields(_fields) {
|
|
41
|
+
const isFirstSet = !this._fields.length && _fields?.length;
|
|
42
|
+
this._fields = _fields;
|
|
43
|
+
this.formGroup = new FormGroup({});
|
|
44
|
+
this.fieldsSubscription.unsubscribe();
|
|
45
|
+
this.fieldsSubscription = new Subscription();
|
|
46
|
+
this.fields?.forEach((field) => {
|
|
47
|
+
if (field?.defaultValue && typeof field?.defaultValue === 'object') {
|
|
48
|
+
field.initiateValue = !!field.defaultValue?.code;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
field.initiateValue = !!field.defaultValue;
|
|
52
|
+
}
|
|
53
|
+
if (field.type === FieldType.DATE_RANGE) {
|
|
54
|
+
this.formGroup.addControl(field.name, new FormGroup({
|
|
55
|
+
startDate: new FormControl({ value: field.defaultValue?.startDate, disabled: field.readonly }, [
|
|
56
|
+
...this.buildValidators(field),
|
|
57
|
+
ValidationUtil.lowerThanOrEqualTo('endDate'),
|
|
58
|
+
]),
|
|
59
|
+
endDate: new FormControl({ value: field.defaultValue?.endDate, disabled: field.readonly }, [
|
|
60
|
+
...this.buildValidators(field),
|
|
61
|
+
ValidationUtil.greaterThanOrEqualTo('startDate'),
|
|
62
|
+
]),
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this.formGroup.addControl(field.name, new FormControl({ value: field.defaultValue, disabled: field.readonly }, this.buildValidators(field)));
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
this.fields
|
|
70
|
+
?.filter((field) => field.dependencies)
|
|
71
|
+
.forEach((field) => {
|
|
72
|
+
field.dependencies?.forEach((dependency) => {
|
|
73
|
+
this.fieldsSubscription.add(this.formGroup.get(dependency)?.valueChanges.subscribe((value) => {
|
|
74
|
+
this.formGroup.get(field.name)?.reset();
|
|
75
|
+
}));
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
this.patchFormFromQueryParams({ ...this.activatedRoute.snapshot.queryParams });
|
|
79
|
+
if (this._fields?.length && this.formGroup.valid && isFirstSet) {
|
|
80
|
+
this.search();
|
|
81
|
+
}
|
|
82
|
+
this.formBuilded.emit();
|
|
83
|
+
this.fieldsSubscription.add(this.activatedRoute.queryParams.subscribe((queryParams) => {
|
|
84
|
+
this.patchFormFromQueryParams({ ...queryParams });
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
87
|
+
get fields() {
|
|
88
|
+
return this._fields;
|
|
89
|
+
}
|
|
90
|
+
get hideFilters() {
|
|
91
|
+
return !this.fields?.filter((item) => !item.hidden).length;
|
|
92
|
+
}
|
|
93
|
+
ngOnInit() { }
|
|
94
|
+
ngOnDestroy() {
|
|
95
|
+
this.fieldsSubscription.unsubscribe();
|
|
96
|
+
}
|
|
97
|
+
search() {
|
|
98
|
+
this.formGroup.markAllAsTouched();
|
|
99
|
+
if (this.formGroup.valid) {
|
|
100
|
+
const filterValue = this.formGroup.getRawValue();
|
|
101
|
+
Object.keys(filterValue).forEach((key) => {
|
|
102
|
+
if (filterValue[key]?.hasOwnProperty('code')) {
|
|
103
|
+
filterValue[key] = filterValue[key].code;
|
|
104
|
+
}
|
|
105
|
+
if (!ObjectUtil.isValid(filterValue[key])) {
|
|
106
|
+
const fieldType = this.fields.find((field) => field.name === key)?.type || FieldType.TEXT;
|
|
107
|
+
filterValue[key] = [FieldType.DROPDOWN, FieldType.NUMBER].includes(fieldType) ? -1 : '';
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
this.onSearch.emit(filterValue);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
isTextFieldType(field) {
|
|
114
|
+
return [FieldType.TEXT, FieldType.NUMBER].includes(field.type);
|
|
115
|
+
}
|
|
116
|
+
getFieldDependencies(field) {
|
|
117
|
+
if (!field.dependencies) {
|
|
118
|
+
return undefined;
|
|
119
|
+
}
|
|
120
|
+
return field.dependencies.reduce((prev, curr) => {
|
|
121
|
+
let depValue = this.formGroup.get(curr)?.value?.code;
|
|
122
|
+
if (!ObjectUtil.isValid(depValue)) {
|
|
123
|
+
depValue = -1;
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
...prev,
|
|
127
|
+
[curr]: depValue,
|
|
128
|
+
};
|
|
129
|
+
}, {});
|
|
130
|
+
}
|
|
131
|
+
getGridClass(field) {
|
|
132
|
+
switch (field.size) {
|
|
133
|
+
case 'small':
|
|
134
|
+
return 'md:col-1';
|
|
135
|
+
case 'medium':
|
|
136
|
+
return 'md:col-3';
|
|
137
|
+
case 'large':
|
|
138
|
+
return 'md:col-4';
|
|
139
|
+
case 'largest':
|
|
140
|
+
return 'md:col-8';
|
|
141
|
+
case 'full':
|
|
142
|
+
return 'md:col-12';
|
|
143
|
+
default:
|
|
144
|
+
return 'md:col-4';
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
patchFormFromQueryParams(queryParams) {
|
|
148
|
+
if (Object.keys(queryParams).length) {
|
|
149
|
+
this.fields.forEach((field) => {
|
|
150
|
+
if (queryParams.hasOwnProperty(field.name)) {
|
|
151
|
+
try {
|
|
152
|
+
queryParams[field.name] = queryParams[field.name]
|
|
153
|
+
? JSON.parse(queryParams[field.name])
|
|
154
|
+
: queryParams[field.name];
|
|
155
|
+
}
|
|
156
|
+
catch (_) { }
|
|
157
|
+
if (field.type === FieldType.DATE_RANGE) {
|
|
158
|
+
queryParams[field.name] = {
|
|
159
|
+
startDate: queryParams[field.name].startDate ? new Date(queryParams[field.name].startDate) : undefined,
|
|
160
|
+
endDate: queryParams[field.name].endDate ? new Date(queryParams[field.name].endDate) : undefined,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
if (field.type === FieldType.DATE) {
|
|
164
|
+
queryParams[field.name] = queryParams[field.name] ? new Date(queryParams[field.name]) : undefined;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
this.formGroup.patchValue(queryParams);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
buildValidators(field) {
|
|
172
|
+
const validators = [];
|
|
173
|
+
if (field.required) {
|
|
174
|
+
validators.push(Validators.required);
|
|
175
|
+
}
|
|
176
|
+
if (field.minLength) {
|
|
177
|
+
validators.push(Validators.minLength(field.minLength));
|
|
178
|
+
}
|
|
179
|
+
if (field.maxLength) {
|
|
180
|
+
validators.push(Validators.maxLength(field.maxLength));
|
|
181
|
+
}
|
|
182
|
+
if (field.min) {
|
|
183
|
+
validators.push(Validators.min(field.min));
|
|
184
|
+
}
|
|
185
|
+
if (field.max) {
|
|
186
|
+
validators.push(Validators.max(field.max));
|
|
187
|
+
}
|
|
188
|
+
return validators;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
FiltersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: FiltersComponent, deps: [{ token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
192
|
+
FiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: FiltersComponent, selector: "vector-filters", inputs: { fields: "fields" }, outputs: { onSearch: "onSearch", formBuilded: "formBuilded" }, ngImport: i0, template: "<div class=\"grid filter-container\" [ngClass]=\"{ 'display-none': hideFilters }\" [formGroup]=\"formGroup\">\r\n <div *ngFor=\"let field of fields | notHidden\" class=\"field col-12 sm:col-8 {{ getGridClass(field) }}\">\r\n <label>{{ field.label }}</label>\r\n <vector-text-field\r\n *ngIf=\"isTextFieldType(field)\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [mask]=\"field.mask\"\r\n [label]=\"field.placeholder\"\r\n [isRequired]=\"field.required\"\r\n [numeric]=\"field.type === fieldTypes.NUMBER\"\r\n ></vector-text-field>\r\n <vector-dropdown-field\r\n *ngIf=\"[fieldTypes.DYNAMIC_DROPDOWN, fieldTypes.DROPDOWN].includes(field.type)\"\r\n [dynamicFilters]=\"field.filterTypes\"\r\n [options]=\"field.options || []\"\r\n [service]=\"field.service\"\r\n [isRequired]=\"field.required\"\r\n [minLengthToService]=\"field.minLengthToService || 0\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [paged]=\"false\"\r\n [dependencies]=\"getFieldDependencies(field)\"\r\n [initialLoad]=\"field.initiateValue\"\r\n ></vector-dropdown-field>\r\n <vector-currency-field\r\n *ngIf=\"field.type === fieldTypes.CURRENCY\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [outlined]=\"true\"\r\n ></vector-currency-field>\r\n <vector-calendar-field\r\n *ngIf=\"field.type === fieldTypes.DATE\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [isRequired]=\"field.required\"\r\n [label]=\"field.placeholder || ''\"\r\n ></vector-calendar-field>\r\n <vector-select-button-field\r\n *ngIf=\"field.type === fieldTypes.SELECT_BUTTON\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [options]=\"field.options\"\r\n (click)=\"search()\"\r\n >\r\n </vector-select-button-field>\r\n <div *ngIf=\"field.type === fieldTypes.DATE_RANGE\" class=\"range-date-container\">\r\n <vector-calendar-field\r\n [control]=\"formGroup.get(field.name + '.startDate')\"\r\n [isRequired]=\"field.required\"\r\n [label]=\"field.placeholder || ''\"\r\n ></vector-calendar-field>\r\n At\u00E9\r\n <vector-calendar-field\r\n [control]=\"formGroup.get(field.name + '.endDate')\"\r\n [isRequired]=\"field.required\"\r\n [label]=\"field.placeholder || ''\"\r\n ></vector-calendar-field>\r\n </div>\r\n <vector-multiselect-field\r\n *ngIf=\"field.type === fieldTypes.MULTISELECT\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [options]=\"field.options || []\"\r\n >\r\n </vector-multiselect-field>\r\n </div>\r\n <div class=\"search-button sm:col-4\">\r\n <vector-button\r\n [label]=\"'app.label.search' | translate\"\r\n (click)=\"search()\"\r\n [disabled]=\"!formGroup.valid\"\r\n ></vector-button>\r\n </div>\r\n</div>\r\n", styles: [".filter-container{align-items:center}.filter-container .field{display:flex;flex-direction:column}.filter-container .search-button{flex:1;padding-right:7px;display:flex;justify-content:flex-end}@media (min-width: 768px){.filter-container .search-button{padding-top:36px}}.filter-container .range-date-container{display:flex;align-items:center;gap:10px}.display-none{display:none!important}\n"], components: [{ type: i2.TextFieldComponent, selector: "vector-text-field", inputs: ["isRequired", "label", "maxlength", "isPassword", "numeric", "decimal", "onlyText", "alphaNumeric", "alphaNumericAndWhitespace", "mask", "autoClear", "rightIcon", "centered", "enableDocumentTypeChoice", "hiddenErrorMessage", "leftLabel", "control"], outputs: ["blurEvent", "enterKeyPress", "focusEvent", "onDocumentTypeChange"] }, { type: i3.DropdownFieldComponent, selector: "vector-dropdown-field", inputs: ["options", "isRequired", "control", "label", "service", "paged", "buttonAction", "dependencies", "hiddenErrorMessage", "dynamicFilters", "minLengthToService", "initialLoad"], outputs: ["onFocus", "onChange"] }, { type: i4.CurrencyFieldComponent, selector: "vector-currency-field", inputs: ["minValue", "maxValue", "placeholder", "numberOfDecimals", "control", "outlined", "rounded", "label", "isBankingField", "inputClassName", "localePrefix", "currencyPrefix", "disabled"] }, { type: i5.CalendarComponent, selector: "vector-calendar-field", inputs: ["isRequired", "control", "label", "showCalendarOnFocus", "min", "max", "disabledDates", "disabled", "defaultDate", "hiddenErrorMessage"] }, { type: i6.SelectButtonFieldComponent, selector: "vector-select-button-field", inputs: ["options", "control"] }, { type: i7.MultiselectFieldComponent, selector: "vector-multiselect-field", inputs: ["isRequired", "control", "label", "options", "filter"], outputs: ["onChange"] }, { type: i8.ButtonComponent, selector: "vector-button", inputs: ["disabled", "label", "type", "leftIcon", "rightIcon", "noShadow", "style"], outputs: ["onClick"] }], directives: [{ type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "notHidden": i11.NotHiddenPipe, "translate": i12.TranslatePipe } });
|
|
193
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: FiltersComponent, decorators: [{
|
|
194
|
+
type: Component,
|
|
195
|
+
args: [{ selector: 'vector-filters', template: "<div class=\"grid filter-container\" [ngClass]=\"{ 'display-none': hideFilters }\" [formGroup]=\"formGroup\">\r\n <div *ngFor=\"let field of fields | notHidden\" class=\"field col-12 sm:col-8 {{ getGridClass(field) }}\">\r\n <label>{{ field.label }}</label>\r\n <vector-text-field\r\n *ngIf=\"isTextFieldType(field)\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [mask]=\"field.mask\"\r\n [label]=\"field.placeholder\"\r\n [isRequired]=\"field.required\"\r\n [numeric]=\"field.type === fieldTypes.NUMBER\"\r\n ></vector-text-field>\r\n <vector-dropdown-field\r\n *ngIf=\"[fieldTypes.DYNAMIC_DROPDOWN, fieldTypes.DROPDOWN].includes(field.type)\"\r\n [dynamicFilters]=\"field.filterTypes\"\r\n [options]=\"field.options || []\"\r\n [service]=\"field.service\"\r\n [isRequired]=\"field.required\"\r\n [minLengthToService]=\"field.minLengthToService || 0\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [paged]=\"false\"\r\n [dependencies]=\"getFieldDependencies(field)\"\r\n [initialLoad]=\"field.initiateValue\"\r\n ></vector-dropdown-field>\r\n <vector-currency-field\r\n *ngIf=\"field.type === fieldTypes.CURRENCY\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [outlined]=\"true\"\r\n ></vector-currency-field>\r\n <vector-calendar-field\r\n *ngIf=\"field.type === fieldTypes.DATE\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [isRequired]=\"field.required\"\r\n [label]=\"field.placeholder || ''\"\r\n ></vector-calendar-field>\r\n <vector-select-button-field\r\n *ngIf=\"field.type === fieldTypes.SELECT_BUTTON\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [options]=\"field.options\"\r\n (click)=\"search()\"\r\n >\r\n </vector-select-button-field>\r\n <div *ngIf=\"field.type === fieldTypes.DATE_RANGE\" class=\"range-date-container\">\r\n <vector-calendar-field\r\n [control]=\"formGroup.get(field.name + '.startDate')\"\r\n [isRequired]=\"field.required\"\r\n [label]=\"field.placeholder || ''\"\r\n ></vector-calendar-field>\r\n At\u00E9\r\n <vector-calendar-field\r\n [control]=\"formGroup.get(field.name + '.endDate')\"\r\n [isRequired]=\"field.required\"\r\n [label]=\"field.placeholder || ''\"\r\n ></vector-calendar-field>\r\n </div>\r\n <vector-multiselect-field\r\n *ngIf=\"field.type === fieldTypes.MULTISELECT\"\r\n [control]=\"formGroup.get(field.name)\"\r\n [options]=\"field.options || []\"\r\n >\r\n </vector-multiselect-field>\r\n </div>\r\n <div class=\"search-button sm:col-4\">\r\n <vector-button\r\n [label]=\"'app.label.search' | translate\"\r\n (click)=\"search()\"\r\n [disabled]=\"!formGroup.valid\"\r\n ></vector-button>\r\n </div>\r\n</div>\r\n", styles: [".filter-container{align-items:center}.filter-container .field{display:flex;flex-direction:column}.filter-container .search-button{flex:1;padding-right:7px;display:flex;justify-content:flex-end}@media (min-width: 768px){.filter-container .search-button{padding-top:36px}}.filter-container .range-date-container{display:flex;align-items:center;gap:10px}.display-none{display:none!important}\n"] }]
|
|
196
|
+
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }]; }, propDecorators: { fields: [{
|
|
197
|
+
type: Input
|
|
198
|
+
}], onSearch: [{
|
|
199
|
+
type: Output
|
|
200
|
+
}], formBuilded: [{
|
|
201
|
+
type: Output
|
|
202
|
+
}] } });
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9maWx0ZXJzL2ZpbHRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvZmlsdGVycy9maWx0ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFFNUQsTUFBTSxDQUFOLElBQVksU0FVWDtBQVZELFdBQVksU0FBUztJQUNuQixpREFBUSxDQUFBO0lBQ1IseUNBQUksQ0FBQTtJQUNKLHlDQUFJLENBQUE7SUFDSiw2Q0FBTSxDQUFBO0lBQ04saURBQVEsQ0FBQTtJQUNSLGlFQUFnQixDQUFBO0lBQ2hCLDJEQUFhLENBQUE7SUFDYixxREFBVSxDQUFBO0lBQ1YsdURBQVcsQ0FBQTtBQUNiLENBQUMsRUFWVyxTQUFTLEtBQVQsU0FBUyxRQVVwQjtBQThCRCxNQUFNLE9BQU8sZ0JBQWdCO0lBaUYzQixZQUFvQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFqQjNDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRW5DLGdCQUFXLEdB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T25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTGlzdEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBCYXNlRHJvcGRvd24gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IE9iamVjdFV0aWwsIFZhbGlkYXRpb25VdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xyXG5cclxuZXhwb3J0IGVudW0gRmllbGRUeXBlIHtcclxuICBEUk9QRE9XTixcclxuICBURVhULFxyXG4gIERBVEUsXHJcbiAgTlVNQkVSLFxyXG4gIENVUlJFTkNZLFxyXG4gIERZTkFNSUNfRFJPUERPV04sXHJcbiAgU0VMRUNUX0JVVFRPTixcclxuICBEQVRFX1JBTkdFLFxyXG4gIE1VTFRJU0VMRUNULFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBGaWx0ZXJGaWVsZCA9IHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdHlwZTogRmllbGRUeXBlO1xyXG4gIG1pbkxlbmd0aD86IG51bWJlcjtcclxuICBtYXhMZW5ndGg/OiBudW1iZXI7XHJcbiAgbWluPzogbnVtYmVyO1xyXG4gIG1heD86IG51bWJlcjtcclxuICByZXF1aXJlZD86IGJvb2xlYW47XHJcbiAgcmVhZG9ubHk/OiBib29sZWFuO1xyXG4gIGxhYmVsPzogc3RyaW5nO1xyXG4gIG1hc2s/OiBzdHJpbmc7XHJcbiAgb3B0aW9ucz86IExpc3RJdGVtW107XHJcbiAgZmlsdGVyVHlwZXM/OiBMaXN0SXRlbVtdO1xyXG4gIHNlcnZpY2U/OiBCYXNlRHJvcGRvd247XHJcbiAgZGVmYXVsdFZhbHVlPzogYW55O1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIGhpZGRlbj86IGJvb2xlYW47XHJcbiAgZGVwZW5kZW5jaWVzPzogc3RyaW5nW107XHJcbiAgc2l6ZT86ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgfCAnbGFyZ2VzdCcgfCAnZnVsbCc7XHJcbiAgbWluTGVuZ3RoVG9TZXJ2aWNlPzogbnVtYmVyO1xyXG4gIGluaXRpYXRlVmFsdWU/OiBib29sZWFuO1xyXG59O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd2ZWN0b3ItZmlsdGVycycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlcnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZpbHRlcnMuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbHRlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGZpZWxkcyhfZmllbGRzOiBGaWx0ZXJGaWVsZFtdKSB7XHJcbiAgICBjb25zdCBpc0ZpcnN0U2V0ID0gIXRoaXMuX2ZpZWxkcy5sZW5ndGggJiYgX2ZpZWxkcz8ubGVuZ3RoO1xyXG4gICAgdGhpcy5fZmllbGRzID0gX2ZpZWxkcztcclxuICAgIHRoaXMuZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcblxyXG4gICAgdGhpcy5maWVsZHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMuZmllbGRzU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICAgIHRoaXMuZmllbGRzPy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICBpZiAoZmllbGQ/LmRlZmF1bHRWYWx1ZSAmJiB0eXBlb2YgZmllbGQ/LmRlZmF1bHRWYWx1ZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICBmaWVsZC5pbml0aWF0ZVZhbHVlID0gISFmaWVsZC5kZWZhdWx0VmFsdWU/LmNvZGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZmllbGQuaW5pdGlhdGVWYWx1ZSA9ICEhZmllbGQuZGVmYXVsdFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChmaWVsZC50eXBlID09PSBGaWVsZFR5cGUuREFURV9SQU5HRSkge1xyXG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBmaWVsZC5uYW1lLFxyXG4gICAgICAgICAgbmV3IEZvcm1Hcm91cCh7XHJcbiAgICAgICAgICAgIHN0YXJ0RGF0ZTogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IGZpZWxkLmRlZmF1bHRWYWx1ZT8uc3RhcnREYXRlLCBkaXNhYmxlZDogZmllbGQucmVhZG9ubHkgfSwgW1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuYnVpbGRWYWxpZGF0b3JzKGZpZWxkKSxcclxuICAgICAgICAgICAgICBWYWxpZGF0aW9uVXRpbC5sb3dlclRoYW5PckVxdWFsVG8oJ2VuZERhdGUnKSxcclxuICAgICAgICAgICAgXSksXHJcbiAgICAgICAgICAgIGVuZERhdGU6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiBmaWVsZC5kZWZhdWx0VmFsdWU/LmVuZERhdGUsIGRpc2FibGVkOiBmaWVsZC5yZWFkb25seSB9LCBbXHJcbiAgICAgICAgICAgICAgLi4udGhpcy5idWlsZFZhbGlkYXRvcnMoZmllbGQpLFxyXG4gICAgICAgICAgICAgIFZhbGlkYXRpb25VdGlsLmdyZWF0ZXJUaGFuT3JFcXVhbFRvKCdzdGFydERhdGUnKSxcclxuICAgICAgICAgICAgXSksXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIGZpZWxkLm5hbWUsXHJcbiAgICAgICAgICBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogZmllbGQuZGVmYXVsdFZhbHVlLCBkaXNhYmxlZDogZmllbGQucmVhZG9ubHkgfSwgdGhpcy5idWlsZFZhbGlkYXRvcnMoZmllbGQpKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZmllbGRzXHJcbiAgICAgID8uZmlsdGVyKChmaWVsZCkgPT4gZmllbGQuZGVwZW5kZW5jaWVzKVxyXG4gICAgICAuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBmaWVsZC5kZXBlbmRlbmNpZXM/LmZvckVhY2goKGRlcGVuZGVuY3kpID0+IHtcclxuICAgICAgICAgIHRoaXMuZmllbGRzU3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KGRlcGVuZGVuY3kpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKT8ucmVzZXQoKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMucGF0Y2hGb3JtRnJvbVF1ZXJ5UGFyYW1zKHsgLi4udGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcyB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5fZmllbGRzPy5sZW5ndGggJiYgdGhpcy5mb3JtR3JvdXAudmFsaWQgJiYgaXNGaXJzdFNldCkge1xyXG4gICAgICB0aGlzLnNlYXJjaCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtQnVpbGRlZC5lbWl0KCk7XHJcblxyXG4gICAgdGhpcy5maWVsZHNTdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocXVlcnlQYXJhbXMpID0+IHtcclxuICAgICAgICB0aGlzLnBhdGNoRm9ybUZyb21RdWVyeVBhcmFtcyh7IC4uLnF1ZXJ5UGFyYW1zIH0pO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9uU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGZvcm1CdWlsZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBwdWJsaWMgZ2V0IGZpZWxkcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZHM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZmllbGRUeXBlcyA9IEZpZWxkVHlwZTtcclxuICBwdWJsaWMgZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgcHJpdmF0ZSBfZmllbGRzOiBGaWx0ZXJGaWVsZFtdID0gW107XHJcbiAgcHJpdmF0ZSBmaWVsZHNTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gIGdldCBoaWRlRmlsdGVycygpIHtcclxuICAgIHJldHVybiAhdGhpcy5maWVsZHM/LmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uaGlkZGVuKS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7fVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZmllbGRzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VhcmNoKCkge1xyXG4gICAgdGhpcy5mb3JtR3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwLnZhbGlkKSB7XHJcbiAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gdGhpcy5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKTtcclxuICAgICAgT2JqZWN0LmtleXMoZmlsdGVyVmFsdWUpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgIGlmIChmaWx0ZXJWYWx1ZVtrZXldPy5oYXNPd25Qcm9wZXJ0eSgnY29kZScpKSB7XHJcbiAgICAgICAgICBmaWx0ZXJWYWx1ZVtrZXldID0gZmlsdGVyVmFsdWVba2V5XS5jb2RlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNWYWxpZChmaWx0ZXJWYWx1ZVtrZXldKSkge1xyXG4gICAgICAgICAgY29uc3QgZmllbGRUeXBlID0gdGhpcy5maWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IGtleSk/LnR5cGUgfHwgRmllbGRUeXBlLlRFWFQ7XHJcbiAgICAgICAgICBmaWx0ZXJWYWx1ZVtrZXldID0gW0ZpZWxkVHlwZS5EUk9QRE9XTiwgRmllbGRUeXBlLk5VTUJFUl0uaW5jbHVkZXMoZmllbGRUeXBlKSA/IC0xIDogJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5vblNlYXJjaC5lbWl0KGZpbHRlclZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc1RleHRGaWVsZFR5cGUoZmllbGQ6IEZpbHRlckZpZWxkKSB7XHJcbiAgICByZXR1cm4gW0ZpZWxkVHlwZS5URVhULCBGaWVsZFR5cGUuTlVNQkVSXS5pbmNsdWRlcyhmaWVsZC50eXBlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRGaWVsZERlcGVuZGVuY2llcyhmaWVsZDogRmlsdGVyRmllbGQpIHtcclxuICAgIGlmICghZmllbGQuZGVwZW5kZW5jaWVzKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmllbGQuZGVwZW5kZW5jaWVzLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xyXG4gICAgICBsZXQgZGVwVmFsdWU6IGFueSA9IHRoaXMuZm9ybUdyb3VwLmdldChjdXJyKT8udmFsdWU/LmNvZGU7XHJcbiAgICAgIGlmICghT2JqZWN0VXRpbC5pc1ZhbGlkKGRlcFZhbHVlKSkge1xyXG4gICAgICAgIGRlcFZhbHVlID0gLTE7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5wcmV2LFxyXG4gICAgICAgIFtjdXJyXTogZGVwVmFsdWUsXHJcbiAgICAgIH07XHJcbiAgICB9LCB7fSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0R3JpZENsYXNzKGZpZWxkOiBGaWx0ZXJGaWVsZCkge1xyXG4gICAgc3dpdGNoIChmaWVsZC5zaXplKSB7XHJcbiAgICAgIGNhc2UgJ3NtYWxsJzpcclxuICAgICAgICByZXR1cm4gJ21kOmNvbC0xJztcclxuICAgICAgY2FzZSAnbWVkaXVtJzpcclxuICAgICAgICByZXR1cm4gJ21kOmNvbC0zJztcclxuICAgICAgY2FzZSAnbGFyZ2UnOlxyXG4gICAgICAgIHJldHVybiAnbWQ6Y29sLTQnO1xyXG4gICAgICBjYXNlICdsYXJnZXN0JzpcclxuICAgICAgICByZXR1cm4gJ21kOmNvbC04JztcclxuICAgICAgY2FzZSAnZnVsbCc6XHJcbiAgICAgICAgcmV0dXJuICdtZDpjb2wtMTInO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnbWQ6Y29sLTQnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXRjaEZvcm1Gcm9tUXVlcnlQYXJhbXMocXVlcnlQYXJhbXM6IGFueSkge1xyXG4gICAgaWYgKE9iamVjdC5rZXlzKHF1ZXJ5UGFyYW1zKS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBpZiAocXVlcnlQYXJhbXMuaGFzT3duUHJvcGVydHkoZmllbGQubmFtZSkpIHtcclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zW2ZpZWxkLm5hbWVdID0gcXVlcnlQYXJhbXNbZmllbGQubmFtZV1cclxuICAgICAgICAgICAgICA/IEpTT04ucGFyc2UocXVlcnlQYXJhbXNbZmllbGQubmFtZV0pXHJcbiAgICAgICAgICAgICAgOiBxdWVyeVBhcmFtc1tmaWVsZC5uYW1lXTtcclxuICAgICAgICAgIH0gY2F0Y2ggKF8pIHt9XHJcbiAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gRmllbGRUeXBlLkRBVEVfUkFOR0UpIHtcclxuICAgICAgICAgICAgcXVlcnlQYXJhbXNbZmllbGQubmFtZV0gPSB7XHJcbiAgICAgICAgICAgICAgc3RhcnREYXRlOiBxdWVyeVBhcmFtc1tmaWVsZC5uYW1lXS5zdGFydERhdGUgPyBuZXcgRGF0ZShxdWVyeVBhcmFtc1tmaWVsZC5uYW1lXS5zdGFydERhdGUpIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIGVuZERhdGU6IHF1ZXJ5UGFyYW1zW2ZpZWxkLm5hbWVdLmVuZERhdGUgPyBuZXcgRGF0ZShxdWVyeVBhcmFtc1tmaWVsZC5uYW1lXS5lbmREYXRlKSA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSBGaWVsZFR5cGUuREFURSkge1xyXG4gICAgICAgICAgICBxdWVyeVBhcmFtc1tmaWVsZC5uYW1lXSA9IHF1ZXJ5UGFyYW1zW2ZpZWxkLm5hbWVdID8gbmV3IERhdGUocXVlcnlQYXJhbXNbZmllbGQubmFtZV0pIDogdW5kZWZpbmVkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUocXVlcnlQYXJhbXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZFZhbGlkYXRvcnMoZmllbGQ6IEZpbHRlckZpZWxkKTogVmFsaWRhdG9yRm5bXSB7XHJcbiAgICBjb25zdCB2YWxpZGF0b3JzID0gW107XHJcbiAgICBpZiAoZmllbGQucmVxdWlyZWQpIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpZWxkLm1pbkxlbmd0aCkge1xyXG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgoZmllbGQubWluTGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAoZmllbGQubWF4TGVuZ3RoKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aChmaWVsZC5tYXhMZW5ndGgpKTtcclxuICAgIH1cclxuICAgIGlmIChmaWVsZC5taW4pIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluKGZpZWxkLm1pbikpO1xyXG4gICAgfVxyXG4gICAgaWYgKGZpZWxkLm1heCkge1xyXG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXgoZmllbGQubWF4KSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImdyaWQgZmlsdGVyLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsgJ2Rpc3BsYXktbm9uZSc6IGhpZGVGaWx0ZXJzIH1cIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxyXG4gIDxkaXYgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkcyB8IG5vdEhpZGRlblwiIGNsYXNzPVwiZmllbGQgY29sLTEyIHNtOmNvbC04IHt7IGdldEdyaWRDbGFzcyhmaWVsZCkgfX1cIj5cclxuICAgIDxsYWJlbD57eyBmaWVsZC5sYWJlbCB9fTwvbGFiZWw+XHJcbiAgICA8dmVjdG9yLXRleHQtZmllbGRcclxuICAgICAgKm5nSWY9XCJpc1RleHRGaWVsZFR5cGUoZmllbGQpXCJcclxuICAgICAgW2NvbnRyb2xdPVwiZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKVwiXHJcbiAgICAgIFttYXNrXT1cImZpZWxkLm1hc2tcIlxyXG4gICAgICBbbGFiZWxdPVwiZmllbGQucGxhY2Vob2xkZXJcIlxyXG4gICAgICBbaXNSZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgIFtudW1lcmljXT1cImZpZWxkLnR5cGUgPT09IGZpZWxkVHlwZXMuTlVNQkVSXCJcclxuICAgID48L3ZlY3Rvci10ZXh0LWZpZWxkPlxyXG4gICAgPHZlY3Rvci1kcm9wZG93bi1maWVsZFxyXG4gICAgICAqbmdJZj1cIltmaWVsZFR5cGVzLkRZTkFNSUNfRFJPUERPV04sIGZpZWxkVHlwZXMuRFJPUERPV05dLmluY2x1ZGVzKGZpZWxkLnR5cGUpXCJcclxuICAgICAgW2R5bmFtaWNGaWx0ZXJzXT1cImZpZWxkLmZpbHRlclR5cGVzXCJcclxuICAgICAgW29wdGlvbnNdPVwiZmllbGQub3B0aW9ucyB8fCBbXVwiXHJcbiAgICAgIFtzZXJ2aWNlXT1cImZpZWxkLnNlcnZpY2VcIlxyXG4gICAgICBbaXNSZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgIFttaW5MZW5ndGhUb1NlcnZpY2VdPVwiZmllbGQubWluTGVuZ3RoVG9TZXJ2aWNlIHx8IDBcIlxyXG4gICAgICBbY29udHJvbF09XCJmb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUpXCJcclxuICAgICAgW3BhZ2VkXT1cImZhbHNlXCJcclxuICAgICAgW2RlcGVuZGVuY2llc109XCJnZXRGaWVsZERlcGVuZGVuY2llcyhmaWVsZClcIlxyXG4gICAgICBbaW5pdGlhbExvYWRdPVwiZmllbGQuaW5pdGlhdGVWYWx1ZVwiXHJcbiAgICA+PC92ZWN0b3ItZHJvcGRvd24tZmllbGQ+XHJcbiAgICA8dmVjdG9yLWN1cnJlbmN5LWZpZWxkXHJcbiAgICAgICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gZmllbGRUeXBlcy5DVVJSRU5DWVwiXHJcbiAgICAgIFtjb250cm9sXT1cImZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSlcIlxyXG4gICAgICBbb3V0bGluZWRdPVwidHJ1ZVwiXHJcbiAgICA+PC92ZWN0b3ItY3VycmVuY3ktZmllbGQ+XHJcbiAgICA8dmVjdG9yLWNhbGVuZGFyLWZpZWxkXHJcbiAgICAgICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gZmllbGRUeXBlcy5EQVRFXCJcclxuICAgICAgW2NvbnRyb2xdPVwiZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKVwiXHJcbiAgICAgIFtpc1JlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgW2xhYmVsXT1cImZpZWxkLnBsYWNlaG9sZGVyIHx8ICcnXCJcclxuICAgID48L3ZlY3Rvci1jYWxlbmRhci1maWVsZD5cclxuICAgIDx2ZWN0b3Itc2VsZWN0LWJ1dHRvbi1maWVsZFxyXG4gICAgICAqbmdJZj1cImZpZWxkLnR5cGUgPT09IGZpZWxkVHlwZXMuU0VMRUNUX0JVVFRPTlwiXHJcbiAgICAgIFtjb250cm9sXT1cImZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSlcIlxyXG4gICAgICBbb3B0aW9uc109XCJmaWVsZC5vcHRpb25zXCJcclxuICAgICAgKGNsaWNrKT1cInNlYXJjaCgpXCJcclxuICAgID5cclxuICAgIDwvdmVjdG9yLXNlbGVjdC1idXR0b24tZmllbGQ+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGQudHlwZSA9PT0gZmllbGRUeXBlcy5EQVRFX1JBTkdFXCIgY2xhc3M9XCJyYW5nZS1kYXRlLWNvbnRhaW5lclwiPlxyXG4gICAgICA8dmVjdG9yLWNhbGVuZGFyLWZpZWxkXHJcbiAgICAgICAgW2NvbnRyb2xdPVwiZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lICsgJy5zdGFydERhdGUnKVwiXHJcbiAgICAgICAgW2lzUmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgIFtsYWJlbF09XCJmaWVsZC5wbGFjZWhvbGRlciB8fCAnJ1wiXHJcbiAgICAgID48L3ZlY3Rvci1jYWxlbmRhci1maWVsZD5cclxuICAgICAgQXTDqVxyXG4gICAgICA8dmVjdG9yLWNhbGVuZGFyLWZpZWxkXHJcbiAgICAgICAgW2NvbnRyb2xdPVwiZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lICsgJy5lbmREYXRlJylcIlxyXG4gICAgICAgIFtpc1JlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICBbbGFiZWxdPVwiZmllbGQucGxhY2Vob2xkZXIgfHwgJydcIlxyXG4gICAgICA+PC92ZWN0b3ItY2FsZW5kYXItZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDx2ZWN0b3ItbXVsdGlzZWxlY3QtZmllbGRcclxuICAgICAgKm5nSWY9XCJmaWVsZC50eXBlID09PSBmaWVsZFR5cGVzLk1VTFRJU0VMRUNUXCJcclxuICAgICAgW2NvbnRyb2xdPVwiZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lKVwiXHJcbiAgICAgIFtvcHRpb25zXT1cImZpZWxkLm9wdGlvbnMgfHwgW11cIlxyXG4gICAgPlxyXG4gICAgPC92ZWN0b3ItbXVsdGlzZWxlY3QtZmllbGQ+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInNlYXJjaC1idXR0b24gc206Y29sLTRcIj5cclxuICAgIDx2ZWN0b3ItYnV0dG9uXHJcbiAgICAgIFtsYWJlbF09XCInYXBwLmxhYmVsLnNlYXJjaCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAoY2xpY2spPVwic2VhcmNoKClcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiIWZvcm1Hcm91cC52YWxpZFwiXHJcbiAgICA+PC92ZWN0b3ItYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './filters.component';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './filters.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9maWx0ZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ZpbHRlcnMuY29tcG9uZW50JztcclxuIl19
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
export * from './button';
|
|
2
|
-
export * from './calendar-field';
|
|
3
|
-
export * from './checkbox-field';
|
|
4
|
-
export * from './currency-field';
|
|
5
|
-
export * from './data-table';
|
|
6
|
-
export * from './dropdown-field';
|
|
7
|
-
export * from './field-error-message';
|
|
8
|
-
export * from './fields.module';
|
|
9
|
-
export * from './filters';
|
|
10
|
-
export * from './input-number-field';
|
|
11
|
-
export * from './multiselect-field';
|
|
12
|
-
export * from './percentage-field';
|
|
13
|
-
export * from './radio-button-field';
|
|
14
|
-
export * from './range-value';
|
|
15
|
-
export * from './search-field';
|
|
16
|
-
export * from './select-button-field';
|
|
17
|
-
export * from './text-field';
|
|
18
|
-
export * from './textarea-field';
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './button';
|
|
2
|
+
export * from './calendar-field';
|
|
3
|
+
export * from './checkbox-field';
|
|
4
|
+
export * from './currency-field';
|
|
5
|
+
export * from './data-table';
|
|
6
|
+
export * from './dropdown-field';
|
|
7
|
+
export * from './field-error-message';
|
|
8
|
+
export * from './fields.module';
|
|
9
|
+
export * from './filters';
|
|
10
|
+
export * from './input-number-field';
|
|
11
|
+
export * from './multiselect-field';
|
|
12
|
+
export * from './percentage-field';
|
|
13
|
+
export * from './radio-button-field';
|
|
14
|
+
export * from './range-value';
|
|
15
|
+
export * from './search-field';
|
|
16
|
+
export * from './select-button-field';
|
|
17
|
+
export * from './text-field';
|
|
18
|
+
export * from './textarea-field';
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9idXR0b24nO1xyXG5leHBvcnQgKiBmcm9tICcuL2NhbGVuZGFyLWZpZWxkJztcclxuZXhwb3J0ICogZnJvbSAnLi9jaGVja2JveC1maWVsZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY3VycmVuY3ktZmllbGQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2RhdGEtdGFibGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Ryb3Bkb3duLWZpZWxkJztcclxuZXhwb3J0ICogZnJvbSAnLi9maWVsZC1lcnJvci1tZXNzYWdlJztcclxuZXhwb3J0ICogZnJvbSAnLi9maWVsZHMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9maWx0ZXJzJztcclxuZXhwb3J0ICogZnJvbSAnLi9pbnB1dC1udW1iZXItZmllbGQnO1xyXG5leHBvcnQgKiBmcm9tICcuL211bHRpc2VsZWN0LWZpZWxkJztcclxuZXhwb3J0ICogZnJvbSAnLi9wZXJjZW50YWdlLWZpZWxkJztcclxuZXhwb3J0ICogZnJvbSAnLi9yYWRpby1idXR0b24tZmllbGQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3JhbmdlLXZhbHVlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gtZmllbGQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdC1idXR0b24tZmllbGQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RleHQtZmllbGQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RleHRhcmVhLWZpZWxkJztcclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './input-number-field.component';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './input-number-field.component';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9pbnB1dC1udW1iZXItZmllbGQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaW5wdXQtbnVtYmVyLWZpZWxkLmNvbXBvbmVudCc7XHJcbiJdfQ==
|