@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,698 +0,0 @@
|
|
1
|
-
import { __awaiter, __decorate, __generator, __metadata, __read, __spread } from "tslib";
|
2
|
-
import { A, ENTER, ESCAPE, NINE, SPACE, Z, ZERO } from '@angular/cdk/keycodes';
|
3
|
-
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
|
4
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, TrackByFunction, ViewChild, forwardRef } from '@angular/core';
|
5
|
-
import { FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';
|
6
|
-
import { Subject } from 'rxjs';
|
7
|
-
import { debounceTime, distinctUntilChanged, map, takeUntil } from 'rxjs/operators';
|
8
|
-
import { ObjectUtil } from '../../../core/utils/object.util';
|
9
|
-
import { GIPIFormFieldComponent } from '../form-field/form-field.component';
|
10
|
-
import { GIPIOverlayComponent } from '../overlay/overlay.component';
|
11
|
-
/** A altura dos itens selecionados em unidades `px`. */
|
12
|
-
var OPTION_HEIGHT_PX = 40;
|
13
|
-
var nextUniqueId = 0;
|
14
|
-
var GIPIInputSelectComponent = /** @class */ (function () {
|
15
|
-
function GIPIInputSelectComponent(_changeDetectorRef) {
|
16
|
-
var _this = this;
|
17
|
-
this._changeDetectorRef = _changeDetectorRef;
|
18
|
-
this._name = "gipi-input-select-" + nextUniqueId++;
|
19
|
-
this._onDestroy = new Subject();
|
20
|
-
this._itemSizeScrollViewport = 5;
|
21
|
-
this._overlayVisible = false;
|
22
|
-
this._formControlSearch = new FormControl({ value: '', disabled: false });
|
23
|
-
this.inputFieldValue = '';
|
24
|
-
this.inputFieldValueSelected = 0;
|
25
|
-
this.toggleAllCheckboxChecked = false;
|
26
|
-
this.toggleAllCheckboxIndeterminate = false;
|
27
|
-
this.isLoading = 0;
|
28
|
-
this.id = this._name;
|
29
|
-
this.name = this._name;
|
30
|
-
this.placeholder = 'Selecionar';
|
31
|
-
this.labelSelectAll = 'Selecionar todos';
|
32
|
-
this.multiple = false;
|
33
|
-
// Mostrar/ocultar o botão limpar opções selecionadas
|
34
|
-
this.showClear = false;
|
35
|
-
this.showOnFocus = true;
|
36
|
-
this.hideOnEscape = true;
|
37
|
-
this.showSelectAll = false;
|
38
|
-
this.showFooter = false;
|
39
|
-
this.infiniteScroll = true;
|
40
|
-
this.showSearch = false;
|
41
|
-
this.required = false;
|
42
|
-
this.pageSize = 5;
|
43
|
-
// Input search --------
|
44
|
-
// Ativar limpar input ao pressionar escape
|
45
|
-
this.enableClearOnEscapePressed = true;
|
46
|
-
// ---------------------
|
47
|
-
this._disabled = false;
|
48
|
-
this._loading = false;
|
49
|
-
this.onFocus = new EventEmitter();
|
50
|
-
this.onBlur = new EventEmitter();
|
51
|
-
this.onClose = new EventEmitter();
|
52
|
-
this.onSelectChange = new EventEmitter();
|
53
|
-
this.onOpenedChange = new EventEmitter();
|
54
|
-
this.onSearchChange = new EventEmitter();
|
55
|
-
this.onAddChange = new EventEmitter();
|
56
|
-
this.trackByOption = function (index, obj) { return obj && _this.trackBy && obj[_this.trackBy] ? obj[_this.trackBy] : obj; };
|
57
|
-
this.onChange = function () { };
|
58
|
-
this.onTouch = function () { };
|
59
|
-
}
|
60
|
-
GIPIInputSelectComponent_1 = GIPIInputSelectComponent;
|
61
|
-
Object.defineProperty(GIPIInputSelectComponent.prototype, "disabled", {
|
62
|
-
get: function () {
|
63
|
-
return this._disabled;
|
64
|
-
},
|
65
|
-
set: function (value) {
|
66
|
-
this._disabled = value;
|
67
|
-
this._disableInputSearch();
|
68
|
-
},
|
69
|
-
enumerable: false,
|
70
|
-
configurable: true
|
71
|
-
});
|
72
|
-
Object.defineProperty(GIPIInputSelectComponent.prototype, "loading", {
|
73
|
-
get: function () {
|
74
|
-
return this._loading;
|
75
|
-
},
|
76
|
-
set: function (value) {
|
77
|
-
this._loading = value;
|
78
|
-
this._disableInputSearch();
|
79
|
-
},
|
80
|
-
enumerable: false,
|
81
|
-
configurable: true
|
82
|
-
});
|
83
|
-
Object.defineProperty(GIPIInputSelectComponent.prototype, "paramNextBatch", {
|
84
|
-
get: function () {
|
85
|
-
return this._paramNextBatch;
|
86
|
-
},
|
87
|
-
set: function (val) {
|
88
|
-
this._paramNextBatch = val;
|
89
|
-
},
|
90
|
-
enumerable: false,
|
91
|
-
configurable: true
|
92
|
-
});
|
93
|
-
Object.defineProperty(GIPIInputSelectComponent.prototype, "value", {
|
94
|
-
get: function () {
|
95
|
-
return this._value;
|
96
|
-
},
|
97
|
-
set: function (value) {
|
98
|
-
this._value = value;
|
99
|
-
if (this.multiple) {
|
100
|
-
if (Array.isArray(value) && value && value.length) {
|
101
|
-
var firstValue = value[0];
|
102
|
-
this.inputFieldValue = this.property ? firstValue[this.property] : this.getPropertyValue(firstValue);
|
103
|
-
this.inputFieldValueSelected = value.length;
|
104
|
-
}
|
105
|
-
else {
|
106
|
-
this.inputFieldValue = '';
|
107
|
-
this.inputFieldValueSelected = 0;
|
108
|
-
}
|
109
|
-
}
|
110
|
-
else {
|
111
|
-
if (!Array.isArray(value) && value) {
|
112
|
-
this.inputFieldValue = this.property ? value[this.property] : this.getPropertyValue(value);
|
113
|
-
this.inputFieldValueSelected = 0;
|
114
|
-
}
|
115
|
-
else {
|
116
|
-
this.inputFieldValue = '';
|
117
|
-
this.inputFieldValueSelected = 0;
|
118
|
-
}
|
119
|
-
}
|
120
|
-
this.onChange(value);
|
121
|
-
this.onSelectChange.emit(value);
|
122
|
-
this.onTouch();
|
123
|
-
this._changeDetectorRef.markForCheck();
|
124
|
-
},
|
125
|
-
enumerable: false,
|
126
|
-
configurable: true
|
127
|
-
});
|
128
|
-
Object.defineProperty(GIPIInputSelectComponent.prototype, "options", {
|
129
|
-
get: function () {
|
130
|
-
return this._options;
|
131
|
-
},
|
132
|
-
set: function (val) {
|
133
|
-
this._options = val;
|
134
|
-
},
|
135
|
-
enumerable: false,
|
136
|
-
configurable: true
|
137
|
-
});
|
138
|
-
Object.defineProperty(GIPIInputSelectComponent.prototype, "scrollViewportHeight", {
|
139
|
-
get: function () {
|
140
|
-
var height = 0;
|
141
|
-
if (this.options && this.options.length) {
|
142
|
-
height = (this.options.length * OPTION_HEIGHT_PX) - (this.pageSize === this.options.length ? OPTION_HEIGHT_PX : 0);
|
143
|
-
}
|
144
|
-
if (!ObjectUtil.isNull(this.overlaySelect)) {
|
145
|
-
this.overlaySelect.alignOverlay();
|
146
|
-
}
|
147
|
-
return height;
|
148
|
-
},
|
149
|
-
enumerable: false,
|
150
|
-
configurable: true
|
151
|
-
});
|
152
|
-
Object.defineProperty(GIPIInputSelectComponent.prototype, "valueSearch", {
|
153
|
-
get: function () {
|
154
|
-
return this._formControlSearch.value;
|
155
|
-
},
|
156
|
-
enumerable: false,
|
157
|
-
configurable: true
|
158
|
-
});
|
159
|
-
GIPIInputSelectComponent.prototype.ngOnInit = function () {
|
160
|
-
var _this = this;
|
161
|
-
this._formControlSearch.valueChanges
|
162
|
-
.pipe(map(function (value) { return value; }), debounceTime(1000), distinctUntilChanged(), takeUntil(this._onDestroy))
|
163
|
-
.subscribe(function (value) { return _this._searchChange(value); });
|
164
|
-
this.indeterminateAllCheckbox();
|
165
|
-
};
|
166
|
-
GIPIInputSelectComponent.prototype.ngOnDestroy = function () {
|
167
|
-
this._onDestroy.next();
|
168
|
-
this._onDestroy.complete();
|
169
|
-
};
|
170
|
-
GIPIInputSelectComponent.prototype.registerOnChange = function (fn) {
|
171
|
-
this.onChange = fn;
|
172
|
-
};
|
173
|
-
GIPIInputSelectComponent.prototype.registerOnTouched = function (fn) {
|
174
|
-
this.onTouch = fn;
|
175
|
-
};
|
176
|
-
GIPIInputSelectComponent.prototype.writeValue = function (value) {
|
177
|
-
this.value = value;
|
178
|
-
};
|
179
|
-
GIPIInputSelectComponent.prototype.setDisabledState = function (val) {
|
180
|
-
this.disabled = val;
|
181
|
-
this._changeDetectorRef.markForCheck();
|
182
|
-
};
|
183
|
-
GIPIInputSelectComponent.prototype.compareFn = function (f1, f2) {
|
184
|
-
if (!this.property && !this.propertyFn) {
|
185
|
-
throw new Error('O parâmetro property ou propertyFn deve conter um valor');
|
186
|
-
}
|
187
|
-
if (!this.property && this.propertyFn && f1 && f2) {
|
188
|
-
var propF1 = this.getPropertyValue(f1);
|
189
|
-
var propF2 = this.getPropertyValue(f2);
|
190
|
-
return propF1 === propF2;
|
191
|
-
}
|
192
|
-
return f1 && f2 && f1[this.property] === f2[this.property];
|
193
|
-
};
|
194
|
-
GIPIInputSelectComponent.prototype.getPropertyValue = function (entity) {
|
195
|
-
if (!ObjectUtil.isNull(entity)) {
|
196
|
-
if (!ObjectUtil.isNull(this.propertyFn)) {
|
197
|
-
return this.propertyFn(entity);
|
198
|
-
}
|
199
|
-
else if (this.property) {
|
200
|
-
return this._getValue(entity, this.property);
|
201
|
-
}
|
202
|
-
}
|
203
|
-
return '';
|
204
|
-
};
|
205
|
-
GIPIInputSelectComponent.prototype._getValue = function (entity, property) {
|
206
|
-
var properties = property.split('.');
|
207
|
-
var value = entity;
|
208
|
-
for (var i = 0; i < properties.length; i++) {
|
209
|
-
value = Reflect.get(value, properties[i]);
|
210
|
-
if (value && i === properties.length - 1) {
|
211
|
-
return value;
|
212
|
-
}
|
213
|
-
}
|
214
|
-
};
|
215
|
-
GIPIInputSelectComponent.prototype.onInputFocus = function (event) {
|
216
|
-
if (this.showOnFocus && !this.disabled) {
|
217
|
-
this.showOverlay();
|
218
|
-
this.onFocus.emit(event);
|
219
|
-
}
|
220
|
-
};
|
221
|
-
GIPIInputSelectComponent.prototype.onInputClick = function () {
|
222
|
-
if (!this.disabled) {
|
223
|
-
this.showOverlay();
|
224
|
-
if (!this._overlayVisible) {
|
225
|
-
this.formFieldSelect.focus();
|
226
|
-
}
|
227
|
-
}
|
228
|
-
};
|
229
|
-
GIPIInputSelectComponent.prototype.onInputBlur = function (event) {
|
230
|
-
if (!this.disabled) {
|
231
|
-
this.onBlur.emit(event);
|
232
|
-
this.onTouch();
|
233
|
-
}
|
234
|
-
};
|
235
|
-
GIPIInputSelectComponent.prototype.onInputKeydown = function (event) {
|
236
|
-
if (this.disabled) {
|
237
|
-
event.stopImmediatePropagation();
|
238
|
-
return;
|
239
|
-
}
|
240
|
-
if (((event.code.toUpperCase() === 'ESCAPE') && this.hideOnEscape) ||
|
241
|
-
((event.code.toUpperCase() === 'ENTER') || (event.code.toUpperCase() === 'NUMPADENTER')) ||
|
242
|
-
(event.code.toUpperCase() === 'TAB')) {
|
243
|
-
if (this._overlayVisible) {
|
244
|
-
this.hideOverlay();
|
245
|
-
event.preventDefault();
|
246
|
-
}
|
247
|
-
}
|
248
|
-
};
|
249
|
-
GIPIInputSelectComponent.prototype.onClearOptionsClick = function (event) {
|
250
|
-
if (this.disabled) {
|
251
|
-
event.stopImmediatePropagation();
|
252
|
-
return;
|
253
|
-
}
|
254
|
-
if (this.multiple && Array.isArray(this.value)) {
|
255
|
-
this.value = [];
|
256
|
-
}
|
257
|
-
else {
|
258
|
-
this.value = null;
|
259
|
-
}
|
260
|
-
this.toggleAllCheckboxChecked = false;
|
261
|
-
this.toggleAllCheckboxIndeterminate = false;
|
262
|
-
this._changeDetectorRef.detectChanges();
|
263
|
-
this.onSelectChange.emit(this.value);
|
264
|
-
this._searchSelectInputFocus();
|
265
|
-
event.stopImmediatePropagation();
|
266
|
-
};
|
267
|
-
GIPIInputSelectComponent.prototype.showOverlay = function () {
|
268
|
-
if (!this._overlayVisible) {
|
269
|
-
this._overlayVisible = true;
|
270
|
-
this.indeterminateAllCheckbox();
|
271
|
-
this.onOpenedChange.emit(this._overlayVisible);
|
272
|
-
this._changeDetectorRef.detectChanges();
|
273
|
-
if (ObjectUtil.isNull(this._cache)) {
|
274
|
-
this.onScroll();
|
275
|
-
}
|
276
|
-
}
|
277
|
-
};
|
278
|
-
GIPIInputSelectComponent.prototype.hideOverlay = function () {
|
279
|
-
this._overlayVisible = false;
|
280
|
-
this.onOpenedChange.emit(this._overlayVisible);
|
281
|
-
this._cache = {};
|
282
|
-
this._changeDetectorRef.markForCheck();
|
283
|
-
};
|
284
|
-
GIPIInputSelectComponent.prototype.toggleOverlay = function () {
|
285
|
-
if (this.disabled || this.loading) {
|
286
|
-
return;
|
287
|
-
}
|
288
|
-
else {
|
289
|
-
if (!this._overlayVisible) {
|
290
|
-
this.showOverlay();
|
291
|
-
}
|
292
|
-
else {
|
293
|
-
this.hideOverlay();
|
294
|
-
}
|
295
|
-
}
|
296
|
-
};
|
297
|
-
// Infinite scroll ------------------------------------------------
|
298
|
-
GIPIInputSelectComponent.prototype.onScroll = function () {
|
299
|
-
return __awaiter(this, void 0, void 0, function () {
|
300
|
-
var pageNumber;
|
301
|
-
var _this = this;
|
302
|
-
return __generator(this, function (_a) {
|
303
|
-
switch (_a.label) {
|
304
|
-
case 0:
|
305
|
-
if (!this.infiniteScroll) {
|
306
|
-
return [2 /*return*/];
|
307
|
-
}
|
308
|
-
if (ObjectUtil.isNull(this.nextBatchFn)) {
|
309
|
-
console.error('A função "nextBatchFn" é obrigatória e não foi informada');
|
310
|
-
return [2 /*return*/];
|
311
|
-
}
|
312
|
-
if (!ObjectUtil.isNull(this._pageModel) && (this._pageModel.totalPages === this._pageModel.number)) {
|
313
|
-
return [2 /*return*/];
|
314
|
-
}
|
315
|
-
pageNumber = !ObjectUtil.isNull(this._pageModel) ? this._pageModel.number + 1 : 0;
|
316
|
-
// Mantemos um índice de páginas carregadas pelo servidor para não carregarmos os mesmos dados duas vezes
|
317
|
-
// Isso é baseado na página do servidor, não na interface do usuário
|
318
|
-
if (ObjectUtil.isNull(this._cache)) {
|
319
|
-
this._cache = {};
|
320
|
-
}
|
321
|
-
if (this._cache[pageNumber]) {
|
322
|
-
return [2 /*return*/];
|
323
|
-
}
|
324
|
-
this._cache[pageNumber] = true;
|
325
|
-
this.isLoading++;
|
326
|
-
return [4 /*yield*/, this.nextBatchFn(this._formControlSearch.value, pageNumber, this.paramNextBatch).then(function (pagedData) {
|
327
|
-
_this._pageModel = pagedData;
|
328
|
-
_this._totalOptions = pagedData.totalElements;
|
329
|
-
if (!_this.options) {
|
330
|
-
_this.options = [];
|
331
|
-
}
|
332
|
-
// Deslocamento da linha inicial. Esta é a posição para inserir os novos dados
|
333
|
-
var start = _this._pageModel.number * _this.pageSize;
|
334
|
-
// Copiar dados existentes
|
335
|
-
var options = __spread(_this.options);
|
336
|
-
// Inserir novas linhas na posição correta
|
337
|
-
options.splice.apply(options, __spread([start, _this.pageSize], pagedData.content));
|
338
|
-
// Volta o array de opções ja atualizado para exibição
|
339
|
-
_this.options = options;
|
340
|
-
if (_this.toggleAllCheckboxChecked) {
|
341
|
-
_this.onChangeToggleAllCheckbox();
|
342
|
-
}
|
343
|
-
else {
|
344
|
-
_this.indeterminateAllCheckbox();
|
345
|
-
}
|
346
|
-
// Diminuir o contador de chamadas de API pendentes
|
347
|
-
_this.isLoading--;
|
348
|
-
}, function (error) {
|
349
|
-
_this.isLoading = 0;
|
350
|
-
})];
|
351
|
-
case 1:
|
352
|
-
_a.sent();
|
353
|
-
if (!ObjectUtil.isNull(this.cdkVirtualScrollViewPort) && this.options && this.options.length) {
|
354
|
-
this.cdkVirtualScrollViewPort.scrollToIndex(this.options.length, 'smooth');
|
355
|
-
this.cdkVirtualScrollViewPort.checkViewportSize();
|
356
|
-
}
|
357
|
-
this._changeDetectorRef.detectChanges();
|
358
|
-
return [2 /*return*/];
|
359
|
-
}
|
360
|
-
});
|
361
|
-
});
|
362
|
-
};
|
363
|
-
// Options --------------------------------------------------------
|
364
|
-
GIPIInputSelectComponent.prototype.onButtonSelectOptionClick = function (option) {
|
365
|
-
if (this.multiple) {
|
366
|
-
if (!this.value) {
|
367
|
-
this.value = [];
|
368
|
-
}
|
369
|
-
if (Array.isArray(this.value)) {
|
370
|
-
var indexOption = this.value.findIndex(function (o) { return ObjectUtil.equals(o, option); });
|
371
|
-
if (indexOption >= 0) {
|
372
|
-
var lValue = this.value;
|
373
|
-
lValue.splice(indexOption, 1);
|
374
|
-
this.value = __spread(lValue);
|
375
|
-
}
|
376
|
-
else {
|
377
|
-
this.value = __spread(this.value, [option]);
|
378
|
-
}
|
379
|
-
}
|
380
|
-
}
|
381
|
-
else {
|
382
|
-
if (!Array.isArray(this.value)) {
|
383
|
-
this.value = option;
|
384
|
-
}
|
385
|
-
}
|
386
|
-
this.indeterminateAllCheckbox();
|
387
|
-
this.onSelectChange.emit(this.value);
|
388
|
-
this._changeDetectorRef.detectChanges();
|
389
|
-
};
|
390
|
-
GIPIInputSelectComponent.prototype.indeterminateAllCheckbox = function () {
|
391
|
-
if (this.multiple && this.showSelectAll) {
|
392
|
-
if (!Array.isArray(this.value) ||
|
393
|
-
!this.value ||
|
394
|
-
(this.value && !this.value.length) ||
|
395
|
-
!this.options ||
|
396
|
-
(this.options && !this.options.length)) {
|
397
|
-
this.toggleAllCheckboxChecked = false;
|
398
|
-
this.toggleAllCheckboxIndeterminate = false;
|
399
|
-
}
|
400
|
-
if (Array.isArray(this.value)) {
|
401
|
-
if (this.infiniteScroll) {
|
402
|
-
this.toggleAllCheckboxChecked = this.value && this._pageModel && (this.value.length > 0) && (this._totalOptions > 0) && (this.value.length === this._totalOptions);
|
403
|
-
this.toggleAllCheckboxIndeterminate = (this.value.length > 0) && (this.value.length < this._totalOptions);
|
404
|
-
}
|
405
|
-
else {
|
406
|
-
this.toggleAllCheckboxChecked = this.value && (this.value.length > 0) && this.options && (this.options.length > 0) && (this.value.length === this.options.length);
|
407
|
-
this.toggleAllCheckboxIndeterminate = (this.value.length > 0) && (this.options.length > 0) && (this.value.length < this.options.length);
|
408
|
-
}
|
409
|
-
}
|
410
|
-
this._changeDetectorRef.detectChanges();
|
411
|
-
}
|
412
|
-
};
|
413
|
-
GIPIInputSelectComponent.prototype.optionCheckboxIsChecked = function (option) {
|
414
|
-
if (!this.multiple) {
|
415
|
-
return false;
|
416
|
-
}
|
417
|
-
if (Array.isArray(this.value) && (this.value && this.value.length)) {
|
418
|
-
this._changeDetectorRef.markForCheck();
|
419
|
-
return this.value.findIndex(function (o) { return ObjectUtil.equals(o, option); }) > -1;
|
420
|
-
}
|
421
|
-
};
|
422
|
-
GIPIInputSelectComponent.prototype.onClickSelectAllByOption = function () {
|
423
|
-
if (this.disabled || this.loading) {
|
424
|
-
return;
|
425
|
-
}
|
426
|
-
this.toggleAllCheckboxChecked = !this.toggleAllCheckboxChecked;
|
427
|
-
this.onChangeToggleAllCheckbox();
|
428
|
-
};
|
429
|
-
GIPIInputSelectComponent.prototype.onChangeToggleAllCheckbox = function () {
|
430
|
-
if (this.multiple) {
|
431
|
-
if (this.toggleAllCheckboxChecked) {
|
432
|
-
this.value = __spread(this.options);
|
433
|
-
}
|
434
|
-
else {
|
435
|
-
this.value = [];
|
436
|
-
}
|
437
|
-
this.indeterminateAllCheckbox();
|
438
|
-
}
|
439
|
-
};
|
440
|
-
GIPIInputSelectComponent.prototype.onClickAddOptions = function () {
|
441
|
-
if (this.multiple && !this.showSelectAll) {
|
442
|
-
var addChange = {
|
443
|
-
values: this.value,
|
444
|
-
selectedAll: false
|
445
|
-
};
|
446
|
-
this.onAddChange.emit(addChange);
|
447
|
-
}
|
448
|
-
};
|
449
|
-
// Input search --------------------------------------------------
|
450
|
-
GIPIInputSelectComponent.prototype._disableInputSearch = function () {
|
451
|
-
if (this.disabled || this.loading) {
|
452
|
-
this._formControlSearch.disable();
|
453
|
-
}
|
454
|
-
else {
|
455
|
-
this._formControlSearch.enable();
|
456
|
-
}
|
457
|
-
};
|
458
|
-
GIPIInputSelectComponent.prototype._searchChange = function (value) {
|
459
|
-
if (this._overlayVisible) {
|
460
|
-
this.loading = true;
|
461
|
-
this.onSearchChange.emit(value);
|
462
|
-
this._pageModel = null;
|
463
|
-
this.options = [];
|
464
|
-
this._cache = {};
|
465
|
-
this.onScroll();
|
466
|
-
this.loading = false;
|
467
|
-
this._changeDetectorRef.detectChanges();
|
468
|
-
}
|
469
|
-
};
|
470
|
-
/**
|
471
|
-
* Focaliza o input de pesquisa
|
472
|
-
*/
|
473
|
-
GIPIInputSelectComponent.prototype._searchSelectInputFocus = function () {
|
474
|
-
if (ObjectUtil.isNull(this.formfieldSelectSearchInput) || !this._overlayVisible) {
|
475
|
-
return;
|
476
|
-
}
|
477
|
-
// Seta o foco
|
478
|
-
this.formfieldSelectSearchInput.focus();
|
479
|
-
};
|
480
|
-
/**
|
481
|
-
* Redefine o valor do input de pesquisa atual
|
482
|
-
* @param focus se deve focar após a redefinição
|
483
|
-
*/
|
484
|
-
GIPIInputSelectComponent.prototype._searchSelectInputReset = function (focus) {
|
485
|
-
this._formControlSearch.setValue('');
|
486
|
-
if (focus) {
|
487
|
-
this._searchSelectInputFocus();
|
488
|
-
}
|
489
|
-
};
|
490
|
-
/**
|
491
|
-
* Manipula o evento de tecla pressionada.
|
492
|
-
* Permite, por ex. selecionando com a tecla enter, navegando com as teclas de seta, etc.
|
493
|
-
* @param event
|
494
|
-
*/
|
495
|
-
GIPIInputSelectComponent.prototype.onInputSearchKeydown = function (event) {
|
496
|
-
var _this = this;
|
497
|
-
// Evite a propagação de todos os caracteres alfanuméricos para evitar problemas de seleção
|
498
|
-
if ((event.key && event.key.length === 1) ||
|
499
|
-
(event.keyCode >= A && event.keyCode <= Z) ||
|
500
|
-
(event.keyCode >= ZERO && event.keyCode <= NINE) ||
|
501
|
-
(event.keyCode === SPACE)) {
|
502
|
-
event.stopPropagation();
|
503
|
-
}
|
504
|
-
if (this.multiple && event.key && event.keyCode === ENTER) {
|
505
|
-
// Recupere o foco após a seleção múltipla, para que possamos digitar ainda mais
|
506
|
-
setTimeout(function () { return _this._searchSelectInputFocus(); });
|
507
|
-
}
|
508
|
-
// Caso especial, se clicar em Escape, se a entrada estiver vazia, feche o menu suspenso, caso contrário, esvazie o campo de pesquisa
|
509
|
-
if (this.enableClearOnEscapePressed && (event.keyCode === ESCAPE) && this._formControlSearch.value) {
|
510
|
-
this._searchSelectInputReset(true);
|
511
|
-
event.stopPropagation();
|
512
|
-
}
|
513
|
-
};
|
514
|
-
var GIPIInputSelectComponent_1;
|
515
|
-
GIPIInputSelectComponent.ctorParameters = function () { return [
|
516
|
-
{ type: ChangeDetectorRef }
|
517
|
-
]; };
|
518
|
-
__decorate([
|
519
|
-
ViewChild('formfieldSelectSearchInput', { read: GIPIFormFieldComponent, static: true }),
|
520
|
-
__metadata("design:type", GIPIFormFieldComponent)
|
521
|
-
], GIPIInputSelectComponent.prototype, "formfieldSelectSearchInput", void 0);
|
522
|
-
__decorate([
|
523
|
-
ViewChild('formFieldSelect', { read: GIPIFormFieldComponent, static: false }),
|
524
|
-
__metadata("design:type", GIPIFormFieldComponent)
|
525
|
-
], GIPIInputSelectComponent.prototype, "formFieldSelect", void 0);
|
526
|
-
__decorate([
|
527
|
-
ViewChild('overlaySelect', { read: GIPIOverlayComponent, static: false }),
|
528
|
-
__metadata("design:type", GIPIOverlayComponent)
|
529
|
-
], GIPIInputSelectComponent.prototype, "overlaySelect", void 0);
|
530
|
-
__decorate([
|
531
|
-
ViewChild(CdkVirtualScrollViewport, { static: false }),
|
532
|
-
__metadata("design:type", CdkVirtualScrollViewport)
|
533
|
-
], GIPIInputSelectComponent.prototype, "cdkVirtualScrollViewPort", void 0);
|
534
|
-
__decorate([
|
535
|
-
Input(),
|
536
|
-
__metadata("design:type", Object)
|
537
|
-
], GIPIInputSelectComponent.prototype, "id", void 0);
|
538
|
-
__decorate([
|
539
|
-
Input(),
|
540
|
-
__metadata("design:type", String)
|
541
|
-
], GIPIInputSelectComponent.prototype, "name", void 0);
|
542
|
-
__decorate([
|
543
|
-
Input(),
|
544
|
-
__metadata("design:type", String)
|
545
|
-
], GIPIInputSelectComponent.prototype, "ariaLabel", void 0);
|
546
|
-
__decorate([
|
547
|
-
Input(),
|
548
|
-
__metadata("design:type", String)
|
549
|
-
], GIPIInputSelectComponent.prototype, "label", void 0);
|
550
|
-
__decorate([
|
551
|
-
Input(),
|
552
|
-
__metadata("design:type", String)
|
553
|
-
], GIPIInputSelectComponent.prototype, "placeholder", void 0);
|
554
|
-
__decorate([
|
555
|
-
Input(),
|
556
|
-
__metadata("design:type", String)
|
557
|
-
], GIPIInputSelectComponent.prototype, "labelSelectAll", void 0);
|
558
|
-
__decorate([
|
559
|
-
Input(),
|
560
|
-
__metadata("design:type", Boolean)
|
561
|
-
], GIPIInputSelectComponent.prototype, "multiple", void 0);
|
562
|
-
__decorate([
|
563
|
-
Input(),
|
564
|
-
__metadata("design:type", Boolean)
|
565
|
-
], GIPIInputSelectComponent.prototype, "showClear", void 0);
|
566
|
-
__decorate([
|
567
|
-
Input(),
|
568
|
-
__metadata("design:type", Boolean)
|
569
|
-
], GIPIInputSelectComponent.prototype, "showOnFocus", void 0);
|
570
|
-
__decorate([
|
571
|
-
Input(),
|
572
|
-
__metadata("design:type", Boolean)
|
573
|
-
], GIPIInputSelectComponent.prototype, "hideOnEscape", void 0);
|
574
|
-
__decorate([
|
575
|
-
Input(),
|
576
|
-
__metadata("design:type", Boolean)
|
577
|
-
], GIPIInputSelectComponent.prototype, "showSelectAll", void 0);
|
578
|
-
__decorate([
|
579
|
-
Input(),
|
580
|
-
__metadata("design:type", Boolean)
|
581
|
-
], GIPIInputSelectComponent.prototype, "showFooter", void 0);
|
582
|
-
__decorate([
|
583
|
-
Input(),
|
584
|
-
__metadata("design:type", Boolean)
|
585
|
-
], GIPIInputSelectComponent.prototype, "infiniteScroll", void 0);
|
586
|
-
__decorate([
|
587
|
-
Input(),
|
588
|
-
__metadata("design:type", Boolean)
|
589
|
-
], GIPIInputSelectComponent.prototype, "showSearch", void 0);
|
590
|
-
__decorate([
|
591
|
-
Input(),
|
592
|
-
__metadata("design:type", Boolean)
|
593
|
-
], GIPIInputSelectComponent.prototype, "required", void 0);
|
594
|
-
__decorate([
|
595
|
-
Input(),
|
596
|
-
__metadata("design:type", String)
|
597
|
-
], GIPIInputSelectComponent.prototype, "property", void 0);
|
598
|
-
__decorate([
|
599
|
-
Input(),
|
600
|
-
__metadata("design:type", String)
|
601
|
-
], GIPIInputSelectComponent.prototype, "trackBy", void 0);
|
602
|
-
__decorate([
|
603
|
-
Input(),
|
604
|
-
__metadata("design:type", Object)
|
605
|
-
], GIPIInputSelectComponent.prototype, "appendTo", void 0);
|
606
|
-
__decorate([
|
607
|
-
Input(),
|
608
|
-
__metadata("design:type", Function)
|
609
|
-
], GIPIInputSelectComponent.prototype, "propertyFn", void 0);
|
610
|
-
__decorate([
|
611
|
-
Input(),
|
612
|
-
__metadata("design:type", Function)
|
613
|
-
], GIPIInputSelectComponent.prototype, "nextBatchFn", void 0);
|
614
|
-
__decorate([
|
615
|
-
Input(),
|
616
|
-
__metadata("design:type", Number)
|
617
|
-
], GIPIInputSelectComponent.prototype, "pageSize", void 0);
|
618
|
-
__decorate([
|
619
|
-
Input(),
|
620
|
-
__metadata("design:type", Boolean)
|
621
|
-
], GIPIInputSelectComponent.prototype, "enableClearOnEscapePressed", void 0);
|
622
|
-
__decorate([
|
623
|
-
Input(),
|
624
|
-
__metadata("design:type", Boolean),
|
625
|
-
__metadata("design:paramtypes", [Boolean])
|
626
|
-
], GIPIInputSelectComponent.prototype, "disabled", null);
|
627
|
-
__decorate([
|
628
|
-
Input(),
|
629
|
-
__metadata("design:type", Boolean),
|
630
|
-
__metadata("design:paramtypes", [Boolean])
|
631
|
-
], GIPIInputSelectComponent.prototype, "loading", null);
|
632
|
-
__decorate([
|
633
|
-
Input(),
|
634
|
-
__metadata("design:type", Object),
|
635
|
-
__metadata("design:paramtypes", [Object])
|
636
|
-
], GIPIInputSelectComponent.prototype, "paramNextBatch", null);
|
637
|
-
__decorate([
|
638
|
-
Input(),
|
639
|
-
__metadata("design:type", Object),
|
640
|
-
__metadata("design:paramtypes", [Object])
|
641
|
-
], GIPIInputSelectComponent.prototype, "value", null);
|
642
|
-
__decorate([
|
643
|
-
Input(),
|
644
|
-
__metadata("design:type", Array),
|
645
|
-
__metadata("design:paramtypes", [Array])
|
646
|
-
], GIPIInputSelectComponent.prototype, "options", null);
|
647
|
-
__decorate([
|
648
|
-
Output(),
|
649
|
-
__metadata("design:type", EventEmitter)
|
650
|
-
], GIPIInputSelectComponent.prototype, "onFocus", void 0);
|
651
|
-
__decorate([
|
652
|
-
Output(),
|
653
|
-
__metadata("design:type", EventEmitter)
|
654
|
-
], GIPIInputSelectComponent.prototype, "onBlur", void 0);
|
655
|
-
__decorate([
|
656
|
-
Output(),
|
657
|
-
__metadata("design:type", EventEmitter)
|
658
|
-
], GIPIInputSelectComponent.prototype, "onClose", void 0);
|
659
|
-
__decorate([
|
660
|
-
Output(),
|
661
|
-
__metadata("design:type", EventEmitter)
|
662
|
-
], GIPIInputSelectComponent.prototype, "onSelectChange", void 0);
|
663
|
-
__decorate([
|
664
|
-
Output(),
|
665
|
-
__metadata("design:type", EventEmitter)
|
666
|
-
], GIPIInputSelectComponent.prototype, "onOpenedChange", void 0);
|
667
|
-
__decorate([
|
668
|
-
Output(),
|
669
|
-
__metadata("design:type", EventEmitter)
|
670
|
-
], GIPIInputSelectComponent.prototype, "onSearchChange", void 0);
|
671
|
-
__decorate([
|
672
|
-
Output(),
|
673
|
-
__metadata("design:type", EventEmitter)
|
674
|
-
], GIPIInputSelectComponent.prototype, "onAddChange", void 0);
|
675
|
-
GIPIInputSelectComponent = GIPIInputSelectComponent_1 = __decorate([
|
676
|
-
Component({
|
677
|
-
selector: "gipi-input-select",
|
678
|
-
exportAs: 'gipiInputSelect',
|
679
|
-
template: "<gipi-form-field #formFieldSelect\n [id]=\"id\"\n [name]=\"name\"\n [type]=\"'select'\"\n [readonly]=\"true\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [label]=\"label\"\n [placeholder]=\"placeholder\"\n [showClear]=\"inputFieldValue && showClear && !disabled && !loading\"\n [showTrigger]=\"inputFieldValueSelected && (inputFieldValueSelected > 1)\"\n [trigger]=\"inputFieldValueSelected\"\n [ariaLabel]=\"ariaLabel\"\n [(ngModel)]=\"inputFieldValue\"\n (onKeydown)=\"onInputKeydown($event)\"\n (onClear)=\"onClearOptionsClick($event)\"\n (onFocus)=\"onInputFocus($event)\"\n (onBlur)=\"onInputBlur($event)\"\n (onClick)=\"onInputClick()\">\n</gipi-form-field>\n\n<gipi-overlay *ngIf=\"!disabled && !loading\"\n contentStyleClass=\"overlay-select\"\n #overlaySelect\n [(visible)]=\"_overlayVisible\"\n [autoZIndex]=\"true\"\n [appendTo]=\"appendTo ? appendTo : 'body'\"\n (onShow)=\"onOpenedChange.emit(true)\"\n (onHide)=\"onOpenedChange.emit(false)\">\n <div class=\"select-search\"\n *ngIf=\"showSearch\"\n [class.disabled]=\"showSelectAll && (disabled || loading || (isLoading > 0))\">\n <mat-checkbox *ngIf=\"multiple && showSelectAll\"\n class=\"select-search-toggle-all-checkbox\"\n [disabled]=\"disabled || loading || !options || (options && !options.length)\"\n [(ngModel)]=\"toggleAllCheckboxChecked\"\n [indeterminate]=\"toggleAllCheckboxIndeterminate\"\n (change)=\"onChangeToggleAllCheckbox()\">\n </mat-checkbox>\n\n <gipi-form-field #formfieldSelectSearchInput\n placeholder=\"Pesquisar\"\n type=\"search\"\n [style.width]=\"'100%'\"\n [formControl]=\"_formControlSearch\"\n [showClear]=\"valueSearch && !disabled && !loading && isLoading <= 0\"\n (onKeydown)=\"onInputSearchKeydown($event)\">\n </gipi-form-field>\n </div>\n\n <div class=\"select-row select-option-all\"\n [style.height.px]=\"40\"\n [class.disabled]=\"disabled || loading\"\n *ngIf=\"(!showSearch && multiple && showSelectAll)\"\n (click)=\"onClickSelectAllByOption()\">\n <mat-pseudo-checkbox *ngIf=\"multiple\"\n class=\"select-mat-option-pseudo-checkbox\"\n [state]=\"toggleAllCheckboxIndeterminate ? 'indeterminate' : toggleAllCheckboxChecked ? 'checked' : ''\">\n </mat-pseudo-checkbox>\n\n <span> {{ labelSelectAll ? labelSelectAll : 'Selecionar todos' }} </span>\n </div>\n\n <cdk-virtual-scroll-viewport *ngIf=\"(options && options.length) && (!loading || isLoading <= 0)\"\n class=\"select-virtual-scroll-viewport\"\n [style.height.px]=\"scrollViewportHeight\"\n [itemSize]=\"_itemSizeScrollViewport\"\n GIPIInfiniteScroll\n [infiniteScrollDistance]=\"'30%'\"\n [infiniteScrollThrottle]=\"50\"\n [infiniteScrollcomplete]=\"options && _totalOptions && options.length === _totalOptions\"\n (scrolled)=\"onScroll()\">\n <div *cdkVirtualFor=\"let option of options; trackBy: trackByOption\"\n class=\"select-row\"\n [style.height.px]=\"40\"\n [class.disabled]=\"disabled || loading\"\n (click)=\"onButtonSelectOptionClick(option)\">\n <mat-pseudo-checkbox *ngIf=\"multiple && option\"\n class=\"select-mat-option-pseudo-checkbox\"\n [state]=\"optionCheckboxIsChecked(option) ? 'checked' : ''\">\n </mat-pseudo-checkbox>\n\n <span> {{ option ? getPropertyValue(option) : '' }} </span>\n </div>\n </cdk-virtual-scroll-viewport>\n\n <div *ngIf=\"loading || isLoading > 0\"\n class=\"select-loading\">\n <div class=\"dot-pulse\"> </div>\n </div>\n\n <div *ngIf=\"(!options || (options && options.length <= 0)) && !loading && (isLoading <= 0)\"\n class=\"select-not-found\">\n <mat-icon>sentiment_very_dissatisfied</mat-icon>\n Nenhum registro foi encontrado\n </div>\n\n <div class=\"select-footer\"\n *ngIf=\"multiple && !showSelectAll && showFooter\">\n <gipi-button label=\"Adicionar\"\n gipi-primary\n id=\"btnAddOptions\"\n [style.width]=\"'100%'\"\n [disabled]=\"disabled || loading || (!value || (value && !value.length))\"\n (click)=\"onClickAddOptions()\">\n </gipi-button>\n </div>\n</gipi-overlay>\n",
|
680
|
-
providers: [
|
681
|
-
{
|
682
|
-
provide: NG_VALUE_ACCESSOR,
|
683
|
-
useExisting: forwardRef(function () { return GIPIInputSelectComponent_1; }),
|
684
|
-
multi: true
|
685
|
-
}
|
686
|
-
],
|
687
|
-
host: {
|
688
|
-
'class': 'gipi-input-select',
|
689
|
-
},
|
690
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
691
|
-
styles: ["::ng-deep .overlay-select{padding:0!important;overflow:hidden!important}::ng-deep .select-virtual-scroll-viewport{width:100%!important;max-height:240px;overflow:auto}::ng-deep .select-virtual-scroll-viewport .cdk-virtual-scroll-content-wrapper{width:100%!important;position:relative!important}::ng-deep .select-virtual-scroll-viewport::-webkit-scrollbar{width:15px}::ng-deep .select-virtual-scroll-viewport::-webkit-scrollbar-thumb{background-color:#e0e1e2;border-radius:10px;border:4px solid transparent;background-clip:padding-box}::ng-deep .select-row{display:flex;align-items:center;padding:0 16px;cursor:pointer;font-size:1.4rem;line-height:100%;gap:12px}::ng-deep .select-row:hover{background:#f5f5f6}::ng-deep .select-row:active{background:#e0e1e2}::ng-deep .select-row.disabled{background-color:#d1d2d4!important;color:#9a9da2!important;cursor:not-allowed!important;pointer-events:none!important}::ng-deep .select-row>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-search{display:flex;align-items:center;font-size:1.4rem;line-height:100%;gap:12px;padding:8px 12px}.select-option-all{border-bottom:1px solid rgba(0,0,0,.12)}.select-not-found{display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:600;font-size:1.2rem;gap:8px;color:#131313;cursor:default;padding:0 0 16px}.select-not-found>mat-icon{width:2.8rem;height:2.8rem;font-size:2.8rem;line-height:2.8rem;color:#131313}.select-loading{height:4rem;width:100%;background-color:#fff;display:flex;align-items:center;justify-content:center}.select-loading .dot-pulse{position:relative;left:-9999px;width:5px;height:5px;border-radius:50%;background-color:#e0313e;color:#e0313e;box-shadow:9999px 0 0 -5px;-webkit-animation:1.5s linear .25s infinite dot-pulse;animation:1.5s linear .25s infinite dot-pulse}.select-loading .dot-pulse::after,.select-loading .dot-pulse::before{content:\"\";display:inline-block;position:absolute;top:0;width:5px;height:5px;border-radius:50%;background-color:#e0313e;color:#e0313e}.select-loading .dot-pulse::before{box-shadow:9984px 0 0 -5px;-webkit-animation:1.5s linear infinite dot-pulse-before;animation:1.5s linear infinite dot-pulse-before}.select-loading .dot-pulse::after{box-shadow:10014px 0 0 -5px;-webkit-animation:1.5s linear .5s infinite dot-pulse-after;animation:1.5s linear .5s infinite dot-pulse-after}@-webkit-keyframes dot-pulse-before{0%,100%,60%{box-shadow:9984px 0 0 -5px}30%{box-shadow:9984px 0 0 2px}}@keyframes dot-pulse-before{0%,100%,60%{box-shadow:9984px 0 0 -5px}30%{box-shadow:9984px 0 0 2px}}@-webkit-keyframes dot-pulse{0%,100%,60%{box-shadow:9999px 0 0 -5px}30%{box-shadow:9999px 0 0 2px}}@keyframes dot-pulse{0%,100%,60%{box-shadow:9999px 0 0 -5px}30%{box-shadow:9999px 0 0 2px}}@-webkit-keyframes dot-pulse-after{0%,100%,60%{box-shadow:10014px 0 0 -5px}30%{box-shadow:10014px 0 0 2px}}@keyframes dot-pulse-after{0%,100%,60%{box-shadow:10014px 0 0 -5px}30%{box-shadow:10014px 0 0 2px}}.select-footer{display:flex;align-items:center;gap:12px;padding:8px 12px;border-top:1px solid #bfbfbf}::ng-deep .select-mat-option-pseudo-checkbox{margin:0!important}"]
|
692
|
-
}),
|
693
|
-
__metadata("design:paramtypes", [ChangeDetectorRef])
|
694
|
-
], GIPIInputSelectComponent);
|
695
|
-
return GIPIInputSelectComponent;
|
696
|
-
}());
|
697
|
-
export { GIPIInputSelectComponent };
|
698
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BnaXBpc2lzdGVtYXMvbmctY29yZS8iLCJzb3VyY2VzIjpbInNoYXJlZC9naXBpLWNvbXBvbmVudHMvaW5wdXQtc2VsZWN0L2lucHV0LXNlbGVjdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSyxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBT3BFLHdEQUF3RDtBQUN4RCxJQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztBQUU1QixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFtQnJCO0lBZ0xJLGtDQUFvQixrQkFBcUM7UUFBekQsaUJBQThEO1FBQTFD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RTtrQ0FBaUIsWUFBWTtvRUFBd0M7SUFDcEU7UUFBVCxNQUFNLEVBQUU7a0NBQWlCLFlBQVk7b0VBQXNDO0lBQ2xFO1FBQVQsTUFBTSxFQUFFO2tDQUFjLFlBQVk7aUVBQWtEO0lBN0o1RSx3QkFBd0I7UUFqQnBDLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxtQkFBbUI7WUFDN0IsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQiw4cktBQTRDO1lBRTVDLFNBQVMsRUFBRTtnQkFDUDtvQkFDSSxPQUFPLEVBQUUsaUJBQWlCO29CQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLGNBQXVDLE9BQUEsMEJBQXdCLEVBQXhCLENBQXdCLENBQUM7b0JBQ3hGLEtBQUssRUFBRSxJQUFJO2lCQUNkO2FBQ0o7WUFDRCxJQUFJLEVBQUU7Z0JBQ0YsT0FBTyxFQUFFLG1CQUFtQjthQUMvQjtZQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztTQUNsRCxDQUFDO3lDQWlMMEMsaUJBQWlCO09BaExoRCx3QkFBd0IsQ0Era0JwQztJQUFELCtCQUFDO0NBQUEsQUEva0JELElBK2tCQztTQS9rQlksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQSwgRU5URVIsIEVTQ0FQRSwgTklORSwgU1BBQ0UsIFosIFpFUk8gfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRyYWNrQnlGdW5jdGlvbiwgVmlld0NoaWxkLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFBhZ2VEVE8gfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9kdG8vcGFnZS5kdG8nO1xuaW1wb3J0IHsgT2JqZWN0VXRpbCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdXRpbHMvb2JqZWN0LnV0aWwnO1xuaW1wb3J0IHsgR0lQSUZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgR0lQSU92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuLi9vdmVybGF5L292ZXJsYXkuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBBZGRDaGFuZ2U8VD4ge1xuICAgIHZhbHVlczogVCB8IFRbXTtcbiAgICBzZWxlY3RlZEFsbD86IGJvb2xlYW47XG59XG5cbi8qKiBBIGFsdHVyYSBkb3MgaXRlbnMgc2VsZWNpb25hZG9zIGVtIHVuaWRhZGVzIGBweGAuICovXG5jb25zdCBPUFRJT05fSEVJR0hUX1BYID0gNDA7XG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogYGdpcGktaW5wdXQtc2VsZWN0YCxcbiAgICBleHBvcnRBczogJ2dpcGlJbnB1dFNlbGVjdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCk6IHR5cGVvZiBHSVBJSW5wdXRTZWxlY3RDb21wb25lbnQgPT4gR0lQSUlucHV0U2VsZWN0Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ2dpcGktaW5wdXQtc2VsZWN0JyxcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEdJUElJbnB1dFNlbGVjdENvbXBvbmVudDxUPiBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gICAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nID0gYGdpcGktaW5wdXQtc2VsZWN0LSR7bmV4dFVuaXF1ZUlkKyt9YDtcblxuICAgIHByaXZhdGUgX2NhY2hlOiBhbnk7XG5cbiAgICBwcml2YXRlIF9wYWdlTW9kZWw6IFBhZ2VEVE88VD47XG5cbiAgICBwcml2YXRlIF9vbkRlc3Ryb3k6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgX2l0ZW1TaXplU2Nyb2xsVmlld3BvcnQ6IG51bWJlciA9IDU7XG5cbiAgICBfdG90YWxPcHRpb25zOiBudW1iZXI7XG5cbiAgICBfb3ZlcmxheVZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIF9mb3JtQ29udHJvbFNlYXJjaDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogJycsIGRpc2FibGVkOiBmYWxzZSB9KTtcblxuICAgIGlucHV0RmllbGRWYWx1ZTogc3RyaW5nID0gJyc7XG5cbiAgICBpbnB1dEZpZWxkVmFsdWVTZWxlY3RlZDogbnVtYmVyID0gMDtcblxuICAgIHRvZ2dsZUFsbENoZWNrYm94Q2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHRvZ2dsZUFsbENoZWNrYm94SW5kZXRlcm1pbmF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgaXNMb2FkaW5nOiBudW1iZXIgPSAwO1xuXG4gICAgLy8gQFZpZXdDaGlsZCgnc2VhcmNoU2VsZWN0SW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBzZWFyY2hTZWxlY3RJbnB1dDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdmb3JtZmllbGRTZWxlY3RTZWFyY2hJbnB1dCcsIHsgcmVhZDogR0lQSUZvcm1GaWVsZENvbXBvbmVudCwgc3RhdGljOiB0cnVlIH0pIGZvcm1maWVsZFNlbGVjdFNlYXJjaElucHV0OiBHSVBJRm9ybUZpZWxkQ29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZCgnZm9ybUZpZWxkU2VsZWN0JywgeyByZWFkOiBHSVBJRm9ybUZpZWxkQ29tcG9uZW50LCBzdGF0aWM6IGZhbHNlIH0pIGZvcm1GaWVsZFNlbGVjdDogR0lQSUZvcm1GaWVsZENvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoJ292ZXJsYXlTZWxlY3QnLCB7IHJlYWQ6IEdJUElPdmVybGF5Q29tcG9uZW50LCBzdGF0aWM6IGZhbHNlIH0pIG92ZXJsYXlTZWxlY3Q6IEdJUElPdmVybGF5Q29tcG9uZW50O1xuXG4gICAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsIHsgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIGNka1ZpcnR1YWxTY3JvbGxWaWV3UG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gICAgQElucHV0KCkgaWQ6IHN0cmluZyB8IG51bWJlciA9IHRoaXMuX25hbWU7XG5cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgPSB0aGlzLl9uYW1lO1xuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY2lvbmFyJztcblxuICAgIEBJbnB1dCgpIGxhYmVsU2VsZWN0QWxsOiBzdHJpbmcgPSAnU2VsZWNpb25hciB0b2Rvcyc7XG5cbiAgICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gTW9zdHJhci9vY3VsdGFyIG8gYm90w6NvIGxpbXBhciBvcMOnw7VlcyBzZWxlY2lvbmFkYXNcbiAgICBASW5wdXQoKSBzaG93Q2xlYXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHNob3dPbkZvY3VzOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIGhpZGVPbkVzY2FwZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBzaG93U2VsZWN0QWxsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzaG93Rm9vdGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBpbmZpbml0ZVNjcm9sbDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBzaG93U2VhcmNoOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgcHJvcGVydHk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIHRyYWNrQnk6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGFwcGVuZFRvOiBhbnk7XG5cbiAgICBASW5wdXQoKSBwcm9wZXJ0eUZuOiAob2JqOiBUKSA9PiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBuZXh0QmF0Y2hGbiE6IChyZXNlYXJjaEZpZWxkOiBzdHJpbmcsIHBhZ2U6IG51bWJlciwgcGFyYW1OZXh0QmF0Y2g/OiBhbnkpID0+IFByb21pc2U8UGFnZURUTzxUPj47XG5cbiAgICBASW5wdXQoKSBwYWdlU2l6ZTogbnVtYmVyID0gNTtcblxuICAgIC8vIElucHV0IHNlYXJjaCAtLS0tLS0tLVxuICAgIC8vIEF0aXZhciBsaW1wYXIgaW5wdXQgYW8gcHJlc3Npb25hciBlc2NhcGVcbiAgICBASW5wdXQoKSBlbmFibGVDbGVhck9uRXNjYXBlUHJlc3NlZDogYm9vbGVhbiA9IHRydWU7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9kaXNhYmxlSW5wdXRTZWFyY2goKTtcbiAgICB9XG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNldCBsb2FkaW5nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2xvYWRpbmcgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fZGlzYWJsZUlucHV0U2VhcmNoKCk7XG4gICAgfVxuICAgIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGluZztcbiAgICB9XG5cbiAgICBwcml2YXRlIF9wYXJhbU5leHRCYXRjaDogYW55O1xuICAgIEBJbnB1dCgpIHNldCBwYXJhbU5leHRCYXRjaCh2YWw6IGFueSkge1xuICAgICAgICB0aGlzLl9wYXJhbU5leHRCYXRjaCA9IHZhbDtcbiAgICB9XG4gICAgZ2V0IHBhcmFtTmV4dEJhdGNoKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJhbU5leHRCYXRjaDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF92YWx1ZTogVCB8IFRbXTtcbiAgICBASW5wdXQoKSBzZXQgdmFsdWUodmFsdWU6IFQgfCBUW10pIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlICYmIHZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0VmFsdWUgPSB2YWx1ZVswXTtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RmllbGRWYWx1ZSA9IHRoaXMucHJvcGVydHkgPyBmaXJzdFZhbHVlW3RoaXMucHJvcGVydHldIDogdGhpcy5nZXRQcm9wZXJ0eVZhbHVlKGZpcnN0VmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGaWVsZFZhbHVlU2VsZWN0ZWQgPSB2YWx1ZS5sZW5ndGg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGaWVsZFZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZpZWxkVmFsdWVTZWxlY3RlZCA9IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RmllbGRWYWx1ZSA9IHRoaXMucHJvcGVydHkgPyB2YWx1ZVt0aGlzLnByb3BlcnR5XSA6IHRoaXMuZ2V0UHJvcGVydHlWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZpZWxkVmFsdWVTZWxlY3RlZCA9IDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRGaWVsZFZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dEZpZWxkVmFsdWVTZWxlY3RlZCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5vblNlbGVjdENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogVCB8IFRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9vcHRpb25zOiBUW107XG4gICAgQElucHV0KCkgc2V0IG9wdGlvbnModmFsOiBUW10pIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHZhbDtcbiAgICB9XG4gICAgZ2V0IG9wdGlvbnMoKTogVFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBvbkJsdXI6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBvbkNsb3NlOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgb25TZWxlY3RDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUIHwgVFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8VCB8IFRbXT4oKTtcbiAgICBAT3V0cHV0KCkgb25PcGVuZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgb25TZWFyY2hDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQE91dHB1dCgpIG9uQWRkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QWRkQ2hhbmdlPFQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QWRkQ2hhbmdlPFQ+PigpO1xuXG4gICAgZ2V0IHNjcm9sbFZpZXdwb3J0SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIGxldCBoZWlnaHQ6IG51bWJlciA9IDA7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgaGVpZ2h0ID0gKHRoaXMub3B0aW9ucy5sZW5ndGggKiBPUFRJT05fSEVJR0hUX1BYKSAtICh0aGlzLnBhZ2VTaXplID09PSB0aGlzLm9wdGlvbnMubGVuZ3RoID8gT1BUSU9OX0hFSUdIVF9QWCA6IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLm92ZXJsYXlTZWxlY3QpKSB7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlTZWxlY3QuYWxpZ25PdmVybGF5KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaGVpZ2h0O1xuICAgIH1cblxuICAgIGdldCB2YWx1ZVNlYXJjaCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybUNvbnRyb2xTZWFyY2gudmFsdWU7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLl9mb3JtQ29udHJvbFNlYXJjaC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB2YWx1ZSksXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpOiB2b2lkID0+IHRoaXMuX3NlYXJjaENoYW5nZSh2YWx1ZSkpO1xuXG4gICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUFsbENoZWNrYm94KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveS5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHRyYWNrQnlPcHRpb246IFRyYWNrQnlGdW5jdGlvbjxUPiA9IChpbmRleCwgb2JqKSA9PiBvYmogJiYgdGhpcy50cmFja0J5ICYmIG9ialt0aGlzLnRyYWNrQnldID8gb2JqW3RoaXMudHJhY2tCeV0gOiBvYmo7XG5cbiAgICBvbkNoYW5nZTogYW55ID0gKCk6IHZvaWQgPT4geyB9O1xuXG4gICAgb25Ub3VjaDogYW55ID0gKCk6IHZvaWQgPT4geyB9O1xuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZSh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHZhbDtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgY29tcGFyZUZuKGYxOiBULCBmMjogVCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMucHJvcGVydHkgJiYgIXRoaXMucHJvcGVydHlGbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdPIHBhcsOibWV0cm8gcHJvcGVydHkgb3UgcHJvcGVydHlGbiBkZXZlIGNvbnRlciB1bSB2YWxvcicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLnByb3BlcnR5ICYmIHRoaXMucHJvcGVydHlGbiAmJiBmMSAmJiBmMikge1xuICAgICAgICAgICAgY29uc3QgcHJvcEYxID0gdGhpcy5nZXRQcm9wZXJ0eVZhbHVlKGYxKTtcbiAgICAgICAgICAgIGNvbnN0IHByb3BGMiA9IHRoaXMuZ2V0UHJvcGVydHlWYWx1ZShmMik7XG4gICAgICAgICAgICByZXR1cm4gcHJvcEYxID09PSBwcm9wRjI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZjEgJiYgZjIgJiYgZjFbdGhpcy5wcm9wZXJ0eV0gPT09IGYyW3RoaXMucHJvcGVydHldO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQcm9wZXJ0eVZhbHVlKGVudGl0eTogVCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwoZW50aXR5KSkge1xuICAgICAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLnByb3BlcnR5Rm4pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvcGVydHlGbihlbnRpdHkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldFZhbHVlKGVudGl0eSwgdGhpcy5wcm9wZXJ0eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2dldFZhbHVlKGVudGl0eTogVCwgcHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXM6IHN0cmluZ1tdID0gcHJvcGVydHkuc3BsaXQoJy4nKTtcbiAgICAgICAgbGV0IHZhbHVlOiBhbnkgPSBlbnRpdHk7XG5cbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhbHVlID0gUmVmbGVjdC5nZXQodmFsdWUsIHByb3BlcnRpZXNbaV0pO1xuICAgICAgICAgICAgaWYgKHZhbHVlICYmIGkgPT09IHByb3BlcnRpZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbklucHV0Rm9jdXMoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNob3dPbkZvY3VzICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dPdmVybGF5KCk7XG4gICAgICAgICAgICB0aGlzLm9uRm9jdXMuZW1pdChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25JbnB1dENsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd092ZXJsYXkoKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUZpZWxkU2VsZWN0LmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25JbnB1dEJsdXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5vbkJsdXIuZW1pdChldmVudCk7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2goKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbklucHV0S2V5ZG93bihldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICgoZXZlbnQuY29kZS50b1VwcGVyQ2FzZSgpID09PSAnRVNDQVBFJykgJiYgdGhpcy5oaWRlT25Fc2NhcGUpIHx8XG4gICAgICAgICAgICAoKGV2ZW50LmNvZGUudG9VcHBlckNhc2UoKSA9PT0gJ0VOVEVSJykgfHwgKGV2ZW50LmNvZGUudG9VcHBlckNhc2UoKSA9PT0gJ05VTVBBREVOVEVSJykpIHx8XG4gICAgICAgICAgICAoZXZlbnQuY29kZS50b1VwcGVyQ2FzZSgpID09PSAnVEFCJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVPdmVybGF5KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsZWFyT3B0aW9uc0NsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG9nZ2xlQWxsQ2hlY2tib3hJbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5vblNlbGVjdENoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuXG4gICAgICAgIHRoaXMuX3NlYXJjaFNlbGVjdElucHV0Rm9jdXMoKTtcbiAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dPdmVybGF5KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX292ZXJsYXlWaXNpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5VmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVBbGxDaGVja2JveCgpO1xuICAgICAgICAgICAgdGhpcy5vbk9wZW5lZENoYW5nZS5lbWl0KHRoaXMuX292ZXJsYXlWaXNpYmxlKTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuX2NhY2hlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25TY3JvbGwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoaWRlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbk9wZW5lZENoYW5nZS5lbWl0KHRoaXMuX292ZXJsYXlWaXNpYmxlKTtcbiAgICAgICAgdGhpcy5fY2FjaGUgPSB7fTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZU92ZXJsYXkoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMubG9hZGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9vdmVybGF5VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd092ZXJsYXkoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlT3ZlcmxheSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSW5maW5pdGUgc2Nyb2xsIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGFzeW5jIG9uU2Nyb2xsKCkge1xuICAgICAgICBpZiAoIXRoaXMuaW5maW5pdGVTY3JvbGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwodGhpcy5uZXh0QmF0Y2hGbikpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0EgZnVuw6fDo28gXCJuZXh0QmF0Y2hGblwiIMOpIG9icmlnYXTDs3JpYSBlIG7Do28gZm9pIGluZm9ybWFkYScpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5fcGFnZU1vZGVsKSAmJiAodGhpcy5fcGFnZU1vZGVsLnRvdGFsUGFnZXMgPT09IHRoaXMuX3BhZ2VNb2RlbC5udW1iZXIpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYWdlTnVtYmVyOiBudW1iZXIgPSAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5fcGFnZU1vZGVsKSA/IHRoaXMuX3BhZ2VNb2RlbC5udW1iZXIgKyAxIDogMDtcblxuICAgICAgICAvLyBNYW50ZW1vcyB1bSDDrW5kaWNlIGRlIHDDoWdpbmFzIGNhcnJlZ2FkYXMgcGVsbyBzZXJ2aWRvciBwYXJhIG7Do28gY2FycmVnYXJtb3Mgb3MgbWVzbW9zIGRhZG9zIGR1YXMgdmV6ZXNcbiAgICAgICAgLy8gSXNzbyDDqSBiYXNlYWRvIG5hIHDDoWdpbmEgZG8gc2Vydmlkb3IsIG7Do28gbmEgaW50ZXJmYWNlIGRvIHVzdcOhcmlvXG4gICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl9jYWNoZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhY2hlID0ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2NhY2hlW3BhZ2VOdW1iZXJdKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2FjaGVbcGFnZU51bWJlcl0gPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nKys7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5uZXh0QmF0Y2hGbih0aGlzLl9mb3JtQ29udHJvbFNlYXJjaC52YWx1ZSwgcGFnZU51bWJlciwgdGhpcy5wYXJhbU5leHRCYXRjaCkudGhlbihwYWdlZERhdGEgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcGFnZU1vZGVsID0gcGFnZWREYXRhO1xuICAgICAgICAgICAgdGhpcy5fdG90YWxPcHRpb25zID0gcGFnZWREYXRhLnRvdGFsRWxlbWVudHM7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIERlc2xvY2FtZW50byBkYSBsaW5oYSBpbmljaWFsLiBFc3RhIMOpIGEgcG9zacOnw6NvIHBhcmEgaW5zZXJpciBvcyBub3ZvcyBkYWRvc1xuICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9wYWdlTW9kZWwubnVtYmVyICogdGhpcy5wYWdlU2l6ZTtcblxuICAgICAgICAgICAgLy8gQ29waWFyIGRhZG9zIGV4aXN0ZW50ZXNcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBbLi4udGhpcy5vcHRpb25zXTtcblxuICAgICAgICAgICAgLy8gSW5zZXJpciBub3ZhcyBsaW5oYXMgbmEgcG9zacOnw6NvIGNvcnJldGFcbiAgICAgICAgICAgIG9wdGlvbnMuc3BsaWNlKHN0YXJ0LCB0aGlzLnBhZ2VTaXplLCAuLi5wYWdlZERhdGEuY29udGVudCk7XG5cbiAgICAgICAgICAgIC8vIFZvbHRhIG8gYXJyYXkgZGUgb3DDp8O1ZXMgamEgYXR1YWxpemFkbyBwYXJhIGV4aWJpw6fDo29cbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRvZ2dsZUFsbENoZWNrYm94Q2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2VUb2dnbGVBbGxDaGVja2JveCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVBbGxDaGVja2JveCgpO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIC8vIERpbWludWlyIG8gY29udGFkb3IgZGUgY2hhbWFkYXMgZGUgQVBJIHBlbmRlbnRlc1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmctLTtcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSAwO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuY2RrVmlydHVhbFNjcm9sbFZpZXdQb3J0KSAmJiB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5jZGtWaXJ0dWFsU2Nyb2xsVmlld1BvcnQuc2Nyb2xsVG9JbmRleCh0aGlzLm9wdGlvbnMubGVuZ3RoLCAnc21vb3RoJyk7XG4gICAgICAgICAgICB0aGlzLmNka1ZpcnR1YWxTY3JvbGxWaWV3UG9ydC5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8vIE9wdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgb25CdXR0b25TZWxlY3RPcHRpb25DbGljayhvcHRpb246IFQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBbXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleE9wdGlvbjogbnVtYmVyID0gdGhpcy52YWx1ZS5maW5kSW5kZXgobyA9PiBPYmplY3RVdGlsLmVxdWFscyhvLCBvcHRpb24pKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXhPcHRpb24gPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBsVmFsdWUuc3BsaWNlKGluZGV4T3B0aW9uLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IFsuLi5sVmFsdWVdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy52YWx1ZSwgb3B0aW9uXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gb3B0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbmRldGVybWluYXRlQWxsQ2hlY2tib3goKTtcblxuICAgICAgICB0aGlzLm9uU2VsZWN0Q2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5kZXRlcm1pbmF0ZUFsbENoZWNrYm94KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiB0aGlzLnNob3dTZWxlY3RBbGwpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSB8fFxuICAgICAgICAgICAgICAgICF0aGlzLnZhbHVlIHx8XG4gICAgICAgICAgICAgICAgKHRoaXMudmFsdWUgJiYgIXRoaXMudmFsdWUubGVuZ3RoKSB8fFxuICAgICAgICAgICAgICAgICF0aGlzLm9wdGlvbnMgfHxcbiAgICAgICAgICAgICAgICAodGhpcy5vcHRpb25zICYmICF0aGlzLm9wdGlvbnMubGVuZ3RoKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVBbGxDaGVja2JveENoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUFsbENoZWNrYm94SW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmluZmluaXRlU2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkID0gdGhpcy52YWx1ZSAmJiB0aGlzLl9wYWdlTW9kZWwgJiYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCkgJiYgKHRoaXMuX3RvdGFsT3B0aW9ucyA+IDApICYmICh0aGlzLnZhbHVlLmxlbmd0aCA9PT0gdGhpcy5fdG90YWxPcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVBbGxDaGVja2JveEluZGV0ZXJtaW5hdGUgPSAodGhpcy52YWx1ZS5sZW5ndGggPiAwKSAmJiAodGhpcy52YWx1ZS5sZW5ndGggPCB0aGlzLl90b3RhbE9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkID0gdGhpcy52YWx1ZSAmJiAodGhpcy52YWx1ZS5sZW5ndGggPiAwKSAmJiB0aGlzLm9wdGlvbnMgJiYgKHRoaXMub3B0aW9ucy5sZW5ndGggPiAwKSAmJiAodGhpcy52YWx1ZS5sZW5ndGggPT09IHRoaXMub3B0aW9ucy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUFsbENoZWNrYm94SW5kZXRlcm1pbmF0ZSA9ICh0aGlzLnZhbHVlLmxlbmd0aCA+IDApICYmICh0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCkgJiYgKHRoaXMudmFsdWUubGVuZ3RoIDwgdGhpcy5vcHRpb25zLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb3B0aW9uQ2hlY2tib3hJc0NoZWNrZWQob3B0aW9uOiBUKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgJiYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGgpKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlLmZpbmRJbmRleChvID0+IE9iamVjdFV0aWwuZXF1YWxzKG8sIG9wdGlvbikpID4gLTE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGlja1NlbGVjdEFsbEJ5T3B0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmxvYWRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkID0gIXRoaXMudG9nZ2xlQWxsQ2hlY2tib3hDaGVja2VkO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlVG9nZ2xlQWxsQ2hlY2tib3goKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGFuZ2VUb2dnbGVBbGxDaGVja2JveCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRvZ2dsZUFsbENoZWNrYm94Q2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy5vcHRpb25zXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVBbGxDaGVja2JveCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xpY2tBZGRPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiAhdGhpcy5zaG93U2VsZWN0QWxsKSB7XG4gICAgICAgICAgICBjb25zdCBhZGRDaGFuZ2U6IEFkZENoYW5nZTxUPiA9IHtcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IHRoaXMudmFsdWUsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRBbGw6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5vbkFkZENoYW5nZS5lbWl0KGFkZENoYW5nZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJbnB1dCBzZWFyY2ggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBwcml2YXRlIF9kaXNhYmxlSW5wdXRTZWFyY2goKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMubG9hZGluZykge1xuICAgICAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2xTZWFyY2guZGlzYWJsZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2xTZWFyY2guZW5hYmxlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZWFyY2hDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm9uU2VhcmNoQ2hhbmdlLmVtaXQodmFsdWUpO1xuXG4gICAgICAgICAgICB0aGlzLl9wYWdlTW9kZWwgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gW107XG4gICAgICAgICAgICB0aGlzLl9jYWNoZSA9IHt9O1xuXG4gICAgICAgICAgICB0aGlzLm9uU2Nyb2xsKCk7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvY2FsaXphIG8gaW5wdXQgZGUgcGVzcXVpc2FcbiAgICAgKi9cbiAgICBwdWJsaWMgX3NlYXJjaFNlbGVjdElucHV0Rm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmZvcm1maWVsZFNlbGVjdFNlYXJjaElucHV0KSB8fCAhdGhpcy5fb3ZlcmxheVZpc2libGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBTZXRhIG8gZm9jb1xuICAgICAgICB0aGlzLmZvcm1maWVsZFNlbGVjdFNlYXJjaElucHV0LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVkZWZpbmUgbyB2YWxvciBkbyBpbnB1dCBkZSBwZXNxdWlzYSBhdHVhbFxuICAgICAqIEBwYXJhbSBmb2N1cyBzZSBkZXZlIGZvY2FyIGFww7NzIGEgcmVkZWZpbmnDp8Ojb1xuICAgICAqL1xuICAgIHB1YmxpYyBfc2VhcmNoU2VsZWN0SW5wdXRSZXNldChmb2N1cz86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZm9ybUNvbnRyb2xTZWFyY2guc2V0VmFsdWUoJycpO1xuICAgICAgICBpZiAoZm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlYXJjaFNlbGVjdElucHV0Rm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1hbmlwdWxhIG8gZXZlbnRvIGRlIHRlY2xhIHByZXNzaW9uYWRhLlxuICAgICAqIFBlcm1pdGUsIHBvciBleC4gc2VsZWNpb25hbmRvIGNvbSBhIHRlY2xhIGVudGVyLCBuYXZlZ2FuZG8gY29tIGFzIHRlY2xhcyBkZSBzZXRhLCBldGMuXG4gICAgICogQHBhcmFtIGV2ZW50XG4gICAgICovXG4gICAgcHVibGljIG9uSW5wdXRTZWFyY2hLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8vIEV2aXRlIGEgcHJvcGFnYcOnw6NvIGRlIHRvZG9zIG9zIGNhcmFjdGVyZXMgYWxmYW51bcOpcmljb3MgcGFyYSBldml0YXIgcHJvYmxlbWFzIGRlIHNlbGXDp8Ojb1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoZXZlbnQua2V5ICYmIGV2ZW50LmtleS5sZW5ndGggPT09IDEpIHx8XG4gICAgICAgICAgICAoZXZlbnQua2V5Q29kZSA+PSBBICYmIGV2ZW50LmtleUNvZGUgPD0gWikgfHxcbiAgICAgICAgICAgIChldmVudC5rZXlDb2RlID49IFpFUk8gJiYgZXZlbnQua2V5Q29kZSA8PSBOSU5FKSB8fFxuICAgICAgICAgICAgKGV2ZW50LmtleUNvZGUgPT09IFNQQUNFKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgZXZlbnQua2V5ICYmIGV2ZW50LmtleUNvZGUgPT09IEVOVEVSKSB7XG4gICAgICAgICAgICAvLyBSZWN1cGVyZSBvIGZvY28gYXDDs3MgYSBzZWxlw6fDo28gbcO6bHRpcGxhLCBwYXJhIHF1ZSBwb3NzYW1vcyBkaWdpdGFyIGFpbmRhIG1haXNcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCk6IHZvaWQgPT4gdGhpcy5fc2VhcmNoU2VsZWN0SW5wdXRGb2N1cygpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhc28gZXNwZWNpYWwsIHNlIGNsaWNhciBlbSBFc2NhcGUsIHNlIGEgZW50cmFkYSBlc3RpdmVyIHZhemlhLCBmZWNoZSBvIG1lbnUgc3VzcGVuc28sIGNhc28gY29udHLDoXJpbywgZXN2YXppZSBvIGNhbXBvIGRlIHBlc3F1aXNhXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZUNsZWFyT25Fc2NhcGVQcmVzc2VkICYmIChldmVudC5rZXlDb2RlID09PSBFU0NBUEUpICYmIHRoaXMuX2Zvcm1Db250cm9sU2VhcmNoLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWFyY2hTZWxlY3RJbnB1dFJlc2V0KHRydWUpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
|