@gipisistemas/ng-core 1.0.67 → 1.0.68
Sign up to get free protection for your applications and to get access to all the features.
- package/assets/styles/colors.scss +261 -0
- package/assets/styles/layout-grid.scss +146 -0
- package/assets/styles/styles.scss +149 -0
- package/assets/styles/theme.scss +22 -0
- package/assets/styles/typography.scss +54 -0
- package/assets/styles/variable.scss +41 -0
- package/bundles/gipisistemas-ng-core.umd.js +28311 -0
- package/bundles/gipisistemas-ng-core.umd.js.map +1 -0
- package/bundles/gipisistemas-ng-core.umd.min.js +66 -0
- package/bundles/gipisistemas-ng-core.umd.min.js.map +1 -0
- package/core/app-messages.d.ts +9 -0
- package/core/app.messages.d.ts +4 -0
- package/core/components/abstract-crud.component.d.ts +27 -0
- package/core/components/abstract-find.component.d.ts +43 -0
- package/core/components/abstract.component.d.ts +23 -0
- package/core/components/alert/alert.component.d.ts +7 -0
- package/core/core.module.d.ts +17 -0
- package/core/custom-breakpoints.d.ts +7 -0
- package/core/enums/local-time.enum.d.ts +5 -0
- package/core/extensions/string.extension.d.ts +3 -0
- package/core/gipi-components/components/abstract-crud.component.d.ts +25 -0
- package/core/gipi-components/components/abstract-find.component.d.ts +73 -0
- package/core/gipi-components/components/abstract.component.d.ts +38 -0
- package/core/gipi-components/decorators/autowired.decorator.d.ts +7 -0
- package/core/gipi-components/enums/sort-direction.enum.d.ts +5 -0
- package/core/gipi-components/interface/abstract-crud.interface.d.ts +5 -0
- package/core/gipi-components/interface/abstract-find.interface.d.ts +12 -0
- package/core/gipi-components/interface/abstract.interface.d.ts +11 -0
- package/core/gipi-components/interface/base-permission.interface.d.ts +9 -0
- package/core/gipi-components/models/abstract-filter.model.d.ts +9 -0
- package/core/gipi-components/models/abstract.model.d.ts +7 -0
- package/core/gipi-components/models/applied-filter.model.d.ts +9 -0
- package/core/gipi-components/models/dto/abstract.dto.d.ts +7 -0
- package/core/gipi-components/models/page-event.model.d.ts +18 -0
- package/core/gipi-components/models/page.model.d.ts +7 -0
- package/core/gipi-components/models/sort.model.d.ts +6 -0
- package/core/gipi-components/services/abstract-crud.service.d.ts +83 -0
- package/core/gipi-components/services/abstract.service.d.ts +19 -0
- package/core/gipi-components/services/base.service.d.ts +35 -0
- package/core/gipi-components/services/file.service.d.ts +6 -0
- package/core/gipi-components/services/session-storage.service.d.ts +8 -0
- package/core/gipi-components/types/generic.type.d.ts +1 -0
- package/core/gipi-components/types/uuid.type.d.ts +1 -0
- package/core/guards/auth.guard.d.ts +11 -0
- package/core/guards/permission.guard.d.ts +14 -0
- package/core/guards/public.guard.d.ts +11 -0
- package/core/interceptors/auth.interceptor.d.ts +9 -0
- package/core/interceptors/error.interceptor.d.ts +11 -0
- package/core/models/abstract.model.d.ts +3 -0
- package/core/models/archive.model.d.ts +4 -0
- package/core/models/authority.model.d.ts +3 -0
- package/core/models/base-user.model.d.ts +12 -0
- package/core/models/dto/abstract.dto.d.ts +2 -0
- package/core/models/dto/api-error.dto.d.ts +9 -0
- package/core/models/dto/api-sub-error.dto.d.ts +7 -0
- package/core/models/dto/chart.dto.d.ts +5 -0
- package/core/models/dto/confirmation.dto.d.ts +10 -0
- package/core/models/dto/dialog.dto.d.ts +36 -0
- package/core/models/dto/filter.dto.d.ts +8 -0
- package/core/models/dto/input-listbox.dto.d.ts +6 -0
- package/core/models/dto/menu.dto.d.ts +15 -0
- package/core/models/dto/message.dto.d.ts +7 -0
- package/core/models/dto/page.dto.d.ts +8 -0
- package/core/models/dto/sort.dto.d.ts +7 -0
- package/core/models/dto/tab.dto.d.ts +12 -0
- package/core/models/dto/table-column.dto.d.ts +21 -0
- package/core/models/dto/table-group-header.dto.d.ts +7 -0
- package/core/models/dto/table-page-event.dto.d.ts +6 -0
- package/core/models/dto/token.dto.d.ts +8 -0
- package/core/models/enums/criteria-operation.enum.d.ts +13 -0
- package/core/models/enums/criteria-sort-direction.enum.d.ts +4 -0
- package/core/models/enums/menu-type.enum.d.ts +6 -0
- package/core/models/enums/radio-button.enum.d.ts +6 -0
- package/core/models/enums/sort-direction.enum.d.ts +4 -0
- package/core/models/multitenant.model.d.ts +4 -0
- package/core/models/permission.model.d.ts +8 -0
- package/core/models/role.model.d.ts +7 -0
- package/core/pipes/local-time.pipe.d.ts +6 -0
- package/core/services/abstract-crud.service.d.ts +15 -0
- package/core/services/abstract-find.service.d.ts +30 -0
- package/core/services/abstract.service.d.ts +13 -0
- package/core/services/authentication.service.d.ts +23 -0
- package/core/services/breakpoint-observer.service.d.ts +9 -0
- package/core/services/confirmation.service.d.ts +8 -0
- package/core/services/dialog.service.d.ts +8 -0
- package/core/services/message.service.d.ts +8 -0
- package/core/services/nav.service.d.ts +16 -0
- package/core/services/svg-register.service.d.ts +22 -0
- package/core/types/local-time.type.d.ts +5 -0
- package/core/types/ng-class.type.d.ts +10 -0
- package/core/utils/array.util.d.ts +14 -0
- package/core/utils/browser.util.d.ts +4 -0
- package/core/utils/currency.util.d.ts +6 -0
- package/core/utils/date.util.d.ts +39 -0
- package/core/utils/document.util.d.ts +11 -0
- package/core/utils/email.util.d.ts +4 -0
- package/core/utils/number.util.d.ts +8 -0
- package/core/utils/object.util.d.ts +20 -0
- package/core/utils/password.util.d.ts +11 -0
- package/core/utils/phone.util.d.ts +13 -0
- package/core/utils/string.util.d.ts +9 -0
- package/core/utils/table-column-builder.d.ts +40 -0
- package/core/utils/time.util.d.ts +9 -0
- package/core/utils/url-params.util.d.ts +7 -0
- package/core/utils/uuid.util.d.ts +5 -0
- package/core/utils/zindex.util.d.ts +7 -0
- package/core.d.ts +88 -0
- package/esm2015/core/app-messages.js +1 -0
- package/esm2015/core/app.messages.js +12 -0
- package/esm2015/core/components/abstract-crud.component.js +97 -0
- package/esm2015/core/components/abstract-find.component.js +189 -0
- package/esm2015/core/components/abstract.component.js +110 -0
- package/esm2015/core/components/alert/alert.component.js +24 -0
- package/esm2015/core/core.module.js +103 -0
- package/esm2015/core/custom-breakpoints.js +87 -0
- package/esm2015/core/enums/local-time.enum.js +6 -0
- package/esm2015/core/extensions/string.extension.js +37 -0
- package/esm2015/core/gipi-components/components/abstract-crud.component.js +110 -0
- package/esm2015/core/gipi-components/components/abstract-find.component.js +471 -0
- package/esm2015/core/gipi-components/components/abstract.component.js +140 -0
- package/esm2015/core/gipi-components/decorators/autowired.decorator.js +47 -0
- package/esm2015/core/gipi-components/enums/sort-direction.enum.js +6 -0
- package/esm2015/core/gipi-components/interface/abstract-crud.interface.js +1 -0
- package/esm2015/core/gipi-components/interface/abstract-find.interface.js +1 -0
- package/esm2015/core/gipi-components/interface/abstract.interface.js +1 -0
- package/esm2015/core/gipi-components/interface/base-permission.interface.js +1 -0
- package/esm2015/core/gipi-components/models/abstract-filter.model.js +3 -0
- package/esm2015/core/gipi-components/models/abstract.model.js +3 -0
- package/esm2015/core/gipi-components/models/applied-filter.model.js +19 -0
- package/esm2015/core/gipi-components/models/dto/abstract.dto.js +3 -0
- package/esm2015/core/gipi-components/models/page-event.model.js +35 -0
- package/esm2015/core/gipi-components/models/page.model.js +7 -0
- package/esm2015/core/gipi-components/models/sort.model.js +7 -0
- package/esm2015/core/gipi-components/services/abstract-crud.service.js +109 -0
- package/esm2015/core/gipi-components/services/abstract.service.js +47 -0
- package/esm2015/core/gipi-components/services/base.service.js +102 -0
- package/esm2015/core/gipi-components/services/file.service.js +51 -0
- package/esm2015/core/gipi-components/services/session-storage.service.js +44 -0
- package/esm2015/core/gipi-components/types/generic.type.js +1 -0
- package/esm2015/core/gipi-components/types/uuid.type.js +1 -0
- package/esm2015/core/guards/auth.guard.js +48 -0
- package/esm2015/core/guards/permission.guard.js +61 -0
- package/esm2015/core/guards/public.guard.js +45 -0
- package/esm2015/core/interceptors/auth.interceptor.js +28 -0
- package/esm2015/core/interceptors/error.interceptor.js +110 -0
- package/esm2015/core/models/abstract.model.js +3 -0
- package/esm2015/core/models/archive.model.js +3 -0
- package/esm2015/core/models/authority.model.js +3 -0
- package/esm2015/core/models/base-user.model.js +8 -0
- package/esm2015/core/models/dto/abstract.dto.js +3 -0
- package/esm2015/core/models/dto/api-error.dto.js +8 -0
- package/esm2015/core/models/dto/api-sub-error.dto.js +4 -0
- package/esm2015/core/models/dto/chart.dto.js +4 -0
- package/esm2015/core/models/dto/confirmation.dto.js +8 -0
- package/esm2015/core/models/dto/dialog.dto.js +4 -0
- package/esm2015/core/models/dto/filter.dto.js +4 -0
- package/esm2015/core/models/dto/input-listbox.dto.js +7 -0
- package/esm2015/core/models/dto/menu.dto.js +9 -0
- package/esm2015/core/models/dto/message.dto.js +4 -0
- package/esm2015/core/models/dto/page.dto.js +9 -0
- package/esm2015/core/models/dto/sort.dto.js +9 -0
- package/esm2015/core/models/dto/tab.dto.js +10 -0
- package/esm2015/core/models/dto/table-column.dto.js +24 -0
- package/esm2015/core/models/dto/table-group-header.dto.js +10 -0
- package/esm2015/core/models/dto/table-page-event.dto.js +7 -0
- package/esm2015/core/models/dto/token.dto.js +4 -0
- package/esm2015/core/models/enums/criteria-operation.enum.js +15 -0
- package/esm2015/core/models/enums/criteria-sort-direction.enum.js +6 -0
- package/esm2015/core/models/enums/menu-type.enum.js +7 -0
- package/esm2015/core/models/enums/radio-button.enum.js +8 -0
- package/esm2015/core/models/enums/sort-direction.enum.js +6 -0
- package/esm2015/core/models/multitenant.model.js +4 -0
- package/esm2015/core/models/permission.model.js +11 -0
- package/esm2015/core/models/role.model.js +8 -0
- package/esm2015/core/pipes/local-time.pipe.js +21 -0
- package/esm2015/core/services/abstract-crud.service.js +24 -0
- package/esm2015/core/services/abstract-find.service.js +65 -0
- package/esm2015/core/services/abstract.service.js +30 -0
- package/esm2015/core/services/authentication.service.js +100 -0
- package/esm2015/core/services/breakpoint-observer.service.js +42 -0
- package/esm2015/core/services/confirmation.service.js +55 -0
- package/esm2015/core/services/dialog.service.js +41 -0
- package/esm2015/core/services/message.service.js +33 -0
- package/esm2015/core/services/nav.service.js +48 -0
- package/esm2015/core/services/svg-register.service.js +55 -0
- package/esm2015/core/types/local-time.type.js +1 -0
- package/esm2015/core/types/ng-class.type.js +1 -0
- package/esm2015/core/utils/array.util.js +110 -0
- package/esm2015/core/utils/browser.util.js +13 -0
- package/esm2015/core/utils/currency.util.js +21 -0
- package/esm2015/core/utils/date.util.js +257 -0
- package/esm2015/core/utils/document.util.js +153 -0
- package/esm2015/core/utils/email.util.js +25 -0
- package/esm2015/core/utils/number.util.js +28 -0
- package/esm2015/core/utils/object.util.js +199 -0
- package/esm2015/core/utils/password.util.js +38 -0
- package/esm2015/core/utils/phone.util.js +125 -0
- package/esm2015/core/utils/string.util.js +40 -0
- package/esm2015/core/utils/table-column-builder.js +85 -0
- package/esm2015/core/utils/time.util.js +59 -0
- package/esm2015/core/utils/url-params.util.js +12 -0
- package/esm2015/core/utils/uuid.util.js +17 -0
- package/esm2015/core/utils/zindex.util.js +35 -0
- package/esm2015/core.js +89 -0
- package/esm2015/gipi-components.js +105 -0
- package/esm2015/gipisistemas-ng-core.js +21 -0
- package/esm2015/public_api.js +4 -0
- package/esm2015/shared/api/generate-id-component.js +12 -0
- package/esm2015/shared/api/gipi-ng-config.js +76 -0
- package/esm2015/shared/api/overlay-message.js +1 -0
- package/esm2015/shared/api/throttle.js +60 -0
- package/esm2015/shared/api/translation.js +1 -0
- package/esm2015/shared/components/button/button.component.js +110 -0
- package/esm2015/shared/components/card/card.component.js +44 -0
- package/esm2015/shared/components/checkbox/checkbox.component.js +79 -0
- package/esm2015/shared/components/dom/connected-overlay-scroll-handler.js +27 -0
- package/esm2015/shared/components/dom/dom-handler.js +538 -0
- package/esm2015/shared/components/icon/icon.component.js +35 -0
- package/esm2015/shared/components/input/input.component.js +235 -0
- package/esm2015/shared/components/input-currency/input-currency.component.js +115 -0
- package/esm2015/shared/components/input-file/input-file.component.js +161 -0
- package/esm2015/shared/components/loading/loading.component.js +15 -0
- package/esm2015/shared/components/loading-overlay/loading-overlay.component.js +21 -0
- package/esm2015/shared/components/overlay-panel/overlay-panel.component.js +361 -0
- package/esm2015/shared/components/popover/popover-ref.js +25 -0
- package/esm2015/shared/components/popover/popover.component.js +34 -0
- package/esm2015/shared/components/popover/popover.service.js +85 -0
- package/esm2015/shared/components/radio-group-entity/radio-group-entity.component.js +74 -0
- package/esm2015/shared/components/radio-group-enum/radio-group-enum.component.js +126 -0
- package/esm2015/shared/components/select-button/select-button.component.js +181 -0
- package/esm2015/shared/components/select-entity/select-entity.component.js +262 -0
- package/esm2015/shared/components/select-entity-paged/select-entity-paged.component.js +419 -0
- package/esm2015/shared/components/select-entity-paged/shared/default-options.js +35 -0
- package/esm2015/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.js +69 -0
- package/esm2015/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.js +59 -0
- package/esm2015/shared/components/select-entity-paged/shared/select-no-entries-found.directive.js +20 -0
- package/esm2015/shared/components/select-entity-paged/shared/select-search/select-search.component.js +547 -0
- package/esm2015/shared/components/select-entity-paged/shared/select-search-clear.directive.js +18 -0
- package/esm2015/shared/components/select-enum/select-enum.component.js +117 -0
- package/esm2015/shared/components/select-month-period/select-month-period.component.js +87 -0
- package/esm2015/shared/components/slide-toggle/slide-toggle.component.js +75 -0
- package/esm2015/shared/components/stepper/stepper.component.js +32 -0
- package/esm2015/shared/components/tab/tab.component.js +57 -0
- package/esm2015/shared/components/tab-group/tab-group.component.js +117 -0
- package/esm2015/shared/components/table/table.component.js +523 -0
- package/esm2015/shared/components/table-scrolled/table-scrolled.component.js +105 -0
- package/esm2015/shared/components/textarea/textarea.component.js +156 -0
- package/esm2015/shared/directives/dynamic-tab.directive.js +18 -0
- package/esm2015/shared/directives/generic-template.directive.js +30 -0
- package/esm2015/shared/directives/input-select-infinite-scroll.directive.js +109 -0
- package/esm2015/shared/directives/lower-case.directive.js +47 -0
- package/esm2015/shared/directives/phone-mask.directive.js +60 -0
- package/esm2015/shared/directives/space-drop.directive.js +47 -0
- package/esm2015/shared/directives/upper-case.directive.js +47 -0
- package/esm2015/shared/gipi-components/abstract-form/abstract-form.component.js +119 -0
- package/esm2015/shared/gipi-components/action-row/action-row.component.js +30 -0
- package/esm2015/shared/gipi-components/badge/badge.component.js +44 -0
- package/esm2015/shared/gipi-components/button/button.component.js +251 -0
- package/esm2015/shared/gipi-components/chips/chips.component.js +149 -0
- package/esm2015/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.js +44 -0
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +324 -0
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.js +41 -0
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.js +35 -0
- package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.js +259 -0
- package/esm2015/shared/gipi-components/datepicker/datepicker/datepicker.component.js +218 -0
- package/esm2015/shared/gipi-components/datepicker/datepicker.module.js +130 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/calendar-body.js +341 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/calendar.js +397 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.js +325 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-input.js +329 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.js +41 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.js +61 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.js +159 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.js +35 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.js +555 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.js +14 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.js +303 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.js +179 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.js +51 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.js +124 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker.js +29 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/month-view.js +365 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.js +305 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.js +116 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.js +10 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.js +294 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.js +19 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.js +81 -0
- package/esm2015/shared/gipi-components/datepicker/mat-datepicker/year-view.js +294 -0
- package/esm2015/shared/gipi-components/dom/connected-overlay-scroll-handler.js +27 -0
- package/esm2015/shared/gipi-components/dom/dom-handler.js +645 -0
- package/esm2015/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +185 -0
- package/esm2015/shared/gipi-components/expansion-panel/expansion-panel.component.js +81 -0
- package/esm2015/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.js +240 -0
- package/esm2015/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.js +92 -0
- package/esm2015/shared/gipi-components/footer/footer.component.js +29 -0
- package/esm2015/shared/gipi-components/form-field/form-field.component.js +262 -0
- package/esm2015/shared/gipi-components/helpful-tip/helpful-tip.component.js +62 -0
- package/esm2015/shared/gipi-components/infinite-scroll/infinite-scroll.directive.js +103 -0
- package/esm2015/shared/gipi-components/input-checkbox/input-checkbox.component.js +112 -0
- package/esm2015/shared/gipi-components/input-currency/input-currency.component.js +197 -0
- package/esm2015/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +408 -0
- package/esm2015/shared/gipi-components/input-select/input-select.component.js +655 -0
- package/esm2015/shared/gipi-components/input-select-enum/input-select-enum.component.js +311 -0
- package/esm2015/shared/gipi-components/input-select-listbox/input-select-listbox.component.js +422 -0
- package/esm2015/shared/gipi-components/input-select-paged/input-search/input-search.component.js +374 -0
- package/esm2015/shared/gipi-components/input-select-paged/input-select-paged.component.js +350 -0
- package/esm2015/shared/gipi-components/input-select-radio/input-select-radio.component.js +269 -0
- package/esm2015/shared/gipi-components/layout-grid/col.directive.js +161 -0
- package/esm2015/shared/gipi-components/layout-grid/row.directive.js +124 -0
- package/esm2015/shared/gipi-components/layout-grid/services/breakpoint.service.js +87 -0
- package/esm2015/shared/gipi-components/layout-grid/services/resize.service.js +64 -0
- package/esm2015/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.js +193 -0
- package/esm2015/shared/gipi-components/month-year-picker/mont-year-picker.module.js +47 -0
- package/esm2015/shared/gipi-components/month-year-picker/month-year-picker.component.js +460 -0
- package/esm2015/shared/gipi-components/notification/notification.component.js +104 -0
- package/esm2015/shared/gipi-components/novelties/novelties.component.js +109 -0
- package/esm2015/shared/gipi-components/overlay/overlay.component.js +565 -0
- package/esm2015/shared/gipi-components/overlay/shared/overlay-service.js +21 -0
- package/esm2015/shared/gipi-components/overlay/shared/overlay_options.js +1 -0
- package/esm2015/shared/gipi-components/password-requeriments/password-requeriments.component.js +127 -0
- package/esm2015/shared/gipi-components/popover/popover.component.js +397 -0
- package/esm2015/shared/gipi-components/popover/shared/popover-animations.js +29 -0
- package/esm2015/shared/gipi-components/popover/shared/popover-errors.js +27 -0
- package/esm2015/shared/gipi-components/popover/shared/popover-interfaces.js +1 -0
- package/esm2015/shared/gipi-components/popover/shared/popover-target.js +19 -0
- package/esm2015/shared/gipi-components/popover/shared/popover-trigger.js +514 -0
- package/esm2015/shared/gipi-components/popover/shared/popover-types.js +1 -0
- package/esm2015/shared/gipi-components/radio-group/radio-group.component.js +143 -0
- package/esm2015/shared/gipi-components/range-page/range-page.component.js +254 -0
- package/esm2015/shared/gipi-components/range-slider/range-slider.component.js +345 -0
- package/esm2015/shared/gipi-components/select/select.component.js +211 -0
- package/esm2015/shared/gipi-components/select-button/select-button.component.js +187 -0
- package/esm2015/shared/gipi-components/sidebar/container/container.component.js +83 -0
- package/esm2015/shared/gipi-components/sidebar/sidenav/sidenav.component.js +240 -0
- package/esm2015/shared/gipi-components/stepper/stepper.component.js +37 -0
- package/esm2015/shared/gipi-components/table/components/table-body/table-body.component.js +203 -0
- package/esm2015/shared/gipi-components/table/components/table-footer/table-footer.component.js +30 -0
- package/esm2015/shared/gipi-components/table/components/table-header/table-header.component.js +152 -0
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.js +122 -0
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.js +225 -0
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.js +1 -0
- package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination.service.js +105 -0
- package/esm2015/shared/gipi-components/table/components/table-pagination/table-pagination.component.js +102 -0
- package/esm2015/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.js +30 -0
- package/esm2015/shared/gipi-components/table/models/pipe-transform.model.js +1 -0
- package/esm2015/shared/gipi-components/table/models/sort.model.js +19 -0
- package/esm2015/shared/gipi-components/table/models/sorted-column.model.js +2 -0
- package/esm2015/shared/gipi-components/table/models/table-column-builder.model.js +104 -0
- package/esm2015/shared/gipi-components/table/models/table-column.model.js +162 -0
- package/esm2015/shared/gipi-components/table/table.component.js +159 -0
- package/esm2015/shared/gipi-components/table/types/sort-direction.type.js +1 -0
- package/esm2015/shared/gipi-components/table/types/sort.type.js +1 -0
- package/esm2015/shared/gipi-components/template/template.directive.js +33 -0
- package/esm2015/shared/gipi-components/toolbar/toolbar.component.js +53 -0
- package/esm2015/shared/gipi-components/top-nav/top-nav.component.js +38 -0
- package/esm2015/shared/gipi-components/user-profile/user-profile.component.js +109 -0
- package/esm2015/shared/material.module.js +102 -0
- package/esm2015/shared/shared.module.js +339 -0
- package/esm2015/shared.js +36 -0
- package/esm5/core/app-messages.js +1 -0
- package/esm5/core/app.messages.js +12 -0
- package/esm5/core/components/abstract-crud.component.js +108 -0
- package/esm5/core/components/abstract-find.component.js +201 -0
- package/esm5/core/components/abstract.component.js +112 -0
- package/esm5/core/components/alert/alert.component.js +25 -0
- package/esm5/core/core.module.js +107 -0
- package/esm5/core/custom-breakpoints.js +87 -0
- package/esm5/core/enums/local-time.enum.js +6 -0
- package/esm5/core/extensions/string.extension.js +37 -0
- package/esm5/core/gipi-components/components/abstract-crud.component.js +122 -0
- package/esm5/core/gipi-components/components/abstract-find.component.js +507 -0
- package/esm5/core/gipi-components/components/abstract.component.js +152 -0
- package/esm5/core/gipi-components/decorators/autowired.decorator.js +52 -0
- package/esm5/core/gipi-components/enums/sort-direction.enum.js +6 -0
- package/esm5/core/gipi-components/interface/abstract-crud.interface.js +1 -0
- package/esm5/core/gipi-components/interface/abstract-find.interface.js +1 -0
- package/esm5/core/gipi-components/interface/abstract.interface.js +1 -0
- package/esm5/core/gipi-components/interface/base-permission.interface.js +1 -0
- package/esm5/core/gipi-components/models/abstract-filter.model.js +7 -0
- package/esm5/core/gipi-components/models/abstract.model.js +7 -0
- package/esm5/core/gipi-components/models/applied-filter.model.js +29 -0
- package/esm5/core/gipi-components/models/dto/abstract.dto.js +7 -0
- package/esm5/core/gipi-components/models/page-event.model.js +49 -0
- package/esm5/core/gipi-components/models/page.model.js +9 -0
- package/esm5/core/gipi-components/models/sort.model.js +9 -0
- package/esm5/core/gipi-components/services/abstract-crud.service.js +114 -0
- package/esm5/core/gipi-components/services/abstract.service.js +49 -0
- package/esm5/core/gipi-components/services/base.service.js +143 -0
- package/esm5/core/gipi-components/services/file.service.js +53 -0
- package/esm5/core/gipi-components/services/session-storage.service.js +45 -0
- package/esm5/core/gipi-components/types/generic.type.js +1 -0
- package/esm5/core/gipi-components/types/uuid.type.js +1 -0
- package/esm5/core/guards/auth.guard.js +50 -0
- package/esm5/core/guards/permission.guard.js +74 -0
- package/esm5/core/guards/public.guard.js +47 -0
- package/esm5/core/interceptors/auth.interceptor.js +29 -0
- package/esm5/core/interceptors/error.interceptor.js +129 -0
- package/esm5/core/models/abstract.model.js +7 -0
- package/esm5/core/models/archive.model.js +7 -0
- package/esm5/core/models/authority.model.js +7 -0
- package/esm5/core/models/base-user.model.js +13 -0
- package/esm5/core/models/dto/abstract.dto.js +7 -0
- package/esm5/core/models/dto/api-error.dto.js +13 -0
- package/esm5/core/models/dto/api-sub-error.dto.js +11 -0
- package/esm5/core/models/dto/chart.dto.js +11 -0
- package/esm5/core/models/dto/confirmation.dto.js +13 -0
- package/esm5/core/models/dto/dialog.dto.js +11 -0
- package/esm5/core/models/dto/filter.dto.js +11 -0
- package/esm5/core/models/dto/input-listbox.dto.js +11 -0
- package/esm5/core/models/dto/menu.dto.js +14 -0
- package/esm5/core/models/dto/message.dto.js +11 -0
- package/esm5/core/models/dto/page.dto.js +14 -0
- package/esm5/core/models/dto/sort.dto.js +14 -0
- package/esm5/core/models/dto/tab.dto.js +15 -0
- package/esm5/core/models/dto/table-column.dto.js +29 -0
- package/esm5/core/models/dto/table-group-header.dto.js +15 -0
- package/esm5/core/models/dto/table-page-event.dto.js +11 -0
- package/esm5/core/models/dto/token.dto.js +11 -0
- package/esm5/core/models/enums/criteria-operation.enum.js +15 -0
- package/esm5/core/models/enums/criteria-sort-direction.enum.js +6 -0
- package/esm5/core/models/enums/menu-type.enum.js +7 -0
- package/esm5/core/models/enums/radio-button.enum.js +8 -0
- package/esm5/core/models/enums/sort-direction.enum.js +6 -0
- package/esm5/core/models/multitenant.model.js +11 -0
- package/esm5/core/models/permission.model.js +16 -0
- package/esm5/core/models/role.model.js +13 -0
- package/esm5/core/pipes/local-time.pipe.js +26 -0
- package/esm5/core/services/abstract-crud.service.js +30 -0
- package/esm5/core/services/abstract-find.service.js +71 -0
- package/esm5/core/services/abstract.service.js +32 -0
- package/esm5/core/services/authentication.service.js +121 -0
- package/esm5/core/services/breakpoint-observer.service.js +52 -0
- package/esm5/core/services/confirmation.service.js +66 -0
- package/esm5/core/services/dialog.service.js +44 -0
- package/esm5/core/services/message.service.js +36 -0
- package/esm5/core/services/nav.service.js +51 -0
- package/esm5/core/services/svg-register.service.js +67 -0
- package/esm5/core/types/local-time.type.js +1 -0
- package/esm5/core/types/ng-class.type.js +1 -0
- package/esm5/core/utils/array.util.js +120 -0
- package/esm5/core/utils/browser.util.js +17 -0
- package/esm5/core/utils/currency.util.js +26 -0
- package/esm5/core/utils/date.util.js +269 -0
- package/esm5/core/utils/document.util.js +157 -0
- package/esm5/core/utils/email.util.js +29 -0
- package/esm5/core/utils/number.util.js +32 -0
- package/esm5/core/utils/object.util.js +204 -0
- package/esm5/core/utils/password.util.js +42 -0
- package/esm5/core/utils/phone.util.js +135 -0
- package/esm5/core/utils/string.util.js +44 -0
- package/esm5/core/utils/table-column-builder.js +87 -0
- package/esm5/core/utils/time.util.js +65 -0
- package/esm5/core/utils/url-params.util.js +16 -0
- package/esm5/core/utils/uuid.util.js +21 -0
- package/esm5/core/utils/zindex.util.js +35 -0
- package/esm5/core.js +89 -0
- package/esm5/gipi-components.js +105 -0
- package/esm5/gipisistemas-ng-core.js +21 -0
- package/esm5/public_api.js +4 -0
- package/esm5/shared/api/generate-id-component.js +16 -0
- package/esm5/shared/api/gipi-ng-config.js +77 -0
- package/esm5/shared/api/overlay-message.js +1 -0
- package/esm5/shared/api/throttle.js +60 -0
- package/esm5/shared/api/translation.js +1 -0
- package/esm5/shared/components/button/button.component.js +111 -0
- package/esm5/shared/components/card/card.component.js +45 -0
- package/esm5/shared/components/checkbox/checkbox.component.js +85 -0
- package/esm5/shared/components/dom/connected-overlay-scroll-handler.js +30 -0
- package/esm5/shared/components/dom/dom-handler.js +573 -0
- package/esm5/shared/components/icon/icon.component.js +38 -0
- package/esm5/shared/components/input/input.component.js +242 -0
- package/esm5/shared/components/input-currency/input-currency.component.js +121 -0
- package/esm5/shared/components/input-file/input-file.component.js +165 -0
- package/esm5/shared/components/loading/loading.component.js +18 -0
- package/esm5/shared/components/loading-overlay/loading-overlay.component.js +23 -0
- package/esm5/shared/components/overlay-panel/overlay-panel.component.js +366 -0
- package/esm5/shared/components/popover/popover-ref.js +28 -0
- package/esm5/shared/components/popover/popover.component.js +35 -0
- package/esm5/shared/components/popover/popover.service.js +88 -0
- package/esm5/shared/components/radio-group-entity/radio-group-entity.component.js +80 -0
- package/esm5/shared/components/radio-group-enum/radio-group-enum.component.js +138 -0
- package/esm5/shared/components/select-button/select-button.component.js +195 -0
- package/esm5/shared/components/select-entity/select-entity.component.js +269 -0
- package/esm5/shared/components/select-entity-paged/select-entity-paged.component.js +453 -0
- package/esm5/shared/components/select-entity-paged/shared/default-options.js +35 -0
- package/esm5/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.js +72 -0
- package/esm5/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.js +62 -0
- package/esm5/shared/components/select-entity-paged/shared/select-no-entries-found.directive.js +23 -0
- package/esm5/shared/components/select-entity-paged/shared/select-search/select-search.component.js +590 -0
- package/esm5/shared/components/select-entity-paged/shared/select-search-clear.directive.js +21 -0
- package/esm5/shared/components/select-enum/select-enum.component.js +124 -0
- package/esm5/shared/components/select-month-period/select-month-period.component.js +91 -0
- package/esm5/shared/components/slide-toggle/slide-toggle.component.js +81 -0
- package/esm5/shared/components/stepper/stepper.component.js +36 -0
- package/esm5/shared/components/tab/tab.component.js +58 -0
- package/esm5/shared/components/tab-group/tab-group.component.js +125 -0
- package/esm5/shared/components/table/table.component.js +538 -0
- package/esm5/shared/components/table-scrolled/table-scrolled.component.js +107 -0
- package/esm5/shared/components/textarea/textarea.component.js +174 -0
- package/esm5/shared/directives/dynamic-tab.directive.js +19 -0
- package/esm5/shared/directives/generic-template.directive.js +31 -0
- package/esm5/shared/directives/input-select-infinite-scroll.directive.js +113 -0
- package/esm5/shared/directives/lower-case.directive.js +48 -0
- package/esm5/shared/directives/phone-mask.directive.js +61 -0
- package/esm5/shared/directives/space-drop.directive.js +48 -0
- package/esm5/shared/directives/upper-case.directive.js +48 -0
- package/esm5/shared/gipi-components/abstract-form/abstract-form.component.js +141 -0
- package/esm5/shared/gipi-components/action-row/action-row.component.js +33 -0
- package/esm5/shared/gipi-components/badge/badge.component.js +46 -0
- package/esm5/shared/gipi-components/button/button.component.js +257 -0
- package/esm5/shared/gipi-components/chips/chips.component.js +159 -0
- package/esm5/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.js +46 -0
- package/esm5/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +378 -0
- package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.js +42 -0
- package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.js +40 -0
- package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.js +291 -0
- package/esm5/shared/gipi-components/datepicker/datepicker/datepicker.component.js +252 -0
- package/esm5/shared/gipi-components/datepicker/datepicker.module.js +133 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/calendar-body.js +349 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/calendar.js +441 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.js +339 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-input.js +376 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.js +46 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.js +62 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.js +167 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.js +35 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.js +586 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.js +14 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.js +327 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.js +199 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.js +52 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.js +133 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker.js +34 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/month-view.js +384 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.js +324 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.js +118 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.js +10 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.js +300 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.js +19 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.js +82 -0
- package/esm5/shared/gipi-components/datepicker/mat-datepicker/year-view.js +313 -0
- package/esm5/shared/gipi-components/dom/connected-overlay-scroll-handler.js +30 -0
- package/esm5/shared/gipi-components/dom/dom-handler.js +681 -0
- package/esm5/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +191 -0
- package/esm5/shared/gipi-components/expansion-panel/expansion-panel.component.js +83 -0
- package/esm5/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.js +255 -0
- package/esm5/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.js +93 -0
- package/esm5/shared/gipi-components/footer/footer.component.js +32 -0
- package/esm5/shared/gipi-components/form-field/form-field.component.js +276 -0
- package/esm5/shared/gipi-components/helpful-tip/helpful-tip.component.js +68 -0
- package/esm5/shared/gipi-components/infinite-scroll/infinite-scroll.directive.js +106 -0
- package/esm5/shared/gipi-components/input-checkbox/input-checkbox.component.js +118 -0
- package/esm5/shared/gipi-components/input-currency/input-currency.component.js +207 -0
- package/esm5/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +426 -0
- package/esm5/shared/gipi-components/input-select/input-select.component.js +698 -0
- package/esm5/shared/gipi-components/input-select-enum/input-select-enum.component.js +351 -0
- package/esm5/shared/gipi-components/input-select-listbox/input-select-listbox.component.js +437 -0
- package/esm5/shared/gipi-components/input-select-paged/input-search/input-search.component.js +397 -0
- package/esm5/shared/gipi-components/input-select-paged/input-select-paged.component.js +384 -0
- package/esm5/shared/gipi-components/input-select-radio/input-select-radio.component.js +286 -0
- package/esm5/shared/gipi-components/layout-grid/col.directive.js +164 -0
- package/esm5/shared/gipi-components/layout-grid/row.directive.js +127 -0
- package/esm5/shared/gipi-components/layout-grid/services/breakpoint.service.js +90 -0
- package/esm5/shared/gipi-components/layout-grid/services/resize.service.js +68 -0
- package/esm5/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.js +200 -0
- package/esm5/shared/gipi-components/month-year-picker/mont-year-picker.module.js +50 -0
- package/esm5/shared/gipi-components/month-year-picker/month-year-picker.component.js +505 -0
- package/esm5/shared/gipi-components/notification/notification.component.js +106 -0
- package/esm5/shared/gipi-components/novelties/novelties.component.js +111 -0
- package/esm5/shared/gipi-components/overlay/overlay.component.js +670 -0
- package/esm5/shared/gipi-components/overlay/shared/overlay-service.js +22 -0
- package/esm5/shared/gipi-components/overlay/shared/overlay_options.js +1 -0
- package/esm5/shared/gipi-components/password-requeriments/password-requeriments.component.js +157 -0
- package/esm5/shared/gipi-components/popover/popover.component.js +473 -0
- package/esm5/shared/gipi-components/popover/shared/popover-animations.js +29 -0
- package/esm5/shared/gipi-components/popover/shared/popover-errors.js +21 -0
- package/esm5/shared/gipi-components/popover/shared/popover-interfaces.js +1 -0
- package/esm5/shared/gipi-components/popover/shared/popover-target.js +20 -0
- package/esm5/shared/gipi-components/popover/shared/popover-trigger.js +529 -0
- package/esm5/shared/gipi-components/popover/shared/popover-types.js +1 -0
- package/esm5/shared/gipi-components/radio-group/radio-group.component.js +155 -0
- package/esm5/shared/gipi-components/range-page/range-page.component.js +283 -0
- package/esm5/shared/gipi-components/range-slider/range-slider.component.js +364 -0
- package/esm5/shared/gipi-components/select/select.component.js +222 -0
- package/esm5/shared/gipi-components/select-button/select-button.component.js +206 -0
- package/esm5/shared/gipi-components/sidebar/container/container.component.js +96 -0
- package/esm5/shared/gipi-components/sidebar/sidenav/sidenav.component.js +267 -0
- package/esm5/shared/gipi-components/stepper/stepper.component.js +43 -0
- package/esm5/shared/gipi-components/table/components/table-body/table-body.component.js +209 -0
- package/esm5/shared/gipi-components/table/components/table-footer/table-footer.component.js +33 -0
- package/esm5/shared/gipi-components/table/components/table-header/table-header.component.js +155 -0
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.js +123 -0
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.js +228 -0
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.js +1 -0
- package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination.service.js +108 -0
- package/esm5/shared/gipi-components/table/components/table-pagination/table-pagination.component.js +116 -0
- package/esm5/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.js +33 -0
- package/esm5/shared/gipi-components/table/models/pipe-transform.model.js +1 -0
- package/esm5/shared/gipi-components/table/models/sort.model.js +29 -0
- package/esm5/shared/gipi-components/table/models/sorted-column.model.js +2 -0
- package/esm5/shared/gipi-components/table/models/table-column-builder.model.js +106 -0
- package/esm5/shared/gipi-components/table/models/table-column.model.js +252 -0
- package/esm5/shared/gipi-components/table/table.component.js +161 -0
- package/esm5/shared/gipi-components/table/types/sort-direction.type.js +1 -0
- package/esm5/shared/gipi-components/table/types/sort.type.js +1 -0
- package/esm5/shared/gipi-components/template/template.directive.js +34 -0
- package/esm5/shared/gipi-components/toolbar/toolbar.component.js +56 -0
- package/esm5/shared/gipi-components/top-nav/top-nav.component.js +40 -0
- package/esm5/shared/gipi-components/user-profile/user-profile.component.js +115 -0
- package/esm5/shared/material.module.js +101 -0
- package/esm5/shared/shared.module.js +340 -0
- package/esm5/shared.js +36 -0
- package/fesm2015/gipisistemas-ng-core.js +25879 -0
- package/fesm2015/gipisistemas-ng-core.js.map +1 -0
- package/fesm5/gipisistemas-ng-core.js +27905 -0
- package/fesm5/gipisistemas-ng-core.js.map +1 -0
- package/gipi-components.d.ts +97 -0
- package/gipisistemas-ng-core.d.ts +20 -0
- package/gipisistemas-ng-core.metadata.json +1 -0
- package/package.json +31 -83
- package/public_api.d.ts +3 -0
- package/shared/api/generate-id-component.d.ts +3 -0
- package/shared/api/gipi-ng-config.d.ts +18 -0
- package/shared/api/overlay-message.d.ts +14 -0
- package/shared/api/throttle.d.ts +17 -0
- package/shared/api/translation.d.ts +45 -0
- package/shared/components/button/button.component.d.ts +26 -0
- package/shared/components/card/card.component.d.ts +10 -0
- package/shared/components/checkbox/checkbox.component.d.ts +20 -0
- package/shared/components/dom/connected-overlay-scroll-handler.d.ts +9 -0
- package/shared/components/dom/dom-handler.d.ts +74 -0
- package/shared/components/icon/icon.component.d.ts +9 -0
- package/shared/components/input/input.component.d.ts +52 -0
- package/shared/components/input-currency/input-currency.component.d.ts +29 -0
- package/shared/components/input-file/input-file.component.d.ts +28 -0
- package/shared/components/loading/loading.component.d.ts +4 -0
- package/shared/components/loading-overlay/loading-overlay.component.d.ts +6 -0
- package/shared/components/overlay-panel/overlay-panel.component.d.ts +67 -0
- package/shared/components/popover/popover-ref.d.ts +17 -0
- package/shared/components/popover/popover.component.d.ts +10 -0
- package/shared/components/popover/popover.service.d.ts +23 -0
- package/shared/components/radio-group-entity/radio-group-entity.component.d.ts +19 -0
- package/shared/components/radio-group-enum/radio-group-enum.component.d.ts +30 -0
- package/shared/components/select-button/select-button.component.d.ts +35 -0
- package/shared/components/select-entity/select-entity.component.d.ts +52 -0
- package/shared/components/select-entity-paged/select-entity-paged.component.d.ts +78 -0
- package/shared/components/select-entity-paged/shared/default-options.d.ts +25 -0
- package/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.d.ts +18 -0
- package/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.d.ts +16 -0
- package/shared/components/select-entity-paged/shared/select-no-entries-found.directive.d.ts +11 -0
- package/shared/components/select-entity-paged/shared/select-search/select-search.component.d.ts +119 -0
- package/shared/components/select-entity-paged/shared/select-search-clear.directive.d.ts +9 -0
- package/shared/components/select-enum/select-enum.component.d.ts +29 -0
- package/shared/components/select-month-period/select-month-period.component.d.ts +20 -0
- package/shared/components/slide-toggle/slide-toggle.component.d.ts +19 -0
- package/shared/components/stepper/stepper.component.d.ts +7 -0
- package/shared/components/tab/tab.component.d.ts +14 -0
- package/shared/components/tab-group/tab-group.component.d.ts +22 -0
- package/shared/components/table/table.component.d.ts +86 -0
- package/shared/components/table-scrolled/table-scrolled.component.d.ts +31 -0
- package/shared/components/textarea/textarea.component.d.ts +35 -0
- package/shared/directives/dynamic-tab.directive.d.ts +5 -0
- package/shared/directives/generic-template.directive.d.ts +8 -0
- package/shared/directives/input-select-infinite-scroll.directive.d.ts +35 -0
- package/shared/directives/lower-case.directive.d.ts +9 -0
- package/shared/directives/phone-mask.directive.d.ts +8 -0
- package/shared/directives/space-drop.directive.d.ts +9 -0
- package/shared/directives/upper-case.directive.d.ts +9 -0
- package/shared/gipi-components/abstract-form/abstract-form.component.d.ts +21 -0
- package/shared/gipi-components/action-row/action-row.component.d.ts +5 -0
- package/shared/gipi-components/badge/badge.component.d.ts +8 -0
- package/shared/gipi-components/button/button.component.d.ts +56 -0
- package/shared/gipi-components/chips/chips.component.d.ts +37 -0
- package/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.d.ts +11 -0
- package/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.d.ts +71 -0
- package/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.d.ts +11 -0
- package/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.d.ts +6 -0
- package/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.d.ts +40 -0
- package/shared/gipi-components/datepicker/datepicker/datepicker.component.d.ts +49 -0
- package/shared/gipi-components/datepicker/datepicker.module.d.ts +2 -0
- package/shared/gipi-components/datepicker/mat-datepicker/calendar-body.d.ts +143 -0
- package/shared/gipi-components/datepicker/mat-datepicker/calendar.d.ts +152 -0
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.d.ts +102 -0
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-input.d.ts +124 -0
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.d.ts +21 -0
- package/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.d.ts +45 -0
- package/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.d.ts +106 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.d.ts +16 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.d.ts +209 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.d.ts +9 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.d.ts +136 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.d.ts +68 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.d.ts +38 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.d.ts +39 -0
- package/shared/gipi-components/datepicker/mat-datepicker/datepicker.d.ts +11 -0
- package/shared/gipi-components/datepicker/mat-datepicker/month-view.d.ts +120 -0
- package/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.d.ts +85 -0
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.d.ts +225 -0
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.d.ts +20 -0
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.d.ts +76 -0
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.d.ts +9 -0
- package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.d.ts +33 -0
- package/shared/gipi-components/datepicker/mat-datepicker/year-view.d.ts +97 -0
- package/shared/gipi-components/dom/connected-overlay-scroll-handler.d.ts +9 -0
- package/shared/gipi-components/dom/dom-handler.d.ts +85 -0
- package/shared/gipi-components/dropdown-menu/dropdown-menu.component.d.ts +36 -0
- package/shared/gipi-components/expansion-panel/expansion-panel.component.d.ts +16 -0
- package/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.d.ts +43 -0
- package/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.d.ts +13 -0
- package/shared/gipi-components/footer/footer.component.d.ts +5 -0
- package/shared/gipi-components/form-field/form-field.component.d.ts +61 -0
- package/shared/gipi-components/helpful-tip/helpful-tip.component.d.ts +13 -0
- package/shared/gipi-components/infinite-scroll/infinite-scroll.directive.d.ts +27 -0
- package/shared/gipi-components/input-checkbox/input-checkbox.component.d.ts +28 -0
- package/shared/gipi-components/input-currency/input-currency.component.d.ts +48 -0
- package/shared/gipi-components/input-monthpicker/input-monthpicker.component.d.ts +89 -0
- package/shared/gipi-components/input-select/input-select.component.d.ts +120 -0
- package/shared/gipi-components/input-select-enum/input-select-enum.component.d.ts +65 -0
- package/shared/gipi-components/input-select-listbox/input-select-listbox.component.d.ts +85 -0
- package/shared/gipi-components/input-select-paged/input-search/input-search.component.d.ts +77 -0
- package/shared/gipi-components/input-select-paged/input-select-paged.component.d.ts +66 -0
- package/shared/gipi-components/input-select-radio/input-select-radio.component.d.ts +53 -0
- package/shared/gipi-components/layout-grid/col.directive.d.ts +38 -0
- package/shared/gipi-components/layout-grid/row.directive.d.ts +28 -0
- package/shared/gipi-components/layout-grid/services/breakpoint.service.d.ts +30 -0
- package/shared/gipi-components/layout-grid/services/resize.service.d.ts +17 -0
- package/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.d.ts +37 -0
- package/shared/gipi-components/month-year-picker/mont-year-picker.module.d.ts +2 -0
- package/shared/gipi-components/month-year-picker/month-year-picker.component.d.ts +104 -0
- package/shared/gipi-components/notification/notification.component.d.ts +21 -0
- package/shared/gipi-components/novelties/novelties.component.d.ts +22 -0
- package/shared/gipi-components/overlay/overlay.component.d.ts +113 -0
- package/shared/gipi-components/overlay/shared/overlay-service.d.ts +6 -0
- package/shared/gipi-components/overlay/shared/overlay_options.d.ts +50 -0
- package/shared/gipi-components/password-requeriments/password-requeriments.component.d.ts +27 -0
- package/shared/gipi-components/popover/popover.component.d.ts +133 -0
- package/shared/gipi-components/popover/shared/popover-animations.d.ts +13 -0
- package/shared/gipi-components/popover/shared/popover-errors.d.ts +14 -0
- package/shared/gipi-components/popover/shared/popover-interfaces.d.ts +43 -0
- package/shared/gipi-components/popover/shared/popover-target.d.ts +5 -0
- package/shared/gipi-components/popover/shared/popover-trigger.d.ts +140 -0
- package/shared/gipi-components/popover/shared/popover-types.d.ts +4 -0
- package/shared/gipi-components/radio-group/radio-group.component.d.ts +33 -0
- package/shared/gipi-components/range-page/range-page.component.d.ts +55 -0
- package/shared/gipi-components/range-slider/range-slider.component.d.ts +57 -0
- package/shared/gipi-components/select/select.component.d.ts +45 -0
- package/shared/gipi-components/select-button/select-button.component.d.ts +39 -0
- package/shared/gipi-components/sidebar/container/container.component.d.ts +15 -0
- package/shared/gipi-components/sidebar/sidenav/sidenav.component.d.ts +40 -0
- package/shared/gipi-components/stepper/stepper.component.d.ts +8 -0
- package/shared/gipi-components/table/components/table-body/table-body.component.d.ts +36 -0
- package/shared/gipi-components/table/components/table-footer/table-footer.component.d.ts +5 -0
- package/shared/gipi-components/table/components/table-header/table-header.component.d.ts +28 -0
- package/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.d.ts +40 -0
- package/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.d.ts +81 -0
- package/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.d.ts +24 -0
- package/shared/gipi-components/table/components/table-pagination/shared/pagination.service.d.ts +45 -0
- package/shared/gipi-components/table/components/table-pagination/table-pagination.component.d.ts +21 -0
- package/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.d.ts +5 -0
- package/shared/gipi-components/table/models/pipe-transform.model.d.ts +3 -0
- package/shared/gipi-components/table/models/sort.model.d.ts +10 -0
- package/shared/gipi-components/table/models/sorted-column.model.d.ts +6 -0
- package/shared/gipi-components/table/models/table-column-builder.model.d.ts +52 -0
- package/shared/gipi-components/table/models/table-column.model.d.ts +74 -0
- package/shared/gipi-components/table/table.component.d.ts +37 -0
- package/shared/gipi-components/table/types/sort-direction.type.d.ts +1 -0
- package/shared/gipi-components/table/types/sort.type.d.ts +1 -0
- package/shared/gipi-components/template/template.directive.d.ts +8 -0
- package/shared/gipi-components/toolbar/toolbar.component.d.ts +11 -0
- package/shared/gipi-components/top-nav/top-nav.component.d.ts +8 -0
- package/shared/gipi-components/user-profile/user-profile.component.d.ts +24 -0
- package/shared/material.module.d.ts +2 -0
- package/shared/shared.module.d.ts +6 -0
- package/shared.d.ts +35 -0
- package/README.md +0 -38
- package/_ITSS-NG-CI-CD.yml +0 -53
- package/_ITSS-NG-CI-PR.yml +0 -53
- package/angular-cli.json +0 -42
- package/azure-pipelines.yml +0 -35
- package/projects/itss-ng/ng-package.json +0 -7
- package/projects/itss-ng/package.json +0 -25
@@ -0,0 +1,514 @@
|
|
1
|
+
import { __decorate, __metadata, __param } from "tslib";
|
2
|
+
import { isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';
|
3
|
+
import { Direction, Directionality } from '@angular/cdk/bidi';
|
4
|
+
import { FlexibleConnectedPositionStrategy, HorizontalConnectionPos, Overlay, OverlayConfig, OverlayRef, ScrollStrategy, VerticalConnectionPos } from '@angular/cdk/overlay';
|
5
|
+
import { TemplatePortal } from '@angular/cdk/portal';
|
6
|
+
import { AfterViewInit, ChangeDetectorRef, Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnDestroy, Optional, Output, ViewContainerRef, } from '@angular/core';
|
7
|
+
import { Subject } from 'rxjs';
|
8
|
+
import { takeUntil } from 'rxjs/operators';
|
9
|
+
import { ObjectUtil } from '../../../../core/utils/object.util';
|
10
|
+
import { StringUtil } from '../../../../core/utils/string.util';
|
11
|
+
import { GIPIDomHandler } from '../../dom/dom-handler';
|
12
|
+
import { throwPopoverMissingError } from './popover-errors';
|
13
|
+
/**
|
14
|
+
* Esta diretiva destina-se a ser usada em conjunto com uma tag gipi-popover.
|
15
|
+
* Ele é responsável por alternar a exibição da instância popover fornecida.
|
16
|
+
*/
|
17
|
+
let GIPIPopoverTrigger = class GIPIPopoverTrigger {
|
18
|
+
constructor(_overlay, _elementRef, _viewContainerRef, _dir, _changeDetectorRef) {
|
19
|
+
this._overlay = _overlay;
|
20
|
+
this._elementRef = _elementRef;
|
21
|
+
this._viewContainerRef = _viewContainerRef;
|
22
|
+
this._dir = _dir;
|
23
|
+
this._changeDetectorRef = _changeDetectorRef;
|
24
|
+
this.ariaHaspopup = true;
|
25
|
+
this.popoverOpened = new Subject();
|
26
|
+
this.popoverClosed = new Subject();
|
27
|
+
this._overlayRef = null;
|
28
|
+
this._popoverOpen = false;
|
29
|
+
this._halt = false;
|
30
|
+
// tracking input type is necessary so it's possible to only auto-focus
|
31
|
+
// the first item of the list when the popover is opened via the keyboard
|
32
|
+
this._openedByMouse = false;
|
33
|
+
this._onDestroy = new Subject();
|
34
|
+
/** Popover backdrop close on click */
|
35
|
+
this.backdropCloseOnClick = true;
|
36
|
+
/** Event emitted when the associated popover is opened. */
|
37
|
+
this.opened = new EventEmitter();
|
38
|
+
/** Event emitted when the associated popover is closed. */
|
39
|
+
this.closed = new EventEmitter();
|
40
|
+
}
|
41
|
+
ngAfterViewInit() {
|
42
|
+
this._checkPopover();
|
43
|
+
this._setCurrentConfig();
|
44
|
+
this.popover.close.subscribe(() => this.closePopover());
|
45
|
+
}
|
46
|
+
ngOnDestroy() {
|
47
|
+
this.destroyPopover();
|
48
|
+
}
|
49
|
+
_setCurrentConfig() {
|
50
|
+
if (this.positionX === 'before' || this.positionX === 'after') {
|
51
|
+
this.popover.positionX = this.positionX;
|
52
|
+
}
|
53
|
+
if (this.positionY === 'above' || this.positionY === 'below') {
|
54
|
+
this.popover.positionY = this.positionY;
|
55
|
+
}
|
56
|
+
if (this.triggerEvent) {
|
57
|
+
this.popover.triggerEvent = this.triggerEvent;
|
58
|
+
}
|
59
|
+
if (this.enterDelay) {
|
60
|
+
this.popover.enterDelay = this.enterDelay;
|
61
|
+
}
|
62
|
+
if (this.leaveDelay) {
|
63
|
+
this.popover.leaveDelay = this.leaveDelay;
|
64
|
+
}
|
65
|
+
if (this.overlapTrigger === true || this.overlapTrigger === false) {
|
66
|
+
this.popover.overlapTrigger = this.overlapTrigger;
|
67
|
+
}
|
68
|
+
if (this.targetOffsetX) {
|
69
|
+
this.popover.targetOffsetX = this.targetOffsetX;
|
70
|
+
}
|
71
|
+
if (this.targetOffsetY) {
|
72
|
+
this.popover.targetOffsetY = this.targetOffsetY;
|
73
|
+
}
|
74
|
+
if (this.arrowOffsetX) {
|
75
|
+
this.popover.arrowOffsetX = this.arrowOffsetX;
|
76
|
+
}
|
77
|
+
if (this.arrowWidth) {
|
78
|
+
this.popover.arrowWidth = this.arrowWidth;
|
79
|
+
}
|
80
|
+
if (this.arrowColor) {
|
81
|
+
this.popover.arrowColor = this.arrowColor;
|
82
|
+
}
|
83
|
+
if (this.closeOnClick === true || this.closeOnClick === false) {
|
84
|
+
this.popover.closeOnClick = this.closeOnClick;
|
85
|
+
}
|
86
|
+
this.popover.setCurrentStyles();
|
87
|
+
}
|
88
|
+
/** Whether the popover is open. */
|
89
|
+
get popoverOpen() { return this._popoverOpen; }
|
90
|
+
onClick(event) {
|
91
|
+
if (this.popover.triggerEvent === 'click') {
|
92
|
+
this.togglePopover();
|
93
|
+
}
|
94
|
+
}
|
95
|
+
onMouseEnter(event) {
|
96
|
+
this._halt = false;
|
97
|
+
if (this.popover.triggerEvent === 'hover') {
|
98
|
+
this._mouseoverTimer = setTimeout(() => {
|
99
|
+
this.openPopover();
|
100
|
+
}, this.popover.enterDelay);
|
101
|
+
}
|
102
|
+
}
|
103
|
+
onMouseLeave(event) {
|
104
|
+
if (this.popover.triggerEvent === 'hover') {
|
105
|
+
if (this._mouseoverTimer) {
|
106
|
+
clearTimeout(this._mouseoverTimer);
|
107
|
+
this._mouseoverTimer = null;
|
108
|
+
}
|
109
|
+
if (this._popoverOpen) {
|
110
|
+
setTimeout(() => {
|
111
|
+
if (!this.popover.closeDisabled) {
|
112
|
+
this.closePopover();
|
113
|
+
}
|
114
|
+
}, this.popover.leaveDelay);
|
115
|
+
}
|
116
|
+
else {
|
117
|
+
this._halt = true;
|
118
|
+
}
|
119
|
+
}
|
120
|
+
}
|
121
|
+
/** Toggles the popover between the open and closed states. */
|
122
|
+
togglePopover() {
|
123
|
+
return this._popoverOpen ? this.closePopover() : this.openPopover();
|
124
|
+
}
|
125
|
+
/** Opens the popover. */
|
126
|
+
openPopover() {
|
127
|
+
if (!this._popoverOpen && !this._halt) {
|
128
|
+
this._createOverlay().attach(this._portal);
|
129
|
+
if (!ObjectUtil.isNull(this._viewContainerRef) && !ObjectUtil.isNull(this._viewContainerRef.element)) {
|
130
|
+
const width = GIPIDomHandler.getWidth(this._viewContainerRef.element.nativeElement);
|
131
|
+
if (StringUtil.isEmpty(this.popover.popoverWidth) || (this.popover.popoverWidth === 'auto')) {
|
132
|
+
this.popover.popoverWidth = `${width}px`;
|
133
|
+
}
|
134
|
+
}
|
135
|
+
this._subscribeToBackdrop();
|
136
|
+
this._subscribeToDetachments();
|
137
|
+
this._initPopover();
|
138
|
+
}
|
139
|
+
}
|
140
|
+
/** Closes the popover. */
|
141
|
+
closePopover() {
|
142
|
+
if (this._overlayRef) {
|
143
|
+
this._overlayRef.detach();
|
144
|
+
this._resetPopover();
|
145
|
+
}
|
146
|
+
}
|
147
|
+
/** Removes the popover from the DOM. */
|
148
|
+
destroyPopover() {
|
149
|
+
if (this._mouseoverTimer) {
|
150
|
+
clearTimeout(this._mouseoverTimer);
|
151
|
+
this._mouseoverTimer = null;
|
152
|
+
}
|
153
|
+
if (this._overlayRef) {
|
154
|
+
this._overlayRef.dispose();
|
155
|
+
this._overlayRef = null;
|
156
|
+
this._cleanUpSubscriptions();
|
157
|
+
}
|
158
|
+
this._onDestroy.next();
|
159
|
+
this._onDestroy.complete();
|
160
|
+
}
|
161
|
+
/** Focuses the popover trigger. */
|
162
|
+
focus() {
|
163
|
+
this._elementRef.nativeElement.focus();
|
164
|
+
}
|
165
|
+
/** The text direction of the containing app. */
|
166
|
+
get dir() {
|
167
|
+
return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';
|
168
|
+
}
|
169
|
+
/**
|
170
|
+
* This method ensures that the popover closes when the overlay backdrop is clicked.
|
171
|
+
* We do not use first() here because doing so would not catch clicks from within
|
172
|
+
* the popover, and it would fail to unsubscribe properly. Instead, we unsubscribe
|
173
|
+
* explicitly when the popover is closed or destroyed.
|
174
|
+
*/
|
175
|
+
_subscribeToBackdrop() {
|
176
|
+
if (this._overlayRef) {
|
177
|
+
/** Only subscribe to backdrop if trigger event is click */
|
178
|
+
if (this.triggerEvent === 'click' && this.backdropCloseOnClick === true) {
|
179
|
+
this._overlayRef.backdropClick()
|
180
|
+
.pipe(takeUntil(this.popoverClosed), takeUntil(this._onDestroy))
|
181
|
+
.subscribe(() => {
|
182
|
+
this.popover._emitCloseEvent();
|
183
|
+
});
|
184
|
+
}
|
185
|
+
}
|
186
|
+
}
|
187
|
+
_subscribeToDetachments() {
|
188
|
+
if (this._overlayRef) {
|
189
|
+
this._overlayRef.detachments()
|
190
|
+
.pipe(takeUntil(this.popoverClosed), takeUntil(this._onDestroy))
|
191
|
+
.subscribe(() => {
|
192
|
+
this._setPopoverClosed();
|
193
|
+
});
|
194
|
+
}
|
195
|
+
}
|
196
|
+
/**
|
197
|
+
* This method sets the popover state to open and focuses the first item if
|
198
|
+
* the popover was opened via the keyboard.
|
199
|
+
*/
|
200
|
+
_initPopover() {
|
201
|
+
this._setPopoverOpened();
|
202
|
+
}
|
203
|
+
/**
|
204
|
+
* This method resets the popover when it's closed, most importantly restoring
|
205
|
+
* focus to the popover trigger if the popover was opened via the keyboard.
|
206
|
+
*/
|
207
|
+
_resetPopover() {
|
208
|
+
this._setPopoverClosed();
|
209
|
+
// Focus only needs to be reset to the host element if the popover was opened
|
210
|
+
// by the keyboard and manually shifted to the first popover item.
|
211
|
+
if (!this._openedByMouse) {
|
212
|
+
this.focus();
|
213
|
+
}
|
214
|
+
this._openedByMouse = false;
|
215
|
+
}
|
216
|
+
/** set state rather than toggle to support triggers sharing a popover */
|
217
|
+
_setPopoverOpened() {
|
218
|
+
if (!this._popoverOpen) {
|
219
|
+
this._popoverOpen = true;
|
220
|
+
this.popoverOpened.next();
|
221
|
+
this.opened.emit();
|
222
|
+
}
|
223
|
+
}
|
224
|
+
/** set state rather than toggle to support triggers sharing a popover */
|
225
|
+
_setPopoverClosed() {
|
226
|
+
if (this._popoverOpen) {
|
227
|
+
this._popoverOpen = false;
|
228
|
+
this.popoverClosed.next();
|
229
|
+
this.closed.emit();
|
230
|
+
}
|
231
|
+
}
|
232
|
+
/**
|
233
|
+
* This method checks that a valid instance of MdPopover has been passed into
|
234
|
+
* mdPopoverTriggerFor. If not, an exception is thrown.
|
235
|
+
*/
|
236
|
+
_checkPopover() {
|
237
|
+
if (!this.popover) {
|
238
|
+
throwPopoverMissingError();
|
239
|
+
}
|
240
|
+
}
|
241
|
+
/**
|
242
|
+
* This method creates the overlay from the provided popover's template and saves its
|
243
|
+
* OverlayRef so that it can be attached to the DOM when openPopover is called.
|
244
|
+
*/
|
245
|
+
_createOverlay() {
|
246
|
+
if (!this._overlayRef) {
|
247
|
+
this._portal = new TemplatePortal(this.popover.templateRef, this._viewContainerRef);
|
248
|
+
const config = this._getOverlayConfig();
|
249
|
+
this._subscribeToPositions(config.positionStrategy);
|
250
|
+
this._overlayRef = this._overlay.create(config);
|
251
|
+
}
|
252
|
+
return this._overlayRef;
|
253
|
+
}
|
254
|
+
/**
|
255
|
+
* This method builds the configuration object needed to create the overlay, the OverlayConfig.
|
256
|
+
* @returns OverlayConfig
|
257
|
+
*/
|
258
|
+
_getOverlayConfig() {
|
259
|
+
const overlayState = new OverlayConfig();
|
260
|
+
overlayState.positionStrategy = this._getPosition();
|
261
|
+
/** Display overlay backdrop if trigger event is click */
|
262
|
+
if (this.triggerEvent === 'click') {
|
263
|
+
overlayState.hasBackdrop = true;
|
264
|
+
overlayState.backdropClass = 'cdk-overlay-transparent-backdrop';
|
265
|
+
}
|
266
|
+
overlayState.direction = this.dir;
|
267
|
+
overlayState.scrollStrategy = this._getOverlayScrollStrategy(this.popover.scrollStrategy);
|
268
|
+
return overlayState;
|
269
|
+
}
|
270
|
+
/**
|
271
|
+
* This method returns the scroll strategy used by the cdk/overlay.
|
272
|
+
*/
|
273
|
+
_getOverlayScrollStrategy(strategy) {
|
274
|
+
switch (strategy) {
|
275
|
+
case 'noop':
|
276
|
+
return this._overlay.scrollStrategies.noop();
|
277
|
+
case 'close':
|
278
|
+
return this._overlay.scrollStrategies.close();
|
279
|
+
case 'block':
|
280
|
+
return this._overlay.scrollStrategies.block();
|
281
|
+
case 'reposition':
|
282
|
+
default:
|
283
|
+
return this._overlay.scrollStrategies.reposition();
|
284
|
+
}
|
285
|
+
}
|
286
|
+
/**
|
287
|
+
* Listens to changes in the position of the overlay and sets the correct classes
|
288
|
+
* on the popover based on the new position. This ensures the animation origin is always
|
289
|
+
* correct, even if a fallback position is used for the overlay.
|
290
|
+
*/
|
291
|
+
_subscribeToPositions(position) {
|
292
|
+
this._positionSubscription = position.positionChanges.subscribe(change => {
|
293
|
+
const posisionX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';
|
294
|
+
let posisionY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';
|
295
|
+
if (!this.popover.overlapTrigger) {
|
296
|
+
posisionY = posisionY === 'below' ? 'above' : 'below';
|
297
|
+
}
|
298
|
+
// required for ChangeDetectionStrategy.OnPush
|
299
|
+
this._changeDetectorRef.markForCheck();
|
300
|
+
this.popover.zone.run(() => {
|
301
|
+
this.popover.positionX = posisionX;
|
302
|
+
this.popover.positionY = posisionY;
|
303
|
+
this.popover.setCurrentStyles();
|
304
|
+
this.popover.setPositionClasses(posisionX, posisionY);
|
305
|
+
});
|
306
|
+
});
|
307
|
+
}
|
308
|
+
/**
|
309
|
+
* This method builds the position strategy for the overlay, so the popover is properly connected
|
310
|
+
* to the trigger.
|
311
|
+
* @returns ConnectedPositionStrategy
|
312
|
+
*/
|
313
|
+
_getPosition() {
|
314
|
+
const [originX, originFallbackX] = this.popover.positionX === 'before' ? ['end', 'start'] : ['start', 'end'];
|
315
|
+
const [overlayY, overlayFallbackY] = this.popover.positionY === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];
|
316
|
+
// let originY = overlayY;
|
317
|
+
// let fallbackOriginY = overlayFallbackY;
|
318
|
+
let originY = overlayY;
|
319
|
+
let originFallbackY = overlayFallbackY;
|
320
|
+
const overlayX = originX;
|
321
|
+
const overlayFallbackX = originFallbackX;
|
322
|
+
/** Reverse overlayY and fallbackOverlayY when overlapTrigger is false */
|
323
|
+
if (!this.popover.overlapTrigger) {
|
324
|
+
originY = overlayY === 'top' ? 'bottom' : 'top';
|
325
|
+
originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';
|
326
|
+
}
|
327
|
+
let offsetX = 0;
|
328
|
+
let offsetY = 0;
|
329
|
+
if (this.popover.targetOffsetX && !isNaN(Number(this.popover.targetOffsetX))) {
|
330
|
+
offsetX = Number(this.popover.targetOffsetX);
|
331
|
+
}
|
332
|
+
if (this.popover.targetOffsetY && !isNaN(Number(this.popover.targetOffsetY))) {
|
333
|
+
offsetY = Number(this.popover.targetOffsetY);
|
334
|
+
}
|
335
|
+
/**
|
336
|
+
* For overriding position element, when popoverTargetAt has a valid element reference.
|
337
|
+
* Useful for sticking popover to parent element and offsetting arrow to trigger element.
|
338
|
+
* If undefined defaults to the trigger element reference.
|
339
|
+
*/
|
340
|
+
let element = this._elementRef;
|
341
|
+
if (typeof this.targetElement !== 'undefined') {
|
342
|
+
this.popover.containerPositioning = true;
|
343
|
+
element = this.targetElement._elementRef;
|
344
|
+
}
|
345
|
+
return this._overlay.position()
|
346
|
+
.flexibleConnectedTo(element)
|
347
|
+
.withLockedPosition(true)
|
348
|
+
.withPositions([
|
349
|
+
{
|
350
|
+
originX,
|
351
|
+
originY,
|
352
|
+
overlayX,
|
353
|
+
overlayY,
|
354
|
+
offsetY
|
355
|
+
},
|
356
|
+
{
|
357
|
+
originX: originFallbackX,
|
358
|
+
originY,
|
359
|
+
overlayX: overlayFallbackX,
|
360
|
+
overlayY,
|
361
|
+
offsetY
|
362
|
+
},
|
363
|
+
{
|
364
|
+
originX,
|
365
|
+
originY: originFallbackY,
|
366
|
+
overlayX,
|
367
|
+
overlayY: overlayFallbackY,
|
368
|
+
offsetY: -offsetY
|
369
|
+
},
|
370
|
+
{
|
371
|
+
originX: originFallbackX,
|
372
|
+
originY: originFallbackY,
|
373
|
+
overlayX: overlayFallbackX,
|
374
|
+
overlayY: overlayFallbackY,
|
375
|
+
offsetY: -offsetY
|
376
|
+
}
|
377
|
+
])
|
378
|
+
.withDefaultOffsetX(offsetX)
|
379
|
+
.withDefaultOffsetY(offsetY);
|
380
|
+
}
|
381
|
+
_cleanUpSubscriptions() {
|
382
|
+
if (this._backdropSubscription) {
|
383
|
+
this._backdropSubscription.unsubscribe();
|
384
|
+
}
|
385
|
+
if (this._positionSubscription) {
|
386
|
+
this._positionSubscription.unsubscribe();
|
387
|
+
}
|
388
|
+
if (this._detachmentsSubscription) {
|
389
|
+
this._detachmentsSubscription.unsubscribe();
|
390
|
+
}
|
391
|
+
}
|
392
|
+
_handleMousedown(event) {
|
393
|
+
if (event && !isFakeMousedownFromScreenReader(event)) {
|
394
|
+
this._openedByMouse = true;
|
395
|
+
}
|
396
|
+
}
|
397
|
+
};
|
398
|
+
GIPIPopoverTrigger.ctorParameters = () => [
|
399
|
+
{ type: Overlay },
|
400
|
+
{ type: ElementRef },
|
401
|
+
{ type: ViewContainerRef },
|
402
|
+
{ type: Directionality, decorators: [{ type: Optional }] },
|
403
|
+
{ type: ChangeDetectorRef }
|
404
|
+
];
|
405
|
+
__decorate([
|
406
|
+
HostBinding('attr.aria-haspopup'),
|
407
|
+
__metadata("design:type", Boolean)
|
408
|
+
], GIPIPopoverTrigger.prototype, "ariaHaspopup", void 0);
|
409
|
+
__decorate([
|
410
|
+
Input('popoverTriggerFor'),
|
411
|
+
__metadata("design:type", Object)
|
412
|
+
], GIPIPopoverTrigger.prototype, "popover", void 0);
|
413
|
+
__decorate([
|
414
|
+
Input('popoverTargetAt'),
|
415
|
+
__metadata("design:type", Object)
|
416
|
+
], GIPIPopoverTrigger.prototype, "targetElement", void 0);
|
417
|
+
__decorate([
|
418
|
+
Input('popoverPositionX'),
|
419
|
+
__metadata("design:type", String)
|
420
|
+
], GIPIPopoverTrigger.prototype, "positionX", void 0);
|
421
|
+
__decorate([
|
422
|
+
Input('popoverPositionY'),
|
423
|
+
__metadata("design:type", String)
|
424
|
+
], GIPIPopoverTrigger.prototype, "positionY", void 0);
|
425
|
+
__decorate([
|
426
|
+
Input('popoverTriggerOn'),
|
427
|
+
__metadata("design:type", String)
|
428
|
+
], GIPIPopoverTrigger.prototype, "triggerEvent", void 0);
|
429
|
+
__decorate([
|
430
|
+
Input('popoverEnterDelay'),
|
431
|
+
__metadata("design:type", Number)
|
432
|
+
], GIPIPopoverTrigger.prototype, "enterDelay", void 0);
|
433
|
+
__decorate([
|
434
|
+
Input('popoverLeaveDelay'),
|
435
|
+
__metadata("design:type", Number)
|
436
|
+
], GIPIPopoverTrigger.prototype, "leaveDelay", void 0);
|
437
|
+
__decorate([
|
438
|
+
Input('popoverOverlapTrigger'),
|
439
|
+
__metadata("design:type", Boolean)
|
440
|
+
], GIPIPopoverTrigger.prototype, "overlapTrigger", void 0);
|
441
|
+
__decorate([
|
442
|
+
Input('popoverOffsetX'),
|
443
|
+
__metadata("design:type", Number)
|
444
|
+
], GIPIPopoverTrigger.prototype, "targetOffsetX", void 0);
|
445
|
+
__decorate([
|
446
|
+
Input('popoverOffsetY'),
|
447
|
+
__metadata("design:type", Number)
|
448
|
+
], GIPIPopoverTrigger.prototype, "targetOffsetY", void 0);
|
449
|
+
__decorate([
|
450
|
+
Input('popoverArrowOffsetX'),
|
451
|
+
__metadata("design:type", Number)
|
452
|
+
], GIPIPopoverTrigger.prototype, "arrowOffsetX", void 0);
|
453
|
+
__decorate([
|
454
|
+
Input('popoverArrowWidth'),
|
455
|
+
__metadata("design:type", Number)
|
456
|
+
], GIPIPopoverTrigger.prototype, "arrowWidth", void 0);
|
457
|
+
__decorate([
|
458
|
+
Input('popoverArrowColor'),
|
459
|
+
__metadata("design:type", String)
|
460
|
+
], GIPIPopoverTrigger.prototype, "arrowColor", void 0);
|
461
|
+
__decorate([
|
462
|
+
Input('popoverCloseOnClick'),
|
463
|
+
__metadata("design:type", Boolean)
|
464
|
+
], GIPIPopoverTrigger.prototype, "closeOnClick", void 0);
|
465
|
+
__decorate([
|
466
|
+
Input('popoverBackdropCloseOnClick'),
|
467
|
+
__metadata("design:type", Boolean)
|
468
|
+
], GIPIPopoverTrigger.prototype, "backdropCloseOnClick", void 0);
|
469
|
+
__decorate([
|
470
|
+
Output(),
|
471
|
+
__metadata("design:type", EventEmitter)
|
472
|
+
], GIPIPopoverTrigger.prototype, "opened", void 0);
|
473
|
+
__decorate([
|
474
|
+
Output(),
|
475
|
+
__metadata("design:type", EventEmitter)
|
476
|
+
], GIPIPopoverTrigger.prototype, "closed", void 0);
|
477
|
+
__decorate([
|
478
|
+
HostListener('click', ['$event']),
|
479
|
+
__metadata("design:type", Function),
|
480
|
+
__metadata("design:paramtypes", [MouseEvent]),
|
481
|
+
__metadata("design:returntype", void 0)
|
482
|
+
], GIPIPopoverTrigger.prototype, "onClick", null);
|
483
|
+
__decorate([
|
484
|
+
HostListener('mouseenter', ['$event']),
|
485
|
+
__metadata("design:type", Function),
|
486
|
+
__metadata("design:paramtypes", [MouseEvent]),
|
487
|
+
__metadata("design:returntype", void 0)
|
488
|
+
], GIPIPopoverTrigger.prototype, "onMouseEnter", null);
|
489
|
+
__decorate([
|
490
|
+
HostListener('mouseleave', ['$event']),
|
491
|
+
__metadata("design:type", Function),
|
492
|
+
__metadata("design:paramtypes", [MouseEvent]),
|
493
|
+
__metadata("design:returntype", void 0)
|
494
|
+
], GIPIPopoverTrigger.prototype, "onMouseLeave", null);
|
495
|
+
__decorate([
|
496
|
+
HostListener('mousedown', ['$event']),
|
497
|
+
__metadata("design:type", Function),
|
498
|
+
__metadata("design:paramtypes", [MouseEvent]),
|
499
|
+
__metadata("design:returntype", void 0)
|
500
|
+
], GIPIPopoverTrigger.prototype, "_handleMousedown", null);
|
501
|
+
GIPIPopoverTrigger = __decorate([
|
502
|
+
Directive({
|
503
|
+
selector: '[popoverTriggerFor]',
|
504
|
+
exportAs: 'popoverTrigger'
|
505
|
+
}),
|
506
|
+
__param(3, Optional()),
|
507
|
+
__metadata("design:paramtypes", [Overlay,
|
508
|
+
ElementRef,
|
509
|
+
ViewContainerRef,
|
510
|
+
Directionality,
|
511
|
+
ChangeDetectorRef])
|
512
|
+
], GIPIPopoverTrigger);
|
513
|
+
export { GIPIPopoverTrigger };
|
514
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10cmlnZ2VyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdpcGlzaXN0ZW1hcy9uZy1jb3JlLyIsInNvdXJjZXMiOlsic2hhcmVkL2dpcGktY29tcG9uZW50cy9wb3BvdmVyL3NoYXJlZC9wb3BvdmVyLXRyaWdnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdLLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixHQUFHLE1BQU0sZUFBZSxDQUFDO0FBQ3hMLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUk1RDs7O0dBR0c7QUFNSCxJQUFhLGtCQUFrQixHQUEvQixNQUFhLGtCQUFrQjtJQTBFM0IsWUFD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LEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQzs7eURBQXVCO0FBR2pCO0lBQTdCLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQzs7d0RBQXNCO0FBR3ZCO0lBQTNCLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQzs7c0RBQW9CO0FBR25CO0lBQTNCLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQzs7c0RBQW9CO0FBR2pCO0lBQTdCLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQzs7d0RBQXVCO0FBR2Q7SUFBckMsS0FBSyxDQUFDLDZCQUE2QixDQUFDOztnRUFBc0M7QUFHakU7SUFBVCxNQUFNLEVBQUU7OEJBQVMsWUFBWTtrREFBa0M7QUFHdEQ7SUFBVCxNQUFNLEVBQUU7OEJBQVMsWUFBWTtrREFBa0M7QUE0RWhFO0lBREMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDOztxQ0FDbkIsVUFBVTs7aURBSXhCO0FBR0Q7SUFEQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7O3FDQUNuQixVQUFVOztzREFPN0I7QUFHRDtJQURDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7cUNBQ25CLFVBQVU7O3NEQWdCN0I7QUFxVXNDO0lBQXRDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7cUNBQXlCLFVBQVU7OzBEQUl4RTtBQTlmUSxrQkFBa0I7SUFKOUIsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLHFCQUFxQjtRQUMvQixRQUFRLEVBQUUsZ0JBQWdCO0tBQzdCLENBQUM7SUErRU8sV0FBQSxRQUFRLEVBQUUsQ0FBQTtxQ0FITyxPQUFPO1FBQ0wsVUFBVTtRQUNILGdCQUFnQjtRQUNqQixjQUFjO1FBQ1osaUJBQWlCO0dBL0V4QyxrQkFBa0IsQ0ErZjlCO1NBL2ZZLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRmFrZU1vdXNlZG93bkZyb21TY3JlZW5SZWFkZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBEaXJlY3Rpb24sIERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LCBIb3Jpem9udGFsQ29ubmVjdGlvblBvcywgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiwgU2Nyb2xsU3RyYXRlZ3ksIFZlcnRpY2FsQ29ubmVjdGlvblBvcyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBPdXRwdXQsIFZpZXdDb250YWluZXJSZWYsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgT2JqZWN0VXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvdXRpbHMvb2JqZWN0LnV0aWwnO1xuaW1wb3J0IHsgU3RyaW5nVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvdXRpbHMvc3RyaW5nLnV0aWwnO1xuaW1wb3J0IHsgR0lQSURvbUhhbmRsZXIgfSBmcm9tICcuLi8uLi9kb20vZG9tLWhhbmRsZXInO1xuaW1wb3J0IHsgdGhyb3dQb3BvdmVyTWlzc2luZ0Vycm9yIH0gZnJvbSAnLi9wb3BvdmVyLWVycm9ycyc7XG5pbXBvcnQgeyBQb3BvdmVyUGFuZWwsIFRhcmdldCB9IGZyb20gJy4vcG9wb3Zlci1pbnRlcmZhY2VzJztcbmltcG9ydCB7IFBvcG92ZXJQb3NpdGlvblgsIFBvcG92ZXJQb3NpdGlvblksIFBvcG92ZXJTY3JvbGxTdHJhdGVneSwgUG9wb3ZlclRyaWdnZXJFdmVudCB9IGZyb20gJy4vcG9wb3Zlci10eXBlcyc7XG5cbi8qKlxuICogRXN0YSBkaXJldGl2YSBkZXN0aW5hLXNlIGEgc2VyIHVzYWRhIGVtIGNvbmp1bnRvIGNvbSB1bWEgdGFnIGdpcGktcG9wb3Zlci5cbiAqIEVsZSDDqSByZXNwb25zw6F2ZWwgcG9yIGFsdGVybmFyIGEgZXhpYmnDp8OjbyBkYSBpbnN0w6JuY2lhIHBvcG92ZXIgZm9ybmVjaWRhLlxuICovXG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3BvcG92ZXJUcmlnZ2VyRm9yXScsXG4gICAgZXhwb3J0QXM6ICdwb3BvdmVyVHJpZ2dlcidcbn0pXG5leHBvcnQgY2xhc3MgR0lQSVBvcG92ZXJUcmlnZ2VyIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHsgLy8gdHNsaW50OmRpc2FibGUtbGluZTpkaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1oYXNwb3B1cCcpIGFyaWFIYXNwb3B1cDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBwb3BvdmVyT3BlbmVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwb3BvdmVyQ2xvc2VkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgX3BvcnRhbDogVGVtcGxhdGVQb3J0YWw8YW55PjtcbiAgICBwcml2YXRlIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfcG9wb3Zlck9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwcml2YXRlIF9oYWx0OiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfYmFja2Ryb3BTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIF9wb3NpdGlvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgX2RldGFjaG1lbnRzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwcml2YXRlIF9tb3VzZW92ZXJUaW1lcjogYW55O1xuXG4gICAgLy8gdHJhY2tpbmcgaW5wdXQgdHlwZSBpcyBuZWNlc3Nhcnkgc28gaXQncyBwb3NzaWJsZSB0byBvbmx5IGF1dG8tZm9jdXNcbiAgICAvLyB0aGUgZmlyc3QgaXRlbSBvZiB0aGUgbGlzdCB3aGVuIHRoZSBwb3BvdmVyIGlzIG9wZW5lZCB2aWEgdGhlIGtleWJvYXJkXG4gICAgcHJpdmF0ZSBfb3BlbmVkQnlNb3VzZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfb25EZXN0cm95OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBSZWZlcmVuY2VzIHRoZSBwb3BvdmVyIGluc3RhbmNlIHRoYXQgdGhlIHRyaWdnZXIgaXMgYXNzb2NpYXRlZCB3aXRoLiAqL1xuICAgIEBJbnB1dCgncG9wb3ZlclRyaWdnZXJGb3InKSBwb3BvdmVyOiBQb3BvdmVyUGFuZWw7XG5cbiAgICAvKiogUmVmZXJlbmNlcyB0aGUgcG9wb3ZlciB0YXJnZXQgaW5zdGFuY2UgdGhhdCB0aGUgdHJpZ2dlciBpcyBhc3NvY2lhdGVkIHdpdGguICovXG4gICAgQElucHV0KCdwb3BvdmVyVGFyZ2V0QXQnKSB0YXJnZXRFbGVtZW50OiBUYXJnZXQ7XG5cbiAgICAvKiogUG9zaXRpb24gb2YgdGhlIHBvcG92ZXIgaW4gdGhlIFggYXhpcyAqL1xuICAgIEBJbnB1dCgncG9wb3ZlclBvc2l0aW9uWCcpIHBvc2l0aW9uWDogUG9wb3ZlclBvc2l0aW9uWDtcblxuICAgIC8qKiBQb3NpdGlvbiBvZiB0aGUgcG9wb3ZlciBpbiB0aGUgWSBheGlzICovXG4gICAgQElucHV0KCdwb3BvdmVyUG9zaXRpb25ZJykgcG9zaXRpb25ZOiBQb3BvdmVyUG9zaXRpb25ZO1xuXG4gICAgLyoqIFBvcG92ZXIgdHJpZ2dlciBldmVudCAqL1xuICAgIEBJbnB1dCgncG9wb3ZlclRyaWdnZXJPbicpIHRyaWdnZXJFdmVudDogUG9wb3ZlclRyaWdnZXJFdmVudDtcblxuICAgIC8qKiBQb3BvdmVyIGRlbGF5ICovXG4gICAgQElucHV0KCdwb3BvdmVyRW50ZXJEZWxheScpIGVudGVyRGVsYXk6IG51bWJlcjtcblxuICAgIC8qKiBQb3BvdmVyIGRlbGF5ICovXG4gICAgQElucHV0KCdwb3BvdmVyTGVhdmVEZWxheScpIGxlYXZlRGVsYXk6IG51bWJlcjtcblxuICAgIC8qKiBQb3BvdmVyIG92ZXJsYXAgdHJpZ2dlciAqL1xuICAgIEBJbnB1dCgncG9wb3Zlck92ZXJsYXBUcmlnZ2VyJykgb3ZlcmxhcFRyaWdnZXI6IGJvb2xlYW47XG5cbiAgICAvKiogUG9wb3ZlciB0YXJnZXQgb2Zmc2V0IHggKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJPZmZzZXRYJykgdGFyZ2V0T2Zmc2V0WDogbnVtYmVyO1xuXG4gICAgLyoqIFBvcG92ZXIgdGFyZ2V0IG9mZnNldCB5ICovXG4gICAgQElucHV0KCdwb3BvdmVyT2Zmc2V0WScpIHRhcmdldE9mZnNldFk6IG51bWJlcjtcblxuICAgIC8qKiBQb3BvdmVyIGFycm93IG9mZnNldCB4ICovXG4gICAgQElucHV0KCdwb3BvdmVyQXJyb3dPZmZzZXRYJykgYXJyb3dPZmZzZXRYOiBudW1iZXI7XG5cbiAgICAvKiogUG9wb3ZlciBhcnJvdyB3aWR0aCAqL1xuICAgIEBJbnB1dCgncG9wb3ZlckFycm93V2lkdGgnKSBhcnJvd1dpZHRoOiBudW1iZXI7XG5cbiAgICAvKiogUG9wb3ZlciBhcnJvdyBjb2xvciAqL1xuICAgIEBJbnB1dCgncG9wb3ZlckFycm93Q29sb3InKSBhcnJvd0NvbG9yOiBzdHJpbmc7XG5cbiAgICAvKiogUG9wb3ZlciBjb250YWluZXIgY2xvc2Ugb24gY2xpY2sgKi9cbiAgICBASW5wdXQoJ3BvcG92ZXJDbG9zZU9uQ2xpY2snKSBjbG9zZU9uQ2xpY2s6IGJvb2xlYW47XG5cbiAgICAvKiogUG9wb3ZlciBiYWNrZHJvcCBjbG9zZSBvbiBjbGljayAqL1xuICAgIEBJbnB1dCgncG9wb3ZlckJhY2tkcm9wQ2xvc2VPbkNsaWNrJykgYmFja2Ryb3BDbG9zZU9uQ2xpY2s6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBwb3BvdmVyIGlzIG9wZW5lZC4gKi9cbiAgICBAT3V0cHV0KCkgb3BlbmVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIHBvcG92ZXIgaXMgY2xvc2VkLiAqL1xuICAgIEBPdXRwdXQoKSBjbG9zZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9vdmVybGF5OiBPdmVybGF5LFxuICAgICAgICBwdWJsaWMgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RpcjogRGlyZWN0aW9uYWxpdHksXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkgeyB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NoZWNrUG9wb3ZlcigpO1xuICAgICAgICB0aGlzLl9zZXRDdXJyZW50Q29uZmlnKCk7XG4gICAgICAgIHRoaXMucG9wb3Zlci5jbG9zZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbG9zZVBvcG92ZXIoKSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveVBvcG92ZXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRDdXJyZW50Q29uZmlnKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wb3NpdGlvblggPT09ICdiZWZvcmUnIHx8IHRoaXMucG9zaXRpb25YID09PSAnYWZ0ZXInKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIucG9zaXRpb25YID0gdGhpcy5wb3NpdGlvblg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvblkgPT09ICdhYm92ZScgfHwgdGhpcy5wb3NpdGlvblkgPT09ICdiZWxvdycpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblkgPSB0aGlzLnBvc2l0aW9uWTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXJFdmVudCkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnRyaWdnZXJFdmVudCA9IHRoaXMudHJpZ2dlckV2ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZW50ZXJEZWxheSkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLmVudGVyRGVsYXkgPSB0aGlzLmVudGVyRGVsYXk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sZWF2ZURlbGF5KSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIubGVhdmVEZWxheSA9IHRoaXMubGVhdmVEZWxheTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXBUcmlnZ2VyID09PSB0cnVlIHx8IHRoaXMub3ZlcmxhcFRyaWdnZXIgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIub3ZlcmxhcFRyaWdnZXIgPSB0aGlzLm92ZXJsYXBUcmlnZ2VyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGFyZ2V0T2Zmc2V0WCkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnRhcmdldE9mZnNldFggPSB0aGlzLnRhcmdldE9mZnNldFg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50YXJnZXRPZmZzZXRZKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIudGFyZ2V0T2Zmc2V0WSA9IHRoaXMudGFyZ2V0T2Zmc2V0WTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmFycm93T2Zmc2V0WCkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLmFycm93T2Zmc2V0WCA9IHRoaXMuYXJyb3dPZmZzZXRYO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYXJyb3dXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLmFycm93V2lkdGggPSB0aGlzLmFycm93V2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hcnJvd0NvbG9yKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuYXJyb3dDb2xvciA9IHRoaXMuYXJyb3dDb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmNsb3NlT25DbGljayA9PT0gdHJ1ZSB8fCB0aGlzLmNsb3NlT25DbGljayA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5jbG9zZU9uQ2xpY2sgPSB0aGlzLmNsb3NlT25DbGljaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucG9wb3Zlci5zZXRDdXJyZW50U3R5bGVzKCk7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHBvcG92ZXIgaXMgb3Blbi4gKi9cbiAgICBnZXQgcG9wb3Zlck9wZW4oKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9wb3BvdmVyT3BlbjsgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucG9wb3Zlci50cmlnZ2VyRXZlbnQgPT09ICdjbGljaycpIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlUG9wb3ZlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicsIFsnJGV2ZW50J10pXG4gICAgb25Nb3VzZUVudGVyKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hhbHQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMucG9wb3Zlci50cmlnZ2VyRXZlbnQgPT09ICdob3ZlcicpIHtcbiAgICAgICAgICAgIHRoaXMuX21vdXNlb3ZlclRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuUG9wb3ZlcigpO1xuICAgICAgICAgICAgfSwgdGhpcy5wb3BvdmVyLmVudGVyRGVsYXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50J10pXG4gICAgb25Nb3VzZUxlYXZlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXIudHJpZ2dlckV2ZW50ID09PSAnaG92ZXInKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fbW91c2VvdmVyVGltZXIpIHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbW91c2VvdmVyVGltZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21vdXNlb3ZlclRpbWVyID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLl9wb3BvdmVyT3Blbikge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMucG9wb3Zlci5jbG9zZURpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlUG9wb3ZlcigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgdGhpcy5wb3BvdmVyLmxlYXZlRGVsYXkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9oYWx0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBUb2dnbGVzIHRoZSBwb3BvdmVyIGJldHdlZW4gdGhlIG9wZW4gYW5kIGNsb3NlZCBzdGF0ZXMuICovXG4gICAgdG9nZ2xlUG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BvcG92ZXJPcGVuID8gdGhpcy5jbG9zZVBvcG92ZXIoKSA6IHRoaXMub3BlblBvcG92ZXIoKTtcbiAgICB9XG5cbiAgICAvKiogT3BlbnMgdGhlIHBvcG92ZXIuICovXG4gICAgb3BlblBvcG92ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fcG9wb3Zlck9wZW4gJiYgIXRoaXMuX2hhbHQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZU92ZXJsYXkoKS5hdHRhY2godGhpcy5fcG9ydGFsKTtcblxuICAgICAgICAgICAgaWYgKCFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLl92aWV3Q29udGFpbmVyUmVmKSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5fdmlld0NvbnRhaW5lclJlZi5lbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHdpZHRoOiBudW1iZXIgPSBHSVBJRG9tSGFuZGxlci5nZXRXaWR0aCgodGhpcy5fdmlld0NvbnRhaW5lclJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpKTtcbiAgICAgICAgICAgICAgICBpZiAoU3RyaW5nVXRpbC5pc0VtcHR5KHRoaXMucG9wb3Zlci5wb3BvdmVyV2lkdGgpIHx8ICh0aGlzLnBvcG92ZXIucG9wb3ZlcldpZHRoID09PSAnYXV0bycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3BvdmVyV2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb0JhY2tkcm9wKCk7XG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb0RldGFjaG1lbnRzKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2luaXRQb3BvdmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQ2xvc2VzIHRoZSBwb3BvdmVyLiAqL1xuICAgIGNsb3NlUG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICAgICAgICB0aGlzLl9yZXNldFBvcG92ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZW1vdmVzIHRoZSBwb3BvdmVyIGZyb20gdGhlIERPTS4gKi9cbiAgICBkZXN0cm95UG9wb3ZlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX21vdXNlb3ZlclRpbWVyKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbW91c2VvdmVyVGltZXIpO1xuICAgICAgICAgICAgdGhpcy5fbW91c2VvdmVyVGltZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fY2xlYW5VcFN1YnNjcmlwdGlvbnMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX29uRGVzdHJveS5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBGb2N1c2VzIHRoZSBwb3BvdmVyIHRyaWdnZXIuICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBUaGUgdGV4dCBkaXJlY3Rpb24gb2YgdGhlIGNvbnRhaW5pbmcgYXBwLiAqL1xuICAgIGdldCBkaXIoKTogRGlyZWN0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RpciAmJiB0aGlzLl9kaXIudmFsdWUgPT09ICdydGwnID8gJ3J0bCcgOiAnbHRyJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIFRoaXMgbWV0aG9kIGVuc3VyZXMgdGhhdCB0aGUgcG9wb3ZlciBjbG9zZXMgd2hlbiB0aGUgb3ZlcmxheSBiYWNrZHJvcCBpcyBjbGlja2VkLlxuICAgICogV2UgZG8gbm90IHVzZSBmaXJzdCgpIGhlcmUgYmVjYXVzZSBkb2luZyBzbyB3b3VsZCBub3QgY2F0Y2ggY2xpY2tzIGZyb20gd2l0aGluXG4gICAgKiB0aGUgcG9wb3ZlciwgYW5kIGl0IHdvdWxkIGZhaWwgdG8gdW5zdWJzY3JpYmUgcHJvcGVybHkuIEluc3RlYWQsIHdlIHVuc3Vic2NyaWJlXG4gICAgKiBleHBsaWNpdGx5IHdoZW4gdGhlIHBvcG92ZXIgaXMgY2xvc2VkIG9yIGRlc3Ryb3llZC5cbiAgICAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmliZVRvQmFja2Ryb3AoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICAvKiogT25seSBzdWJzY3JpYmUgdG8gYmFja2Ryb3AgaWYgdHJpZ2dlciBldmVudCBpcyBjbGljayAqL1xuICAgICAgICAgICAgaWYgKHRoaXMudHJpZ2dlckV2ZW50ID09PSAnY2xpY2snICYmIHRoaXMuYmFja2Ryb3BDbG9zZU9uQ2xpY2sgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKVxuICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnBvcG92ZXJDbG9zZWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSksXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXIuX2VtaXRDbG9zZUV2ZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9EZXRhY2htZW50cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGV0YWNobWVudHMoKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5wb3BvdmVyQ2xvc2VkKSxcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXRQb3BvdmVyQ2xvc2VkKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIHBvcG92ZXIgc3RhdGUgdG8gb3BlbiBhbmQgZm9jdXNlcyB0aGUgZmlyc3QgaXRlbSBpZlxuICAgICogdGhlIHBvcG92ZXIgd2FzIG9wZW5lZCB2aWEgdGhlIGtleWJvYXJkLlxuICAgICovXG4gICAgcHJpdmF0ZSBfaW5pdFBvcG92ZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldFBvcG92ZXJPcGVuZWQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIFRoaXMgbWV0aG9kIHJlc2V0cyB0aGUgcG9wb3ZlciB3aGVuIGl0J3MgY2xvc2VkLCBtb3N0IGltcG9ydGFudGx5IHJlc3RvcmluZ1xuICAgICogZm9jdXMgdG8gdGhlIHBvcG92ZXIgdHJpZ2dlciBpZiB0aGUgcG9wb3ZlciB3YXMgb3BlbmVkIHZpYSB0aGUga2V5Ym9hcmQuXG4gICAgKi9cbiAgICBwcml2YXRlIF9yZXNldFBvcG92ZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldFBvcG92ZXJDbG9zZWQoKTtcblxuICAgICAgICAvLyBGb2N1cyBvbmx5IG5lZWRzIHRvIGJlIHJlc2V0IHRvIHRoZSBob3N0IGVsZW1lbnQgaWYgdGhlIHBvcG92ZXIgd2FzIG9wZW5lZFxuICAgICAgICAvLyBieSB0aGUga2V5Ym9hcmQgYW5kIG1hbnVhbGx5IHNoaWZ0ZWQgdG8gdGhlIGZpcnN0IHBvcG92ZXIgaXRlbS5cbiAgICAgICAgaWYgKCF0aGlzLl9vcGVuZWRCeU1vdXNlKSB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fb3BlbmVkQnlNb3VzZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBzZXQgc3RhdGUgcmF0aGVyIHRoYW4gdG9nZ2xlIHRvIHN1cHBvcnQgdHJpZ2dlcnMgc2hhcmluZyBhIHBvcG92ZXIgKi9cbiAgICBwcml2YXRlIF9zZXRQb3BvdmVyT3BlbmVkKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3BvcG92ZXJPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVyT3BlbiA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMucG9wb3Zlck9wZW5lZC5uZXh0KCk7XG4gICAgICAgICAgICB0aGlzLm9wZW5lZC5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogc2V0IHN0YXRlIHJhdGhlciB0aGFuIHRvZ2dsZSB0byBzdXBwb3J0IHRyaWdnZXJzIHNoYXJpbmcgYSBwb3BvdmVyICovXG4gICAgcHJpdmF0ZSBfc2V0UG9wb3ZlckNsb3NlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3BvcG92ZXJPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVyT3BlbiA9IGZhbHNlO1xuXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJDbG9zZWQubmV4dCgpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiAgVGhpcyBtZXRob2QgY2hlY2tzIHRoYXQgYSB2YWxpZCBpbnN0YW5jZSBvZiBNZFBvcG92ZXIgaGFzIGJlZW4gcGFzc2VkIGludG9cbiAgICAqICBtZFBvcG92ZXJUcmlnZ2VyRm9yLiBJZiBub3QsIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uXG4gICAgKi9cbiAgICBwcml2YXRlIF9jaGVja1BvcG92ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5wb3BvdmVyKSB7XG4gICAgICAgICAgICB0aHJvd1BvcG92ZXJNaXNzaW5nRXJyb3IoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICogIFRoaXMgbWV0aG9kIGNyZWF0ZXMgdGhlIG92ZXJsYXkgZnJvbSB0aGUgcHJvdmlkZWQgcG9wb3ZlcidzIHRlbXBsYXRlIGFuZCBzYXZlcyBpdHNcbiAgICAqICBPdmVybGF5UmVmIHNvIHRoYXQgaXQgY2FuIGJlIGF0dGFjaGVkIHRvIHRoZSBET00gd2hlbiBvcGVuUG9wb3ZlciBpcyBjYWxsZWQuXG4gICAgKi9cbiAgICBwcml2YXRlIF9jcmVhdGVPdmVybGF5KCk6IE92ZXJsYXlSZWYge1xuICAgICAgICBpZiAoIXRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuX3BvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnBvcG92ZXIudGVtcGxhdGVSZWYsIHRoaXMuX3ZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5fZ2V0T3ZlcmxheUNvbmZpZygpO1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaWJlVG9Qb3NpdGlvbnMoY29uZmlnLnBvc2l0aW9uU3RyYXRlZ3kgYXMgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5KTtcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZShjb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXlSZWY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBUaGlzIG1ldGhvZCBidWlsZHMgdGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IG5lZWRlZCB0byBjcmVhdGUgdGhlIG92ZXJsYXksIHRoZSBPdmVybGF5Q29uZmlnLlxuICAgICogQHJldHVybnMgT3ZlcmxheUNvbmZpZ1xuICAgICovXG4gICAgcHJpdmF0ZSBfZ2V0T3ZlcmxheUNvbmZpZygpOiBPdmVybGF5Q29uZmlnIHtcbiAgICAgICAgY29uc3Qgb3ZlcmxheVN0YXRlID0gbmV3IE92ZXJsYXlDb25maWcoKTtcbiAgICAgICAgb3ZlcmxheVN0YXRlLnBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLl9nZXRQb3NpdGlvbigpO1xuXG4gICAgICAgIC8qKiBEaXNwbGF5IG92ZXJsYXkgYmFja2Ryb3AgaWYgdHJpZ2dlciBldmVudCBpcyBjbGljayAqL1xuICAgICAgICBpZiAodGhpcy50cmlnZ2VyRXZlbnQgPT09ICdjbGljaycpIHtcbiAgICAgICAgICAgIG92ZXJsYXlTdGF0ZS5oYXNCYWNrZHJvcCA9IHRydWU7XG4gICAgICAgICAgICBvdmVybGF5U3RhdGUuYmFja2Ryb3BDbGFzcyA9ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCc7XG4gICAgICAgIH1cblxuICAgICAgICBvdmVybGF5U3RhdGUuZGlyZWN0aW9uID0gdGhpcy5kaXI7XG4gICAgICAgIG92ZXJsYXlTdGF0ZS5zY3JvbGxTdHJhdGVneSA9IHRoaXMuX2dldE92ZXJsYXlTY3JvbGxTdHJhdGVneSh0aGlzLnBvcG92ZXIuc2Nyb2xsU3RyYXRlZ3kpO1xuXG4gICAgICAgIHJldHVybiBvdmVybGF5U3RhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgc2Nyb2xsIHN0cmF0ZWd5IHVzZWQgYnkgdGhlIGNkay9vdmVybGF5LlxuICAgICAqL1xuICAgIHByaXZhdGUgX2dldE92ZXJsYXlTY3JvbGxTdHJhdGVneShzdHJhdGVneTogUG9wb3ZlclNjcm9sbFN0cmF0ZWd5KTogU2Nyb2xsU3RyYXRlZ3kge1xuICAgICAgICBzd2l0Y2ggKHN0cmF0ZWd5KSB7XG4gICAgICAgICAgICBjYXNlICdub29wJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLm5vb3AoKTtcbiAgICAgICAgICAgIGNhc2UgJ2Nsb3NlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmNsb3NlKCk7XG4gICAgICAgICAgICBjYXNlICdibG9jayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpO1xuICAgICAgICAgICAgY2FzZSAncmVwb3NpdGlvbic6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBMaXN0ZW5zIHRvIGNoYW5nZXMgaW4gdGhlIHBvc2l0aW9uIG9mIHRoZSBvdmVybGF5IGFuZCBzZXRzIHRoZSBjb3JyZWN0IGNsYXNzZXNcbiAgICAqIG9uIHRoZSBwb3BvdmVyIGJhc2VkIG9uIHRoZSBuZXcgcG9zaXRpb24uIFRoaXMgZW5zdXJlcyB0aGUgYW5pbWF0aW9uIG9yaWdpbiBpcyBhbHdheXNcbiAgICAqIGNvcnJlY3QsIGV2ZW4gaWYgYSBmYWxsYmFjayBwb3NpdGlvbiBpcyB1c2VkIGZvciB0aGUgb3ZlcmxheS5cbiAgICAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmliZVRvUG9zaXRpb25zKHBvc2l0aW9uOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb24gPSBwb3NpdGlvbi5wb3NpdGlvbkNoYW5nZXMuc3Vic2NyaWJlKGNoYW5nZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwb3Npc2lvblg6IFBvcG92ZXJQb3NpdGlvblggPSBjaGFuZ2UuY29ubmVjdGlvblBhaXIub3ZlcmxheVggPT09ICdzdGFydCcgPyAnYWZ0ZXInIDogJ2JlZm9yZSc7XG4gICAgICAgICAgICBsZXQgcG9zaXNpb25ZOiBQb3BvdmVyUG9zaXRpb25ZID0gY2hhbmdlLmNvbm5lY3Rpb25QYWlyLm92ZXJsYXlZID09PSAndG9wJyA/ICdiZWxvdycgOiAnYWJvdmUnO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMucG9wb3Zlci5vdmVybGFwVHJpZ2dlcikge1xuICAgICAgICAgICAgICAgIHBvc2lzaW9uWSA9IHBvc2lzaW9uWSA9PT0gJ2JlbG93JyA/ICdhYm92ZScgOiAnYmVsb3cnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyByZXF1aXJlZCBmb3IgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXIucG9zaXRpb25YID0gcG9zaXNpb25YO1xuICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblkgPSBwb3Npc2lvblk7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnNldEN1cnJlbnRTdHlsZXMoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlci5zZXRQb3NpdGlvbkNsYXNzZXMocG9zaXNpb25YLCBwb3Npc2lvblkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICogVGhpcyBtZXRob2QgYnVpbGRzIHRoZSBwb3NpdGlvbiBzdHJhdGVneSBmb3IgdGhlIG92ZXJsYXksIHNvIHRoZSBwb3BvdmVyIGlzIHByb3Blcmx5IGNvbm5lY3RlZFxuICAgICogdG8gdGhlIHRyaWdnZXIuXG4gICAgKiBAcmV0dXJucyBDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5XG4gICAgKi9cbiAgICBwcml2YXRlIF9nZXRQb3NpdGlvbigpOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgICAgICBjb25zdCBbb3JpZ2luWCwgb3JpZ2luRmFsbGJhY2tYXTogSG9yaXpvbnRhbENvbm5lY3Rpb25Qb3NbXSA9XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIucG9zaXRpb25YID09PSAnYmVmb3JlJyA/IFsnZW5kJywgJ3N0YXJ0J10gOiBbJ3N0YXJ0JywgJ2VuZCddO1xuXG4gICAgICAgIGNvbnN0IFtvdmVybGF5WSwgb3ZlcmxheUZhbGxiYWNrWV06IFZlcnRpY2FsQ29ubmVjdGlvblBvc1tdID1cbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblkgPT09ICdhYm92ZScgPyBbJ2JvdHRvbScsICd0b3AnXSA6IFsndG9wJywgJ2JvdHRvbSddO1xuXG4gICAgICAgIC8vIGxldCBvcmlnaW5ZID0gb3ZlcmxheVk7XG4gICAgICAgIC8vIGxldCBmYWxsYmFja09yaWdpblkgPSBvdmVybGF5RmFsbGJhY2tZO1xuXG4gICAgICAgIGxldCBvcmlnaW5ZOiAndG9wJyB8ICdib3R0b20nID0gb3ZlcmxheVk7XG4gICAgICAgIGxldCBvcmlnaW5GYWxsYmFja1k6ICd0b3AnIHwgJ2JvdHRvbScgPSBvdmVybGF5RmFsbGJhY2tZO1xuXG4gICAgICAgIGNvbnN0IG92ZXJsYXlYOiAnc3RhcnQnIHwgJ2VuZCcgPSBvcmlnaW5YO1xuICAgICAgICBjb25zdCBvdmVybGF5RmFsbGJhY2tYOiAnc3RhcnQnIHwgJ2VuZCcgPSBvcmlnaW5GYWxsYmFja1g7XG5cbiAgICAgICAgLyoqIFJldmVyc2Ugb3ZlcmxheVkgYW5kIGZhbGxiYWNrT3ZlcmxheVkgd2hlbiBvdmVybGFwVHJpZ2dlciBpcyBmYWxzZSAqL1xuICAgICAgICBpZiAoIXRoaXMucG9wb3Zlci5vdmVybGFwVHJpZ2dlcikge1xuICAgICAgICAgICAgb3JpZ2luWSA9IG92ZXJsYXlZID09PSAndG9wJyA/ICdib3R0b20nIDogJ3RvcCc7XG4gICAgICAgICAgICBvcmlnaW5GYWxsYmFja1kgPSBvdmVybGF5RmFsbGJhY2tZID09PSAndG9wJyA/ICdib3R0b20nIDogJ3RvcCc7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb2Zmc2V0WDogbnVtYmVyID0gMDtcbiAgICAgICAgbGV0IG9mZnNldFk6IG51bWJlciA9IDA7XG5cbiAgICAgICAgaWYgKHRoaXMucG9wb3Zlci50YXJnZXRPZmZzZXRYICYmICFpc05hTihOdW1iZXIodGhpcy5wb3BvdmVyLnRhcmdldE9mZnNldFgpKSkge1xuICAgICAgICAgICAgb2Zmc2V0WCA9IE51bWJlcih0aGlzLnBvcG92ZXIudGFyZ2V0T2Zmc2V0WCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5wb3BvdmVyLnRhcmdldE9mZnNldFkgJiYgIWlzTmFOKE51bWJlcih0aGlzLnBvcG92ZXIudGFyZ2V0T2Zmc2V0WSkpKSB7XG4gICAgICAgICAgICBvZmZzZXRZID0gTnVtYmVyKHRoaXMucG9wb3Zlci50YXJnZXRPZmZzZXRZKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb3Igb3ZlcnJpZGluZyBwb3NpdGlvbiBlbGVtZW50LCB3aGVuIHBvcG92ZXJUYXJnZXRBdCBoYXMgYSB2YWxpZCBlbGVtZW50IHJlZmVyZW5jZS5cbiAgICAgICAgICogVXNlZnVsIGZvciBzdGlja2luZyBwb3BvdmVyIHRvIHBhcmVudCBlbGVtZW50IGFuZCBvZmZzZXR0aW5nIGFycm93IHRvIHRyaWdnZXIgZWxlbWVudC5cbiAgICAgICAgICogSWYgdW5kZWZpbmVkIGRlZmF1bHRzIHRvIHRoZSB0cmlnZ2VyIGVsZW1lbnQgcmVmZXJlbmNlLlxuICAgICAgICAgKi9cbiAgICAgICAgbGV0IGVsZW1lbnQ6IEVsZW1lbnRSZWY8YW55PiA9IHRoaXMuX2VsZW1lbnRSZWY7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50YXJnZXRFbGVtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLmNvbnRhaW5lclBvc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGVsZW1lbnQgPSB0aGlzLnRhcmdldEVsZW1lbnQuX2VsZW1lbnRSZWY7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhlbGVtZW50KVxuICAgICAgICAgICAgLndpdGhMb2NrZWRQb3NpdGlvbih0cnVlKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWCxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWSxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVgsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblg6IG9yaWdpbkZhbGxiYWNrWCxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWSxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6IG92ZXJsYXlGYWxsYmFja1gsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblgsXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblk6IG9yaWdpbkZhbGxiYWNrWSxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVgsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiBvdmVybGF5RmFsbGJhY2tZLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAtb2Zmc2V0WVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiBvcmlnaW5GYWxsYmFja1gsXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblk6IG9yaWdpbkZhbGxiYWNrWSxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6IG92ZXJsYXlGYWxsYmFja1gsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiBvdmVybGF5RmFsbGJhY2tZLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAtb2Zmc2V0WVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAud2l0aERlZmF1bHRPZmZzZXRYKG9mZnNldFgpXG4gICAgICAgICAgICAud2l0aERlZmF1bHRPZmZzZXRZKG9mZnNldFkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NsZWFuVXBTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fYmFja2Ryb3BTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX2JhY2tkcm9wU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9wb3NpdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9kZXRhY2htZW50c1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fZGV0YWNobWVudHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pIF9oYW5kbGVNb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50ICYmICFpc0Zha2VNb3VzZWRvd25Gcm9tU2NyZWVuUmVhZGVyKGV2ZW50KSkge1xuICAgICAgICAgICAgdGhpcy5fb3BlbmVkQnlNb3VzZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
@@ -0,0 +1 @@
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BnaXBpc2lzdGVtYXMvbmctY29yZS8iLCJzb3VyY2VzIjpbInNoYXJlZC9naXBpLWNvbXBvbmVudHMvcG9wb3Zlci9zaGFyZWQvcG9wb3Zlci10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgUG9wb3ZlclBvc2l0aW9uWCA9ICdiZWZvcmUnIHwgJ2FmdGVyJztcblxuZXhwb3J0IHR5cGUgUG9wb3ZlclBvc2l0aW9uWSA9ICdhYm92ZScgfCAnYmVsb3cnO1xuXG5leHBvcnQgdHlwZSBQb3BvdmVyVHJpZ2dlckV2ZW50ID0gJ2NsaWNrJyB8ICdob3ZlcicgfCAnbm9uZSc7XG5cbmV4cG9ydCB0eXBlIFBvcG92ZXJTY3JvbGxTdHJhdGVneSA9ICdub29wJyB8ICdjbG9zZScgfCAnYmxvY2snIHwgJ3JlcG9zaXRpb24nO1xuIl19
|