@koalarx/ui 14.0.6 → 14.0.9
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/alert/esm2020/index.mjs +6 -6
- package/alert/esm2020/koalarx-ui-alert.mjs +4 -4
- package/alert/esm2020/lib/dialog-alert.component.mjs +48 -48
- package/alert/esm2020/lib/koala.alert-config.interface.mjs +1 -1
- package/alert/esm2020/lib/koala.alert.enum.mjs +8 -8
- package/alert/esm2020/lib/koala.alert.module.mjs +46 -46
- package/alert/esm2020/lib/koala.alert.service.mjs +19 -19
- package/alert/esm2020/lib/koala.request-code-to-alert-enum.translate.mjs +17 -17
- package/alert/fesm2015/koalarx-ui-alert.mjs +111 -111
- package/alert/fesm2015/koalarx-ui-alert.mjs.map +1 -1
- package/alert/fesm2020/koalarx-ui-alert.mjs +109 -109
- package/alert/fesm2020/koalarx-ui-alert.mjs.map +1 -1
- package/alert/index.d.ts +6 -6
- package/alert/lib/dialog-alert.component.d.ts +10 -10
- package/alert/lib/koala.alert-config.interface.d.ts +14 -14
- package/alert/lib/koala.alert.enum.d.ts +7 -7
- package/alert/lib/koala.alert.module.d.ts +12 -12
- package/alert/lib/koala.alert.service.d.ts +10 -10
- package/alert/lib/koala.request-code-to-alert-enum.translate.d.ts +4 -4
- package/button/esm2020/index.mjs +2 -2
- package/button/esm2020/koalarx-ui-button.mjs +4 -4
- package/button/esm2020/lib/button.component.mjs +44 -44
- package/button/esm2020/lib/koala.button.module.mjs +40 -40
- package/button/fesm2015/koalarx-ui-button.mjs +67 -67
- package/button/fesm2015/koalarx-ui-button.mjs.map +1 -1
- package/button/fesm2020/koalarx-ui-button.mjs +67 -67
- package/button/fesm2020/koalarx-ui-button.mjs.map +1 -1
- package/button/index.d.ts +2 -2
- package/button/lib/button.component.d.ts +18 -18
- package/button/lib/koala.button.module.d.ts +12 -12
- package/common/esm2020/index.mjs +4 -4
- package/common/esm2020/koalarx-ui-common.mjs +4 -4
- package/common/esm2020/lib/mask-options.mjs +3 -3
- package/common/esm2020/lib/services/csv/koala.csv.service.mjs +36 -36
- package/common/esm2020/lib/services/xlsx/koala.xlsx-config.interface.mjs +1 -1
- package/common/esm2020/lib/services/xlsx/koala.xlsx.service.mjs +127 -127
- package/common/fesm2015/koalarx-ui-common.mjs +160 -160
- package/common/fesm2015/koalarx-ui-common.mjs.map +1 -1
- package/common/fesm2020/koalarx-ui-common.mjs +155 -155
- package/common/fesm2020/koalarx-ui-common.mjs.map +1 -1
- package/common/index.d.ts +4 -4
- package/common/lib/mask-options.d.ts +2 -2
- package/common/lib/services/csv/koala.csv.service.d.ts +10 -10
- package/common/lib/services/xlsx/koala.xlsx-config.interface.d.ts +11 -11
- package/common/lib/services/xlsx/koala.xlsx.service.d.ts +12 -12
- package/core/esm2020/index.mjs +36 -36
- package/core/esm2020/koalarx-ui-core.mjs +4 -4
- package/core/esm2020/lib/environments/koalaEnvironment.mjs +3 -3
- package/core/esm2020/lib/helpers/mat-form-field.helper.mjs +16 -16
- package/core/esm2020/lib/loader/loader-bar-page.component.mjs +24 -24
- package/core/esm2020/lib/loader/loader-bar-page.interface.mjs +1 -1
- package/core/esm2020/lib/loader/loader-config.interface.mjs +1 -1
- package/core/esm2020/lib/ngx-koala.module.mjs +47 -47
- package/core/esm2020/lib/page/koala-language.helper.mjs +113 -113
- package/core/esm2020/lib/page/koala-page-pallet-colors.interface.mjs +1 -1
- package/core/esm2020/lib/page/koala.page.module.mjs +76 -76
- package/core/esm2020/lib/page/koala.user-menu-options.interface.mjs +1 -1
- package/core/esm2020/lib/page/notifications/koala.notification.interface.mjs +1 -1
- package/core/esm2020/lib/page/notifications/notification.component.mjs +43 -43
- package/core/esm2020/lib/page/page.component.mjs +302 -302
- package/core/esm2020/lib/router/koala.parameter-hash-location-stategy.mjs +18 -18
- package/core/esm2020/lib/services/api-requester/factory/koala.response.factory.mjs +43 -43
- package/core/esm2020/lib/services/api-requester/helpers/error/koala.client.error.mjs +2 -2
- package/core/esm2020/lib/services/api-requester/helpers/error/koala.errors.helper.mjs +45 -45
- package/core/esm2020/lib/services/api-requester/helpers/error/koala.not-found.error.mjs +2 -2
- package/core/esm2020/lib/services/api-requester/helpers/error/koala.success.error.mjs +2 -2
- package/core/esm2020/lib/services/api-requester/helpers/error/koala.unhautorized.error.mjs +2 -2
- package/core/esm2020/lib/services/api-requester/helpers/service/koala.request-header.helper.mjs +14 -14
- package/core/esm2020/lib/services/api-requester/koala.api-requester.base.mjs +86 -86
- package/core/esm2020/lib/services/api-requester/koala.api-requester.cache.mjs +37 -37
- package/core/esm2020/lib/services/api-requester/koala.api-requester.service.mjs +158 -158
- package/core/esm2020/lib/services/loader/koala.loader.service.mjs +34 -34
- package/core/esm2020/lib/services/openid/koala-oauth2-config.interface.mjs +1 -1
- package/core/esm2020/lib/services/openid/koala.oauth.config.mjs +29 -29
- package/core/esm2020/lib/services/openid/koala.oauth2.service.mjs +188 -188
- package/core/esm2020/lib/services/request/koala.request.service.mjs +52 -52
- package/core/esm2020/lib/services/token/koala.token.service.mjs +55 -55
- package/core/esm2020/lib/services/token/token.factory.mjs +26 -26
- package/core/fesm2015/koalarx-ui-core.mjs +1294 -1294
- package/core/fesm2015/koalarx-ui-core.mjs.map +1 -1
- package/core/fesm2020/koalarx-ui-core.mjs +1256 -1256
- package/core/fesm2020/koalarx-ui-core.mjs.map +1 -1
- package/core/index.d.ts +30 -30
- package/core/lib/environments/koalaEnvironment.d.ts +15 -15
- package/core/lib/helpers/mat-form-field.helper.d.ts +3 -3
- package/core/lib/loader/loader-bar-page.component.d.ts +9 -9
- package/core/lib/loader/loader-bar-page.interface.d.ts +5 -5
- package/core/lib/loader/loader-config.interface.d.ts +7 -7
- package/core/lib/ngx-koala.module.d.ts +12 -12
- package/core/lib/page/koala-language.helper.d.ts +19 -19
- package/core/lib/page/koala-page-pallet-colors.interface.d.ts +38 -38
- package/core/lib/page/koala.page.module.d.ts +21 -21
- package/core/lib/page/koala.user-menu-options.interface.d.ts +5 -5
- package/core/lib/page/notifications/koala.notification.interface.d.ts +6 -6
- package/core/lib/page/notifications/notification.component.d.ts +15 -15
- package/core/lib/page/page.component.d.ts +58 -58
- package/core/lib/router/koala.parameter-hash-location-stategy.d.ts +7 -7
- package/core/lib/services/api-requester/factory/koala.response.factory.d.ts +5 -5
- package/core/lib/services/api-requester/helpers/error/koala.client.error.d.ts +2 -2
- package/core/lib/services/api-requester/helpers/error/koala.errors.helper.d.ts +13 -13
- package/core/lib/services/api-requester/helpers/error/koala.not-found.error.d.ts +2 -2
- package/core/lib/services/api-requester/helpers/error/koala.success.error.d.ts +2 -2
- package/core/lib/services/api-requester/helpers/error/koala.unhautorized.error.d.ts +2 -2
- package/core/lib/services/api-requester/helpers/service/koala.request-header.helper.d.ts +4 -4
- package/core/lib/services/api-requester/koala.api-requester.base.d.ts +19 -19
- package/core/lib/services/api-requester/koala.api-requester.cache.d.ts +13 -13
- package/core/lib/services/api-requester/koala.api-requester.service.d.ts +24 -24
- package/core/lib/services/loader/koala.loader.service.d.ts +14 -14
- package/core/lib/services/openid/koala-oauth2-config.interface.d.ts +11 -11
- package/core/lib/services/openid/koala.oauth.config.d.ts +9 -9
- package/core/lib/services/openid/koala.oauth2.service.d.ts +82 -82
- package/core/lib/services/request/koala.request.service.d.ts +11 -11
- package/core/lib/services/token/koala.token.service.d.ts +26 -26
- package/core/lib/services/token/token.factory.d.ts +9 -9
- package/dialog/esm2020/index.mjs +3 -3
- package/dialog/esm2020/koalarx-ui-dialog.mjs +4 -4
- package/dialog/esm2020/lib/dialog.component.mjs +25 -25
- package/dialog/esm2020/lib/koala.dialog-template.interface.mjs +1 -1
- package/dialog/esm2020/lib/koala.dialog.module.mjs +36 -36
- package/dialog/esm2020/lib/koala.dialog.service.mjs +57 -57
- package/dialog/fesm2015/koalarx-ui-dialog.mjs +96 -96
- package/dialog/fesm2015/koalarx-ui-dialog.mjs.map +1 -1
- package/dialog/fesm2020/koalarx-ui-dialog.mjs +96 -96
- package/dialog/fesm2020/koalarx-ui-dialog.mjs.map +1 -1
- package/dialog/index.d.ts +3 -3
- package/dialog/lib/dialog.component.d.ts +11 -11
- package/dialog/lib/koala.dialog-template.interface.d.ts +9 -9
- package/dialog/lib/koala.dialog.module.d.ts +11 -11
- package/dialog/lib/koala.dialog.service.d.ts +14 -14
- package/dynamic-component/esm2020/index.mjs +5 -5
- package/dynamic-component/esm2020/koalarx-ui-dynamic-component.mjs +4 -4
- package/dynamic-component/esm2020/lib/koala-dynamic-component.component.mjs +1 -1
- package/dynamic-component/esm2020/lib/koala-dynamic-component.directive.mjs +16 -16
- package/dynamic-component/esm2020/lib/koala-dynamic-component.factory.mjs +40 -40
- package/dynamic-component/esm2020/lib/koala-dynamic-component.mjs +6 -6
- package/dynamic-component/esm2020/lib/koala-dynamic-component.module.mjs +23 -23
- package/dynamic-component/fesm2015/koalarx-ui-dynamic-component.mjs +71 -71
- package/dynamic-component/fesm2015/koalarx-ui-dynamic-component.mjs.map +1 -1
- package/dynamic-component/fesm2020/koalarx-ui-dynamic-component.mjs +70 -70
- package/dynamic-component/fesm2020/koalarx-ui-dynamic-component.mjs.map +1 -1
- package/dynamic-component/index.d.ts +5 -5
- package/dynamic-component/lib/koala-dynamic-component.component.d.ts +3 -3
- package/dynamic-component/lib/koala-dynamic-component.d.ts +6 -6
- package/dynamic-component/lib/koala-dynamic-component.directive.d.ts +8 -8
- package/dynamic-component/lib/koala-dynamic-component.factory.d.ts +14 -14
- package/dynamic-component/lib/koala-dynamic-component.module.d.ts +8 -8
- package/file-button/esm2020/index.mjs +4 -4
- package/file-button/esm2020/koalarx-ui-file-button.mjs +4 -4
- package/file-button/esm2020/lib/file-button.component.mjs +125 -125
- package/file-button/esm2020/lib/koala.btn-file.service.mjs +25 -25
- package/file-button/esm2020/lib/koala.file-button.module.mjs +36 -36
- package/file-button/esm2020/lib/koala.file.interface.mjs +1 -1
- package/file-button/fesm2015/koalarx-ui-file-button.mjs +174 -174
- package/file-button/fesm2015/koalarx-ui-file-button.mjs.map +1 -1
- package/file-button/fesm2020/koalarx-ui-file-button.mjs +165 -165
- package/file-button/fesm2020/koalarx-ui-file-button.mjs.map +1 -1
- package/file-button/index.d.ts +4 -4
- package/file-button/lib/file-button.component.d.ts +29 -29
- package/file-button/lib/koala.btn-file.service.d.ts +11 -11
- package/file-button/lib/koala.file-button.module.d.ts +11 -11
- package/file-button/lib/koala.file.interface.d.ts +5 -5
- package/folder-page/esm2020/index.mjs +3 -3
- package/folder-page/esm2020/koalarx-ui-folder-page.mjs +4 -4
- package/folder-page/esm2020/lib/folder.component.mjs +70 -70
- package/folder-page/esm2020/lib/koala-navigate-history.interface.mjs +1 -1
- package/folder-page/esm2020/lib/koala.folder-page.module.mjs +40 -40
- package/folder-page/fesm2015/koalarx-ui-folder-page.mjs +95 -95
- package/folder-page/fesm2015/koalarx-ui-folder-page.mjs.map +1 -1
- package/folder-page/fesm2020/koalarx-ui-folder-page.mjs +94 -94
- package/folder-page/fesm2020/koalarx-ui-folder-page.mjs.map +1 -1
- package/folder-page/index.d.ts +3 -3
- package/folder-page/lib/folder.component.d.ts +21 -21
- package/folder-page/lib/koala-navigate-history.interface.d.ts +4 -4
- package/folder-page/lib/koala.folder-page.module.d.ts +12 -12
- package/form/esm2020/index.mjs +19 -19
- package/form/esm2020/koalarx-ui-form.mjs +4 -4
- package/form/esm2020/lib/btn-submit/btn-submit.component.mjs +49 -49
- package/form/esm2020/lib/directives/koala-autofocus.directive.mjs +25 -25
- package/form/esm2020/lib/dynamic-form/builder/dynamic-form.builder.mjs +139 -138
- package/form/esm2020/lib/dynamic-form/builder/fields/autocomplete.builder.mjs +37 -37
- package/form/esm2020/lib/dynamic-form/builder/fields/field.base.mjs +147 -147
- package/form/esm2020/lib/dynamic-form/builder/fields/field.builder.mjs +6 -6
- package/form/esm2020/lib/dynamic-form/builder/fields/more-items.builder.mjs +56 -56
- package/form/esm2020/lib/dynamic-form/dynamic-form.component.mjs +598 -598
- package/form/esm2020/lib/dynamic-form/enums/dynamic-form-type-field.enum.mjs +34 -34
- package/form/esm2020/lib/dynamic-form/interfaces/koala-custom-validator-fn.interface.mjs +1 -1
- package/form/esm2020/lib/dynamic-form/interfaces/koala.dynamic-autocomplete-options.interface.mjs +1 -1
- package/form/esm2020/lib/dynamic-form/interfaces/koala.dynamic-form-autocomplete-multiple-config.interface.mjs +1 -1
- package/form/esm2020/lib/dynamic-form/interfaces/koala.dynamic-form-config.interface.mjs +2 -2
- package/form/esm2020/lib/dynamic-form/interfaces/koala.dynamic-form-field.interface.mjs +1 -1
- package/form/esm2020/lib/dynamic-form/interfaces/koala.dynamic-form-more-itens-show-field-config.interface.mjs +1 -1
- package/form/esm2020/lib/dynamic-form/interfaces/koala.dynamic-form-show-field.interface.mjs +1 -1
- package/form/esm2020/lib/dynamic-form/interfaces/koala.dynamic-set-value.interface.mjs +1 -1
- package/form/esm2020/lib/dynamic-form/koala.dynamic-form.service.mjs +212 -212
- package/form/esm2020/lib/dynamic-form/validators/autocomplete-selected.validator.mjs +9 -9
- package/form/esm2020/lib/dynamic-form/validators/cnpj.validator.mjs +9 -9
- package/form/esm2020/lib/dynamic-form/validators/cpf.validator.mjs +9 -9
- package/form/esm2020/lib/dynamic-form/validators/date-max.validator.mjs +10 -10
- package/form/esm2020/lib/dynamic-form/validators/date-min.validator.mjs +10 -10
- package/form/esm2020/lib/dynamic-form/validators/koala-dynamic-form-validator-result.helper.mjs +9 -9
- package/form/esm2020/lib/dynamic-form/validators/validation.helper.mjs +85 -85
- package/form/esm2020/lib/form.abstract.mjs +41 -41
- package/form/esm2020/lib/koala.form.module.mjs +132 -132
- package/form/esm2020/lib/show-invalid-fields/show-invalid-fields.mjs +8 -8
- package/form/fesm2015/koalarx-ui-form.mjs +1517 -1516
- package/form/fesm2015/koalarx-ui-form.mjs.map +1 -1
- package/form/fesm2020/koalarx-ui-form.mjs +1499 -1498
- package/form/fesm2020/koalarx-ui-form.mjs.map +1 -1
- package/form/index.d.ts +19 -19
- package/form/lib/btn-submit/btn-submit.component.d.ts +20 -20
- package/form/lib/directives/koala-autofocus.directive.d.ts +10 -10
- package/form/lib/dynamic-form/builder/dynamic-form.builder.d.ts +21 -21
- package/form/lib/dynamic-form/builder/fields/autocomplete.builder.d.ts +16 -16
- package/form/lib/dynamic-form/builder/fields/field.base.d.ts +42 -42
- package/form/lib/dynamic-form/builder/fields/field.builder.d.ts +8 -8
- package/form/lib/dynamic-form/builder/fields/more-items.builder.d.ts +17 -17
- package/form/lib/dynamic-form/dynamic-form.component.d.ts +54 -54
- package/form/lib/dynamic-form/enums/dynamic-form-type-field.enum.d.ts +33 -33
- package/form/lib/dynamic-form/interfaces/koala-custom-validator-fn.interface.d.ts +4 -4
- package/form/lib/dynamic-form/interfaces/koala.dynamic-autocomplete-options.interface.d.ts +4 -4
- package/form/lib/dynamic-form/interfaces/koala.dynamic-form-autocomplete-multiple-config.interface.d.ts +4 -4
- package/form/lib/dynamic-form/interfaces/koala.dynamic-form-config.interface.d.ts +12 -11
- package/form/lib/dynamic-form/interfaces/koala.dynamic-form-field.interface.d.ts +69 -69
- package/form/lib/dynamic-form/interfaces/koala.dynamic-form-more-itens-show-field-config.interface.d.ts +8 -8
- package/form/lib/dynamic-form/interfaces/koala.dynamic-form-show-field.interface.d.ts +5 -5
- package/form/lib/dynamic-form/interfaces/koala.dynamic-set-value.interface.d.ts +4 -4
- package/form/lib/dynamic-form/koala.dynamic-form.service.d.ts +28 -28
- package/form/lib/dynamic-form/validators/autocomplete-selected.validator.d.ts +4 -4
- package/form/lib/dynamic-form/validators/cnpj.validator.d.ts +4 -4
- package/form/lib/dynamic-form/validators/cpf.validator.d.ts +4 -4
- package/form/lib/dynamic-form/validators/date-max.validator.d.ts +2 -2
- package/form/lib/dynamic-form/validators/date-min.validator.d.ts +2 -2
- package/form/lib/dynamic-form/validators/koala-dynamic-form-validator-result.helper.d.ts +7 -7
- package/form/lib/dynamic-form/validators/validation.helper.d.ts +4 -4
- package/form/lib/form.abstract.d.ts +16 -16
- package/form/lib/koala.form.module.d.ts +25 -25
- package/form/lib/show-invalid-fields/show-invalid-fields.d.ts +6 -6
- package/icon/esm2020/index.mjs +3 -3
- package/icon/esm2020/koalarx-ui-icon.mjs +4 -4
- package/icon/esm2020/lib/icon.component.mjs +41 -41
- package/icon/esm2020/lib/koala.icon.module.mjs +24 -24
- package/icon/esm2020/lib/koala.icon.type.mjs +1 -1
- package/icon/fesm2015/koalarx-ui-icon.mjs +56 -56
- package/icon/fesm2015/koalarx-ui-icon.mjs.map +1 -1
- package/icon/fesm2020/koalarx-ui-icon.mjs +55 -55
- package/icon/fesm2020/koalarx-ui-icon.mjs.map +1 -1
- package/icon/index.d.ts +3 -3
- package/icon/lib/icon.component.d.ts +14 -14
- package/icon/lib/koala.icon.module.d.ts +8 -8
- package/icon/lib/koala.icon.type.d.ts +1 -1
- package/icons-animated/esm2020/index.mjs +4 -4
- package/icons-animated/esm2020/koalarx-ui-icons-animated.mjs +4 -4
- package/icons-animated/esm2020/lib/icons/downloading/downloading-icon-animated.component.mjs +23 -23
- package/icons-animated/esm2020/lib/icons/loading/loading-icon-animated.component.mjs +23 -23
- package/icons-animated/esm2020/lib/icons-animated.component.mjs +20 -20
- package/icons-animated/esm2020/lib/icons-animated.service.mjs +27 -27
- package/icons-animated/esm2020/lib/koala-icons-animated.module.mjs +30 -30
- package/icons-animated/fesm2015/koalarx-ui-icons-animated.mjs +95 -95
- package/icons-animated/fesm2015/koalarx-ui-icons-animated.mjs.map +1 -1
- package/icons-animated/fesm2020/koalarx-ui-icons-animated.mjs +93 -93
- package/icons-animated/fesm2020/koalarx-ui-icons-animated.mjs.map +1 -1
- package/icons-animated/index.d.ts +4 -4
- package/icons-animated/lib/icons/downloading/downloading-icon-animated.component.d.ts +12 -12
- package/icons-animated/lib/icons/loading/loading-icon-animated.component.d.ts +12 -12
- package/icons-animated/lib/icons-animated.component.d.ts +8 -8
- package/icons-animated/lib/icons-animated.service.d.ts +9 -9
- package/icons-animated/lib/koala-icons-animated.module.d.ts +10 -10
- package/list/esm2020/index.mjs +11 -11
- package/list/esm2020/koalarx-ui-list.mjs +4 -4
- package/list/esm2020/lib/koala-list-btn-collapse-sub-list-config.interface.mjs +1 -1
- package/list/esm2020/lib/koala-list-filter.interface.mjs +1 -1
- package/list/esm2020/lib/koala-list-form-filter.interface.mjs +1 -1
- package/list/esm2020/lib/koala-list-item-menu-option.interface.mjs +1 -1
- package/list/esm2020/lib/koala-list-item.interface.mjs +1 -1
- package/list/esm2020/lib/koala.list-config.interface.mjs +1 -1
- package/list/esm2020/lib/koala.list.module.mjs +68 -68
- package/list/esm2020/lib/koala.list.service.mjs +15 -15
- package/list/esm2020/lib/list-builder/list.builder.mjs +104 -104
- package/list/esm2020/lib/list.abstract.mjs +163 -163
- package/list/esm2020/lib/list.component.mjs +172 -172
- package/list/esm2020/lib/providers/pagination/pagination.provider.mjs +32 -32
- package/list/fesm2015/koalarx-ui-list.mjs +521 -521
- package/list/fesm2015/koalarx-ui-list.mjs.map +1 -1
- package/list/fesm2020/koalarx-ui-list.mjs +491 -491
- package/list/fesm2020/koalarx-ui-list.mjs.map +1 -1
- package/list/index.d.ts +11 -11
- package/list/lib/koala-list-btn-collapse-sub-list-config.interface.d.ts +8 -8
- package/list/lib/koala-list-filter.interface.d.ts +10 -10
- package/list/lib/koala-list-form-filter.interface.d.ts +8 -8
- package/list/lib/koala-list-item-menu-option.interface.d.ts +7 -7
- package/list/lib/koala-list-item.interface.d.ts +13 -13
- package/list/lib/koala.list-config.interface.d.ts +37 -37
- package/list/lib/koala.list.module.d.ts +17 -17
- package/list/lib/koala.list.service.d.ts +7 -7
- package/list/lib/list-builder/list.builder.d.ts +32 -32
- package/list/lib/list.abstract.d.ts +44 -44
- package/list/lib/list.component.d.ts +54 -54
- package/list/lib/providers/pagination/pagination.provider.d.ts +9 -9
- package/menu/esm2020/index.mjs +5 -5
- package/menu/esm2020/koalarx-ui-menu.mjs +4 -4
- package/menu/esm2020/lib/koala.menu-module.interface.mjs +1 -1
- package/menu/esm2020/lib/koala.menu-tool.interface.mjs +1 -1
- package/menu/esm2020/lib/koala.menu.module.mjs +36 -36
- package/menu/esm2020/lib/koala.menu.service.mjs +24 -24
- package/menu/esm2020/lib/menu.component.mjs +100 -100
- package/menu/fesm2015/koalarx-ui-menu.mjs +139 -139
- package/menu/fesm2015/koalarx-ui-menu.mjs.map +1 -1
- package/menu/fesm2020/koalarx-ui-menu.mjs +135 -135
- package/menu/fesm2020/koalarx-ui-menu.mjs.map +1 -1
- package/menu/index.d.ts +5 -5
- package/menu/lib/koala.menu-module.interface.d.ts +12 -12
- package/menu/lib/koala.menu-tool.interface.d.ts +6 -6
- package/menu/lib/koala.menu.module.d.ts +11 -11
- package/menu/lib/koala.menu.service.d.ts +10 -10
- package/menu/lib/menu.component.d.ts +22 -22
- package/package.json +2 -2
- package/question/esm2020/index.mjs +4 -4
- package/question/esm2020/koalarx-ui-question.mjs +4 -4
- package/question/esm2020/lib/dialog-question.component.mjs +25 -25
- package/question/esm2020/lib/koala-question-config.interface.mjs +1 -1
- package/question/esm2020/lib/koala.question.module.mjs +40 -40
- package/question/esm2020/lib/koala.question.service.mjs +26 -26
- package/question/fesm2015/koalarx-ui-question.mjs +68 -68
- package/question/fesm2015/koalarx-ui-question.mjs.map +1 -1
- package/question/fesm2020/koalarx-ui-question.mjs +66 -66
- package/question/fesm2020/koalarx-ui-question.mjs.map +1 -1
- package/question/index.d.ts +4 -4
- package/question/lib/dialog-question.component.d.ts +10 -10
- package/question/lib/koala-question-config.interface.d.ts +5 -5
- package/question/lib/koala.question.module.d.ts +12 -12
- package/question/lib/koala.question.service.d.ts +10 -10
- package/snackbar/esm2020/index.mjs +4 -4
- package/snackbar/esm2020/koalarx-ui-snackbar.mjs +4 -4
- package/snackbar/esm2020/lib/koala.snackbar.component.mjs +22 -22
- package/snackbar/esm2020/lib/koala.snackbar.interface.mjs +1 -1
- package/snackbar/esm2020/lib/koala.snackbar.module.mjs +36 -36
- package/snackbar/esm2020/lib/koala.snackbar.service.mjs +35 -35
- package/snackbar/fesm2015/koalarx-ui-snackbar.mjs +74 -74
- package/snackbar/fesm2015/koalarx-ui-snackbar.mjs.map +1 -1
- package/snackbar/fesm2020/koalarx-ui-snackbar.mjs +72 -72
- package/snackbar/fesm2020/koalarx-ui-snackbar.mjs.map +1 -1
- package/snackbar/index.d.ts +4 -4
- package/snackbar/lib/koala.snackbar.component.d.ts +10 -10
- package/snackbar/lib/koala.snackbar.interface.d.ts +4 -4
- package/snackbar/lib/koala.snackbar.module.d.ts +10 -10
- package/snackbar/lib/koala.snackbar.service.d.ts +12 -12
|
@@ -1,164 +1,164 @@
|
|
|
1
|
-
import { SelectionModel } from '@angular/cdk/collections';
|
|
2
|
-
import { BehaviorSubject, merge, Observable } from 'rxjs';
|
|
3
|
-
import { FormAbstract } from '@koalarx/ui/form';
|
|
4
|
-
import { debounceTime, first, map, startWith, switchMap } from 'rxjs/operators';
|
|
5
|
-
import { MatTableDataSource } from '@angular/material/table';
|
|
6
|
-
import { delay } from "@koalarx/utils/operators/delay";
|
|
7
|
-
import { randomString } from "@koalarx/utils/operators/string";
|
|
8
|
-
export class ListAbstract extends FormAbstract {
|
|
9
|
-
constructor(requestFunction, requestResponseFunction, formSearch) {
|
|
10
|
-
super(formSearch);
|
|
11
|
-
this.requestFunction = requestFunction;
|
|
12
|
-
this.requestResponseFunction = requestResponseFunction;
|
|
13
|
-
this.selection = new SelectionModel(true, []);
|
|
14
|
-
this.limitOptions = [10, 20, 30, 50, 100];
|
|
15
|
-
this.showMenuList = false;
|
|
16
|
-
this.allSelected$ = new BehaviorSubject(false);
|
|
17
|
-
this.dataSource = new MatTableDataSource([]);
|
|
18
|
-
this.typeRequest = 'onDemand';
|
|
19
|
-
this.filterParams = new BehaviorSubject(null);
|
|
20
|
-
this.filterError$ = new BehaviorSubject(null);
|
|
21
|
-
this.tableId = randomString(20, { uppercase: true, lowercase: true });
|
|
22
|
-
}
|
|
23
|
-
selectAll() {
|
|
24
|
-
this.isAllSelected() ?
|
|
25
|
-
this.selection.clear() :
|
|
26
|
-
this.dataSource.data.forEach(item => {
|
|
27
|
-
if ((this.config?.disabledCheckboxItemList && !this.config.disabledCheckboxItemList(item)) ||
|
|
28
|
-
!this.config?.disabledCheckboxItemList) {
|
|
29
|
-
this.selection.select(item);
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
this.isAllSelected();
|
|
33
|
-
}
|
|
34
|
-
defineStatusSelectAll(status) {
|
|
35
|
-
this.allSelected$.next(status);
|
|
36
|
-
return this.allSelected$.getValue();
|
|
37
|
-
}
|
|
38
|
-
selectItem() {
|
|
39
|
-
setTimeout(() => {
|
|
40
|
-
this.showMenuList = this.selection.hasValue();
|
|
41
|
-
this.isAllSelected();
|
|
42
|
-
}, 50);
|
|
43
|
-
}
|
|
44
|
-
async search(filter) {
|
|
45
|
-
this.loading(true);
|
|
46
|
-
this.selection.clear();
|
|
47
|
-
if (this.paginator) {
|
|
48
|
-
this.paginator.firstPage();
|
|
49
|
-
}
|
|
50
|
-
this.filterParams.next({
|
|
51
|
-
params: filter,
|
|
52
|
-
sort: this.sort?.active ?? '',
|
|
53
|
-
order: this.sort?.direction ?? 'asc',
|
|
54
|
-
page: this.paginator?.pageIndex ?? 0,
|
|
55
|
-
limit: this.paginator?.pageSize ?? 30
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
onDestroy() {
|
|
59
|
-
this.subscriptionSortList?.unsubscribe();
|
|
60
|
-
this.subscriptionList?.unsubscribe();
|
|
61
|
-
clearInterval(this.intervalSortList);
|
|
62
|
-
}
|
|
63
|
-
async afterViewInit() {
|
|
64
|
-
let tentativas = 0;
|
|
65
|
-
let stop = false;
|
|
66
|
-
do {
|
|
67
|
-
tentativas++;
|
|
68
|
-
await delay(400);
|
|
69
|
-
if (this.sort || this.emptyListComponent) {
|
|
70
|
-
this.prepareSearch().then();
|
|
71
|
-
if (this.emptyListComponent)
|
|
72
|
-
stop = true;
|
|
73
|
-
}
|
|
74
|
-
else if (tentativas > 10) {
|
|
75
|
-
stop = true;
|
|
76
|
-
}
|
|
77
|
-
} while (!this.sort && !stop);
|
|
78
|
-
}
|
|
79
|
-
async prepareSearch() {
|
|
80
|
-
this.intervalSortList = setInterval(() => {
|
|
81
|
-
if (this.sort && !this.subscriptionSortList) {
|
|
82
|
-
this.subscriptionSortList = this.sort.sortChange.subscribe(() => {
|
|
83
|
-
const filter = this.filterParams.value ?? {};
|
|
84
|
-
filter.sort = this.sort?.active ?? '';
|
|
85
|
-
filter.order = this.sort?.direction ?? '';
|
|
86
|
-
this.filterParams.next(filter);
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
else if (!this.sort && this.subscriptionSortList) {
|
|
90
|
-
this.subscriptionSortList.unsubscribe();
|
|
91
|
-
}
|
|
92
|
-
}, 50);
|
|
93
|
-
if (this.typeRequest === 'onDemand') {
|
|
94
|
-
this.subscriptionList = merge(this.paginator?.page ?? new Observable(), this.filterParams).pipe(startWith({}), switchMap(() => new Observable(observe => {
|
|
95
|
-
this.loading(true);
|
|
96
|
-
this.selection.clear();
|
|
97
|
-
if (this.filterParams.value) {
|
|
98
|
-
this.filterParams.value.sort = this.sort?.active ?? this.config?.columnSort ?? '';
|
|
99
|
-
this.filterParams.value.order = this.sort?.direction ?? this.config?.sortDirection ?? '';
|
|
100
|
-
this.filterParams.value.page = this.paginator?.pageIndex ?? 0;
|
|
101
|
-
this.filterParams.value.limit = this.paginator?.pageSize ?? 30;
|
|
102
|
-
}
|
|
103
|
-
observe.next(true);
|
|
104
|
-
})), debounceTime(300), switchMap(() => this.runRequestFunction()), map((response) => {
|
|
105
|
-
this.loading(false);
|
|
106
|
-
this.scrollTableToTop();
|
|
107
|
-
return this.requestResponseFunction(response);
|
|
108
|
-
})).subscribe();
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
if (this.paginator)
|
|
112
|
-
this.dataSource.paginator = this.paginator;
|
|
113
|
-
this.subscriptionList = this.filterParams.pipe(startWith({}), debounceTime(300), switchMap(() => this.runRequestFunction()), map((response) => {
|
|
114
|
-
this.loading(false);
|
|
115
|
-
this.scrollTableToTop();
|
|
116
|
-
return this.requestResponseFunction(response);
|
|
117
|
-
})).subscribe();
|
|
118
|
-
}
|
|
119
|
-
if (this.emptyListComponent) {
|
|
120
|
-
do {
|
|
121
|
-
await delay(301);
|
|
122
|
-
if (this.sort) {
|
|
123
|
-
if (this.typeRequest === "onDemand") {
|
|
124
|
-
this.sort.sortChange.subscribe(() => {
|
|
125
|
-
if (this.paginator)
|
|
126
|
-
this.paginator.pageIndex = 0;
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
this.dataSource.sort = this.sort;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
} while (!this.sort);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
isAllSelected() {
|
|
137
|
-
const numSelected = this.selection.selected.length;
|
|
138
|
-
const numRows = (this.config?.disabledCheckboxItemList ?
|
|
139
|
-
this.dataSource.data.filter(item => !(this.config?.disabledCheckboxItemList
|
|
140
|
-
? this.config.disabledCheckboxItemList(item)
|
|
141
|
-
: '')) :
|
|
142
|
-
this.dataSource.data).length;
|
|
143
|
-
return this.defineStatusSelectAll(numSelected === numRows);
|
|
144
|
-
}
|
|
145
|
-
runRequestFunction() {
|
|
146
|
-
return new Observable(observe => {
|
|
147
|
-
this.requestFunction().pipe(first()).subscribe({
|
|
148
|
-
next: response => observe.next(response),
|
|
149
|
-
error: err => {
|
|
150
|
-
if (this.errorListComponent) {
|
|
151
|
-
this.filterError$.next(err);
|
|
152
|
-
this.errorListComponent.data = err;
|
|
153
|
-
}
|
|
154
|
-
this.loading(false);
|
|
155
|
-
observe.next([]);
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
scrollTableToTop() {
|
|
161
|
-
document.getElementById(this.tableId)?.parentElement?.scrollTo({ top: 0 });
|
|
162
|
-
}
|
|
163
|
-
}
|
|
1
|
+
import { SelectionModel } from '@angular/cdk/collections';
|
|
2
|
+
import { BehaviorSubject, merge, Observable } from 'rxjs';
|
|
3
|
+
import { FormAbstract } from '@koalarx/ui/form';
|
|
4
|
+
import { debounceTime, first, map, startWith, switchMap } from 'rxjs/operators';
|
|
5
|
+
import { MatTableDataSource } from '@angular/material/table';
|
|
6
|
+
import { delay } from "@koalarx/utils/operators/delay";
|
|
7
|
+
import { randomString } from "@koalarx/utils/operators/string";
|
|
8
|
+
export class ListAbstract extends FormAbstract {
|
|
9
|
+
constructor(requestFunction, requestResponseFunction, formSearch) {
|
|
10
|
+
super(formSearch);
|
|
11
|
+
this.requestFunction = requestFunction;
|
|
12
|
+
this.requestResponseFunction = requestResponseFunction;
|
|
13
|
+
this.selection = new SelectionModel(true, []);
|
|
14
|
+
this.limitOptions = [10, 20, 30, 50, 100];
|
|
15
|
+
this.showMenuList = false;
|
|
16
|
+
this.allSelected$ = new BehaviorSubject(false);
|
|
17
|
+
this.dataSource = new MatTableDataSource([]);
|
|
18
|
+
this.typeRequest = 'onDemand';
|
|
19
|
+
this.filterParams = new BehaviorSubject(null);
|
|
20
|
+
this.filterError$ = new BehaviorSubject(null);
|
|
21
|
+
this.tableId = randomString(20, { uppercase: true, lowercase: true });
|
|
22
|
+
}
|
|
23
|
+
selectAll() {
|
|
24
|
+
this.isAllSelected() ?
|
|
25
|
+
this.selection.clear() :
|
|
26
|
+
this.dataSource.data.forEach(item => {
|
|
27
|
+
if ((this.config?.disabledCheckboxItemList && !this.config.disabledCheckboxItemList(item)) ||
|
|
28
|
+
!this.config?.disabledCheckboxItemList) {
|
|
29
|
+
this.selection.select(item);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
this.isAllSelected();
|
|
33
|
+
}
|
|
34
|
+
defineStatusSelectAll(status) {
|
|
35
|
+
this.allSelected$.next(status);
|
|
36
|
+
return this.allSelected$.getValue();
|
|
37
|
+
}
|
|
38
|
+
selectItem() {
|
|
39
|
+
setTimeout(() => {
|
|
40
|
+
this.showMenuList = this.selection.hasValue();
|
|
41
|
+
this.isAllSelected();
|
|
42
|
+
}, 50);
|
|
43
|
+
}
|
|
44
|
+
async search(filter) {
|
|
45
|
+
this.loading(true);
|
|
46
|
+
this.selection.clear();
|
|
47
|
+
if (this.paginator) {
|
|
48
|
+
this.paginator.firstPage();
|
|
49
|
+
}
|
|
50
|
+
this.filterParams.next({
|
|
51
|
+
params: filter,
|
|
52
|
+
sort: this.sort?.active ?? '',
|
|
53
|
+
order: this.sort?.direction ?? 'asc',
|
|
54
|
+
page: this.paginator?.pageIndex ?? 0,
|
|
55
|
+
limit: this.paginator?.pageSize ?? 30
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
onDestroy() {
|
|
59
|
+
this.subscriptionSortList?.unsubscribe();
|
|
60
|
+
this.subscriptionList?.unsubscribe();
|
|
61
|
+
clearInterval(this.intervalSortList);
|
|
62
|
+
}
|
|
63
|
+
async afterViewInit() {
|
|
64
|
+
let tentativas = 0;
|
|
65
|
+
let stop = false;
|
|
66
|
+
do {
|
|
67
|
+
tentativas++;
|
|
68
|
+
await delay(400);
|
|
69
|
+
if (this.sort || this.emptyListComponent) {
|
|
70
|
+
this.prepareSearch().then();
|
|
71
|
+
if (this.emptyListComponent)
|
|
72
|
+
stop = true;
|
|
73
|
+
}
|
|
74
|
+
else if (tentativas > 10) {
|
|
75
|
+
stop = true;
|
|
76
|
+
}
|
|
77
|
+
} while (!this.sort && !stop);
|
|
78
|
+
}
|
|
79
|
+
async prepareSearch() {
|
|
80
|
+
this.intervalSortList = setInterval(() => {
|
|
81
|
+
if (this.sort && !this.subscriptionSortList) {
|
|
82
|
+
this.subscriptionSortList = this.sort.sortChange.subscribe(() => {
|
|
83
|
+
const filter = this.filterParams.value ?? {};
|
|
84
|
+
filter.sort = this.sort?.active ?? '';
|
|
85
|
+
filter.order = this.sort?.direction ?? '';
|
|
86
|
+
this.filterParams.next(filter);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
else if (!this.sort && this.subscriptionSortList) {
|
|
90
|
+
this.subscriptionSortList.unsubscribe();
|
|
91
|
+
}
|
|
92
|
+
}, 50);
|
|
93
|
+
if (this.typeRequest === 'onDemand') {
|
|
94
|
+
this.subscriptionList = merge(this.paginator?.page ?? new Observable(), this.filterParams).pipe(startWith({}), switchMap(() => new Observable(observe => {
|
|
95
|
+
this.loading(true);
|
|
96
|
+
this.selection.clear();
|
|
97
|
+
if (this.filterParams.value) {
|
|
98
|
+
this.filterParams.value.sort = this.sort?.active ?? this.config?.columnSort ?? '';
|
|
99
|
+
this.filterParams.value.order = this.sort?.direction ?? this.config?.sortDirection ?? '';
|
|
100
|
+
this.filterParams.value.page = this.paginator?.pageIndex ?? 0;
|
|
101
|
+
this.filterParams.value.limit = this.paginator?.pageSize ?? 30;
|
|
102
|
+
}
|
|
103
|
+
observe.next(true);
|
|
104
|
+
})), debounceTime(300), switchMap(() => this.runRequestFunction()), map((response) => {
|
|
105
|
+
this.loading(false);
|
|
106
|
+
this.scrollTableToTop();
|
|
107
|
+
return this.requestResponseFunction(response);
|
|
108
|
+
})).subscribe();
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
if (this.paginator)
|
|
112
|
+
this.dataSource.paginator = this.paginator;
|
|
113
|
+
this.subscriptionList = this.filterParams.pipe(startWith({}), debounceTime(300), switchMap(() => this.runRequestFunction()), map((response) => {
|
|
114
|
+
this.loading(false);
|
|
115
|
+
this.scrollTableToTop();
|
|
116
|
+
return this.requestResponseFunction(response);
|
|
117
|
+
})).subscribe();
|
|
118
|
+
}
|
|
119
|
+
if (this.emptyListComponent) {
|
|
120
|
+
do {
|
|
121
|
+
await delay(301);
|
|
122
|
+
if (this.sort) {
|
|
123
|
+
if (this.typeRequest === "onDemand") {
|
|
124
|
+
this.sort.sortChange.subscribe(() => {
|
|
125
|
+
if (this.paginator)
|
|
126
|
+
this.paginator.pageIndex = 0;
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
this.dataSource.sort = this.sort;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
} while (!this.sort);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
isAllSelected() {
|
|
137
|
+
const numSelected = this.selection.selected.length;
|
|
138
|
+
const numRows = (this.config?.disabledCheckboxItemList ?
|
|
139
|
+
this.dataSource.data.filter(item => !(this.config?.disabledCheckboxItemList
|
|
140
|
+
? this.config.disabledCheckboxItemList(item)
|
|
141
|
+
: '')) :
|
|
142
|
+
this.dataSource.data).length;
|
|
143
|
+
return this.defineStatusSelectAll(numSelected === numRows);
|
|
144
|
+
}
|
|
145
|
+
runRequestFunction() {
|
|
146
|
+
return new Observable(observe => {
|
|
147
|
+
this.requestFunction().pipe(first()).subscribe({
|
|
148
|
+
next: response => observe.next(response),
|
|
149
|
+
error: err => {
|
|
150
|
+
if (this.errorListComponent) {
|
|
151
|
+
this.filterError$.next(err);
|
|
152
|
+
this.errorListComponent.data = err;
|
|
153
|
+
}
|
|
154
|
+
this.loading(false);
|
|
155
|
+
observe.next([]);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
scrollTableToTop() {
|
|
161
|
+
document.getElementById(this.tableId)?.parentElement?.scrollTo({ top: 0 });
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
164
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5hYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2xpc3Qvc3JjL2xpYi9saXN0LmFic3RyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRzdELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJL0QsTUFBTSxPQUFnQixZQUFhLFNBQVEsWUFBWTtJQXNCckQsWUFDVSxlQUFzQyxFQUN0Qyx1QkFBa0QsRUFDMUQsVUFBa0M7UUFFbEMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBSlYsb0JBQWUsR0FBZixlQUFlLENBQXVCO1FBQ3RDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBMkI7UUF2QnJELGNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBUyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakQsaUJBQVksR0FBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMvQyxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ25ELGVBQVUsR0FBRyxJQUFJLGtC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QVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQzVCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO3FCQUNwQztvQkFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNuQixDQUFDO2FBQ0YsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsRUFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb3JtQWJzdHJhY3QgfSBmcm9tICdAa29hbGFyeC91aS9mb3JtJztcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpcnN0LCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgS29hbGFMaXN0Rm9ybUZpbHRlckludGVyZmFjZSB9IGZyb20gJy4va29hbGEtbGlzdC1mb3JtLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgS29hbGFEeW5hbWljQ29tcG9uZW50IH0gZnJvbSBcIkBrb2FsYXJ4L3VpL2R5bmFtaWMtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBkZWxheSB9IGZyb20gXCJAa29hbGFyeC91dGlscy9vcGVyYXRvcnMvZGVsYXlcIjtcbmltcG9ydCB7IEtvYWxhTGlzdENvbmZpZ0ludGVyZmFjZSB9IGZyb20gXCIuL2tvYWxhLmxpc3QtY29uZmlnLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgcmFuZG9tU3RyaW5nIH0gZnJvbSBcIkBrb2FsYXJ4L3V0aWxzL29wZXJhdG9ycy9zdHJpbmdcIjtcblxuZXhwb3J0IHR5cGUgS29hbGFMaXN0UGFnZVNpemUgPSAxMCB8IDIwIHwgMzAgfCA1MCB8IDEwMDtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIExpc3RBYnN0cmFjdCBleHRlbmRzIEZvcm1BYnN0cmFjdCB7XG4gIHB1YmxpYyBzZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8b2JqZWN0Pih0cnVlLCBbXSk7XG4gIHB1YmxpYyBsaW1pdE9wdGlvbnM6IG51bWJlcltdID0gWzEwLCAyMCwgMzAsIDUwLCAxMDBdO1xuICBwdWJsaWMgc2hvd01lbnVMaXN0OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBhbGxTZWxlY3RlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlPGFueT4oW10pO1xuICBwdWJsaWMgdHlwZVJlcXVlc3Q6ICdhbGwnIHwgJ29uRGVtYW5kJyA9ICdvbkRlbWFuZCc7XG4gIHB1YmxpYyBmaWx0ZXJQYXJhbXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEtvYWxhTGlzdEZvcm1GaWx0ZXJJbnRlcmZhY2V8bnVsbD4obnVsbCk7XG4gIHB1YmxpYyBmaWx0ZXJFcnJvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIHB1YmxpYyBlbXB0eUxpc3RDb21wb25lbnQ/OiBLb2FsYUR5bmFtaWNDb21wb25lbnQ7XG4gIHB1YmxpYyBlcnJvckxpc3RDb21wb25lbnQ/OiBLb2FsYUR5bmFtaWNDb21wb25lbnQ7XG4gIHB1YmxpYyBwYWdlU2l6ZTogS29hbGFMaXN0UGFnZVNpemU7XG4gIHB1YmxpYyB0YWJsZUlkID0gcmFuZG9tU3RyaW5nKDIwLCB7dXBwZXJjYXNlOiB0cnVlLCBsb3dlcmNhc2U6IHRydWV9KTtcblxuICBwcm90ZWN0ZWQgY29uZmlnPzogS29hbGFMaXN0Q29uZmlnSW50ZXJmYWNlO1xuICBwcm90ZWN0ZWQgcGFnaW5hdG9yPzogTWF0UGFnaW5hdG9yO1xuICBwcm90ZWN0ZWQgc29ydD86IE1hdFNvcnQ7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25MaXN0PzogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvblNvcnRMaXN0PzogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGludGVydmFsU29ydExpc3Q6IGFueTtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZXF1ZXN0RnVuY3Rpb246ICgpID0+IE9ic2VydmFibGU8YW55PixcbiAgICBwcml2YXRlIHJlcXVlc3RSZXNwb25zZUZ1bmN0aW9uOiA8VD4ocmVzdWx0czogVFtdKSA9PiB2b2lkLFxuICAgIGZvcm1TZWFyY2g6ICgpID0+IFVudHlwZWRGb3JtR3JvdXBcbiAgKSB7XG4gICAgc3VwZXIoZm9ybVNlYXJjaCk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0QWxsKCkge1xuICAgIHRoaXMuaXNBbGxTZWxlY3RlZCgpID9cbiAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpIDpcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAodGhpcy5jb25maWc/LmRpc2FibGVkQ2hlY2tib3hJdGVtTGlzdCAmJiAhdGhpcy5jb25maWcuZGlzYWJsZWRDaGVja2JveEl0ZW1MaXN0KGl0ZW0pKSB8fFxuICAgICAgICAhdGhpcy5jb25maWc/LmRpc2FibGVkQ2hlY2tib3hJdGVtTGlzdFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdChpdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuaXNBbGxTZWxlY3RlZCgpO1xuICB9XG5cbiAgcHVibGljIGRlZmluZVN0YXR1c1NlbGVjdEFsbChzdGF0dXM6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmFsbFNlbGVjdGVkJC5uZXh0KHN0YXR1cyk7XG4gICAgcmV0dXJuIHRoaXMuYWxsU2VsZWN0ZWQkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0SXRlbSgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2hvd01lbnVMaXN0ID0gdGhpcy5zZWxlY3Rpb24uaGFzVmFsdWUoKTtcbiAgICAgIHRoaXMuaXNBbGxTZWxlY3RlZCgpO1xuICAgIH0sIDUwKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZWFyY2goZmlsdGVyPzogYW55KSB7XG4gICAgdGhpcy5sb2FkaW5nKHRydWUpO1xuICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgaWYgKHRoaXMucGFnaW5hdG9yKSB7XG4gICAgICB0aGlzLnBhZ2luYXRvci5maXJzdFBhZ2UoKTtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXJQYXJhbXMubmV4dCh7XG4gICAgICBwYXJhbXM6IGZpbHRlcixcbiAgICAgIHNvcnQ6IHRoaXMuc29ydD8uYWN0aXZlID8/ICcnLFxuICAgICAgb3JkZXI6IHRoaXMuc29ydD8uZGlyZWN0aW9uID8/ICdhc2MnLFxuICAgICAgcGFnZTogdGhpcy5wYWdpbmF0b3I/LnBhZ2VJbmRleCA/PyAwLFxuICAgICAgbGltaXQ6IHRoaXMucGFnaW5hdG9yPy5wYWdlU2l6ZSA/PyAzMFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvblNvcnRMaXN0Py51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uTGlzdD8udW5zdWJzY3JpYmUoKTtcbiAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxTb3J0TGlzdCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgYWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBsZXQgdGVudGF0aXZhcyA9IDA7XG4gICAgbGV0IHN0b3AgPSBmYWxzZTtcbiAgICBkbyB7XG4gICAgICB0ZW50YXRpdmFzKys7XG4gICAgICBhd2FpdCBkZWxheSg0MDApO1xuICAgICAgaWYgKHRoaXMuc29ydCB8fCB0aGlzLmVtcHR5TGlzdENvbXBvbmVudCkge1xuICAgICAgICB0aGlzLnByZXBhcmVTZWFyY2goKS50aGVuKCk7XG4gICAgICAgIGlmICh0aGlzLmVtcHR5TGlzdENvbXBvbmVudCkgc3RvcCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKHRlbnRhdGl2YXMgPiAxMCkge1xuICAgICAgICBzdG9wID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IHdoaWxlICghdGhpcy5zb3J0ICYmICFzdG9wKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVNlYXJjaCgpIHtcbiAgICB0aGlzLmludGVydmFsU29ydExpc3QgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5zb3J0ICYmICF0aGlzLnN1YnNjcmlwdGlvblNvcnRMaXN0KSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uU29ydExpc3QgPSB0aGlzLnNvcnQuc29ydENoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZmlsdGVyUGFyYW1zLnZhbHVlID8/IHt9IGFzIGFueTtcbiAgICAgICAgICBmaWx0ZXIuc29ydCA9IHRoaXMuc29ydD8uYWN0aXZlID8/ICcnO1xuICAgICAgICAgIGZpbHRlci5vcmRlciA9IHRoaXMuc29ydD8uZGlyZWN0aW9uID8/ICcnO1xuICAgICAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLm5leHQoZmlsdGVyKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLnNvcnQgJiYgdGhpcy5zdWJzY3JpcHRpb25Tb3J0TGlzdCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvblNvcnRMaXN0LnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfSwgNTApO1xuXG4gICAgaWYgKHRoaXMudHlwZVJlcXVlc3QgPT09ICdvbkRlbWFuZCcpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uTGlzdCA9IG1lcmdlKHRoaXMucGFnaW5hdG9yPy5wYWdlID8/IG5ldyBPYnNlcnZhYmxlKCksIHRoaXMuZmlsdGVyUGFyYW1zKS5waXBlKFxuICAgICAgICBzdGFydFdpdGgoe30pLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gbmV3IE9ic2VydmFibGUob2JzZXJ2ZSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nKHRydWUpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgICAgaWYgKHRoaXMuZmlsdGVyUGFyYW1zLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy52YWx1ZS5zb3J0ID0gdGhpcy5zb3J0Py5hY3RpdmUgPz8gdGhpcy5jb25maWc/LmNvbHVtblNvcnQgPz8gJyc7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy52YWx1ZS5vcmRlciA9IHRoaXMuc29ydD8uZGlyZWN0aW9uID8/IHRoaXMuY29uZmlnPy5zb3J0RGlyZWN0aW9uID8/ICcnO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMudmFsdWUucGFnZSA9IHRoaXMucGFnaW5hdG9yPy5wYWdlSW5kZXggPz8gMDtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLnZhbHVlLmxpbWl0ID0gdGhpcy5wYWdpbmF0b3I/LnBhZ2VTaXplID8/IDMwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvYnNlcnZlLm5leHQodHJ1ZSk7XG4gICAgICAgIH0pKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnJ1blJlcXVlc3RGdW5jdGlvbigpKSxcbiAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgdGhpcy5zY3JvbGxUYWJsZVRvVG9wKCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdFJlc3BvbnNlRnVuY3Rpb24ocmVzcG9uc2UpO1xuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMucGFnaW5hdG9yKSB0aGlzLmRhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5wYWdpbmF0b3I7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbkxpc3QgPSB0aGlzLmZpbHRlclBhcmFtcy5waXBlKFxuICAgICAgICBzdGFydFdpdGgoe30pLFxuICAgICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucnVuUmVxdWVzdEZ1bmN0aW9uKCkpLFxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnNjcm9sbFRhYmxlVG9Ub3AoKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0UmVzcG9uc2VGdW5jdGlvbihyZXNwb25zZSk7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmVtcHR5TGlzdENvbXBvbmVudCkge1xuICAgICAgZG8ge1xuICAgICAgICBhd2FpdCBkZWxheSgzMDEpO1xuICAgICAgICBpZiAodGhpcy5zb3J0KSB7XG4gICAgICAgICAgaWYgKHRoaXMudHlwZVJlcXVlc3QgPT09IFwib25EZW1hbmRcIikge1xuICAgICAgICAgICAgdGhpcy5zb3J0LnNvcnRDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdG9yKSB0aGlzLnBhZ2luYXRvci5wYWdlSW5kZXggPSAwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IHdoaWxlICghdGhpcy5zb3J0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzQWxsU2VsZWN0ZWQoKSB7XG4gICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XG4gICAgY29uc3QgbnVtUm93cyA9ICh0aGlzLmNvbmZpZz8uZGlzYWJsZWRDaGVja2JveEl0ZW1MaXN0ID9cbiAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZpbHRlcihpdGVtID0+ICEodGhpcy5jb25maWc/LmRpc2FibGVkQ2hlY2tib3hJdGVtTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuY29uZmlnLmRpc2FibGVkQ2hlY2tib3hJdGVtTGlzdChpdGVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnKSkgOlxuICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEpLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLmRlZmluZVN0YXR1c1NlbGVjdEFsbChudW1TZWxlY3RlZCA9PT0gbnVtUm93cyk7XG4gIH1cblxuICBwcml2YXRlIHJ1blJlcXVlc3RGdW5jdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8dW5rbm93bltdPihvYnNlcnZlID0+IHtcbiAgICAgIHRoaXMucmVxdWVzdEZ1bmN0aW9uKCkucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiByZXNwb25zZSA9PiBvYnNlcnZlLm5leHQocmVzcG9uc2UpLFxuICAgICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5lcnJvckxpc3RDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyRXJyb3IkLm5leHQoZXJyKTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JMaXN0Q29tcG9uZW50LmRhdGEgPSBlcnI7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgb2JzZXJ2ZS5uZXh0KFtdKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBzY3JvbGxUYWJsZVRvVG9wKCkge1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMudGFibGVJZCk/LnBhcmVudEVsZW1lbnQ/LnNjcm9sbFRvKHt0b3A6IDB9KTtcbiAgfVxufVxuIl19
|