@gipisistemas/ng-core 1.0.68 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +38 -0
- package/_ITSS-NG-CI-CD.yml +53 -0
- package/_ITSS-NG-CI-PR.yml +53 -0
- package/angular-cli.json +42 -0
- package/azure-pipelines.yml +35 -0
- package/package.json +83 -31
- package/projects/itss-ng/ng-package.json +7 -0
- package/projects/itss-ng/package.json +25 -0
- package/assets/styles/colors.scss +0 -261
- package/assets/styles/layout-grid.scss +0 -146
- package/assets/styles/styles.scss +0 -149
- package/assets/styles/theme.scss +0 -22
- package/assets/styles/typography.scss +0 -54
- package/assets/styles/variable.scss +0 -41
- package/bundles/gipisistemas-ng-core.umd.js +0 -28311
- package/bundles/gipisistemas-ng-core.umd.js.map +0 -1
- package/bundles/gipisistemas-ng-core.umd.min.js +0 -66
- package/bundles/gipisistemas-ng-core.umd.min.js.map +0 -1
- package/core/app-messages.d.ts +0 -9
- package/core/app.messages.d.ts +0 -4
- package/core/components/abstract-crud.component.d.ts +0 -27
- package/core/components/abstract-find.component.d.ts +0 -43
- package/core/components/abstract.component.d.ts +0 -23
- package/core/components/alert/alert.component.d.ts +0 -7
- package/core/core.module.d.ts +0 -17
- package/core/custom-breakpoints.d.ts +0 -7
- package/core/enums/local-time.enum.d.ts +0 -5
- package/core/extensions/string.extension.d.ts +0 -3
- package/core/gipi-components/components/abstract-crud.component.d.ts +0 -25
- package/core/gipi-components/components/abstract-find.component.d.ts +0 -73
- package/core/gipi-components/components/abstract.component.d.ts +0 -38
- package/core/gipi-components/decorators/autowired.decorator.d.ts +0 -7
- package/core/gipi-components/enums/sort-direction.enum.d.ts +0 -5
- package/core/gipi-components/interface/abstract-crud.interface.d.ts +0 -5
- package/core/gipi-components/interface/abstract-find.interface.d.ts +0 -12
- package/core/gipi-components/interface/abstract.interface.d.ts +0 -11
- package/core/gipi-components/interface/base-permission.interface.d.ts +0 -9
- package/core/gipi-components/models/abstract-filter.model.d.ts +0 -9
- package/core/gipi-components/models/abstract.model.d.ts +0 -7
- package/core/gipi-components/models/applied-filter.model.d.ts +0 -9
- package/core/gipi-components/models/dto/abstract.dto.d.ts +0 -7
- package/core/gipi-components/models/page-event.model.d.ts +0 -18
- package/core/gipi-components/models/page.model.d.ts +0 -7
- package/core/gipi-components/models/sort.model.d.ts +0 -6
- package/core/gipi-components/services/abstract-crud.service.d.ts +0 -83
- package/core/gipi-components/services/abstract.service.d.ts +0 -19
- package/core/gipi-components/services/base.service.d.ts +0 -35
- package/core/gipi-components/services/file.service.d.ts +0 -6
- package/core/gipi-components/services/session-storage.service.d.ts +0 -8
- package/core/gipi-components/types/generic.type.d.ts +0 -1
- package/core/gipi-components/types/uuid.type.d.ts +0 -1
- package/core/guards/auth.guard.d.ts +0 -11
- package/core/guards/permission.guard.d.ts +0 -14
- package/core/guards/public.guard.d.ts +0 -11
- package/core/interceptors/auth.interceptor.d.ts +0 -9
- package/core/interceptors/error.interceptor.d.ts +0 -11
- package/core/models/abstract.model.d.ts +0 -3
- package/core/models/archive.model.d.ts +0 -4
- package/core/models/authority.model.d.ts +0 -3
- package/core/models/base-user.model.d.ts +0 -12
- package/core/models/dto/abstract.dto.d.ts +0 -2
- package/core/models/dto/api-error.dto.d.ts +0 -9
- package/core/models/dto/api-sub-error.dto.d.ts +0 -7
- package/core/models/dto/chart.dto.d.ts +0 -5
- package/core/models/dto/confirmation.dto.d.ts +0 -10
- package/core/models/dto/dialog.dto.d.ts +0 -36
- package/core/models/dto/filter.dto.d.ts +0 -8
- package/core/models/dto/input-listbox.dto.d.ts +0 -6
- package/core/models/dto/menu.dto.d.ts +0 -15
- package/core/models/dto/message.dto.d.ts +0 -7
- package/core/models/dto/page.dto.d.ts +0 -8
- package/core/models/dto/sort.dto.d.ts +0 -7
- package/core/models/dto/tab.dto.d.ts +0 -12
- package/core/models/dto/table-column.dto.d.ts +0 -21
- package/core/models/dto/table-group-header.dto.d.ts +0 -7
- package/core/models/dto/table-page-event.dto.d.ts +0 -6
- package/core/models/dto/token.dto.d.ts +0 -8
- package/core/models/enums/criteria-operation.enum.d.ts +0 -13
- package/core/models/enums/criteria-sort-direction.enum.d.ts +0 -4
- package/core/models/enums/menu-type.enum.d.ts +0 -6
- package/core/models/enums/radio-button.enum.d.ts +0 -6
- package/core/models/enums/sort-direction.enum.d.ts +0 -4
- package/core/models/multitenant.model.d.ts +0 -4
- package/core/models/permission.model.d.ts +0 -8
- package/core/models/role.model.d.ts +0 -7
- package/core/pipes/local-time.pipe.d.ts +0 -6
- package/core/services/abstract-crud.service.d.ts +0 -15
- package/core/services/abstract-find.service.d.ts +0 -30
- package/core/services/abstract.service.d.ts +0 -13
- package/core/services/authentication.service.d.ts +0 -23
- package/core/services/breakpoint-observer.service.d.ts +0 -9
- package/core/services/confirmation.service.d.ts +0 -8
- package/core/services/dialog.service.d.ts +0 -8
- package/core/services/message.service.d.ts +0 -8
- package/core/services/nav.service.d.ts +0 -16
- package/core/services/svg-register.service.d.ts +0 -22
- package/core/types/local-time.type.d.ts +0 -5
- package/core/types/ng-class.type.d.ts +0 -10
- package/core/utils/array.util.d.ts +0 -14
- package/core/utils/browser.util.d.ts +0 -4
- package/core/utils/currency.util.d.ts +0 -6
- package/core/utils/date.util.d.ts +0 -39
- package/core/utils/document.util.d.ts +0 -11
- package/core/utils/email.util.d.ts +0 -4
- package/core/utils/number.util.d.ts +0 -8
- package/core/utils/object.util.d.ts +0 -20
- package/core/utils/password.util.d.ts +0 -11
- package/core/utils/phone.util.d.ts +0 -13
- package/core/utils/string.util.d.ts +0 -9
- package/core/utils/table-column-builder.d.ts +0 -40
- package/core/utils/time.util.d.ts +0 -9
- package/core/utils/url-params.util.d.ts +0 -7
- package/core/utils/uuid.util.d.ts +0 -5
- package/core/utils/zindex.util.d.ts +0 -7
- package/core.d.ts +0 -88
- package/esm2015/core/app-messages.js +0 -1
- package/esm2015/core/app.messages.js +0 -12
- package/esm2015/core/components/abstract-crud.component.js +0 -97
- package/esm2015/core/components/abstract-find.component.js +0 -189
- package/esm2015/core/components/abstract.component.js +0 -110
- package/esm2015/core/components/alert/alert.component.js +0 -24
- package/esm2015/core/core.module.js +0 -103
- package/esm2015/core/custom-breakpoints.js +0 -87
- package/esm2015/core/enums/local-time.enum.js +0 -6
- package/esm2015/core/extensions/string.extension.js +0 -37
- package/esm2015/core/gipi-components/components/abstract-crud.component.js +0 -110
- package/esm2015/core/gipi-components/components/abstract-find.component.js +0 -471
- package/esm2015/core/gipi-components/components/abstract.component.js +0 -140
- package/esm2015/core/gipi-components/decorators/autowired.decorator.js +0 -47
- package/esm2015/core/gipi-components/enums/sort-direction.enum.js +0 -6
- package/esm2015/core/gipi-components/interface/abstract-crud.interface.js +0 -1
- package/esm2015/core/gipi-components/interface/abstract-find.interface.js +0 -1
- package/esm2015/core/gipi-components/interface/abstract.interface.js +0 -1
- package/esm2015/core/gipi-components/interface/base-permission.interface.js +0 -1
- package/esm2015/core/gipi-components/models/abstract-filter.model.js +0 -3
- package/esm2015/core/gipi-components/models/abstract.model.js +0 -3
- package/esm2015/core/gipi-components/models/applied-filter.model.js +0 -19
- package/esm2015/core/gipi-components/models/dto/abstract.dto.js +0 -3
- package/esm2015/core/gipi-components/models/page-event.model.js +0 -35
- package/esm2015/core/gipi-components/models/page.model.js +0 -7
- package/esm2015/core/gipi-components/models/sort.model.js +0 -7
- package/esm2015/core/gipi-components/services/abstract-crud.service.js +0 -109
- package/esm2015/core/gipi-components/services/abstract.service.js +0 -47
- package/esm2015/core/gipi-components/services/base.service.js +0 -102
- package/esm2015/core/gipi-components/services/file.service.js +0 -51
- package/esm2015/core/gipi-components/services/session-storage.service.js +0 -44
- package/esm2015/core/gipi-components/types/generic.type.js +0 -1
- package/esm2015/core/gipi-components/types/uuid.type.js +0 -1
- package/esm2015/core/guards/auth.guard.js +0 -48
- package/esm2015/core/guards/permission.guard.js +0 -61
- package/esm2015/core/guards/public.guard.js +0 -45
- package/esm2015/core/interceptors/auth.interceptor.js +0 -28
- package/esm2015/core/interceptors/error.interceptor.js +0 -110
- package/esm2015/core/models/abstract.model.js +0 -3
- package/esm2015/core/models/archive.model.js +0 -3
- package/esm2015/core/models/authority.model.js +0 -3
- package/esm2015/core/models/base-user.model.js +0 -8
- package/esm2015/core/models/dto/abstract.dto.js +0 -3
- package/esm2015/core/models/dto/api-error.dto.js +0 -8
- package/esm2015/core/models/dto/api-sub-error.dto.js +0 -4
- package/esm2015/core/models/dto/chart.dto.js +0 -4
- package/esm2015/core/models/dto/confirmation.dto.js +0 -8
- package/esm2015/core/models/dto/dialog.dto.js +0 -4
- package/esm2015/core/models/dto/filter.dto.js +0 -4
- package/esm2015/core/models/dto/input-listbox.dto.js +0 -7
- package/esm2015/core/models/dto/menu.dto.js +0 -9
- package/esm2015/core/models/dto/message.dto.js +0 -4
- package/esm2015/core/models/dto/page.dto.js +0 -9
- package/esm2015/core/models/dto/sort.dto.js +0 -9
- package/esm2015/core/models/dto/tab.dto.js +0 -10
- package/esm2015/core/models/dto/table-column.dto.js +0 -24
- package/esm2015/core/models/dto/table-group-header.dto.js +0 -10
- package/esm2015/core/models/dto/table-page-event.dto.js +0 -7
- package/esm2015/core/models/dto/token.dto.js +0 -4
- package/esm2015/core/models/enums/criteria-operation.enum.js +0 -15
- package/esm2015/core/models/enums/criteria-sort-direction.enum.js +0 -6
- package/esm2015/core/models/enums/menu-type.enum.js +0 -7
- package/esm2015/core/models/enums/radio-button.enum.js +0 -8
- package/esm2015/core/models/enums/sort-direction.enum.js +0 -6
- package/esm2015/core/models/multitenant.model.js +0 -4
- package/esm2015/core/models/permission.model.js +0 -11
- package/esm2015/core/models/role.model.js +0 -8
- package/esm2015/core/pipes/local-time.pipe.js +0 -21
- package/esm2015/core/services/abstract-crud.service.js +0 -24
- package/esm2015/core/services/abstract-find.service.js +0 -65
- package/esm2015/core/services/abstract.service.js +0 -30
- package/esm2015/core/services/authentication.service.js +0 -100
- package/esm2015/core/services/breakpoint-observer.service.js +0 -42
- package/esm2015/core/services/confirmation.service.js +0 -55
- package/esm2015/core/services/dialog.service.js +0 -41
- package/esm2015/core/services/message.service.js +0 -33
- package/esm2015/core/services/nav.service.js +0 -48
- package/esm2015/core/services/svg-register.service.js +0 -55
- package/esm2015/core/types/local-time.type.js +0 -1
- package/esm2015/core/types/ng-class.type.js +0 -1
- package/esm2015/core/utils/array.util.js +0 -110
- package/esm2015/core/utils/browser.util.js +0 -13
- package/esm2015/core/utils/currency.util.js +0 -21
- package/esm2015/core/utils/date.util.js +0 -257
- package/esm2015/core/utils/document.util.js +0 -153
- package/esm2015/core/utils/email.util.js +0 -25
- package/esm2015/core/utils/number.util.js +0 -28
- package/esm2015/core/utils/object.util.js +0 -199
- package/esm2015/core/utils/password.util.js +0 -38
- package/esm2015/core/utils/phone.util.js +0 -125
- package/esm2015/core/utils/string.util.js +0 -40
- package/esm2015/core/utils/table-column-builder.js +0 -85
- package/esm2015/core/utils/time.util.js +0 -59
- package/esm2015/core/utils/url-params.util.js +0 -12
- package/esm2015/core/utils/uuid.util.js +0 -17
- package/esm2015/core/utils/zindex.util.js +0 -35
- package/esm2015/core.js +0 -89
- package/esm2015/gipi-components.js +0 -105
- package/esm2015/gipisistemas-ng-core.js +0 -21
- package/esm2015/public_api.js +0 -4
- package/esm2015/shared/api/generate-id-component.js +0 -12
- package/esm2015/shared/api/gipi-ng-config.js +0 -76
- package/esm2015/shared/api/overlay-message.js +0 -1
- package/esm2015/shared/api/throttle.js +0 -60
- package/esm2015/shared/api/translation.js +0 -1
- package/esm2015/shared/components/button/button.component.js +0 -110
- package/esm2015/shared/components/card/card.component.js +0 -44
- package/esm2015/shared/components/checkbox/checkbox.component.js +0 -79
- package/esm2015/shared/components/dom/connected-overlay-scroll-handler.js +0 -27
- package/esm2015/shared/components/dom/dom-handler.js +0 -538
- package/esm2015/shared/components/icon/icon.component.js +0 -35
- package/esm2015/shared/components/input/input.component.js +0 -235
- package/esm2015/shared/components/input-currency/input-currency.component.js +0 -115
- package/esm2015/shared/components/input-file/input-file.component.js +0 -161
- package/esm2015/shared/components/loading/loading.component.js +0 -15
- package/esm2015/shared/components/loading-overlay/loading-overlay.component.js +0 -21
- package/esm2015/shared/components/overlay-panel/overlay-panel.component.js +0 -361
- package/esm2015/shared/components/popover/popover-ref.js +0 -25
- package/esm2015/shared/components/popover/popover.component.js +0 -34
- package/esm2015/shared/components/popover/popover.service.js +0 -85
- package/esm2015/shared/components/radio-group-entity/radio-group-entity.component.js +0 -74
- package/esm2015/shared/components/radio-group-enum/radio-group-enum.component.js +0 -126
- package/esm2015/shared/components/select-button/select-button.component.js +0 -181
- package/esm2015/shared/components/select-entity/select-entity.component.js +0 -262
- package/esm2015/shared/components/select-entity-paged/select-entity-paged.component.js +0 -419
- package/esm2015/shared/components/select-entity-paged/shared/default-options.js +0 -35
- package/esm2015/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.js +0 -69
- package/esm2015/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.js +0 -59
- package/esm2015/shared/components/select-entity-paged/shared/select-no-entries-found.directive.js +0 -20
- package/esm2015/shared/components/select-entity-paged/shared/select-search/select-search.component.js +0 -547
- package/esm2015/shared/components/select-entity-paged/shared/select-search-clear.directive.js +0 -18
- package/esm2015/shared/components/select-enum/select-enum.component.js +0 -117
- package/esm2015/shared/components/select-month-period/select-month-period.component.js +0 -87
- package/esm2015/shared/components/slide-toggle/slide-toggle.component.js +0 -75
- package/esm2015/shared/components/stepper/stepper.component.js +0 -32
- package/esm2015/shared/components/tab/tab.component.js +0 -57
- package/esm2015/shared/components/tab-group/tab-group.component.js +0 -117
- package/esm2015/shared/components/table/table.component.js +0 -523
- package/esm2015/shared/components/table-scrolled/table-scrolled.component.js +0 -105
- package/esm2015/shared/components/textarea/textarea.component.js +0 -156
- package/esm2015/shared/directives/dynamic-tab.directive.js +0 -18
- package/esm2015/shared/directives/generic-template.directive.js +0 -30
- package/esm2015/shared/directives/input-select-infinite-scroll.directive.js +0 -109
- package/esm2015/shared/directives/lower-case.directive.js +0 -47
- package/esm2015/shared/directives/phone-mask.directive.js +0 -60
- package/esm2015/shared/directives/space-drop.directive.js +0 -47
- package/esm2015/shared/directives/upper-case.directive.js +0 -47
- package/esm2015/shared/gipi-components/abstract-form/abstract-form.component.js +0 -119
- package/esm2015/shared/gipi-components/action-row/action-row.component.js +0 -30
- package/esm2015/shared/gipi-components/badge/badge.component.js +0 -44
- package/esm2015/shared/gipi-components/button/button.component.js +0 -251
- package/esm2015/shared/gipi-components/chips/chips.component.js +0 -149
- package/esm2015/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.js +0 -44
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +0 -324
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.js +0 -41
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.js +0 -35
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.js +0 -259
- package/esm2015/shared/gipi-components/datepicker/datepicker/datepicker.component.js +0 -218
- package/esm2015/shared/gipi-components/datepicker/datepicker.module.js +0 -130
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/calendar-body.js +0 -341
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/calendar.js +0 -397
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.js +0 -325
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-input.js +0 -329
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.js +0 -41
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.js +0 -61
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.js +0 -159
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.js +0 -35
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.js +0 -555
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.js +0 -14
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.js +0 -303
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.js +0 -179
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.js +0 -51
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.js +0 -124
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker.js +0 -29
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/month-view.js +0 -365
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.js +0 -305
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.js +0 -116
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.js +0 -10
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.js +0 -294
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.js +0 -19
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.js +0 -81
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/year-view.js +0 -294
- package/esm2015/shared/gipi-components/dom/connected-overlay-scroll-handler.js +0 -27
- package/esm2015/shared/gipi-components/dom/dom-handler.js +0 -645
- package/esm2015/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +0 -185
- package/esm2015/shared/gipi-components/expansion-panel/expansion-panel.component.js +0 -81
- package/esm2015/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.js +0 -240
- package/esm2015/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.js +0 -92
- package/esm2015/shared/gipi-components/footer/footer.component.js +0 -29
- package/esm2015/shared/gipi-components/form-field/form-field.component.js +0 -262
- package/esm2015/shared/gipi-components/helpful-tip/helpful-tip.component.js +0 -62
- package/esm2015/shared/gipi-components/infinite-scroll/infinite-scroll.directive.js +0 -103
- package/esm2015/shared/gipi-components/input-checkbox/input-checkbox.component.js +0 -112
- package/esm2015/shared/gipi-components/input-currency/input-currency.component.js +0 -197
- package/esm2015/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +0 -408
- package/esm2015/shared/gipi-components/input-select/input-select.component.js +0 -655
- package/esm2015/shared/gipi-components/input-select-enum/input-select-enum.component.js +0 -311
- package/esm2015/shared/gipi-components/input-select-listbox/input-select-listbox.component.js +0 -422
- package/esm2015/shared/gipi-components/input-select-paged/input-search/input-search.component.js +0 -374
- package/esm2015/shared/gipi-components/input-select-paged/input-select-paged.component.js +0 -350
- package/esm2015/shared/gipi-components/input-select-radio/input-select-radio.component.js +0 -269
- package/esm2015/shared/gipi-components/layout-grid/col.directive.js +0 -161
- package/esm2015/shared/gipi-components/layout-grid/row.directive.js +0 -124
- package/esm2015/shared/gipi-components/layout-grid/services/breakpoint.service.js +0 -87
- package/esm2015/shared/gipi-components/layout-grid/services/resize.service.js +0 -64
- package/esm2015/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.js +0 -193
- package/esm2015/shared/gipi-components/month-year-picker/mont-year-picker.module.js +0 -47
- package/esm2015/shared/gipi-components/month-year-picker/month-year-picker.component.js +0 -460
- package/esm2015/shared/gipi-components/notification/notification.component.js +0 -104
- package/esm2015/shared/gipi-components/novelties/novelties.component.js +0 -109
- package/esm2015/shared/gipi-components/overlay/overlay.component.js +0 -565
- package/esm2015/shared/gipi-components/overlay/shared/overlay-service.js +0 -21
- package/esm2015/shared/gipi-components/overlay/shared/overlay_options.js +0 -1
- package/esm2015/shared/gipi-components/password-requeriments/password-requeriments.component.js +0 -127
- package/esm2015/shared/gipi-components/popover/popover.component.js +0 -397
- package/esm2015/shared/gipi-components/popover/shared/popover-animations.js +0 -29
- package/esm2015/shared/gipi-components/popover/shared/popover-errors.js +0 -27
- package/esm2015/shared/gipi-components/popover/shared/popover-interfaces.js +0 -1
- package/esm2015/shared/gipi-components/popover/shared/popover-target.js +0 -19
- package/esm2015/shared/gipi-components/popover/shared/popover-trigger.js +0 -514
- package/esm2015/shared/gipi-components/popover/shared/popover-types.js +0 -1
- package/esm2015/shared/gipi-components/radio-group/radio-group.component.js +0 -143
- package/esm2015/shared/gipi-components/range-page/range-page.component.js +0 -254
- package/esm2015/shared/gipi-components/range-slider/range-slider.component.js +0 -345
- package/esm2015/shared/gipi-components/select/select.component.js +0 -211
- package/esm2015/shared/gipi-components/select-button/select-button.component.js +0 -187
- package/esm2015/shared/gipi-components/sidebar/container/container.component.js +0 -83
- package/esm2015/shared/gipi-components/sidebar/sidenav/sidenav.component.js +0 -240
- package/esm2015/shared/gipi-components/stepper/stepper.component.js +0 -37
- package/esm2015/shared/gipi-components/table/components/table-body/table-body.component.js +0 -203
- package/esm2015/shared/gipi-components/table/components/table-footer/table-footer.component.js +0 -30
- package/esm2015/shared/gipi-components/table/components/table-header/table-header.component.js +0 -152
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.js +0 -122
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.js +0 -225
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.js +0 -1
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination.service.js +0 -105
- package/esm2015/shared/gipi-components/table/components/table-pagination/table-pagination.component.js +0 -102
- package/esm2015/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.js +0 -30
- package/esm2015/shared/gipi-components/table/models/pipe-transform.model.js +0 -1
- package/esm2015/shared/gipi-components/table/models/sort.model.js +0 -19
- package/esm2015/shared/gipi-components/table/models/sorted-column.model.js +0 -2
- package/esm2015/shared/gipi-components/table/models/table-column-builder.model.js +0 -104
- package/esm2015/shared/gipi-components/table/models/table-column.model.js +0 -162
- package/esm2015/shared/gipi-components/table/table.component.js +0 -159
- package/esm2015/shared/gipi-components/table/types/sort-direction.type.js +0 -1
- package/esm2015/shared/gipi-components/table/types/sort.type.js +0 -1
- package/esm2015/shared/gipi-components/template/template.directive.js +0 -33
- package/esm2015/shared/gipi-components/toolbar/toolbar.component.js +0 -53
- package/esm2015/shared/gipi-components/top-nav/top-nav.component.js +0 -38
- package/esm2015/shared/gipi-components/user-profile/user-profile.component.js +0 -109
- package/esm2015/shared/material.module.js +0 -102
- package/esm2015/shared/shared.module.js +0 -339
- package/esm2015/shared.js +0 -36
- package/esm5/core/app-messages.js +0 -1
- package/esm5/core/app.messages.js +0 -12
- package/esm5/core/components/abstract-crud.component.js +0 -108
- package/esm5/core/components/abstract-find.component.js +0 -201
- package/esm5/core/components/abstract.component.js +0 -112
- package/esm5/core/components/alert/alert.component.js +0 -25
- package/esm5/core/core.module.js +0 -107
- package/esm5/core/custom-breakpoints.js +0 -87
- package/esm5/core/enums/local-time.enum.js +0 -6
- package/esm5/core/extensions/string.extension.js +0 -37
- package/esm5/core/gipi-components/components/abstract-crud.component.js +0 -122
- package/esm5/core/gipi-components/components/abstract-find.component.js +0 -507
- package/esm5/core/gipi-components/components/abstract.component.js +0 -152
- package/esm5/core/gipi-components/decorators/autowired.decorator.js +0 -52
- package/esm5/core/gipi-components/enums/sort-direction.enum.js +0 -6
- package/esm5/core/gipi-components/interface/abstract-crud.interface.js +0 -1
- package/esm5/core/gipi-components/interface/abstract-find.interface.js +0 -1
- package/esm5/core/gipi-components/interface/abstract.interface.js +0 -1
- package/esm5/core/gipi-components/interface/base-permission.interface.js +0 -1
- package/esm5/core/gipi-components/models/abstract-filter.model.js +0 -7
- package/esm5/core/gipi-components/models/abstract.model.js +0 -7
- package/esm5/core/gipi-components/models/applied-filter.model.js +0 -29
- package/esm5/core/gipi-components/models/dto/abstract.dto.js +0 -7
- package/esm5/core/gipi-components/models/page-event.model.js +0 -49
- package/esm5/core/gipi-components/models/page.model.js +0 -9
- package/esm5/core/gipi-components/models/sort.model.js +0 -9
- package/esm5/core/gipi-components/services/abstract-crud.service.js +0 -114
- package/esm5/core/gipi-components/services/abstract.service.js +0 -49
- package/esm5/core/gipi-components/services/base.service.js +0 -143
- package/esm5/core/gipi-components/services/file.service.js +0 -53
- package/esm5/core/gipi-components/services/session-storage.service.js +0 -45
- package/esm5/core/gipi-components/types/generic.type.js +0 -1
- package/esm5/core/gipi-components/types/uuid.type.js +0 -1
- package/esm5/core/guards/auth.guard.js +0 -50
- package/esm5/core/guards/permission.guard.js +0 -74
- package/esm5/core/guards/public.guard.js +0 -47
- package/esm5/core/interceptors/auth.interceptor.js +0 -29
- package/esm5/core/interceptors/error.interceptor.js +0 -129
- package/esm5/core/models/abstract.model.js +0 -7
- package/esm5/core/models/archive.model.js +0 -7
- package/esm5/core/models/authority.model.js +0 -7
- package/esm5/core/models/base-user.model.js +0 -13
- package/esm5/core/models/dto/abstract.dto.js +0 -7
- package/esm5/core/models/dto/api-error.dto.js +0 -13
- package/esm5/core/models/dto/api-sub-error.dto.js +0 -11
- package/esm5/core/models/dto/chart.dto.js +0 -11
- package/esm5/core/models/dto/confirmation.dto.js +0 -13
- package/esm5/core/models/dto/dialog.dto.js +0 -11
- package/esm5/core/models/dto/filter.dto.js +0 -11
- package/esm5/core/models/dto/input-listbox.dto.js +0 -11
- package/esm5/core/models/dto/menu.dto.js +0 -14
- package/esm5/core/models/dto/message.dto.js +0 -11
- package/esm5/core/models/dto/page.dto.js +0 -14
- package/esm5/core/models/dto/sort.dto.js +0 -14
- package/esm5/core/models/dto/tab.dto.js +0 -15
- package/esm5/core/models/dto/table-column.dto.js +0 -29
- package/esm5/core/models/dto/table-group-header.dto.js +0 -15
- package/esm5/core/models/dto/table-page-event.dto.js +0 -11
- package/esm5/core/models/dto/token.dto.js +0 -11
- package/esm5/core/models/enums/criteria-operation.enum.js +0 -15
- package/esm5/core/models/enums/criteria-sort-direction.enum.js +0 -6
- package/esm5/core/models/enums/menu-type.enum.js +0 -7
- package/esm5/core/models/enums/radio-button.enum.js +0 -8
- package/esm5/core/models/enums/sort-direction.enum.js +0 -6
- package/esm5/core/models/multitenant.model.js +0 -11
- package/esm5/core/models/permission.model.js +0 -16
- package/esm5/core/models/role.model.js +0 -13
- package/esm5/core/pipes/local-time.pipe.js +0 -26
- package/esm5/core/services/abstract-crud.service.js +0 -30
- package/esm5/core/services/abstract-find.service.js +0 -71
- package/esm5/core/services/abstract.service.js +0 -32
- package/esm5/core/services/authentication.service.js +0 -121
- package/esm5/core/services/breakpoint-observer.service.js +0 -52
- package/esm5/core/services/confirmation.service.js +0 -66
- package/esm5/core/services/dialog.service.js +0 -44
- package/esm5/core/services/message.service.js +0 -36
- package/esm5/core/services/nav.service.js +0 -51
- package/esm5/core/services/svg-register.service.js +0 -67
- package/esm5/core/types/local-time.type.js +0 -1
- package/esm5/core/types/ng-class.type.js +0 -1
- package/esm5/core/utils/array.util.js +0 -120
- package/esm5/core/utils/browser.util.js +0 -17
- package/esm5/core/utils/currency.util.js +0 -26
- package/esm5/core/utils/date.util.js +0 -269
- package/esm5/core/utils/document.util.js +0 -157
- package/esm5/core/utils/email.util.js +0 -29
- package/esm5/core/utils/number.util.js +0 -32
- package/esm5/core/utils/object.util.js +0 -204
- package/esm5/core/utils/password.util.js +0 -42
- package/esm5/core/utils/phone.util.js +0 -135
- package/esm5/core/utils/string.util.js +0 -44
- package/esm5/core/utils/table-column-builder.js +0 -87
- package/esm5/core/utils/time.util.js +0 -65
- package/esm5/core/utils/url-params.util.js +0 -16
- package/esm5/core/utils/uuid.util.js +0 -21
- package/esm5/core/utils/zindex.util.js +0 -35
- package/esm5/core.js +0 -89
- package/esm5/gipi-components.js +0 -105
- package/esm5/gipisistemas-ng-core.js +0 -21
- package/esm5/public_api.js +0 -4
- package/esm5/shared/api/generate-id-component.js +0 -16
- package/esm5/shared/api/gipi-ng-config.js +0 -77
- package/esm5/shared/api/overlay-message.js +0 -1
- package/esm5/shared/api/throttle.js +0 -60
- package/esm5/shared/api/translation.js +0 -1
- package/esm5/shared/components/button/button.component.js +0 -111
- package/esm5/shared/components/card/card.component.js +0 -45
- package/esm5/shared/components/checkbox/checkbox.component.js +0 -85
- package/esm5/shared/components/dom/connected-overlay-scroll-handler.js +0 -30
- package/esm5/shared/components/dom/dom-handler.js +0 -573
- package/esm5/shared/components/icon/icon.component.js +0 -38
- package/esm5/shared/components/input/input.component.js +0 -242
- package/esm5/shared/components/input-currency/input-currency.component.js +0 -121
- package/esm5/shared/components/input-file/input-file.component.js +0 -165
- package/esm5/shared/components/loading/loading.component.js +0 -18
- package/esm5/shared/components/loading-overlay/loading-overlay.component.js +0 -23
- package/esm5/shared/components/overlay-panel/overlay-panel.component.js +0 -366
- package/esm5/shared/components/popover/popover-ref.js +0 -28
- package/esm5/shared/components/popover/popover.component.js +0 -35
- package/esm5/shared/components/popover/popover.service.js +0 -88
- package/esm5/shared/components/radio-group-entity/radio-group-entity.component.js +0 -80
- package/esm5/shared/components/radio-group-enum/radio-group-enum.component.js +0 -138
- package/esm5/shared/components/select-button/select-button.component.js +0 -195
- package/esm5/shared/components/select-entity/select-entity.component.js +0 -269
- package/esm5/shared/components/select-entity-paged/select-entity-paged.component.js +0 -453
- package/esm5/shared/components/select-entity-paged/shared/default-options.js +0 -35
- package/esm5/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.js +0 -72
- package/esm5/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.js +0 -62
- package/esm5/shared/components/select-entity-paged/shared/select-no-entries-found.directive.js +0 -23
- package/esm5/shared/components/select-entity-paged/shared/select-search/select-search.component.js +0 -590
- package/esm5/shared/components/select-entity-paged/shared/select-search-clear.directive.js +0 -21
- package/esm5/shared/components/select-enum/select-enum.component.js +0 -124
- package/esm5/shared/components/select-month-period/select-month-period.component.js +0 -91
- package/esm5/shared/components/slide-toggle/slide-toggle.component.js +0 -81
- package/esm5/shared/components/stepper/stepper.component.js +0 -36
- package/esm5/shared/components/tab/tab.component.js +0 -58
- package/esm5/shared/components/tab-group/tab-group.component.js +0 -125
- package/esm5/shared/components/table/table.component.js +0 -538
- package/esm5/shared/components/table-scrolled/table-scrolled.component.js +0 -107
- package/esm5/shared/components/textarea/textarea.component.js +0 -174
- package/esm5/shared/directives/dynamic-tab.directive.js +0 -19
- package/esm5/shared/directives/generic-template.directive.js +0 -31
- package/esm5/shared/directives/input-select-infinite-scroll.directive.js +0 -113
- package/esm5/shared/directives/lower-case.directive.js +0 -48
- package/esm5/shared/directives/phone-mask.directive.js +0 -61
- package/esm5/shared/directives/space-drop.directive.js +0 -48
- package/esm5/shared/directives/upper-case.directive.js +0 -48
- package/esm5/shared/gipi-components/abstract-form/abstract-form.component.js +0 -141
- package/esm5/shared/gipi-components/action-row/action-row.component.js +0 -33
- package/esm5/shared/gipi-components/badge/badge.component.js +0 -46
- package/esm5/shared/gipi-components/button/button.component.js +0 -257
- package/esm5/shared/gipi-components/chips/chips.component.js +0 -159
- package/esm5/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.js +0 -46
- package/esm5/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +0 -378
- package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.js +0 -42
- package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.js +0 -40
- package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.js +0 -291
- package/esm5/shared/gipi-components/datepicker/datepicker/datepicker.component.js +0 -252
- package/esm5/shared/gipi-components/datepicker/datepicker.module.js +0 -133
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/calendar-body.js +0 -349
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/calendar.js +0 -441
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.js +0 -339
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-input.js +0 -376
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.js +0 -46
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.js +0 -62
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.js +0 -167
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.js +0 -35
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.js +0 -586
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.js +0 -14
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.js +0 -327
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.js +0 -199
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.js +0 -52
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.js +0 -133
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker.js +0 -34
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/month-view.js +0 -384
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.js +0 -324
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.js +0 -118
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.js +0 -10
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.js +0 -300
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.js +0 -19
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.js +0 -82
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/year-view.js +0 -313
- package/esm5/shared/gipi-components/dom/connected-overlay-scroll-handler.js +0 -30
- package/esm5/shared/gipi-components/dom/dom-handler.js +0 -681
- package/esm5/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +0 -191
- package/esm5/shared/gipi-components/expansion-panel/expansion-panel.component.js +0 -83
- package/esm5/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.js +0 -255
- package/esm5/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.js +0 -93
- package/esm5/shared/gipi-components/footer/footer.component.js +0 -32
- package/esm5/shared/gipi-components/form-field/form-field.component.js +0 -276
- package/esm5/shared/gipi-components/helpful-tip/helpful-tip.component.js +0 -68
- package/esm5/shared/gipi-components/infinite-scroll/infinite-scroll.directive.js +0 -106
- package/esm5/shared/gipi-components/input-checkbox/input-checkbox.component.js +0 -118
- package/esm5/shared/gipi-components/input-currency/input-currency.component.js +0 -207
- package/esm5/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +0 -426
- package/esm5/shared/gipi-components/input-select/input-select.component.js +0 -698
- package/esm5/shared/gipi-components/input-select-enum/input-select-enum.component.js +0 -351
- package/esm5/shared/gipi-components/input-select-listbox/input-select-listbox.component.js +0 -437
- package/esm5/shared/gipi-components/input-select-paged/input-search/input-search.component.js +0 -397
- package/esm5/shared/gipi-components/input-select-paged/input-select-paged.component.js +0 -384
- package/esm5/shared/gipi-components/input-select-radio/input-select-radio.component.js +0 -286
- package/esm5/shared/gipi-components/layout-grid/col.directive.js +0 -164
- package/esm5/shared/gipi-components/layout-grid/row.directive.js +0 -127
- package/esm5/shared/gipi-components/layout-grid/services/breakpoint.service.js +0 -90
- package/esm5/shared/gipi-components/layout-grid/services/resize.service.js +0 -68
- package/esm5/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.js +0 -200
- package/esm5/shared/gipi-components/month-year-picker/mont-year-picker.module.js +0 -50
- package/esm5/shared/gipi-components/month-year-picker/month-year-picker.component.js +0 -505
- package/esm5/shared/gipi-components/notification/notification.component.js +0 -106
- package/esm5/shared/gipi-components/novelties/novelties.component.js +0 -111
- package/esm5/shared/gipi-components/overlay/overlay.component.js +0 -670
- package/esm5/shared/gipi-components/overlay/shared/overlay-service.js +0 -22
- package/esm5/shared/gipi-components/overlay/shared/overlay_options.js +0 -1
- package/esm5/shared/gipi-components/password-requeriments/password-requeriments.component.js +0 -157
- package/esm5/shared/gipi-components/popover/popover.component.js +0 -473
- package/esm5/shared/gipi-components/popover/shared/popover-animations.js +0 -29
- package/esm5/shared/gipi-components/popover/shared/popover-errors.js +0 -21
- package/esm5/shared/gipi-components/popover/shared/popover-interfaces.js +0 -1
- package/esm5/shared/gipi-components/popover/shared/popover-target.js +0 -20
- package/esm5/shared/gipi-components/popover/shared/popover-trigger.js +0 -529
- package/esm5/shared/gipi-components/popover/shared/popover-types.js +0 -1
- package/esm5/shared/gipi-components/radio-group/radio-group.component.js +0 -155
- package/esm5/shared/gipi-components/range-page/range-page.component.js +0 -283
- package/esm5/shared/gipi-components/range-slider/range-slider.component.js +0 -364
- package/esm5/shared/gipi-components/select/select.component.js +0 -222
- package/esm5/shared/gipi-components/select-button/select-button.component.js +0 -206
- package/esm5/shared/gipi-components/sidebar/container/container.component.js +0 -96
- package/esm5/shared/gipi-components/sidebar/sidenav/sidenav.component.js +0 -267
- package/esm5/shared/gipi-components/stepper/stepper.component.js +0 -43
- package/esm5/shared/gipi-components/table/components/table-body/table-body.component.js +0 -209
- package/esm5/shared/gipi-components/table/components/table-footer/table-footer.component.js +0 -33
- package/esm5/shared/gipi-components/table/components/table-header/table-header.component.js +0 -155
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.js +0 -123
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.js +0 -228
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.js +0 -1
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination.service.js +0 -108
- package/esm5/shared/gipi-components/table/components/table-pagination/table-pagination.component.js +0 -116
- package/esm5/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.js +0 -33
- package/esm5/shared/gipi-components/table/models/pipe-transform.model.js +0 -1
- package/esm5/shared/gipi-components/table/models/sort.model.js +0 -29
- package/esm5/shared/gipi-components/table/models/sorted-column.model.js +0 -2
- package/esm5/shared/gipi-components/table/models/table-column-builder.model.js +0 -106
- package/esm5/shared/gipi-components/table/models/table-column.model.js +0 -252
- package/esm5/shared/gipi-components/table/table.component.js +0 -161
- package/esm5/shared/gipi-components/table/types/sort-direction.type.js +0 -1
- package/esm5/shared/gipi-components/table/types/sort.type.js +0 -1
- package/esm5/shared/gipi-components/template/template.directive.js +0 -34
- package/esm5/shared/gipi-components/toolbar/toolbar.component.js +0 -56
- package/esm5/shared/gipi-components/top-nav/top-nav.component.js +0 -40
- package/esm5/shared/gipi-components/user-profile/user-profile.component.js +0 -115
- package/esm5/shared/material.module.js +0 -101
- package/esm5/shared/shared.module.js +0 -340
- package/esm5/shared.js +0 -36
- package/fesm2015/gipisistemas-ng-core.js +0 -25879
- package/fesm2015/gipisistemas-ng-core.js.map +0 -1
- package/fesm5/gipisistemas-ng-core.js +0 -27905
- package/fesm5/gipisistemas-ng-core.js.map +0 -1
- package/gipi-components.d.ts +0 -97
- package/gipisistemas-ng-core.d.ts +0 -20
- package/gipisistemas-ng-core.metadata.json +0 -1
- package/public_api.d.ts +0 -3
- package/shared/api/generate-id-component.d.ts +0 -3
- package/shared/api/gipi-ng-config.d.ts +0 -18
- package/shared/api/overlay-message.d.ts +0 -14
- package/shared/api/throttle.d.ts +0 -17
- package/shared/api/translation.d.ts +0 -45
- package/shared/components/button/button.component.d.ts +0 -26
- package/shared/components/card/card.component.d.ts +0 -10
- package/shared/components/checkbox/checkbox.component.d.ts +0 -20
- package/shared/components/dom/connected-overlay-scroll-handler.d.ts +0 -9
- package/shared/components/dom/dom-handler.d.ts +0 -74
- package/shared/components/icon/icon.component.d.ts +0 -9
- package/shared/components/input/input.component.d.ts +0 -52
- package/shared/components/input-currency/input-currency.component.d.ts +0 -29
- package/shared/components/input-file/input-file.component.d.ts +0 -28
- package/shared/components/loading/loading.component.d.ts +0 -4
- package/shared/components/loading-overlay/loading-overlay.component.d.ts +0 -6
- package/shared/components/overlay-panel/overlay-panel.component.d.ts +0 -67
- package/shared/components/popover/popover-ref.d.ts +0 -17
- package/shared/components/popover/popover.component.d.ts +0 -10
- package/shared/components/popover/popover.service.d.ts +0 -23
- package/shared/components/radio-group-entity/radio-group-entity.component.d.ts +0 -19
- package/shared/components/radio-group-enum/radio-group-enum.component.d.ts +0 -30
- package/shared/components/select-button/select-button.component.d.ts +0 -35
- package/shared/components/select-entity/select-entity.component.d.ts +0 -52
- package/shared/components/select-entity-paged/select-entity-paged.component.d.ts +0 -78
- package/shared/components/select-entity-paged/shared/default-options.d.ts +0 -25
- package/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.d.ts +0 -18
- package/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.d.ts +0 -16
- package/shared/components/select-entity-paged/shared/select-no-entries-found.directive.d.ts +0 -11
- package/shared/components/select-entity-paged/shared/select-search/select-search.component.d.ts +0 -119
- package/shared/components/select-entity-paged/shared/select-search-clear.directive.d.ts +0 -9
- package/shared/components/select-enum/select-enum.component.d.ts +0 -29
- package/shared/components/select-month-period/select-month-period.component.d.ts +0 -20
- package/shared/components/slide-toggle/slide-toggle.component.d.ts +0 -19
- package/shared/components/stepper/stepper.component.d.ts +0 -7
- package/shared/components/tab/tab.component.d.ts +0 -14
- package/shared/components/tab-group/tab-group.component.d.ts +0 -22
- package/shared/components/table/table.component.d.ts +0 -86
- package/shared/components/table-scrolled/table-scrolled.component.d.ts +0 -31
- package/shared/components/textarea/textarea.component.d.ts +0 -35
- package/shared/directives/dynamic-tab.directive.d.ts +0 -5
- package/shared/directives/generic-template.directive.d.ts +0 -8
- package/shared/directives/input-select-infinite-scroll.directive.d.ts +0 -35
- package/shared/directives/lower-case.directive.d.ts +0 -9
- package/shared/directives/phone-mask.directive.d.ts +0 -8
- package/shared/directives/space-drop.directive.d.ts +0 -9
- package/shared/directives/upper-case.directive.d.ts +0 -9
- package/shared/gipi-components/abstract-form/abstract-form.component.d.ts +0 -21
- package/shared/gipi-components/action-row/action-row.component.d.ts +0 -5
- package/shared/gipi-components/badge/badge.component.d.ts +0 -8
- package/shared/gipi-components/button/button.component.d.ts +0 -56
- package/shared/gipi-components/chips/chips.component.d.ts +0 -37
- package/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.d.ts +0 -11
- package/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.d.ts +0 -71
- package/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.d.ts +0 -11
- package/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.d.ts +0 -6
- package/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.d.ts +0 -40
- package/shared/gipi-components/datepicker/datepicker/datepicker.component.d.ts +0 -49
- package/shared/gipi-components/datepicker/datepicker.module.d.ts +0 -2
- package/shared/gipi-components/datepicker/mat-datepicker/calendar-body.d.ts +0 -143
- package/shared/gipi-components/datepicker/mat-datepicker/calendar.d.ts +0 -152
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.d.ts +0 -102
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-input.d.ts +0 -124
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.d.ts +0 -21
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.d.ts +0 -45
- package/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.d.ts +0 -106
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.d.ts +0 -16
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.d.ts +0 -209
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.d.ts +0 -9
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.d.ts +0 -136
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.d.ts +0 -68
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.d.ts +0 -38
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.d.ts +0 -39
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker.d.ts +0 -11
- package/shared/gipi-components/datepicker/mat-datepicker/month-view.d.ts +0 -120
- package/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.d.ts +0 -85
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.d.ts +0 -225
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.d.ts +0 -20
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.d.ts +0 -76
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.d.ts +0 -9
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.d.ts +0 -33
- package/shared/gipi-components/datepicker/mat-datepicker/year-view.d.ts +0 -97
- package/shared/gipi-components/dom/connected-overlay-scroll-handler.d.ts +0 -9
- package/shared/gipi-components/dom/dom-handler.d.ts +0 -85
- package/shared/gipi-components/dropdown-menu/dropdown-menu.component.d.ts +0 -36
- package/shared/gipi-components/expansion-panel/expansion-panel.component.d.ts +0 -16
- package/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.d.ts +0 -43
- package/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.d.ts +0 -13
- package/shared/gipi-components/footer/footer.component.d.ts +0 -5
- package/shared/gipi-components/form-field/form-field.component.d.ts +0 -61
- package/shared/gipi-components/helpful-tip/helpful-tip.component.d.ts +0 -13
- package/shared/gipi-components/infinite-scroll/infinite-scroll.directive.d.ts +0 -27
- package/shared/gipi-components/input-checkbox/input-checkbox.component.d.ts +0 -28
- package/shared/gipi-components/input-currency/input-currency.component.d.ts +0 -48
- package/shared/gipi-components/input-monthpicker/input-monthpicker.component.d.ts +0 -89
- package/shared/gipi-components/input-select/input-select.component.d.ts +0 -120
- package/shared/gipi-components/input-select-enum/input-select-enum.component.d.ts +0 -65
- package/shared/gipi-components/input-select-listbox/input-select-listbox.component.d.ts +0 -85
- package/shared/gipi-components/input-select-paged/input-search/input-search.component.d.ts +0 -77
- package/shared/gipi-components/input-select-paged/input-select-paged.component.d.ts +0 -66
- package/shared/gipi-components/input-select-radio/input-select-radio.component.d.ts +0 -53
- package/shared/gipi-components/layout-grid/col.directive.d.ts +0 -38
- package/shared/gipi-components/layout-grid/row.directive.d.ts +0 -28
- package/shared/gipi-components/layout-grid/services/breakpoint.service.d.ts +0 -30
- package/shared/gipi-components/layout-grid/services/resize.service.d.ts +0 -17
- package/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.d.ts +0 -37
- package/shared/gipi-components/month-year-picker/mont-year-picker.module.d.ts +0 -2
- package/shared/gipi-components/month-year-picker/month-year-picker.component.d.ts +0 -104
- package/shared/gipi-components/notification/notification.component.d.ts +0 -21
- package/shared/gipi-components/novelties/novelties.component.d.ts +0 -22
- package/shared/gipi-components/overlay/overlay.component.d.ts +0 -113
- package/shared/gipi-components/overlay/shared/overlay-service.d.ts +0 -6
- package/shared/gipi-components/overlay/shared/overlay_options.d.ts +0 -50
- package/shared/gipi-components/password-requeriments/password-requeriments.component.d.ts +0 -27
- package/shared/gipi-components/popover/popover.component.d.ts +0 -133
- package/shared/gipi-components/popover/shared/popover-animations.d.ts +0 -13
- package/shared/gipi-components/popover/shared/popover-errors.d.ts +0 -14
- package/shared/gipi-components/popover/shared/popover-interfaces.d.ts +0 -43
- package/shared/gipi-components/popover/shared/popover-target.d.ts +0 -5
- package/shared/gipi-components/popover/shared/popover-trigger.d.ts +0 -140
- package/shared/gipi-components/popover/shared/popover-types.d.ts +0 -4
- package/shared/gipi-components/radio-group/radio-group.component.d.ts +0 -33
- package/shared/gipi-components/range-page/range-page.component.d.ts +0 -55
- package/shared/gipi-components/range-slider/range-slider.component.d.ts +0 -57
- package/shared/gipi-components/select/select.component.d.ts +0 -45
- package/shared/gipi-components/select-button/select-button.component.d.ts +0 -39
- package/shared/gipi-components/sidebar/container/container.component.d.ts +0 -15
- package/shared/gipi-components/sidebar/sidenav/sidenav.component.d.ts +0 -40
- package/shared/gipi-components/stepper/stepper.component.d.ts +0 -8
- package/shared/gipi-components/table/components/table-body/table-body.component.d.ts +0 -36
- package/shared/gipi-components/table/components/table-footer/table-footer.component.d.ts +0 -5
- package/shared/gipi-components/table/components/table-header/table-header.component.d.ts +0 -28
- package/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.d.ts +0 -40
- package/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.d.ts +0 -81
- package/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.d.ts +0 -24
- package/shared/gipi-components/table/components/table-pagination/shared/pagination.service.d.ts +0 -45
- package/shared/gipi-components/table/components/table-pagination/table-pagination.component.d.ts +0 -21
- package/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.d.ts +0 -5
- package/shared/gipi-components/table/models/pipe-transform.model.d.ts +0 -3
- package/shared/gipi-components/table/models/sort.model.d.ts +0 -10
- package/shared/gipi-components/table/models/sorted-column.model.d.ts +0 -6
- package/shared/gipi-components/table/models/table-column-builder.model.d.ts +0 -52
- package/shared/gipi-components/table/models/table-column.model.d.ts +0 -74
- package/shared/gipi-components/table/table.component.d.ts +0 -37
- package/shared/gipi-components/table/types/sort-direction.type.d.ts +0 -1
- package/shared/gipi-components/table/types/sort.type.d.ts +0 -1
- package/shared/gipi-components/template/template.directive.d.ts +0 -8
- package/shared/gipi-components/toolbar/toolbar.component.d.ts +0 -11
- package/shared/gipi-components/top-nav/top-nav.component.d.ts +0 -8
- package/shared/gipi-components/user-profile/user-profile.component.d.ts +0 -24
- package/shared/material.module.d.ts +0 -2
- package/shared/shared.module.d.ts +0 -6
- package/shared.d.ts +0 -35
@@ -1,471 +0,0 @@
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
2
|
-
import { Component } from '@angular/core';
|
3
|
-
import { ActivatedRoute } from '@angular/router';
|
4
|
-
import { INJECTOR } from '../../../shared/shared.module';
|
5
|
-
import { APP_MESSAGES } from '../../app.messages';
|
6
|
-
import { ArrayUtil } from '../../utils/array.util';
|
7
|
-
import { ObjectUtil } from '../../utils/object.util';
|
8
|
-
import { StringUtil } from '../../utils/string.util';
|
9
|
-
import { GIPIPageModel } from '../models/page.model';
|
10
|
-
import { GIPISortModel } from '../models/sort.model';
|
11
|
-
import { GIPIAbstractCrudService } from '../services/abstract-crud.service';
|
12
|
-
import { GIPIBaseService } from '../services/base.service';
|
13
|
-
import { GIPIAbstractComponent } from './abstract.component';
|
14
|
-
let GIPIAbstractFindComponent = class GIPIAbstractFindComponent extends GIPIAbstractComponent {
|
15
|
-
constructor(abstractCrudService, baseService, activatedRoute) {
|
16
|
-
super(baseService, activatedRoute);
|
17
|
-
this.abstractCrudService = abstractCrudService;
|
18
|
-
this.baseService = baseService;
|
19
|
-
this.activatedRoute = activatedRoute;
|
20
|
-
this._filter = null;
|
21
|
-
this._page = null;
|
22
|
-
this._columns = [];
|
23
|
-
this._appliedFilters = [];
|
24
|
-
}
|
25
|
-
set filter(value) {
|
26
|
-
this._filter = value;
|
27
|
-
}
|
28
|
-
get filter() {
|
29
|
-
return this._filter;
|
30
|
-
}
|
31
|
-
set page(value) {
|
32
|
-
this._page = value;
|
33
|
-
}
|
34
|
-
get page() {
|
35
|
-
return this._page;
|
36
|
-
}
|
37
|
-
set tablePageEventDTO(value) {
|
38
|
-
this._tablePageEventDTO = value;
|
39
|
-
}
|
40
|
-
get tablePageEventDTO() {
|
41
|
-
return this._tablePageEventDTO;
|
42
|
-
}
|
43
|
-
set columns(value) {
|
44
|
-
this._columns = value;
|
45
|
-
}
|
46
|
-
get columns() {
|
47
|
-
return this._columns;
|
48
|
-
}
|
49
|
-
set appliedFilters(value) {
|
50
|
-
this._appliedFilters = value;
|
51
|
-
}
|
52
|
-
get appliedFilters() {
|
53
|
-
return this._appliedFilters;
|
54
|
-
}
|
55
|
-
ngOnInit() {
|
56
|
-
super.ngOnInit();
|
57
|
-
if (ObjectUtil.isNull(this.basePermissionList)) {
|
58
|
-
throw new Error('basePermissionList is required');
|
59
|
-
}
|
60
|
-
this._onInitFilter();
|
61
|
-
this.columns = this.createTableColumns();
|
62
|
-
}
|
63
|
-
ngAfterViewInit() {
|
64
|
-
super.ngAfterViewInit();
|
65
|
-
}
|
66
|
-
ngOnDestroy() {
|
67
|
-
super.ngOnDestroy();
|
68
|
-
}
|
69
|
-
newPage() {
|
70
|
-
return new GIPIPageModel();
|
71
|
-
}
|
72
|
-
createTableSorts() {
|
73
|
-
return [];
|
74
|
-
}
|
75
|
-
preDelete(id) { }
|
76
|
-
existInAppliedFilters(key) {
|
77
|
-
return (!ArrayUtil.isEmpty(this.appliedFilters) &&
|
78
|
-
(this.appliedFilters.findIndex(e => e.key === key) >= 0));
|
79
|
-
}
|
80
|
-
/** @Internal */
|
81
|
-
_onInitFilter() {
|
82
|
-
this.page = this.newPage();
|
83
|
-
this.filter = this.newFilter();
|
84
|
-
if (!ObjectUtil.isNull(this.filter)) {
|
85
|
-
this.setAppliedFilters();
|
86
|
-
}
|
87
|
-
const filterSessionStorage = this.baseService.sessionStorageService.get('filter');
|
88
|
-
if (!ObjectUtil.isNull(filterSessionStorage)) {
|
89
|
-
this.handleFilterSessionStorage();
|
90
|
-
}
|
91
|
-
}
|
92
|
-
findAll(pageEvent) {
|
93
|
-
try {
|
94
|
-
this.loading = true;
|
95
|
-
this.page = this.newPage();
|
96
|
-
if (ObjectUtil.isNull(this.filter)) {
|
97
|
-
this.filter = this.newFilter();
|
98
|
-
}
|
99
|
-
// if (ObjectUtil.isNull(pageEvent) && !ObjectUtil.isNull(this.tablePageEventDTO)) {
|
100
|
-
// pageEvent = this.tablePageEventDTO;
|
101
|
-
// }
|
102
|
-
if (pageEvent) {
|
103
|
-
this.tablePageEventDTO = pageEvent;
|
104
|
-
this.filter.pageNumber = pageEvent.pageIndex;
|
105
|
-
this.filter.pageSize = pageEvent.pageSize;
|
106
|
-
this.filter.offset = pageEvent.pageIndex * pageEvent.pageSize;
|
107
|
-
if (pageEvent.sort) {
|
108
|
-
this.filter.sorts = [
|
109
|
-
new GIPISortModel(pageEvent.sort.active, StringUtil.isEmpty(pageEvent.sort.direction) ? 'DESC' : pageEvent.sort.direction.toUpperCase())
|
110
|
-
];
|
111
|
-
}
|
112
|
-
}
|
113
|
-
else {
|
114
|
-
this.filter.pageNumber = 0;
|
115
|
-
this.filter.offset = 0;
|
116
|
-
this.filter.pageSize = 10;
|
117
|
-
}
|
118
|
-
this.abstractCrudService.findAll(this.filter).toPromise().then(page => {
|
119
|
-
this.page = page;
|
120
|
-
this.setAppliedFilters();
|
121
|
-
this.loading = false;
|
122
|
-
}, error => {
|
123
|
-
this.loading = false;
|
124
|
-
throw new Error(error);
|
125
|
-
});
|
126
|
-
}
|
127
|
-
catch (e) {
|
128
|
-
this.loading = false;
|
129
|
-
throw new Error(e);
|
130
|
-
}
|
131
|
-
}
|
132
|
-
newRegister(permission) {
|
133
|
-
if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {
|
134
|
-
this.setFilterSessionStorage();
|
135
|
-
this.navigateByUrl(this.getPath(), [this.getPath(), 'new'], true);
|
136
|
-
}
|
137
|
-
else {
|
138
|
-
if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {
|
139
|
-
permission = this.basePermissionList.MAKE;
|
140
|
-
}
|
141
|
-
if (!this.hasPermission(permission)) {
|
142
|
-
this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);
|
143
|
-
return;
|
144
|
-
}
|
145
|
-
this.setFilterSessionStorage();
|
146
|
-
this.navigateByUrl(this.getPath(), [this.getPath(), 'new'], true);
|
147
|
-
}
|
148
|
-
}
|
149
|
-
editRegister(id, permission) {
|
150
|
-
id = this.handleEntityId(id);
|
151
|
-
if (ObjectUtil.isNull(id)) {
|
152
|
-
return;
|
153
|
-
}
|
154
|
-
if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {
|
155
|
-
this.setFilterSessionStorage();
|
156
|
-
this.navigateByUrl(this.getPath(), [this.getPath(), 'edit'], true);
|
157
|
-
}
|
158
|
-
else {
|
159
|
-
if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {
|
160
|
-
permission = this.basePermissionList.UPDATE;
|
161
|
-
}
|
162
|
-
if (!this.hasPermission(permission)) {
|
163
|
-
this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);
|
164
|
-
return;
|
165
|
-
}
|
166
|
-
this.setFilterSessionStorage();
|
167
|
-
this.navigateByUrl(this.getPath(), [this.getPath(), 'edit', id], true);
|
168
|
-
}
|
169
|
-
}
|
170
|
-
deleteRegister(id, permission, fetchAgain = true) {
|
171
|
-
try {
|
172
|
-
id = this.handleEntityId(id);
|
173
|
-
if (ObjectUtil.isNull(id)) {
|
174
|
-
return;
|
175
|
-
}
|
176
|
-
if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {
|
177
|
-
this._deleteRegister(id, fetchAgain);
|
178
|
-
}
|
179
|
-
else {
|
180
|
-
if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {
|
181
|
-
permission = this.basePermissionList.DELETE;
|
182
|
-
}
|
183
|
-
if (!this.hasPermission(permission)) {
|
184
|
-
this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);
|
185
|
-
return;
|
186
|
-
}
|
187
|
-
this._deleteRegister(id, fetchAgain);
|
188
|
-
}
|
189
|
-
}
|
190
|
-
catch (e) {
|
191
|
-
this.loading = false;
|
192
|
-
if (this.isListing()) {
|
193
|
-
this.clear();
|
194
|
-
}
|
195
|
-
throw new Error(e);
|
196
|
-
}
|
197
|
-
}
|
198
|
-
/** @Internal */
|
199
|
-
_deleteRegister(id, fetchAgain = true) {
|
200
|
-
try {
|
201
|
-
this.baseService.confirmationService.confirm({
|
202
|
-
title: 'Confirmação',
|
203
|
-
message: INJECTOR.get(APP_MESSAGES).DELETE_CONFIRMATION,
|
204
|
-
accept: () => {
|
205
|
-
this.setFilterSessionStorage();
|
206
|
-
this.loading = true;
|
207
|
-
this.page = this.newPage();
|
208
|
-
this.preDelete(id);
|
209
|
-
this.abstractCrudService.delete(id).toPromise().then(() => {
|
210
|
-
if (fetchAgain) {
|
211
|
-
this.findAll();
|
212
|
-
}
|
213
|
-
this.loading = false;
|
214
|
-
this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);
|
215
|
-
}, error => {
|
216
|
-
throw new Error(error);
|
217
|
-
});
|
218
|
-
}
|
219
|
-
});
|
220
|
-
}
|
221
|
-
catch (e) {
|
222
|
-
this.loading = false;
|
223
|
-
throw new Error(e);
|
224
|
-
}
|
225
|
-
}
|
226
|
-
deleteAllRegister(idList, permission, fetchAgain = true) {
|
227
|
-
try {
|
228
|
-
idList = this.handleEntityIdList(idList);
|
229
|
-
if (ObjectUtil.isNull(idList) || ArrayUtil.isEmpty(idList)) {
|
230
|
-
return;
|
231
|
-
}
|
232
|
-
if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {
|
233
|
-
this._deleteAllRegister(idList, fetchAgain);
|
234
|
-
}
|
235
|
-
else {
|
236
|
-
if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {
|
237
|
-
permission = this.basePermissionList.DELETE;
|
238
|
-
}
|
239
|
-
if (!this.hasPermission(permission)) {
|
240
|
-
this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);
|
241
|
-
return;
|
242
|
-
}
|
243
|
-
this._deleteAllRegister(idList, fetchAgain);
|
244
|
-
}
|
245
|
-
}
|
246
|
-
catch (e) {
|
247
|
-
this.loading = false;
|
248
|
-
if (this.isListing()) {
|
249
|
-
this.clear();
|
250
|
-
}
|
251
|
-
throw new Error(e);
|
252
|
-
}
|
253
|
-
}
|
254
|
-
/** @Internal */
|
255
|
-
_deleteAllRegister(idList, fetchAgain = true) {
|
256
|
-
try {
|
257
|
-
this.baseService.confirmationService.confirm({
|
258
|
-
title: 'Confirmação',
|
259
|
-
message: INJECTOR.get(APP_MESSAGES).DELETE_CONFIRMATION,
|
260
|
-
accept: () => {
|
261
|
-
this.setFilterSessionStorage();
|
262
|
-
this.loading = true;
|
263
|
-
this.page = this.newPage();
|
264
|
-
this.preDelete();
|
265
|
-
this.abstractCrudService.deleteAll(idList).toPromise().then(() => {
|
266
|
-
if (fetchAgain) {
|
267
|
-
this.findAll();
|
268
|
-
}
|
269
|
-
this.loading = false;
|
270
|
-
this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);
|
271
|
-
}, error => {
|
272
|
-
throw new Error(error);
|
273
|
-
});
|
274
|
-
}
|
275
|
-
});
|
276
|
-
}
|
277
|
-
catch (e) {
|
278
|
-
this.loading = false;
|
279
|
-
throw new Error(e);
|
280
|
-
}
|
281
|
-
}
|
282
|
-
viewRegister(id, permission) {
|
283
|
-
id = this.handleEntityId(id);
|
284
|
-
if (ObjectUtil.isNull(id)) {
|
285
|
-
return;
|
286
|
-
}
|
287
|
-
if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {
|
288
|
-
this.setFilterSessionStorage();
|
289
|
-
this.navigateByUrl(this.getPath(), [this.getPath(), 'view', id], true);
|
290
|
-
}
|
291
|
-
else {
|
292
|
-
if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {
|
293
|
-
permission = this.basePermissionList.READ;
|
294
|
-
}
|
295
|
-
if (!this.hasPermission(permission)) {
|
296
|
-
this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);
|
297
|
-
return;
|
298
|
-
}
|
299
|
-
this.setFilterSessionStorage();
|
300
|
-
this.navigateByUrl(this.getPath(), [this.getPath(), 'view', id], true);
|
301
|
-
}
|
302
|
-
}
|
303
|
-
editOrViewRegister(id, permission) {
|
304
|
-
if (this.hasPermission(permission)) {
|
305
|
-
this.editRegister(id, permission);
|
306
|
-
}
|
307
|
-
else {
|
308
|
-
this.viewRegister(id, permission);
|
309
|
-
}
|
310
|
-
}
|
311
|
-
enableOrDisableRegister(action, id, permission, fetchAgain = true) {
|
312
|
-
try {
|
313
|
-
id = this.handleEntityId(id);
|
314
|
-
if (ObjectUtil.isNull(id)) {
|
315
|
-
return;
|
316
|
-
}
|
317
|
-
if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {
|
318
|
-
this._enableOrDisableRegister(action, id, fetchAgain);
|
319
|
-
}
|
320
|
-
else {
|
321
|
-
if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {
|
322
|
-
permission = this.basePermissionList.UPDATE;
|
323
|
-
}
|
324
|
-
if (!this.hasPermission(permission)) {
|
325
|
-
this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);
|
326
|
-
return;
|
327
|
-
}
|
328
|
-
this._enableOrDisableRegister(action, id, fetchAgain);
|
329
|
-
}
|
330
|
-
}
|
331
|
-
catch (e) {
|
332
|
-
this.loading = false;
|
333
|
-
if (this.isListing()) {
|
334
|
-
this.clear();
|
335
|
-
}
|
336
|
-
throw new Error(e);
|
337
|
-
}
|
338
|
-
}
|
339
|
-
/** @Internal */
|
340
|
-
_enableOrDisableRegister(action, id, fetchAgain = true) {
|
341
|
-
try {
|
342
|
-
this.baseService.confirmationService.confirm({
|
343
|
-
title: 'Confirmação',
|
344
|
-
message: `Deseja realmente ${(action === 'DISABLE') ? 'inativar' : 'ativar'} este registro?`,
|
345
|
-
accept: () => {
|
346
|
-
this.setFilterSessionStorage();
|
347
|
-
this.loading = true;
|
348
|
-
this.page = this.newPage();
|
349
|
-
this.abstractCrudService.enableOrDisable(id, action).toPromise().then(() => {
|
350
|
-
if (fetchAgain) {
|
351
|
-
this.findAll();
|
352
|
-
}
|
353
|
-
this.loading = false;
|
354
|
-
this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);
|
355
|
-
}, error => {
|
356
|
-
throw new Error(error);
|
357
|
-
});
|
358
|
-
}
|
359
|
-
});
|
360
|
-
}
|
361
|
-
catch (e) {
|
362
|
-
this.loading = false;
|
363
|
-
throw new Error(e);
|
364
|
-
}
|
365
|
-
}
|
366
|
-
enableAndDisableAllRegister(action, idList, permission, fetchAgain = true) {
|
367
|
-
try {
|
368
|
-
idList = this.handleEntityIdList(idList);
|
369
|
-
if (ObjectUtil.isNull(idList) || ArrayUtil.isEmpty(idList)) {
|
370
|
-
return;
|
371
|
-
}
|
372
|
-
if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {
|
373
|
-
this._enableAndDisableAllRegister(action, idList, fetchAgain);
|
374
|
-
}
|
375
|
-
else {
|
376
|
-
if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {
|
377
|
-
permission = this.basePermissionList.UPDATE;
|
378
|
-
}
|
379
|
-
if (!this.hasPermission(permission)) {
|
380
|
-
this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);
|
381
|
-
return;
|
382
|
-
}
|
383
|
-
this._enableAndDisableAllRegister(action, idList, fetchAgain);
|
384
|
-
}
|
385
|
-
}
|
386
|
-
catch (e) {
|
387
|
-
this.loading = false;
|
388
|
-
if (this.isListing()) {
|
389
|
-
this.clear();
|
390
|
-
}
|
391
|
-
throw new Error(e);
|
392
|
-
}
|
393
|
-
}
|
394
|
-
/** @Internal */
|
395
|
-
_enableAndDisableAllRegister(action, idList, fetchAgain = true) {
|
396
|
-
try {
|
397
|
-
this.baseService.confirmationService.confirm({
|
398
|
-
title: 'Confirmação',
|
399
|
-
message: `Deseja realmente ${(action === 'DISABLE') ? 'inativar' : 'ativar'} os registros selecionados?`,
|
400
|
-
accept: () => {
|
401
|
-
this.setFilterSessionStorage();
|
402
|
-
this.loading = true;
|
403
|
-
this.page = this.newPage();
|
404
|
-
this.abstractCrudService.enableOrDisableAll(idList, action).toPromise().then(() => {
|
405
|
-
if (fetchAgain) {
|
406
|
-
this.findAll();
|
407
|
-
}
|
408
|
-
this.loading = false;
|
409
|
-
this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);
|
410
|
-
}, error => {
|
411
|
-
throw new Error(error);
|
412
|
-
});
|
413
|
-
}
|
414
|
-
});
|
415
|
-
}
|
416
|
-
catch (e) {
|
417
|
-
this.loading = false;
|
418
|
-
throw new Error(e);
|
419
|
-
}
|
420
|
-
}
|
421
|
-
clear() {
|
422
|
-
this.baseService.sessionStorageService.remove('filter');
|
423
|
-
this.page = this.newPage();
|
424
|
-
this.filter = this.newFilter();
|
425
|
-
this.clearAppliedFilters();
|
426
|
-
this.findAll();
|
427
|
-
}
|
428
|
-
handleEntityId(id) {
|
429
|
-
if (!this.UUIDIsValid(id)) {
|
430
|
-
throw new Error('O identificador do registro não é válido');
|
431
|
-
}
|
432
|
-
if (ObjectUtil.isNull(id) && !ObjectUtil.isNull(this.page) && !ArrayUtil.isEmpty(this.page.content)) {
|
433
|
-
const firstSeletected = this.page.content.filter(c => c.selected)[0];
|
434
|
-
if (ObjectUtil.isNull(firstSeletected)) {
|
435
|
-
return null;
|
436
|
-
}
|
437
|
-
return firstSeletected.id;
|
438
|
-
}
|
439
|
-
return id;
|
440
|
-
}
|
441
|
-
handleEntityIdList(idList) {
|
442
|
-
if (!ArrayUtil.isEmpty(idList)) {
|
443
|
-
for (let i = 0; i < idList.length; i++) {
|
444
|
-
if (!this.UUIDIsValid(idList[i])) {
|
445
|
-
throw new Error('O identificador do registro não é válido');
|
446
|
-
}
|
447
|
-
}
|
448
|
-
}
|
449
|
-
if (ArrayUtil.isEmpty(idList) && !ObjectUtil.isNull(this.page) && !ArrayUtil.isEmpty(this.page.content)) {
|
450
|
-
const listSelected = this.page.content.filter(p => p.selected).map(p => p.id);
|
451
|
-
if (ArrayUtil.isEmpty(listSelected)) {
|
452
|
-
return null;
|
453
|
-
}
|
454
|
-
return listSelected;
|
455
|
-
}
|
456
|
-
return idList;
|
457
|
-
}
|
458
|
-
};
|
459
|
-
GIPIAbstractFindComponent.ctorParameters = () => [
|
460
|
-
{ type: GIPIAbstractCrudService },
|
461
|
-
{ type: GIPIBaseService },
|
462
|
-
{ type: ActivatedRoute }
|
463
|
-
];
|
464
|
-
GIPIAbstractFindComponent = __decorate([
|
465
|
-
Component({ template: '' }),
|
466
|
-
__metadata("design:paramtypes", [GIPIAbstractCrudService,
|
467
|
-
GIPIBaseService,
|
468
|
-
ActivatedRoute])
|
469
|
-
], GIPIAbstractFindComponent);
|
470
|
-
export { GIPIAbstractFindComponent };
|
471
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmluZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJjb3JlL2dpcGktY29tcG9uZW50cy9jb21wb25lbnRzL2Fic3RyYWN0LWZpbmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHN0QsSUFBc0IseUJBQXlCLEdBQS9DLE1BQXNCLHlCQUFzRyxTQUFRLHFCQUFxQjtJQTBDckosWUFDYyxtQkFBOEQsRUFDOUQsV0FBNEIsRUFDNUIsY0FBOEI7UUFFeEMsS0FBSyxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUp6Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTJDO1FBQzlELGdCQUFXLEdBQVgsV0FBVyxDQUFp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R0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzlFLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDakMsT0FBTyxJQUFJLENBQUM7YUFDZjtZQUVELE9BQU8sWUFBWSxDQUFDO1NBQ3ZCO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztDQUVKLENBQUE7O1lBdmRzQyx1QkFBdUI7WUFDL0IsZUFBZTtZQUNaLGNBQWM7O0FBN0MxQix5QkFBeUI7SUFEOUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDO3FDQTRDVyx1QkFBdUI7UUFDL0IsZUFBZTtRQUNaLGNBQWM7R0E3QzFCLHlCQUF5QixDQWtnQjlDO1NBbGdCcUIseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBJTkpFQ1RPUiB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IEFQUF9NRVNTQUdFUyB9IGZyb20gJy4uLy4uL2FwcC5tZXNzYWdlcyc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtbkRUTyB9IGZyb20gJy4uLy4uL21vZGVscy9kdG8vdGFibGUtY29sdW1uLmR0byc7XG5pbXBvcnQgeyBUYWJsZVBhZ2VFdmVudERUTyB9IGZyb20gJy4uLy4uL21vZGVscy9kdG8vdGFibGUtcGFnZS1ldmVudC5kdG8nO1xuaW1wb3J0IHsgQXJyYXlVdGlsIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXJyYXkudXRpbCc7XG5pbXBvcnQgeyBPYmplY3RVdGlsIH0gZnJvbSAnLi4vLi4vdXRpbHMvb2JqZWN0LnV0aWwnO1xuaW1wb3J0IHsgU3RyaW5nVXRpbCB9IGZyb20gJy4uLy4uL3V0aWxzL3N0cmluZy51dGlsJztcbmltcG9ydCB7IEdJUElBYnN0cmFjdEZpbHRlck1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2Fic3RyYWN0LWZpbHRlci5tb2RlbCc7XG5pbXBvcnQgeyBHSVBJQWJzdHJhY3RNb2RlbCB9IGZyb20gJy4uL21vZGVscy9hYnN0cmFjdC5tb2RlbCc7XG5pbXBvcnQgeyBHSVBJQXBwbGllZEZpbHRlciB9IGZyb20gJy4uL21vZGVscy9hcHBsaWVkLWZpbHRlci5tb2RlbCc7XG5pbXBvcnQgeyBHSVBJUGFnZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3BhZ2UubW9kZWwnO1xuaW1wb3J0IHsgR0lQSVNvcnRNb2RlbCB9IGZyb20gJy4uL21vZGVscy9zb3J0Lm1vZGVsJztcbmltcG9ydCB7IEdJUElBYnN0cmFjdENydWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWJzdHJhY3QtY3J1ZC5zZXJ2aWNlJztcbmltcG9ydCB7IEdJUElCYXNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Jhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBHSVBJVXVpZCB9IGZyb20gJy4uL3R5cGVzL3V1aWQudHlwZSc7XG5pbXBvcnQgeyBHSVBJQWJzdHJhY3RDb21wb25lbnQgfSBmcm9tICcuL2Fic3RyYWN0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoeyB0ZW1wbGF0ZTogJycgfSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHSVBJQWJzdHJhY3RGaW5kQ29tcG9uZW50PFRFbnRpdHkgZXh0ZW5kcyBHSVBJQWJzdHJhY3RNb2RlbCwgVEZpbHRlciBleHRlbmRzIEdJUElBYnN0cmFjdEZpbHRlck1vZGVsPiBleHRlbmRzIEdJUElBYnN0cmFjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIHByaXZhdGUgX2ZpbHRlcjogVEZpbHRlciA9IG51bGw7XG4gICAgcHVibGljIHNldCBmaWx0ZXIodmFsdWU6IFRGaWx0ZXIpIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyID0gdmFsdWU7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgZmlsdGVyKCk6IFRGaWx0ZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhZ2U6IEdJUElQYWdlTW9kZWw8VEVudGl0eT4gPSBudWxsO1xuICAgIHB1YmxpYyBzZXQgcGFnZSh2YWx1ZTogR0lQSVBhZ2VNb2RlbDxURW50aXR5Pikge1xuICAgICAgICB0aGlzLl9wYWdlID0gdmFsdWU7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgcGFnZSgpOiBHSVBJUGFnZU1vZGVsPFRFbnRpdHk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhZ2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdGFibGVQYWdlRXZlbnREVE86IFRhYmxlUGFnZUV2ZW50RFRPO1xuICAgIHB1YmxpYyBzZXQgdGFibGVQYWdlRXZlbnREVE8odmFsdWU6IFRhYmxlUGFnZUV2ZW50RFRPKSB7XG4gICAgICAgIHRoaXMuX3RhYmxlUGFnZUV2ZW50RFRPID0gdmFsdWU7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgdGFibGVQYWdlRXZlbnREVE8oKTogVGFibGVQYWdlRXZlbnREVE8ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGVQYWdlRXZlbnREVE87XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY29sdW1uczogVGFibGVDb2x1bW5EVE9bXSA9IFtdO1xuICAgIHB1YmxpYyBzZXQgY29sdW1ucyh2YWx1ZTogVGFibGVDb2x1bW5EVE9bXSkge1xuICAgICAgICB0aGlzLl9jb2x1bW5zID0gdmFsdWU7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgY29sdW1ucygpOiBUYWJsZUNvbHVtbkRUT1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXBwbGllZEZpbHRlcnM6IEdJUElBcHBsaWVkRmlsdGVyPGFueT5bXSA9IFtdO1xuICAgIHB1YmxpYyBzZXQgYXBwbGllZEZpbHRlcnModmFsdWU6IEdJUElBcHBsaWVkRmlsdGVyPGFueT5bXSkge1xuICAgICAgICB0aGlzLl9hcHBsaWVkRmlsdGVycyA9IHZhbHVlO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IGFwcGxpZWRGaWx0ZXJzKCk6IEdJUElBcHBsaWVkRmlsdGVyPGFueT5bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBsaWVkRmlsdGVycztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGFic3RyYWN0Q3J1ZFNlcnZpY2U6IEdJUElBYnN0cmFjdENydWRTZXJ2aWNlPFRFbnRpdHksIFRGaWx0ZXI+LFxuICAgICAgICBwcm90ZWN0ZWQgYmFzZVNlcnZpY2U6IEdJUElCYXNlU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoYmFzZVNlcnZpY2UsIGFjdGl2YXRlZFJvdXRlKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jhc2VQZXJtaXNzaW9uTGlzdCBpcyByZXF1aXJlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fb25Jbml0RmlsdGVyKCk7XG4gICAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuY3JlYXRlVGFibGVDb2x1bW5zKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgbmV3RmlsdGVyKCk6IFRGaWx0ZXI7XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlVGFibGVDb2x1bW5zKCk6IFRhYmxlQ29sdW1uRFRPW107XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0QXBwbGllZEZpbHRlcnMoKTogdm9pZDtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjbGVhckFwcGxpZWRGaWx0ZXJzKCk6IHZvaWQ7XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgcmVtb3ZlQXBwbGllZEZpbHRlcnMoZmlsdGVyOiB7IGNoaXA6IEdJUElBcHBsaWVkRmlsdGVyPGFueT47IGluZGV4OiBudW1iZXI7IH0pOiB2b2lkO1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHNldEZpbHRlclNlc3Npb25TdG9yYWdlKCk6IHZvaWQ7XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgaGFuZGxlRmlsdGVyU2Vzc2lvblN0b3JhZ2UoKTogdm9pZDtcblxuICAgIHByb3RlY3RlZCBuZXdQYWdlKCk6IEdJUElQYWdlTW9kZWw8VEVudGl0eT4ge1xuICAgICAgICByZXR1cm4gbmV3IEdJUElQYWdlTW9kZWw8VEVudGl0eT4oKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlVGFibGVTb3J0cygpOiBHSVBJU29ydE1vZGVsW10ge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHByZURlbGV0ZShpZD86IEdJUElVdWlkKTogdm9pZCB7IH1cblxuICAgIHByb3RlY3RlZCBleGlzdEluQXBwbGllZEZpbHRlcnM8VCA9IGFueT4oa2V5OiBUKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhQXJyYXlVdGlsLmlzRW1wdHkodGhpcy5hcHBsaWVkRmlsdGVycykgJiZcbiAgICAgICAgICAgICh0aGlzLmFwcGxpZWRGaWx0ZXJzLmZpbmRJbmRleChlID0+IGUua2V5ID09PSBrZXkpID49IDApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBJbnRlcm5hbCAqL1xuICAgIHByb3RlY3RlZCBfb25Jbml0RmlsdGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLm5ld1BhZ2UoKTtcbiAgICAgICAgdGhpcy5maWx0ZXIgPSB0aGlzLm5ld0ZpbHRlcigpO1xuXG4gICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5maWx0ZXIpKSB7XG4gICAgICAgICAgICB0aGlzLnNldEFwcGxpZWRGaWx0ZXJzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWx0ZXJTZXNzaW9uU3RvcmFnZSA9IHRoaXMuYmFzZVNlcnZpY2Uuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldCgnZmlsdGVyJyk7XG4gICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwoZmlsdGVyU2Vzc2lvblN0b3JhZ2UpKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUZpbHRlclNlc3Npb25TdG9yYWdlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZmluZEFsbChwYWdlRXZlbnQ/OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMubmV3UGFnZSgpO1xuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuZmlsdGVyKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyID0gdGhpcy5uZXdGaWx0ZXIoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaWYgKE9iamVjdFV0aWwuaXNOdWxsKHBhZ2VFdmVudCkgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMudGFibGVQYWdlRXZlbnREVE8pKSB7XG4gICAgICAgICAgICAvLyAgICAgcGFnZUV2ZW50ID0gdGhpcy50YWJsZVBhZ2VFdmVudERUTztcbiAgICAgICAgICAgIC8vIH1cblxuICAgICAgICAgICAgaWYgKHBhZ2VFdmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVQYWdlRXZlbnREVE8gPSBwYWdlRXZlbnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIucGFnZU51bWJlciA9IHBhZ2VFdmVudC5wYWdlSW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIucGFnZVNpemUgPSBwYWdlRXZlbnQucGFnZVNpemU7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIub2Zmc2V0ID0gcGFnZUV2ZW50LnBhZ2VJbmRleCAqIHBhZ2VFdmVudC5wYWdlU2l6ZTtcblxuICAgICAgICAgICAgICAgIGlmIChwYWdlRXZlbnQuc29ydCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlci5zb3J0cyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBHSVBJU29ydE1vZGVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VFdmVudC5zb3J0LmFjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdVdGlsLmlzRW1wdHkocGFnZUV2ZW50LnNvcnQuZGlyZWN0aW9uKSA/ICdERVNDJyA6IHBhZ2VFdmVudC5zb3J0LmRpcmVjdGlvbi50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlci5wYWdlTnVtYmVyID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlci5vZmZzZXQgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyLnBhZ2VTaXplID0gMTA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuYWJzdHJhY3RDcnVkU2VydmljZS5maW5kQWxsPFRGaWx0ZXIsIFRFbnRpdHk+KHRoaXMuZmlsdGVyKS50b1Byb21pc2UoKS50aGVuKHBhZ2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9IHBhZ2U7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBcHBsaWVkRmlsdGVycygpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmV3UmVnaXN0ZXIocGVybWlzc2lvbj86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoU3RyaW5nVXRpbC5pc0VtcHR5KHBlcm1pc3Npb24pICYmIE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJTZXNzaW9uU3RvcmFnZSgpO1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZ2V0UGF0aCgpLCBbdGhpcy5nZXRQYXRoKCksICduZXcnXSwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoU3RyaW5nVXRpbC5pc0VtcHR5KHBlcm1pc3Npb24pICYmICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdCkpIHtcbiAgICAgICAgICAgICAgICBwZXJtaXNzaW9uID0gdGhpcy5iYXNlUGVybWlzc2lvbkxpc3QuTUFLRTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5oYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRXYXJuaW5nTWVzc2FnZShJTkpFQ1RPUi5nZXQoQVBQX01FU1NBR0VTKS5OT1RfUEVSTUlTU0lPTik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNldEZpbHRlclNlc3Npb25TdG9yYWdlKCk7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlQnlVcmwodGhpcy5nZXRQYXRoKCksIFt0aGlzLmdldFBhdGgoKSwgJ25ldyddLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBlZGl0UmVnaXN0ZXIoaWQ/OiBHSVBJVXVpZCwgcGVybWlzc2lvbj86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZCA9IHRoaXMuaGFuZGxlRW50aXR5SWQoaWQpO1xuICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwoaWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoU3RyaW5nVXRpbC5pc0VtcHR5KHBlcm1pc3Npb24pICYmIE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJTZXNzaW9uU3RvcmFnZSgpO1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZ2V0UGF0aCgpLCBbdGhpcy5nZXRQYXRoKCksICdlZGl0J10sIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgcGVybWlzc2lvbiA9IHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0LlVQREFURTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5oYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRXYXJuaW5nTWVzc2FnZShJTkpFQ1RPUi5nZXQoQVBQX01FU1NBR0VTKS5OT1RfUEVSTUlTU0lPTik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNldEZpbHRlclNlc3Npb25TdG9yYWdlKCk7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlQnlVcmwodGhpcy5nZXRQYXRoKCksIFt0aGlzLmdldFBhdGgoKSwgJ2VkaXQnLCBpZF0sIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGRlbGV0ZVJlZ2lzdGVyKGlkPzogR0lQSVV1aWQsIHBlcm1pc3Npb24/OiBzdHJpbmcsIGZldGNoQWdhaW46IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZCA9IHRoaXMuaGFuZGxlRW50aXR5SWQoaWQpO1xuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKGlkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiBPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWxldGVSZWdpc3RlcihpZCwgZmV0Y2hBZ2Fpbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9uID0gdGhpcy5iYXNlUGVybWlzc2lvbkxpc3QuREVMRVRFO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFdhcm5pbmdNZXNzYWdlKElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLk5PVF9QRVJNSVNTSU9OKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2RlbGV0ZVJlZ2lzdGVyKGlkLCBmZXRjaEFnYWluKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0xpc3RpbmcoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBASW50ZXJuYWwgKi9cbiAgICBwcml2YXRlIF9kZWxldGVSZWdpc3RlcihpZDogR0lQSVV1aWQsIGZldGNoQWdhaW46IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmJhc2VTZXJ2aWNlLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdDb25maXJtYcOnw6NvJyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBJTkpFQ1RPUi5nZXQoQVBQX01FU1NBR0VTKS5ERUxFVEVfQ09ORklSTUFUSU9OLFxuICAgICAgICAgICAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEZpbHRlclNlc3Npb25TdG9yYWdlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5uZXdQYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlRGVsZXRlKGlkKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFic3RyYWN0Q3J1ZFNlcnZpY2UuZGVsZXRlPFRFbnRpdHk+KGlkKS50b1Byb21pc2UoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZXRjaEFnYWluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kQWxsKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkU3VjY2Vzc01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuU1VDQ0VTUyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGVBbGxSZWdpc3RlcihpZExpc3Q/OiBHSVBJVXVpZFtdLCBwZXJtaXNzaW9uPzogc3RyaW5nLCBmZXRjaEFnYWluOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWRMaXN0ID0gdGhpcy5oYW5kbGVFbnRpdHlJZExpc3QoaWRMaXN0KTtcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbChpZExpc3QpIHx8IEFycmF5VXRpbC5pc0VtcHR5KGlkTGlzdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGVsZXRlQWxsUmVnaXN0ZXIoaWRMaXN0LCBmZXRjaEFnYWluKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb24gPSB0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdC5ERUxFVEU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5oYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkV2FybmluZ01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuTk9UX1BFUk1JU1NJT04pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fZGVsZXRlQWxsUmVnaXN0ZXIoaWRMaXN0LCBmZXRjaEFnYWluKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0xpc3RpbmcoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBASW50ZXJuYWwgKi9cbiAgICBwcml2YXRlIF9kZWxldGVBbGxSZWdpc3RlcihpZExpc3Q6IEdJUElVdWlkW10sIGZldGNoQWdhaW46IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmJhc2VTZXJ2aWNlLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdDb25maXJtYcOnw6NvJyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBJTkpFQ1RPUi5nZXQoQVBQX01FU1NBR0VTKS5ERUxFVEVfQ09ORklSTUFUSU9OLFxuICAgICAgICAgICAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEZpbHRlclNlc3Npb25TdG9yYWdlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5uZXdQYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlRGVsZXRlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hYnN0cmFjdENydWRTZXJ2aWNlLmRlbGV0ZUFsbChpZExpc3QpLnRvUHJvbWlzZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZldGNoQWdhaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbmRBbGwoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRTdWNjZXNzTWVzc2FnZShJTkpFQ1RPUi5nZXQoQVBQX01FU1NBR0VTKS5TVUNDRVNTKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHZpZXdSZWdpc3RlcihpZD86IEdJUElVdWlkLCBwZXJtaXNzaW9uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlkID0gdGhpcy5oYW5kbGVFbnRpdHlJZChpZCk7XG4gICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbChpZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICB0aGlzLnNldEZpbHRlclNlc3Npb25TdG9yYWdlKCk7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlQnlVcmwodGhpcy5nZXRQYXRoKCksIFt0aGlzLmdldFBhdGgoKSwgJ3ZpZXcnLCBpZF0sIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgcGVybWlzc2lvbiA9IHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0LlJFQUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkV2FybmluZ01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuTk9UX1BFUk1JU1NJT04pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJTZXNzaW9uU3RvcmFnZSgpO1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZ2V0UGF0aCgpLCBbdGhpcy5nZXRQYXRoKCksICd2aWV3JywgaWRdLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBlZGl0T3JWaWV3UmVnaXN0ZXIoaWQ6IEdJUElVdWlkLCBwZXJtaXNzaW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKSkge1xuICAgICAgICAgICAgdGhpcy5lZGl0UmVnaXN0ZXIoaWQsIHBlcm1pc3Npb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52aWV3UmVnaXN0ZXIoaWQsIHBlcm1pc3Npb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGVuYWJsZU9yRGlzYWJsZVJlZ2lzdGVyKGFjdGlvbjogJ0RJU0FCTEUnIHwgJ0VOQUJMRScsIGlkPzogR0lQSVV1aWQsIHBlcm1pc3Npb24/OiBzdHJpbmcsIGZldGNoQWdhaW46IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZCA9IHRoaXMuaGFuZGxlRW50aXR5SWQoaWQpO1xuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKGlkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiBPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbmFibGVPckRpc2FibGVSZWdpc3RlcihhY3Rpb24sIGlkLCBmZXRjaEFnYWluKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb24gPSB0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdC5VUERBVEU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5oYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkV2FybmluZ01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuTk9UX1BFUk1JU1NJT04pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fZW5hYmxlT3JEaXNhYmxlUmVnaXN0ZXIoYWN0aW9uLCBpZCwgZmV0Y2hBZ2Fpbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNMaXN0aW5nKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQEludGVybmFsICovXG4gICAgcHJpdmF0ZSBfZW5hYmxlT3JEaXNhYmxlUmVnaXN0ZXIoYWN0aW9uOiAnRElTQUJMRScgfCAnRU5BQkxFJywgaWQ6IEdJUElVdWlkLCBmZXRjaEFnYWluOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5iYXNlU2VydmljZS5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybWHDp8OjbycsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYERlc2VqYSByZWFsbWVudGUgJHsoYWN0aW9uID09PSAnRElTQUJMRScpID8gJ2luYXRpdmFyJyA6ICdhdGl2YXInfSBlc3RlIHJlZ2lzdHJvP2AsXG4gICAgICAgICAgICAgICAgYWNjZXB0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RmlsdGVyU2Vzc2lvblN0b3JhZ2UoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLm5ld1BhZ2UoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFic3RyYWN0Q3J1ZFNlcnZpY2UuZW5hYmxlT3JEaXNhYmxlKGlkLCBhY3Rpb24pLnRvUHJvbWlzZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZldGNoQWdhaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbmRBbGwoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRTdWNjZXNzTWVzc2FnZShJTkpFQ1RPUi5nZXQoQVBQX01FU1NBR0VTKS5TVUNDRVNTKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGVuYWJsZUFuZERpc2FibGVBbGxSZWdpc3RlcihhY3Rpb246ICdESVNBQkxFJyB8ICdFTkFCTEUnLCBpZExpc3Q/OiBHSVBJVXVpZFtdLCBwZXJtaXNzaW9uPzogc3RyaW5nLCBmZXRjaEFnYWluOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWRMaXN0ID0gdGhpcy5oYW5kbGVFbnRpdHlJZExpc3QoaWRMaXN0KTtcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbChpZExpc3QpIHx8IEFycmF5VXRpbC5pc0VtcHR5KGlkTGlzdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW5hYmxlQW5kRGlzYWJsZUFsbFJlZ2lzdGVyKGFjdGlvbiwgaWRMaXN0LCBmZXRjaEFnYWluKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb24gPSB0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdC5VUERBVEU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5oYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkV2FybmluZ01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuTk9UX1BFUk1JU1NJT04pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fZW5hYmxlQW5kRGlzYWJsZUFsbFJlZ2lzdGVyKGFjdGlvbiwgaWRMaXN0LCBmZXRjaEFnYWluKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0xpc3RpbmcoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBASW50ZXJuYWwgKi9cbiAgICBwcml2YXRlIF9lbmFibGVBbmREaXNhYmxlQWxsUmVnaXN0ZXIoYWN0aW9uOiAnRElTQUJMRScgfCAnRU5BQkxFJywgaWRMaXN0OiBHSVBJVXVpZFtdLCBmZXRjaEFnYWluOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5iYXNlU2VydmljZS5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybWHDp8OjbycsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYERlc2VqYSByZWFsbWVudGUgJHsoYWN0aW9uID09PSAnRElTQUJMRScpID8gJ2luYXRpdmFyJyA6ICdhdGl2YXInfSBvcyByZWdpc3Ryb3Mgc2VsZWNpb25hZG9zP2AsXG4gICAgICAgICAgICAgICAgYWNjZXB0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RmlsdGVyU2Vzc2lvblN0b3JhZ2UoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLm5ld1BhZ2UoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFic3RyYWN0Q3J1ZFNlcnZpY2UuZW5hYmxlT3JEaXNhYmxlQWxsKGlkTGlzdCwgYWN0aW9uKS50b1Byb21pc2UoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZXRjaEFnYWluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kQWxsKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkU3VjY2Vzc01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuU1VDQ0VTUyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5iYXNlU2VydmljZS5zZXNzaW9uU3RvcmFnZVNlcnZpY2UucmVtb3ZlKCdmaWx0ZXInKTtcbiAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5uZXdQYWdlKCk7XG4gICAgICAgIHRoaXMuZmlsdGVyID0gdGhpcy5uZXdGaWx0ZXIoKTtcbiAgICAgICAgdGhpcy5jbGVhckFwcGxpZWRGaWx0ZXJzKCk7XG4gICAgICAgIHRoaXMuZmluZEFsbCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVFbnRpdHlJZChpZDogR0lQSVV1aWQpOiBHSVBJVXVpZCB7XG4gICAgICAgIGlmICghdGhpcy5VVUlESXNWYWxpZChpZCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTyBpZGVudGlmaWNhZG9yIGRvIHJlZ2lzdHJvIG7Do28gw6kgdsOhbGlkbycpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKGlkKSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5wYWdlKSAmJiAhQXJyYXlVdGlsLmlzRW1wdHkodGhpcy5wYWdlLmNvbnRlbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFNlbGV0ZWN0ZWQgPSB0aGlzLnBhZ2UuY29udGVudC5maWx0ZXIoYyA9PiBjLnNlbGVjdGVkKVswXTtcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbChmaXJzdFNlbGV0ZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmaXJzdFNlbGV0ZWN0ZWQuaWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUVudGl0eUlkTGlzdChpZExpc3Q6IEdJUElVdWlkW10pOiBHSVBJVXVpZFtdIHtcbiAgICAgICAgaWYgKCFBcnJheVV0aWwuaXNFbXB0eShpZExpc3QpKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlkTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5VVUlESXNWYWxpZChpZExpc3RbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTyBpZGVudGlmaWNhZG9yIGRvIHJlZ2lzdHJvIG7Do28gw6kgdsOhbGlkbycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheVV0aWwuaXNFbXB0eShpZExpc3QpICYmICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLnBhZ2UpICYmICFBcnJheVV0aWwuaXNFbXB0eSh0aGlzLnBhZ2UuY29udGVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpc3RTZWxlY3RlZCA9IHRoaXMucGFnZS5jb250ZW50LmZpbHRlcihwID0+IHAuc2VsZWN0ZWQpLm1hcChwID0+IHAuaWQpO1xuICAgICAgICAgICAgaWYgKEFycmF5VXRpbC5pc0VtcHR5KGxpc3RTZWxlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGxpc3RTZWxlY3RlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpZExpc3Q7XG4gICAgfVxuXG59XG4iXX0=
|