@onemrvapublic/design-system 18.3.0-develop.1 → 18.3.0-develop.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_index.scss +0 -1
- package/_utils.scss +3 -3
- package/fesm2022/onemrvapublic-design-system-core.mjs +7 -7
- package/fesm2022/onemrvapublic-design-system-core.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-flag-icon.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-flag-icon.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-layout.mjs +188 -97
- package/fesm2022/onemrvapublic-design-system-layout.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-avatar.mjs +11 -11
- package/fesm2022/onemrvapublic-design-system-mat-avatar.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-breadcrumb.mjs +27 -18
- package/fesm2022/onemrvapublic-design-system-mat-breadcrumb.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-carousel.mjs +6 -6
- package/fesm2022/onemrvapublic-design-system-mat-carousel.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-copy-to-clipboard.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-copy-to-clipboard.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-datepicker-header.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-datepicker-header.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-empty-row.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-empty-row.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-file-upload.mjs +107 -86
- package/fesm2022/onemrvapublic-design-system-mat-file-upload.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-input-birthplace.mjs +6 -6
- package/fesm2022/onemrvapublic-design-system-mat-input-birthplace.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-input-country.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-input-country.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-input-enterprise-number.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-input-enterprise-number.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-input-iban.mjs +4 -4
- package/fesm2022/onemrvapublic-design-system-mat-input-iban.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-input-phone.mjs +6 -6
- package/fesm2022/onemrvapublic-design-system-mat-input-phone.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-message-box.mjs +10 -13
- package/fesm2022/onemrvapublic-design-system-mat-message-box.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-multi-select.mjs +31 -51
- package/fesm2022/onemrvapublic-design-system-mat-multi-select.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-notification.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-notification.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-paginator.mjs +24 -35
- package/fesm2022/onemrvapublic-design-system-mat-paginator.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-panel.mjs +28 -29
- package/fesm2022/onemrvapublic-design-system-mat-panel.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-pop-over.mjs +20 -20
- package/fesm2022/onemrvapublic-design-system-mat-pop-over.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-progress-bar.mjs +3 -3
- package/fesm2022/onemrvapublic-design-system-mat-progress-bar.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-select-search.mjs +48 -149
- package/fesm2022/onemrvapublic-design-system-mat-select-search.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-selectable-box.mjs +21 -53
- package/fesm2022/onemrvapublic-design-system-mat-selectable-box.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-side-menu.mjs +14 -17
- package/fesm2022/onemrvapublic-design-system-mat-side-menu.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-skeleton.mjs +11 -12
- package/fesm2022/onemrvapublic-design-system-mat-skeleton.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-spinner.mjs +12 -13
- package/fesm2022/onemrvapublic-design-system-mat-spinner.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-stepper.mjs +16 -41
- package/fesm2022/onemrvapublic-design-system-mat-stepper.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-sticker.mjs +11 -11
- package/fesm2022/onemrvapublic-design-system-mat-sticker.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-table-of-content.mjs +9 -9
- package/fesm2022/onemrvapublic-design-system-mat-table-of-content.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-task-list.mjs +26 -41
- package/fesm2022/onemrvapublic-design-system-mat-task-list.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-timepicker.mjs +51 -64
- package/fesm2022/onemrvapublic-design-system-mat-timepicker.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-toast.mjs +12 -12
- package/fesm2022/onemrvapublic-design-system-mat-toast.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-tooltip.mjs +18 -18
- package/fesm2022/onemrvapublic-design-system-mat-tooltip.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-page-error.mjs +6 -6
- package/fesm2022/onemrvapublic-design-system-page-error.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-page-not-found.mjs +32 -26
- package/fesm2022/onemrvapublic-design-system-page-not-found.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-shared.mjs +70 -62
- package/fesm2022/onemrvapublic-design-system-shared.mjs.map +1 -1
- package/layout/index.d.ts +5 -5
- package/layout/src/components/layout/_layout-mixin.component.scss +5 -5
- package/layout/src/components/layout/layout.component.d.ts +1 -1
- package/layout/src/components/layout/layout.component.scss +7 -0
- package/layout/src/components/layout-after-nav/layout-after-nav.component.d.ts +1 -1
- package/layout/src/components/layout-content/layout-content.component.d.ts +1 -1
- package/layout/src/components/layout-footer/layout-footer.component.d.ts +1 -1
- package/layout/src/components/layout-login-menu/layout-login-menu.component.d.ts +1 -1
- package/layout/src/components/layout-route/layout-route.component.d.ts +1 -1
- package/layout/src/components/layout-sidenav/layout-sidenav.component.d.ts +1 -1
- package/layout/src/components/layout-sidenav-title/layout-sidenav-title.component.d.ts +1 -1
- package/layout/src/components/layout-subroute/layout-subroute.component.d.ts +1 -1
- package/layout/src/components/layout-title/layout-title.component.d.ts +1 -1
- package/layout/src/decorators/coerce-boolean-input.decorator.d.ts +1 -0
- package/layout/src/decorators/index.d.ts +2 -0
- package/layout/src/decorators/observable-content.decorator.d.ts +1 -0
- package/layout/src/directives/drawer-host.directive.d.ts +1 -1
- package/layout/src/directives/index.d.ts +2 -0
- package/layout/src/{striphtml.pipe.d.ts → directives/striphtml.pipe.d.ts} +1 -1
- package/layout/src/enums/index.d.ts +1 -0
- package/layout/src/layout.module.d.ts +3 -3
- package/layout/src/models/index.d.ts +2 -0
- package/layout/src/services/index.d.ts +1 -0
- package/mat-avatar/src/onemrva-mat-avatar.component.d.ts +1 -1
- package/mat-avatar/src/onemrva-mat-avatar.module.d.ts +1 -3
- package/mat-breadcrumb/src/onemrva-mat-breadcrumb.component.d.ts +1 -1
- package/mat-breadcrumb/src/onemrva-mat-breadcrumb.module.d.ts +5 -5
- package/mat-datepicker-header/src/_onemrva-mat-datepicker-header.component.scss +1 -1
- package/mat-file-upload/index.d.ts +1 -0
- package/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.d.ts +1 -1
- package/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.scss +3 -3
- package/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.d.ts +1 -1
- package/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.scss +2 -1
- package/mat-file-upload/src/directives/dnd.directive.d.ts +1 -1
- package/mat-file-upload/src/onemrva-mat-file-upload.module.d.ts +1 -1
- package/mat-message-box/src/onemrva-mat-message-box.component.d.ts +1 -1
- package/mat-message-box/src/onemrva-mat-message-box.module.d.ts +1 -4
- package/mat-multi-select/src/onemrva-mat-multi-select.component.d.ts +1 -1
- package/mat-multi-select/src/onemrva-mat-multi-select.module.d.ts +1 -9
- package/mat-paginator/src/onemrva-mat-paginator.component.d.ts +1 -1
- package/mat-paginator/src/onemrva-mat-paginator.module.d.ts +1 -6
- package/mat-panel/src/onemrva-mat-panel-content.component.d.ts +1 -1
- package/mat-panel/src/onemrva-mat-panel-icon.component.d.ts +1 -1
- package/mat-panel/src/onemrva-mat-panel-title-action.component.d.ts +1 -1
- package/mat-panel/src/onemrva-mat-panel-title.component.d.ts +1 -1
- package/mat-panel/src/onemrva-mat-panel.component.d.ts +1 -1
- package/mat-panel/src/onemrva-mat-panel.module.d.ts +1 -2
- package/mat-pop-over/src/onemrva-mat-pop-over-content.component.d.ts +1 -1
- package/mat-pop-over/src/onemrva-mat-pop-over-trigger.component.d.ts +1 -1
- package/mat-pop-over/src/onemrva-mat-pop-over.component.d.ts +1 -1
- package/mat-pop-over/src/onemrva-mat-pop-over.module.d.ts +1 -3
- package/mat-select-search/src/mat-select-no-entries-found.directive.d.ts +1 -1
- package/mat-select-search/src/mat-select-search-clear.directive.d.ts +1 -1
- package/mat-select-search/src/mat-select-search.component.d.ts +1 -79
- package/mat-select-search/src/mat-select-search.module.d.ts +1 -12
- package/mat-selectable-box/src/onemrva-mat-selectable-box.component.d.ts +1 -1
- package/mat-selectable-box/src/onemrva-mat-selectable-box.module.d.ts +1 -11
- package/mat-side-menu/src/onemrva-mat-side-menu.component.d.ts +1 -1
- package/mat-side-menu/src/onemrva-mat-side-menu.module.d.ts +1 -5
- package/mat-skeleton/src/onemrva-mat-skeleton.component.d.ts +1 -1
- package/mat-skeleton/src/onemrva-mat-skeleton.module.d.ts +1 -2
- package/mat-spinner/src/onemrva-mat-spinner.component.d.ts +1 -1
- package/mat-spinner/src/onemrva-mat-spinner.module.d.ts +1 -1
- package/mat-stepper/src/onemrva-mat-stepper.component.d.ts +1 -1
- package/mat-stepper/src/onemrva-mat-stepper.module.d.ts +2 -7
- package/mat-stepper/src/onemrva-mat-stepper.scss +1 -1
- package/mat-sticker/src/onemrva-mat-sticker.component.d.ts +1 -1
- package/mat-sticker/src/onemrva-mat-sticker.module.d.ts +1 -2
- package/mat-task-list/src/onemrva-mat-task-content.component.d.ts +1 -1
- package/mat-task-list/src/onemrva-mat-task-list.component.d.ts +1 -1
- package/mat-task-list/src/onemrva-mat-task-list.module.d.ts +1 -5
- package/mat-task-list/src/onemrva-mat-task-title.component.d.ts +1 -1
- package/mat-task-list/src/onemrva-mat-task.component.d.ts +1 -1
- package/mat-timepicker/src/clock/clock.component.d.ts +1 -1
- package/mat-timepicker/src/onemrva-mat-timepicker.component.d.ts +1 -1
- package/mat-timepicker/src/onemrva-mat-timepicker.module.d.ts +1 -7
- package/mat-timepicker/src/timepicker-dialog/timepicker-dialog.component.d.ts +1 -1
- package/mat-timepicker/src/timepicker-toggle/timepicker-toggle.component.d.ts +2 -2
- package/mat-timepicker/src/timepicker.directive.d.ts +1 -1
- package/mat-toast/src/onemrva-mat-toast.component.d.ts +1 -1
- package/mat-toast/src/onemrva-mat-toast.module.d.ts +2 -3
- package/mat-tooltip/src/onemrva-mat-tooltip.component.d.ts +1 -1
- package/mat-tooltip/src/onemrva-mat-tooltip.directive.d.ts +1 -1
- package/mat-tooltip/src/onemrva-mat-tooltip.module.d.ts +1 -2
- package/package.json +1 -85
- package/page-not-found/src/page-not-found-action.component.d.ts +1 -1
- package/page-not-found/src/page-not-found-extra.component.d.ts +1 -1
- package/page-not-found/src/page-not-found-invader.component.d.ts +1 -1
- package/page-not-found/src/page-not-found-mixin.component.scss +1 -1
- package/page-not-found/src/page-not-found.component.d.ts +1 -1
- package/page-not-found/src/page-not-found.module.d.ts +1 -3
- package/shared/src/lib/directives/clipboard.directive.d.ts +1 -1
- package/shared/src/lib/directives/color.directive.d.ts +1 -1
- package/shared/src/lib/directives/digit-only.directive.d.ts +1 -1
- package/shared/src/lib/directives/iconRight.directive.d.ts +1 -1
- package/shared/src/lib/directives/if-width-is.directive.d.ts +1 -1
- package/shared/src/lib/directives/mask.directive.d.ts +1 -1
- package/shared/src/lib/directives/mat-row-clickable.directive.d.ts +1 -1
- package/shared/src/lib/shared.module.d.ts +1 -2
- package/esm2022/core/index.mjs +0 -4
- package/esm2022/core/onemrvapublic-design-system-core.mjs +0 -5
- package/esm2022/core/src/lib/core.module.mjs +0 -39
- package/esm2022/core/src/lib/services/index.mjs +0 -3
- package/esm2022/core/src/lib/services/onemrva-error-handler.service.mjs +0 -26
- package/esm2022/core/src/lib/services/onemrva-missing-translation.service.mjs +0 -6
- package/esm2022/flag-icon/index.mjs +0 -2
- package/esm2022/flag-icon/onemrvapublic-design-system-flag-icon.mjs +0 -5
- package/esm2022/flag-icon/src/flag-icon.component.mjs +0 -41
- package/esm2022/layout/index.mjs +0 -8
- package/esm2022/layout/onemrvapublic-design-system-layout.mjs +0 -5
- package/esm2022/layout/src/components/index.mjs +0 -36
- package/esm2022/layout/src/components/layout/layout.component.mjs +0 -177
- package/esm2022/layout/src/components/layout-after-nav/layout-after-nav.component.mjs +0 -25
- package/esm2022/layout/src/components/layout-content/layout-content.component.mjs +0 -25
- package/esm2022/layout/src/components/layout-drawer-actions/layout-drawer-actions.component.mjs +0 -16
- package/esm2022/layout/src/components/layout-drawer-content/layout-drawer-content.component.mjs +0 -16
- package/esm2022/layout/src/components/layout-drawer-title/layout-drawer-title.component.mjs +0 -20
- package/esm2022/layout/src/components/layout-footer/layout-footer.component.mjs +0 -17
- package/esm2022/layout/src/components/layout-login-menu/layout-login-menu.component.mjs +0 -25
- package/esm2022/layout/src/components/layout-route/layout-route.component.mjs +0 -65
- package/esm2022/layout/src/components/layout-sidenav/layout-sidenav.component.mjs +0 -83
- package/esm2022/layout/src/components/layout-sidenav-title/layout-sidenav-title.component.mjs +0 -17
- package/esm2022/layout/src/components/layout-subroute/layout-subroute.component.mjs +0 -55
- package/esm2022/layout/src/components/layout-title/layout-title.component.mjs +0 -25
- package/esm2022/layout/src/directives/drawer-host.directive.mjs +0 -41
- package/esm2022/layout/src/enums/environment.enum.mjs +0 -8
- package/esm2022/layout/src/layout.module.mjs +0 -95
- package/esm2022/layout/src/models/onem-language.model.mjs +0 -2
- package/esm2022/layout/src/models/onemrva-profile.model.mjs +0 -46
- package/esm2022/layout/src/services/drawer.service.mjs +0 -31
- package/esm2022/layout/src/striphtml.pipe.mjs +0 -16
- package/esm2022/mat-avatar/index.mjs +0 -3
- package/esm2022/mat-avatar/onemrvapublic-design-system-mat-avatar.mjs +0 -5
- package/esm2022/mat-avatar/src/onemrva-mat-avatar.component.mjs +0 -440
- package/esm2022/mat-avatar/src/onemrva-mat-avatar.module.mjs +0 -19
- package/esm2022/mat-badge/index.mjs +0 -6
- package/esm2022/mat-badge/onemrvapublic-design-system-mat-badge.mjs +0 -5
- package/esm2022/mat-badge/src/onemrva-mat-badge.component.mjs +0 -250
- package/esm2022/mat-badge/src/onemrva-mat-badge.module.mjs +0 -16
- package/esm2022/mat-breadcrumb/index.mjs +0 -7
- package/esm2022/mat-breadcrumb/onemrvapublic-design-system-mat-breadcrumb.mjs +0 -5
- package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.component.mjs +0 -19
- package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.model.mjs +0 -2
- package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.module.mjs +0 -20
- package/esm2022/mat-breadcrumb/src/onemrva-mat-breadcrumb.service.mjs +0 -59
- package/esm2022/mat-carousel/index.mjs +0 -3
- package/esm2022/mat-carousel/onemrvapublic-design-system-mat-carousel.mjs +0 -5
- package/esm2022/mat-carousel/src/mat-carousel-item/onemrva-mat-carousel-item.component.mjs +0 -23
- package/esm2022/mat-carousel/src/onemrva-mat-carousel.component.mjs +0 -175
- package/esm2022/mat-copy-to-clipboard/index.mjs +0 -2
- package/esm2022/mat-copy-to-clipboard/onemrvapublic-design-system-mat-copy-to-clipboard.mjs +0 -5
- package/esm2022/mat-copy-to-clipboard/src/components/copy-to-clipboard.component.mjs +0 -85
- package/esm2022/mat-datepicker-header/index.mjs +0 -5
- package/esm2022/mat-datepicker-header/onemrvapublic-design-system-mat-datepicker-header.mjs +0 -5
- package/esm2022/mat-datepicker-header/src/onemrva-mat-datepicker-header.component.mjs +0 -203
- package/esm2022/mat-empty-row/index.mjs +0 -2
- package/esm2022/mat-empty-row/onemrvapublic-design-system-mat-empty-row.mjs +0 -5
- package/esm2022/mat-empty-row/src/onemrva-mat-empty-row.component.mjs +0 -35
- package/esm2022/mat-file-upload/index.mjs +0 -11
- package/esm2022/mat-file-upload/onemrvapublic-design-system-mat-file-upload.mjs +0 -5
- package/esm2022/mat-file-upload/src/components/index.mjs +0 -9
- package/esm2022/mat-file-upload/src/components/onemrva-mat-file-panel/onemrva-file-panel.component.mjs +0 -88
- package/esm2022/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.mjs +0 -195
- package/esm2022/mat-file-upload/src/directives/dnd.directive.mjs +0 -53
- package/esm2022/mat-file-upload/src/models/action-config.model.mjs +0 -2
- package/esm2022/mat-file-upload/src/models/progress-file.model.mjs +0 -49
- package/esm2022/mat-file-upload/src/onemrva-mat-file-upload-itf.store.mjs +0 -2
- package/esm2022/mat-file-upload/src/onemrva-mat-file-upload.module.mjs +0 -51
- package/esm2022/mat-file-upload/src/onemrva-mat-file-upload.service.mjs +0 -49
- package/esm2022/mat-file-upload/src/onemrva-mat-file-upload.store.mjs +0 -320
- package/esm2022/mat-input-birthplace/index.mjs +0 -5
- package/esm2022/mat-input-birthplace/onemrvapublic-design-system-mat-input-birthplace.mjs +0 -5
- package/esm2022/mat-input-birthplace/src/country-item.component.mjs +0 -31
- package/esm2022/mat-input-birthplace/src/onemrva-mat-input-birthplace.component.mjs +0 -120
- package/esm2022/mat-input-country/index.mjs +0 -5
- package/esm2022/mat-input-country/onemrvapublic-design-system-mat-input-country.mjs +0 -5
- package/esm2022/mat-input-country/src/onemrva-mat-input-country.component.mjs +0 -90
- package/esm2022/mat-input-enterprise-number/index.mjs +0 -5
- package/esm2022/mat-input-enterprise-number/onemrvapublic-design-system-mat-input-enterprise-number.mjs +0 -5
- package/esm2022/mat-input-enterprise-number/src/onemrva-mat-input-enterprise-number.component.mjs +0 -180
- package/esm2022/mat-input-iban/index.mjs +0 -5
- package/esm2022/mat-input-iban/onemrvapublic-design-system-mat-input-iban.mjs +0 -5
- package/esm2022/mat-input-iban/src/onemrva-mat-input-iban.component.mjs +0 -295
- package/esm2022/mat-input-phone/index.mjs +0 -6
- package/esm2022/mat-input-phone/onemrvapublic-design-system-mat-input-phone.mjs +0 -5
- package/esm2022/mat-input-phone/src/onemrva-mat-input-phone.component.mjs +0 -234
- package/esm2022/mat-input-phone/src/phone-number.directive.mjs +0 -51
- package/esm2022/mat-message-box/index.mjs +0 -3
- package/esm2022/mat-message-box/onemrvapublic-design-system-mat-message-box.mjs +0 -5
- package/esm2022/mat-message-box/src/onemrva-mat-message-box.component.mjs +0 -175
- package/esm2022/mat-message-box/src/onemrva-mat-message-box.module.mjs +0 -20
- package/esm2022/mat-multi-select/index.mjs +0 -3
- package/esm2022/mat-multi-select/onemrvapublic-design-system-mat-multi-select.mjs +0 -5
- package/esm2022/mat-multi-select/src/onemrva-mat-multi-select.component.mjs +0 -200
- package/esm2022/mat-multi-select/src/onemrva-mat-multi-select.module.mjs +0 -51
- package/esm2022/mat-notification/index.mjs +0 -2
- package/esm2022/mat-notification/onemrvapublic-design-system-mat-notification.mjs +0 -5
- package/esm2022/mat-notification/src/onemrva-mat-notification.component.mjs +0 -165
- package/esm2022/mat-paginator/index.mjs +0 -6
- package/esm2022/mat-paginator/onemrvapublic-design-system-mat-paginator.mjs +0 -5
- package/esm2022/mat-paginator/src/onemrva-mat-paginator.component.mjs +0 -217
- package/esm2022/mat-paginator/src/onemrva-mat-paginator.module.mjs +0 -36
- package/esm2022/mat-panel/index.mjs +0 -7
- package/esm2022/mat-panel/onemrvapublic-design-system-mat-panel.mjs +0 -5
- package/esm2022/mat-panel/src/onemrva-mat-panel-content.component.mjs +0 -17
- package/esm2022/mat-panel/src/onemrva-mat-panel-icon.component.mjs +0 -17
- package/esm2022/mat-panel/src/onemrva-mat-panel-title-action.component.mjs +0 -17
- package/esm2022/mat-panel/src/onemrva-mat-panel-title.component.mjs +0 -27
- package/esm2022/mat-panel/src/onemrva-mat-panel.component.mjs +0 -132
- package/esm2022/mat-panel/src/onemrva-mat-panel.module.mjs +0 -42
- package/esm2022/mat-pop-over/index.mjs +0 -5
- package/esm2022/mat-pop-over/onemrvapublic-design-system-mat-pop-over.mjs +0 -5
- package/esm2022/mat-pop-over/src/onemrva-mat-pop-over-content.component.mjs +0 -23
- package/esm2022/mat-pop-over/src/onemrva-mat-pop-over-trigger.component.mjs +0 -23
- package/esm2022/mat-pop-over/src/onemrva-mat-pop-over.component.mjs +0 -46
- package/esm2022/mat-pop-over/src/onemrva-mat-pop-over.module.mjs +0 -30
- package/esm2022/mat-progress-bar/index.mjs +0 -2
- package/esm2022/mat-progress-bar/onemrvapublic-design-system-mat-progress-bar.mjs +0 -5
- package/esm2022/mat-progress-bar/src/onemrva-mat-progress-bar.component.mjs +0 -29
- package/esm2022/mat-select-search/index.mjs +0 -4
- package/esm2022/mat-select-search/onemrvapublic-design-system-mat-select-search.mjs +0 -5
- package/esm2022/mat-select-search/src/default-options.mjs +0 -35
- package/esm2022/mat-select-search/src/mat-select-no-entries-found.directive.mjs +0 -22
- package/esm2022/mat-select-search/src/mat-select-search-clear.directive.mjs +0 -20
- package/esm2022/mat-select-search/src/mat-select-search.component.mjs +0 -589
- package/esm2022/mat-select-search/src/mat-select-search.module.mjs +0 -79
- package/esm2022/mat-selectable-box/index.mjs +0 -6
- package/esm2022/mat-selectable-box/onemrvapublic-design-system-mat-selectable-box.mjs +0 -5
- package/esm2022/mat-selectable-box/src/onemrva-mat-selectable-box.component.mjs +0 -56
- package/esm2022/mat-selectable-box/src/onemrva-mat-selectable-box.module.mjs +0 -56
- package/esm2022/mat-side-menu/index.mjs +0 -6
- package/esm2022/mat-side-menu/onemrvapublic-design-system-mat-side-menu.mjs +0 -5
- package/esm2022/mat-side-menu/src/onemrva-mat-side-menu.component.mjs +0 -48
- package/esm2022/mat-side-menu/src/onemrva-mat-side-menu.module.mjs +0 -21
- package/esm2022/mat-skeleton/index.mjs +0 -4
- package/esm2022/mat-skeleton/onemrvapublic-design-system-mat-skeleton.mjs +0 -5
- package/esm2022/mat-skeleton/src/onemrva-mat-skeleton-enums.mjs +0 -20
- package/esm2022/mat-skeleton/src/onemrva-mat-skeleton.component.mjs +0 -202
- package/esm2022/mat-skeleton/src/onemrva-mat-skeleton.module.mjs +0 -18
- package/esm2022/mat-spinner/index.mjs +0 -7
- package/esm2022/mat-spinner/onemrvapublic-design-system-mat-spinner.mjs +0 -5
- package/esm2022/mat-spinner/src/onemrva-mat-loading.directive.mjs +0 -33
- package/esm2022/mat-spinner/src/onemrva-mat-spinner.component.mjs +0 -73
- package/esm2022/mat-spinner/src/onemrva-mat-spinner.module.mjs +0 -18
- package/esm2022/mat-stepper/index.mjs +0 -6
- package/esm2022/mat-stepper/onemrvapublic-design-system-mat-stepper.mjs +0 -5
- package/esm2022/mat-stepper/src/onemrva-mat-stepper.component.mjs +0 -74
- package/esm2022/mat-stepper/src/onemrva-mat-stepper.module.mjs +0 -44
- package/esm2022/mat-stepper/src/onemrva-stepper-animations.mjs +0 -28
- package/esm2022/mat-sticker/index.mjs +0 -6
- package/esm2022/mat-sticker/onemrvapublic-design-system-mat-sticker.mjs +0 -5
- package/esm2022/mat-sticker/src/onemrva-mat-sticker.component.mjs +0 -69
- package/esm2022/mat-sticker/src/onemrva-mat-sticker.module.mjs +0 -18
- package/esm2022/mat-table-of-content/index.mjs +0 -8
- package/esm2022/mat-table-of-content/onemrvapublic-design-system-mat-table-of-content.mjs +0 -5
- package/esm2022/mat-table-of-content/src/onemrva-mat-table-of-content.component.mjs +0 -104
- package/esm2022/mat-table-of-content/src/onemrva-mat-table-of-content.directive.mjs +0 -60
- package/esm2022/mat-table-of-content/src/onemrva-mat-table-of-content.service.mjs +0 -46
- package/esm2022/mat-table-of-content/src/onemrva-mat-toc-anchor.model.mjs +0 -11
- package/esm2022/mat-task-list/index.mjs +0 -6
- package/esm2022/mat-task-list/onemrvapublic-design-system-mat-task-list.mjs +0 -5
- package/esm2022/mat-task-list/src/onemrva-mat-task-content.component.mjs +0 -17
- package/esm2022/mat-task-list/src/onemrva-mat-task-list.component.mjs +0 -36
- package/esm2022/mat-task-list/src/onemrva-mat-task-list.module.mjs +0 -51
- package/esm2022/mat-task-list/src/onemrva-mat-task-title.component.mjs +0 -23
- package/esm2022/mat-task-list/src/onemrva-mat-task.component.mjs +0 -140
- package/esm2022/mat-timepicker/index.mjs +0 -7
- package/esm2022/mat-timepicker/onemrvapublic-design-system-mat-timepicker.mjs +0 -5
- package/esm2022/mat-timepicker/src/clock/clock.component.mjs +0 -232
- package/esm2022/mat-timepicker/src/interfaces-and-types.mjs +0 -2
- package/esm2022/mat-timepicker/src/onemrva-mat-timepicker.component.mjs +0 -279
- package/esm2022/mat-timepicker/src/onemrva-mat-timepicker.module.mjs +0 -62
- package/esm2022/mat-timepicker/src/timepicker-dialog/timepicker-dialog.component.mjs +0 -129
- package/esm2022/mat-timepicker/src/timepicker-toggle/timepicker-toggle.component.mjs +0 -115
- package/esm2022/mat-timepicker/src/timepicker.directive.mjs +0 -512
- package/esm2022/mat-timepicker/src/util.mjs +0 -83
- package/esm2022/mat-toast/index.mjs +0 -6
- package/esm2022/mat-toast/onemrvapublic-design-system-mat-toast.mjs +0 -5
- package/esm2022/mat-toast/src/onemrva-mat-toast.component.mjs +0 -52
- package/esm2022/mat-toast/src/onemrva-mat-toast.module.mjs +0 -19
- package/esm2022/mat-tooltip/index.mjs +0 -5
- package/esm2022/mat-tooltip/onemrvapublic-design-system-mat-tooltip.mjs +0 -5
- package/esm2022/mat-tooltip/src/onemrva-mat-tooltip.component.mjs +0 -36
- package/esm2022/mat-tooltip/src/onemrva-mat-tooltip.directive.mjs +0 -111
- package/esm2022/mat-tooltip/src/onemrva-mat-tooltip.module.mjs +0 -19
- package/esm2022/onemrvapublic-design-system.mjs +0 -5
- package/esm2022/page-error/index.mjs +0 -3
- package/esm2022/page-error/onemrvapublic-design-system-page-error.mjs +0 -5
- package/esm2022/page-error/src/page-error-action.component.mjs +0 -18
- package/esm2022/page-error/src/page-error.component.mjs +0 -61
- package/esm2022/page-not-found/index.mjs +0 -6
- package/esm2022/page-not-found/onemrvapublic-design-system-page-not-found.mjs +0 -5
- package/esm2022/page-not-found/src/page-not-found-action.component.mjs +0 -17
- package/esm2022/page-not-found/src/page-not-found-extra.component.mjs +0 -17
- package/esm2022/page-not-found/src/page-not-found-invader.component.mjs +0 -94
- package/esm2022/page-not-found/src/page-not-found.component.mjs +0 -54
- package/esm2022/page-not-found/src/page-not-found.module.mjs +0 -38
- package/esm2022/public-api.mjs +0 -5
- package/esm2022/shared/index.mjs +0 -19
- package/esm2022/shared/onemrvapublic-design-system-shared.mjs +0 -5
- package/esm2022/shared/src/lib/adapters/index.mjs +0 -3
- package/esm2022/shared/src/lib/adapters/luxon.date.adapter.mjs +0 -251
- package/esm2022/shared/src/lib/adapters/luxon.utils.mjs +0 -23
- package/esm2022/shared/src/lib/adapters/native.date.adapter.mjs +0 -66
- package/esm2022/shared/src/lib/components/clipboard-icon/clipboard-icon.component.mjs +0 -20
- package/esm2022/shared/src/lib/components/index.mjs +0 -2
- package/esm2022/shared/src/lib/constants/CDNUrlModeOptions.mjs +0 -6
- package/esm2022/shared/src/lib/constants/cdn.mjs +0 -3
- package/esm2022/shared/src/lib/constants/constants.mjs +0 -7
- package/esm2022/shared/src/lib/constants/date.format.mjs +0 -95
- package/esm2022/shared/src/lib/constants/index.mjs +0 -5
- package/esm2022/shared/src/lib/containers/WebComponentOverlayContainer.mjs +0 -84
- package/esm2022/shared/src/lib/containers/index.mjs +0 -2
- package/esm2022/shared/src/lib/decorators/HttpCacheDecorator.mjs +0 -123
- package/esm2022/shared/src/lib/decorators/index.mjs +0 -2
- package/esm2022/shared/src/lib/directives/clipboard.directive.mjs +0 -39
- package/esm2022/shared/src/lib/directives/color.directive.mjs +0 -64
- package/esm2022/shared/src/lib/directives/digit-only.directive.mjs +0 -52
- package/esm2022/shared/src/lib/directives/iconRight.directive.mjs +0 -22
- package/esm2022/shared/src/lib/directives/if-width-is.directive.mjs +0 -34
- package/esm2022/shared/src/lib/directives/index.mjs +0 -24
- package/esm2022/shared/src/lib/directives/mask.directive.mjs +0 -198
- package/esm2022/shared/src/lib/directives/mat-row-clickable.directive.mjs +0 -74
- package/esm2022/shared/src/lib/helpers/index.mjs +0 -2
- package/esm2022/shared/src/lib/helpers/translation-helper.mjs +0 -58
- package/esm2022/shared/src/lib/interfaces/OnemRvaCommonCountry.interface.mjs +0 -2
- package/esm2022/shared/src/lib/interfaces/index.mjs +0 -2
- package/esm2022/shared/src/lib/loaders/index.mjs +0 -3
- package/esm2022/shared/src/lib/loaders/onemrva-translate-cdn-loader.mjs +0 -15
- package/esm2022/shared/src/lib/loaders/onemrva-translate-http-loader.mjs +0 -30
- package/esm2022/shared/src/lib/pipes/index.mjs +0 -3
- package/esm2022/shared/src/lib/pipes/onemrva-bce.pipe.mjs +0 -20
- package/esm2022/shared/src/lib/pipes/onemrva-niss.pipe.mjs +0 -20
- package/esm2022/shared/src/lib/providers/index.mjs +0 -5
- package/esm2022/shared/src/lib/providers/onemrva.date.luxon.provider.mjs +0 -16
- package/esm2022/shared/src/lib/providers/onemrva.date.luxon.year.month.provider.mjs +0 -16
- package/esm2022/shared/src/lib/providers/onemrva.date.native.provider.mjs +0 -16
- package/esm2022/shared/src/lib/providers/onemrva.date.native.year.month.provider.mjs +0 -16
- package/esm2022/shared/src/lib/services/cache.service.mjs +0 -31
- package/esm2022/shared/src/lib/services/cdn.service.mjs +0 -105
- package/esm2022/shared/src/lib/services/country-cdn.service.mjs +0 -75
- package/esm2022/shared/src/lib/services/country-lookup.service.mjs +0 -43
- package/esm2022/shared/src/lib/services/index.mjs +0 -5
- package/esm2022/shared/src/lib/services/mime-cdn.service.mjs +0 -45
- package/esm2022/shared/src/lib/shared.module.mjs +0 -25
- package/esm2022/shared/src/lib/tokens/index.mjs +0 -2
- package/esm2022/shared/src/lib/tokens/lookup.token.mjs +0 -7
- package/esm2022/shared/src/lib/validators/bank-account.validator.utils.mjs +0 -56
- package/esm2022/shared/src/lib/validators/index.mjs +0 -3
- package/esm2022/shared/src/lib/validators/onemrva-validators.mjs +0 -75
- package/esm2022/utils/index.mjs +0 -3
- package/esm2022/utils/onemrvapublic-design-system-utils.mjs +0 -5
- package/esm2022/utils/src/enum.utils.mjs +0 -7
- package/esm2022/utils/src/enums/color.enum.mjs +0 -12
- package/esm2022/utils/src/enums/index.mjs +0 -3
- package/esm2022/utils/src/enums/size.enum.mjs +0 -9
- package/fesm2022/onemrvapublic-design-system-mat-badge.mjs +0 -274
- package/fesm2022/onemrvapublic-design-system-mat-badge.mjs.map +0 -1
- package/mat-badge/index.d.ts +0 -2
- package/mat-badge/src/onemrva-mat-badge.component.d.ts +0 -89
- package/mat-badge/src/onemrva-mat-badge.component.scss +0 -157
- package/mat-badge/src/onemrva-mat-badge.module.d.ts +0 -7
|
@@ -1,232 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, } from '@angular/core';
|
|
2
|
-
import { getIsAvailabeFn } from '../util';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
import * as i2 from "@angular/material/button";
|
|
6
|
-
import * as i3 from "@angular/material/toolbar";
|
|
7
|
-
export class ClockComponent {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.viewType = 'hours';
|
|
10
|
-
this.color = 'primary';
|
|
11
|
-
this.formattedValue = 0;
|
|
12
|
-
this.formattedHours = 0;
|
|
13
|
-
this.changeEvent = new EventEmitter();
|
|
14
|
-
this.unavailableSelection = new EventEmitter();
|
|
15
|
-
this.invalidSelection = new EventEmitter();
|
|
16
|
-
this.isFormattedValueAllowed = true;
|
|
17
|
-
this.touching = false;
|
|
18
|
-
this.numbers = [];
|
|
19
|
-
this.secondaryNumbers = [];
|
|
20
|
-
this.minuteDots = [];
|
|
21
|
-
this.invalidMeridiemEmitted = true;
|
|
22
|
-
this.handleTouchMove = (e) => {
|
|
23
|
-
e.preventDefault(); // prevent scrolling behind the clock on iOS
|
|
24
|
-
const rect = e.target.getBoundingClientRect();
|
|
25
|
-
this.movePointer(e.changedTouches[0].clientX - rect.left, e.changedTouches[0].clientY - rect.top);
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
initIsAllowedFn() {
|
|
29
|
-
if (!this.allowed24HourMap) {
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
this.isAvailableFn = getIsAvailabeFn(this.allowed24HourMap);
|
|
33
|
-
}
|
|
34
|
-
isAvailable(value) {
|
|
35
|
-
return this.isAvailableFn
|
|
36
|
-
? this.isAvailableFn(value, this.viewType, this.formattedHours)
|
|
37
|
-
: true;
|
|
38
|
-
}
|
|
39
|
-
ngOnChanges(simpleChanges) {
|
|
40
|
-
if (simpleChanges['allowed24HourMap'] ||
|
|
41
|
-
(simpleChanges['mode'] && !simpleChanges['mode'].firstChange)) {
|
|
42
|
-
this.initIsAllowedFn();
|
|
43
|
-
}
|
|
44
|
-
this.calculateAngule();
|
|
45
|
-
this.setNumbers();
|
|
46
|
-
if (simpleChanges['formattedValue'] && this.allowed24HourMap) {
|
|
47
|
-
this.isFormattedValueAllowed = this.isAvailable(this.formattedValue);
|
|
48
|
-
}
|
|
49
|
-
const isSelectedTimeAvailable = this.isAvailableFn
|
|
50
|
-
? this.isAvailableFn(this.formattedValue, 'minutes', this.formattedHours)
|
|
51
|
-
: true;
|
|
52
|
-
if (this.viewType === 'minutes' && this.isAvailableFn) {
|
|
53
|
-
const areMinitesAvailable = this.isAvailableFn(this.minutes, 'minutes', this.formattedHours);
|
|
54
|
-
if (!areMinitesAvailable) {
|
|
55
|
-
if (this.minDate && this.minDate.getMinutes() > this.minutes) {
|
|
56
|
-
setTimeout(() => {
|
|
57
|
-
this.changeEvent.emit({
|
|
58
|
-
value: this.minDate.getMinutes(),
|
|
59
|
-
type: 'minutes',
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
setTimeout(() => {
|
|
65
|
-
this.changeEvent.emit({
|
|
66
|
-
value: this.maxDate.getMinutes(),
|
|
67
|
-
type: 'minutes',
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
if (isSelectedTimeAvailable && this.invalidMeridiemEmitted) {
|
|
74
|
-
this.invalidMeridiemEmitted = false;
|
|
75
|
-
}
|
|
76
|
-
this.invalidSelection.emit(!isSelectedTimeAvailable);
|
|
77
|
-
}
|
|
78
|
-
calculateAngule() {
|
|
79
|
-
this.angle = this.getPointerAngle(this.formattedValue, this.viewType);
|
|
80
|
-
}
|
|
81
|
-
setNumbers() {
|
|
82
|
-
if (this.viewType === 'hours') {
|
|
83
|
-
// if (this.mode === '12h') {
|
|
84
|
-
// const meridiem : string = this.isPm ? 'pm' : 'am';
|
|
85
|
-
// const isAllowedFn = this.allowed12HourMap ? (num : number) => this.allowed12HourMap[meridiem][num + 1][0] : undefined;
|
|
86
|
-
// this.numbers = this.getNumbers(12, { size: 256 }, isAllowedFn);
|
|
87
|
-
// this.secondaryNumbers = [];
|
|
88
|
-
// this.minuteDots = [];
|
|
89
|
-
// } else if (this.mode === '24h') {
|
|
90
|
-
const isAllowedFn = this.allowed24HourMap
|
|
91
|
-
? (num) => this.allowed24HourMap[num][0]
|
|
92
|
-
: undefined;
|
|
93
|
-
this.numbers = this.getNumbers(12, { size: 256 }, isAllowedFn);
|
|
94
|
-
this.secondaryNumbers = this.getNumbers(12, { size: 256 - 64, start: 13 }, isAllowedFn);
|
|
95
|
-
this.minuteDots = [];
|
|
96
|
-
//}
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
//const meridiem : string = this.isPm ? 'pm' : 'am';
|
|
100
|
-
const isAllowedFn =
|
|
101
|
-
// !!this.allowed12HourMap ? (num : number) => this.allowed12HourMap[meridiem][this.formattedHours][num] :
|
|
102
|
-
this.allowed24HourMap
|
|
103
|
-
? (num) => this.allowed24HourMap[this.formattedHours][num]
|
|
104
|
-
: undefined;
|
|
105
|
-
this.numbers = this.getNumbers(12, { size: 256, start: 5, step: 5 }, isAllowedFn);
|
|
106
|
-
this.minuteDots = this.getNumbers(60, { size: 256, start: 13 }).map(digit => {
|
|
107
|
-
if (digit.display <= 59) {
|
|
108
|
-
digit.allowed = isAllowedFn ? isAllowedFn(digit.display) : true;
|
|
109
|
-
return digit;
|
|
110
|
-
}
|
|
111
|
-
digit.display = digit.display - 60;
|
|
112
|
-
digit.allowed = isAllowedFn ? isAllowedFn(digit.display) : true;
|
|
113
|
-
return digit;
|
|
114
|
-
});
|
|
115
|
-
this.secondaryNumbers = [];
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
disableAnimatedPointer() {
|
|
119
|
-
this.touching = true;
|
|
120
|
-
}
|
|
121
|
-
enableAnimatedPointer() {
|
|
122
|
-
this.touching = false;
|
|
123
|
-
}
|
|
124
|
-
handleTouchEnd(e) {
|
|
125
|
-
this.handleTouchMove(e);
|
|
126
|
-
this.enableAnimatedPointer();
|
|
127
|
-
}
|
|
128
|
-
handleMouseMove(e) {
|
|
129
|
-
// MouseEvent.which is deprecated, but MouseEvent.buttons is not supported in Safari
|
|
130
|
-
if (e.buttons === 1 || e.which === 1) {
|
|
131
|
-
const rect = e.target.getBoundingClientRect();
|
|
132
|
-
this.movePointer(e.clientX - rect.left, e.clientY - rect.top);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
handleClick(e) {
|
|
136
|
-
const rect = e.target.getBoundingClientRect();
|
|
137
|
-
this.movePointer(e.clientX - rect.left, e.clientY - rect.top);
|
|
138
|
-
}
|
|
139
|
-
movePointer(x, y) {
|
|
140
|
-
const value = this.getPointerValue(x, y, 256);
|
|
141
|
-
if (!this.isAvailable(value)) {
|
|
142
|
-
this.unavailableSelection.emit();
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
if (value !== this.formattedValue) {
|
|
146
|
-
this.changeEvent.emit({
|
|
147
|
-
value,
|
|
148
|
-
type: this.viewType !== 'minutes' ? 'hours' : 'minutes',
|
|
149
|
-
});
|
|
150
|
-
if (this.viewType !== 'minutes') {
|
|
151
|
-
if (!this.isAvailable(value)) {
|
|
152
|
-
if (this.minDate && this.isAvailable(value)) {
|
|
153
|
-
this.changeEvent.emit({
|
|
154
|
-
value: this.minDate.getMinutes(),
|
|
155
|
-
type: 'minutes',
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
else if (this.maxDate && this.isAvailable(value)) {
|
|
159
|
-
this.changeEvent.emit({
|
|
160
|
-
value: this.maxDate.getMinutes(),
|
|
161
|
-
type: 'minutes',
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
getNumbers(count, { size = 0, start = 1, step = 1 }, isAllowedFn) {
|
|
169
|
-
// eslint-disable-next-line
|
|
170
|
-
return Array.apply(null, Array(count)).map((_, i) => ({
|
|
171
|
-
display: i * step + start,
|
|
172
|
-
translateX: (size / 2 - 20) * Math.cos((2 * Math.PI * (i - 2)) / count),
|
|
173
|
-
translateY: (size / 2 - 20) * Math.sin((2 * Math.PI * (i - 2)) / count),
|
|
174
|
-
allowed: isAllowedFn ? isAllowedFn(i) : true,
|
|
175
|
-
}));
|
|
176
|
-
}
|
|
177
|
-
getPointerAngle(value, _mode) {
|
|
178
|
-
if (this.viewType === 'hours') {
|
|
179
|
-
return (360 / 12) * ((value % 12) - 3);
|
|
180
|
-
}
|
|
181
|
-
return (360 / 60) * (value - 15);
|
|
182
|
-
}
|
|
183
|
-
getPointerValue(x, y, size) {
|
|
184
|
-
let value;
|
|
185
|
-
let angle = (Math.atan2(size / 2 - x, size / 2 - y) / Math.PI) * 180;
|
|
186
|
-
if (angle < 0) {
|
|
187
|
-
angle = 360 + angle;
|
|
188
|
-
}
|
|
189
|
-
if (this.viewType === 'hours') {
|
|
190
|
-
const radius = Math.sqrt(Math.pow(size / 2 - x, 2) + Math.pow(size / 2 - y, 2));
|
|
191
|
-
value = 12 - Math.round((angle * 12) / 360);
|
|
192
|
-
if (value === 0) {
|
|
193
|
-
value = 12;
|
|
194
|
-
}
|
|
195
|
-
if (radius < size / 2 - 32) {
|
|
196
|
-
value = value === 12 ? 0 : value + 12;
|
|
197
|
-
}
|
|
198
|
-
return value;
|
|
199
|
-
}
|
|
200
|
-
value = Math.round(60 - (60 * angle) / 360);
|
|
201
|
-
return value === 60 ? 0 : value;
|
|
202
|
-
}
|
|
203
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ClockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
204
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ClockComponent, selector: "mat-clock", inputs: { viewType: "viewType", color: "color", formattedValue: "formattedValue", minDate: "minDate", maxDate: "maxDate", formattedHours: "formattedHours", minutes: "minutes", allowed24HourMap: "allowed24HourMap" }, outputs: { changeEvent: "changeEvent", unavailableSelection: "unavailableSelection", invalidSelection: "invalidSelection" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"root\">\n <div\n class=\"circle\"\n tabindex=\"1\"\n (touchmove)=\"handleTouchMove($event)\"\n (mousemove)=\"handleMouseMove($event)\"\n (touchstart)=\"disableAnimatedPointer()\"\n (mousedown)=\"disableAnimatedPointer()\"\n (touchend)=\"handleTouchEnd($event)\"\n (mouseup)=\"enableAnimatedPointer()\"\n (click)=\"handleClick($event)\"\n >\n <div\n class=\"pointer-container\"\n [ngClass]=\"{\n 'small-pointer':\n viewType === 'hours' && (formattedValue === 0 || formattedValue > 12),\n 'animated-pointer': !touching,\n }\"\n [style.transform]=\"'rotate(' + angle + 'deg)'\"\n >\n <button\n aria-disabled=\"true\"\n mat-mini-fab\n [color]=\"color\"\n class=\"inner-dot\"\n aria-label=\"Inner Dot\"\n ></button>\n <mat-toolbar [color]=\"color\" class=\"pointer\">\n <button\n mat-mini-fab\n [color]=\"color\"\n class=\"outer-dot\"\n aria-label=\"Outer dot\"\n [ngClass]=\"{\n 'outer-dot-odd': viewType === 'minutes' && formattedValue % 5 !== 0,\n }\"\n >\n <ng-container\n *ngIf=\"viewType === 'minutes' && formattedValue % 5 !== 0\"\n >\u00B7</ng-container\n >\n </button>\n </mat-toolbar>\n </div>\n <ng-container *ngFor=\"let digit of minuteDots\">\n <button\n mat-mini-fab\n class=\"number minute-dot\"\n [ngClass]=\"{\n selected:\n formattedValue === digit.display ||\n (digit.display === 0 && formattedValue === 0),\n disabled: !isAvailable(digit.display === 60 ? 0 : digit.display),\n }\"\n [style.transform]=\"\n 'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n \"\n >\n <ng-container *ngIf=\"digit.display % 5 !== 0\">\u00B7</ng-container>\n </button>\n </ng-container>\n <ng-container *ngFor=\"let digit of numbers\">\n <button\n mat-mini-fab\n [color]=\"color\"\n class=\"number\"\n [ngClass]=\"{\n selected:\n formattedValue === digit.display ||\n (digit.display === 60 && formattedValue === 0),\n disabled: !isAvailable(digit.display === 60 ? 0 : digit.display),\n }\"\n [style.transform]=\"\n 'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n \"\n >\n <ng-template #hoursTemplate>{{ digit.display }}</ng-template>\n <ng-template #minutesTemplate>{{\n digit.display === 60 ? '00' : digit.display\n }}</ng-template>\n <ng-container\n *ngIf=\"\n viewType === 'minutes';\n then minutesTemplate;\n else hoursTemplate\n \"\n ></ng-container>\n </button>\n </ng-container>\n <ng-container *ngFor=\"let digit of secondaryNumbers\">\n <button\n mat-mini-fab\n [color]=\"color\"\n class=\"number small-number\"\n [ngClass]=\"{\n selected:\n formattedValue === digit.display ||\n (digit.display === 24 && formattedValue === 0),\n disabled: !isAvailable(digit.display === 24 ? 0 : digit.display),\n }\"\n [style.transform]=\"\n 'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n \"\n >\n {{ digit.display === 24 ? '00' : digit.display }}\n </button>\n </ng-container>\n </div>\n</div>\n", styles: [".root{width:256px;height:256px;cursor:default}.circle{width:256px;height:256px;border-radius:50%;position:relative;background:#ededed;cursor:pointer}.mat-mdc-mini-fab.number{width:32px;height:32px;left:calc(50% - 16px);top:calc(50% - 16px);position:absolute;text-align:center;line-height:32px;cursor:pointer;font-size:14px;pointer-events:none;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center;flex-direction:column;background-color:transparent;box-shadow:none}.mat-mdc-mini-fab.number.disabled{color:#0101011a}.mat-mdc-mini-fab.number:not(.selected):not(.disabled){color:#000000de}.mat-mdc-mini-fab.number:not(.disabled).minute-dot{color:#010101b3}.mat-mdc-mini-fab.number:not(.disabled).minute-dot.selected{color:transparent}.small-number{font-size:12px}.small-number:not(.selected):not(.disabled){color:#000000ab}.pointer-container{width:calc(50% - 20px);height:2;position:absolute;left:50%;top:calc(50% - 1px);transform-origin:left center;pointer-events:none}.pointer-container.disabled *{background-color:transparent}.pointer{height:1px}.animated-pointer{transition:all .2s ease-out}.pointer-container.small-pointer{width:calc(50% - 52px)}.pointer-container.small-pointer mat-toolbar{padding:0 16px}.pointer-container mat-toolbar{padding:0 54px}.inner-dot{position:absolute;top:-3px;left:-4px;width:8px;height:8px;border-radius:50%;box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.outer-dot{width:32px;height:32px;position:absolute;right:-16px;box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f;border-radius:50%;box-sizing:content-box}.outer-dot-odd{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f;width:32px;height:32px;display:flex;align-items:center;justify-content:center;flex-direction:column}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
205
|
-
}
|
|
206
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ClockComponent, decorators: [{
|
|
207
|
-
type: Component,
|
|
208
|
-
args: [{ selector: 'mat-clock', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"root\">\n <div\n class=\"circle\"\n tabindex=\"1\"\n (touchmove)=\"handleTouchMove($event)\"\n (mousemove)=\"handleMouseMove($event)\"\n (touchstart)=\"disableAnimatedPointer()\"\n (mousedown)=\"disableAnimatedPointer()\"\n (touchend)=\"handleTouchEnd($event)\"\n (mouseup)=\"enableAnimatedPointer()\"\n (click)=\"handleClick($event)\"\n >\n <div\n class=\"pointer-container\"\n [ngClass]=\"{\n 'small-pointer':\n viewType === 'hours' && (formattedValue === 0 || formattedValue > 12),\n 'animated-pointer': !touching,\n }\"\n [style.transform]=\"'rotate(' + angle + 'deg)'\"\n >\n <button\n aria-disabled=\"true\"\n mat-mini-fab\n [color]=\"color\"\n class=\"inner-dot\"\n aria-label=\"Inner Dot\"\n ></button>\n <mat-toolbar [color]=\"color\" class=\"pointer\">\n <button\n mat-mini-fab\n [color]=\"color\"\n class=\"outer-dot\"\n aria-label=\"Outer dot\"\n [ngClass]=\"{\n 'outer-dot-odd': viewType === 'minutes' && formattedValue % 5 !== 0,\n }\"\n >\n <ng-container\n *ngIf=\"viewType === 'minutes' && formattedValue % 5 !== 0\"\n >\u00B7</ng-container\n >\n </button>\n </mat-toolbar>\n </div>\n <ng-container *ngFor=\"let digit of minuteDots\">\n <button\n mat-mini-fab\n class=\"number minute-dot\"\n [ngClass]=\"{\n selected:\n formattedValue === digit.display ||\n (digit.display === 0 && formattedValue === 0),\n disabled: !isAvailable(digit.display === 60 ? 0 : digit.display),\n }\"\n [style.transform]=\"\n 'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n \"\n >\n <ng-container *ngIf=\"digit.display % 5 !== 0\">\u00B7</ng-container>\n </button>\n </ng-container>\n <ng-container *ngFor=\"let digit of numbers\">\n <button\n mat-mini-fab\n [color]=\"color\"\n class=\"number\"\n [ngClass]=\"{\n selected:\n formattedValue === digit.display ||\n (digit.display === 60 && formattedValue === 0),\n disabled: !isAvailable(digit.display === 60 ? 0 : digit.display),\n }\"\n [style.transform]=\"\n 'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n \"\n >\n <ng-template #hoursTemplate>{{ digit.display }}</ng-template>\n <ng-template #minutesTemplate>{{\n digit.display === 60 ? '00' : digit.display\n }}</ng-template>\n <ng-container\n *ngIf=\"\n viewType === 'minutes';\n then minutesTemplate;\n else hoursTemplate\n \"\n ></ng-container>\n </button>\n </ng-container>\n <ng-container *ngFor=\"let digit of secondaryNumbers\">\n <button\n mat-mini-fab\n [color]=\"color\"\n class=\"number small-number\"\n [ngClass]=\"{\n selected:\n formattedValue === digit.display ||\n (digit.display === 24 && formattedValue === 0),\n disabled: !isAvailable(digit.display === 24 ? 0 : digit.display),\n }\"\n [style.transform]=\"\n 'translate(' + digit.translateX + 'px, ' + digit.translateY + 'px)'\n \"\n >\n {{ digit.display === 24 ? '00' : digit.display }}\n </button>\n </ng-container>\n </div>\n</div>\n", styles: [".root{width:256px;height:256px;cursor:default}.circle{width:256px;height:256px;border-radius:50%;position:relative;background:#ededed;cursor:pointer}.mat-mdc-mini-fab.number{width:32px;height:32px;left:calc(50% - 16px);top:calc(50% - 16px);position:absolute;text-align:center;line-height:32px;cursor:pointer;font-size:14px;pointer-events:none;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center;flex-direction:column;background-color:transparent;box-shadow:none}.mat-mdc-mini-fab.number.disabled{color:#0101011a}.mat-mdc-mini-fab.number:not(.selected):not(.disabled){color:#000000de}.mat-mdc-mini-fab.number:not(.disabled).minute-dot{color:#010101b3}.mat-mdc-mini-fab.number:not(.disabled).minute-dot.selected{color:transparent}.small-number{font-size:12px}.small-number:not(.selected):not(.disabled){color:#000000ab}.pointer-container{width:calc(50% - 20px);height:2;position:absolute;left:50%;top:calc(50% - 1px);transform-origin:left center;pointer-events:none}.pointer-container.disabled *{background-color:transparent}.pointer{height:1px}.animated-pointer{transition:all .2s ease-out}.pointer-container.small-pointer{width:calc(50% - 52px)}.pointer-container.small-pointer mat-toolbar{padding:0 16px}.pointer-container mat-toolbar{padding:0 54px}.inner-dot{position:absolute;top:-3px;left:-4px;width:8px;height:8px;border-radius:50%;box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.outer-dot{width:32px;height:32px;position:absolute;right:-16px;box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f;border-radius:50%;box-sizing:content-box}.outer-dot-odd{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f;width:32px;height:32px;display:flex;align-items:center;justify-content:center;flex-direction:column}\n"] }]
|
|
209
|
-
}], propDecorators: { viewType: [{
|
|
210
|
-
type: Input
|
|
211
|
-
}], color: [{
|
|
212
|
-
type: Input
|
|
213
|
-
}], formattedValue: [{
|
|
214
|
-
type: Input
|
|
215
|
-
}], minDate: [{
|
|
216
|
-
type: Input
|
|
217
|
-
}], maxDate: [{
|
|
218
|
-
type: Input
|
|
219
|
-
}], formattedHours: [{
|
|
220
|
-
type: Input
|
|
221
|
-
}], minutes: [{
|
|
222
|
-
type: Input
|
|
223
|
-
}], changeEvent: [{
|
|
224
|
-
type: Output
|
|
225
|
-
}], unavailableSelection: [{
|
|
226
|
-
type: Output
|
|
227
|
-
}], invalidSelection: [{
|
|
228
|
-
type: Output
|
|
229
|
-
}], allowed24HourMap: [{
|
|
230
|
-
type: Input
|
|
231
|
-
}] } });
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC10aW1lcGlja2VyL3NyYy9jbG9jay9jbG9jay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LXRpbWVwaWNrZXIvc3JjL2Nsb2NrL2Nsb2NrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR1osdUJBQXVCLEdBQ3hCLE1BQU0sZUFBZSxDQUFDO0FBTXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUM7Ozs7O0FBUzFDLE1BQU0sT0FBTyxjQUFjO0lBTjNCO1FBT1csYUFBUSxHQUFrQixPQUFPLENBQUM7UUFDbEMsVUFBSyxHQUFpQixTQUFTLENBQUM7UUFDaEMsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFHbkIsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFFbEIsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN6RCx5QkFBb0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNsRSxxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUl4RSw0QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFJL0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixZQUFPLEdBQWtCLEVBQUUsQ0FBQztRQUM1QixxQkFBZ0IsR0FBa0IsRUFBRSxDQUFDO1FBQ3JDLGVBQVUsR0FBa0IsRUFBRSxDQUFDO1FBQy9CLDJCQUFzQixHQUFHLElBQUksQ0FBQztRQThIOUIsb0JBQWUsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFO1lBQzNCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FB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LENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2xDLENBQUM7K0dBelBVLGNBQWM7bUdBQWQsY0FBYywyWkN2QjNCLGdnSEE4R0E7OzRGRHZGYSxjQUFjO2tCQU4xQixTQUFTOytCQUNFLFdBQVcsbUJBR0osdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFRSxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDbG9ja1ZpZXdUeXBlLFxuICBDbG9ja051bWJlcixcbiAgSUFsbG93ZWQyNEhvdXJNYXAsXG59IGZyb20gJy4uL2ludGVyZmFjZXMtYW5kLXR5cGVzJztcbmltcG9ydCB7IGdldElzQXZhaWxhYmVGbiB9IGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1jbG9jaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jbG9jay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nsb2NrLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDbG9ja0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHZpZXdUeXBlOiBDbG9ja1ZpZXdUeXBlID0gJ2hvdXJzJztcbiAgQElucHV0KCkgY29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdwcmltYXJ5JztcbiAgQElucHV0KCkgZm9ybWF0dGVkVmFsdWUgPSAwO1xuICBASW5wdXQoKSBtaW5EYXRlITogRGF0ZTtcbiAgQElucHV0KCkgbWF4RGF0ZSE6IERhdGU7XG4gIEBJbnB1dCgpIGZvcm1hdHRlZEhvdXJzID0gMDtcbiAgQElucHV0KCkgbWludXRlcyE6IG51bWJlcjtcbiAgQE91dHB1dCgpIGNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgdW5hdmFpbGFibGVTZWxlY3Rpb246IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBpbnZhbGlkU2VsZWN0aW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBJbnB1dCgpIGFsbG93ZWQyNEhvdXJNYXAhOiBJQWxsb3dlZDI0SG91ck1hcDtcblxuICBpc0Zvcm1hdHRlZFZhbHVlQWxsb3dlZCA9IHRydWU7XG5cbiAgaXNBdmFpbGFibGVGbj86IFJldHVyblR5cGU8dHlwZW9mIGdldElzQXZhaWxhYmVGbj47XG5cbiAgdG91Y2hpbmcgPSBmYWxzZTtcbiAgYW5nbGU/OiBudW1iZXI7XG4gIG51bWJlcnM6IENsb2NrTnVtYmVyW10gPSBbXTtcbiAgc2Vjb25kYXJ5TnVtYmVyczogQ2xvY2tOdW1iZXJbXSA9IFtdO1xuICBtaW51dGVEb3RzOiBDbG9ja051bWJlcltdID0gW107XG4gIGludmFsaWRNZXJpZGllbUVtaXR0ZWQgPSB0cnVlO1xuXG4gIGluaXRJc0FsbG93ZWRGbigpIHtcbiAgICBpZiAoIXRoaXMuYWxsb3dlZDI0SG91ck1hcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlzQXZhaWxhYmxlRm4gPSBnZXRJc0F2YWlsYWJlRm4odGhpcy5hbGxvd2VkMjRIb3VyTWFwKTtcbiAgfVxuXG4gIGlzQXZhaWxhYmxlKHZhbHVlOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5pc0F2YWlsYWJsZUZuXG4gICAgICA/IHRoaXMuaXNBdmFpbGFibGVGbih2YWx1ZSwgdGhpcy52aWV3VHlwZSwgdGhpcy5mb3JtYXR0ZWRIb3VycylcbiAgICAgIDogdHJ1ZTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHNpbXBsZUNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoXG4gICAgICBzaW1wbGVDaGFuZ2VzWydhbGxvd2VkMjRIb3VyTWFwJ10gfHxcbiAgICAgIChzaW1wbGVDaGFuZ2VzWydtb2RlJ10gJiYgIXNpbXBsZUNoYW5nZXNbJ21vZGUnXS5maXJzdENoYW5nZSlcbiAgICApIHtcbiAgICAgIHRoaXMuaW5pdElzQWxsb3dlZEZuKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jYWxjdWxhdGVBbmd1bGUoKTtcbiAgICB0aGlzLnNldE51bWJlcnMoKTtcblxuICAgIGlmIChzaW1wbGVDaGFuZ2VzWydmb3JtYXR0ZWRWYWx1ZSddICYmIHRoaXMuYWxsb3dlZDI0SG91ck1hcCkge1xuICAgICAgdGhpcy5pc0Zvcm1hdHRlZFZhbHVlQWxsb3dlZCA9IHRoaXMuaXNBdmFpbGFibGUodGhpcy5mb3JtYXR0ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgaXNTZWxlY3RlZFRpbWVBdmFpbGFibGUgPSB0aGlzLmlzQXZhaWxhYmxlRm5cbiAgICAgID8gdGhpcy5pc0F2YWlsYWJsZUZuKHRoaXMuZm9ybWF0dGVkVmFsdWUsICdtaW51dGVzJywgdGhpcy5mb3JtYXR0ZWRIb3VycylcbiAgICAgIDogdHJ1ZTtcblxuICAgIGlmICh0aGlzLnZpZXdUeXBlID09PSAnbWludXRlcycgJiYgdGhpcy5pc0F2YWlsYWJsZUZuKSB7XG4gICAgICBjb25zdCBhcmVNaW5pdGVzQXZhaWxhYmxlID0gdGhpcy5pc0F2YWlsYWJsZUZuKFxuICAgICAgICB0aGlzLm1pbnV0ZXMsXG4gICAgICAgICdtaW51dGVzJyxcbiAgICAgICAgdGhpcy5mb3JtYXR0ZWRIb3VycyxcbiAgICAgICk7XG4gICAgICBpZiAoIWFyZU1pbml0ZXNBdmFpbGFibGUpIHtcbiAgICAgICAgaWYgKHRoaXMubWluRGF0ZSAmJiB0aGlzLm1pbkRhdGUuZ2V0TWludXRlcygpID4gdGhpcy5taW51dGVzKSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5taW5EYXRlLmdldE1pbnV0ZXMoKSxcbiAgICAgICAgICAgICAgdHlwZTogJ21pbnV0ZXMnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5tYXhEYXRlLmdldE1pbnV0ZXMoKSxcbiAgICAgICAgICAgICAgdHlwZTogJ21pbnV0ZXMnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNTZWxlY3RlZFRpbWVBdmFpbGFibGUgJiYgdGhpcy5pbnZhbGlkTWVyaWRpZW1FbWl0dGVkKSB7XG4gICAgICB0aGlzLmludmFsaWRNZXJpZGllbUVtaXR0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmludmFsaWRTZWxlY3Rpb24uZW1pdCghaXNTZWxlY3RlZFRpbWVBdmFpbGFibGUpO1xuICB9XG5cbiAgY2FsY3VsYXRlQW5ndWxlKCkge1xuICAgIHRoaXMuYW5nbGUgPSB0aGlzLmdldFBvaW50ZXJBbmdsZSh0aGlzLmZvcm1hdHRlZFZhbHVlLCB0aGlzLnZpZXdUeXBlKTtcbiAgfVxuXG4gIHNldE51bWJlcnMoKSB7XG4gICAgaWYgKHRoaXMudmlld1R5cGUgPT09ICdob3VycycpIHtcbiAgICAgIC8vIGlmICh0aGlzLm1vZGUgPT09ICcxMmgnKSB7XG4gICAgICAvLyAgIGNvbnN0IG1lcmlkaWVtIDogc3RyaW5nID0gdGhpcy5pc1BtID8gJ3BtJyA6ICdhbSc7XG4gICAgICAvLyAgIGNvbnN0IGlzQWxsb3dlZEZuID0gdGhpcy5hbGxvd2VkMTJIb3VyTWFwID8gKG51bSA6IG51bWJlcikgPT4gdGhpcy5hbGxvd2VkMTJIb3VyTWFwW21lcmlkaWVtXVtudW0gKyAxXVswXSA6IHVuZGVmaW5lZDtcbiAgICAgIC8vICAgdGhpcy5udW1iZXJzID0gdGhpcy5nZXROdW1iZXJzKDEyLCB7IHNpemU6IDI1NiB9LCBpc0FsbG93ZWRGbik7XG4gICAgICAvLyAgIHRoaXMuc2Vjb25kYXJ5TnVtYmVycyA9IFtdO1xuICAgICAgLy8gICB0aGlzLm1pbnV0ZURvdHMgPSBbXTtcbiAgICAgIC8vIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSAnMjRoJykge1xuICAgICAgY29uc3QgaXNBbGxvd2VkRm4gPSB0aGlzLmFsbG93ZWQyNEhvdXJNYXBcbiAgICAgICAgPyAobnVtOiBudW1iZXIpID0+IHRoaXMuYWxsb3dlZDI0SG91ck1hcFtudW1dWzBdXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgdGhpcy5udW1iZXJzID0gdGhpcy5nZXROdW1iZXJzKDEyLCB7IHNpemU6IDI1NiB9LCBpc0FsbG93ZWRGbik7XG4gICAgICB0aGlzLnNlY29uZGFyeU51bWJlcnMgPSB0aGlzLmdldE51bWJlcnMoXG4gICAgICAgIDEyLFxuICAgICAgICB7IHNpemU6IDI1NiAtIDY0LCBzdGFydDogMTMgfSxcbiAgICAgICAgaXNBbGxvd2VkRm4sXG4gICAgICApO1xuICAgICAgdGhpcy5taW51dGVEb3RzID0gW107XG4gICAgICAvL31cbiAgICB9IGVsc2Uge1xuICAgICAgLy9jb25zdCBtZXJpZGllbSA6IHN0cmluZyA9IHRoaXMuaXNQbSA/ICdwbScgOiAnYW0nO1xuICAgICAgY29uc3QgaXNBbGxvd2VkRm4gPVxuICAgICAgICAvLyAhIXRoaXMuYWxsb3dlZDEySG91ck1hcCA/IChudW0gOiBudW1iZXIpID0+IHRoaXMuYWxsb3dlZDEySG91ck1hcFttZXJpZGllbV1bdGhpcy5mb3JtYXR0ZWRIb3Vyc11bbnVtXSA6XG4gICAgICAgIHRoaXMuYWxsb3dlZDI0SG91ck1hcFxuICAgICAgICAgID8gKG51bTogbnVtYmVyKSA9PiB0aGlzLmFsbG93ZWQyNEhvdXJNYXBbdGhpcy5mb3JtYXR0ZWRIb3Vyc11bbnVtXVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLm51bWJlcnMgPSB0aGlzLmdldE51bWJlcnMoXG4gICAgICAgIDEyLFxuICAgICAgICB7IHNpemU6IDI1Niwgc3RhcnQ6IDUsIHN0ZXA6IDUgfSxcbiAgICAgICAgaXNBbGxvd2VkRm4sXG4gICAgICApO1xuICAgICAgdGhpcy5taW51dGVEb3RzID0gdGhpcy5nZXROdW1iZXJzKDYwLCB7IHNpemU6IDI1Niwgc3RhcnQ6IDEzIH0pLm1hcChcbiAgICAgICAgZGlnaXQgPT4ge1xuICAgICAgICAgIGlmIChkaWdpdC5kaXNwbGF5IDw9IDU5KSB7XG4gICAgICAgICAgICBkaWdpdC5hbGxvd2VkID0gaXNBbGxvd2VkRm4gPyBpc0FsbG93ZWRGbihkaWdpdC5kaXNwbGF5KSA6IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZGlnaXQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRpZ2l0LmRpc3BsYXkgPSBkaWdpdC5kaXNwbGF5IC0gNjA7XG4gICAgICAgICAgZGlnaXQuYWxsb3dlZCA9IGlzQWxsb3dlZEZuID8gaXNBbGxvd2VkRm4oZGlnaXQuZGlzcGxheSkgOiB0cnVlO1xuICAgICAgICAgIHJldHVybiBkaWdpdDtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICB0aGlzLnNlY29uZGFyeU51bWJlcnMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBkaXNhYmxlQW5pbWF0ZWRQb2ludGVyKCkge1xuICAgIHRoaXMudG91Y2hpbmcgPSB0cnVlO1xuICB9XG5cbiAgZW5hYmxlQW5pbWF0ZWRQb2ludGVyKCkge1xuICAgIHRoaXMudG91Y2hpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIGhhbmRsZVRvdWNoTW92ZSA9IChlOiBhbnkpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7IC8vIHByZXZlbnQgc2Nyb2xsaW5nIGJlaGluZCB0aGUgY2xvY2sgb24gaU9TXG4gICAgY29uc3QgcmVjdCA9IGUudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHRoaXMubW92ZVBvaW50ZXIoXG4gICAgICBlLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFggLSByZWN0LmxlZnQsXG4gICAgICBlLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFkgLSByZWN0LnRvcCxcbiAgICApO1xuICB9O1xuXG4gIGhhbmRsZVRvdWNoRW5kKGU6IGFueSkge1xuICAgIHRoaXMuaGFuZGxlVG91Y2hNb3ZlKGUpO1xuICAgIHRoaXMuZW5hYmxlQW5pbWF0ZWRQb2ludGVyKCk7XG4gIH1cblxuICBoYW5kbGVNb3VzZU1vdmUoZTogYW55KSB7XG4gICAgLy8gTW91c2VFdmVudC53aGljaCBpcyBkZXByZWNhdGVkLCBidXQgTW91c2VFdmVudC5idXR0b25zIGlzIG5vdCBzdXBwb3J0ZWQgaW4gU2FmYXJpXG4gICAgaWYgKGUuYnV0dG9ucyA9PT0gMSB8fCBlLndoaWNoID09PSAxKSB7XG4gICAgICBjb25zdCByZWN0ID0gZS50YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB0aGlzLm1vdmVQb2ludGVyKGUuY2xpZW50WCAtIHJlY3QubGVmdCwgZS5jbGllbnRZIC0gcmVjdC50b3ApO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGU6IGFueSkge1xuICAgIGNvbnN0IHJlY3QgPSBlLnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICB0aGlzLm1vdmVQb2ludGVyKGUuY2xpZW50WCAtIHJlY3QubGVmdCwgZS5jbGllbnRZIC0gcmVjdC50b3ApO1xuICB9XG5cbiAgbW92ZVBvaW50ZXIoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0UG9pbnRlclZhbHVlKHgsIHksIDI1Nik7XG4gICAgaWYgKCF0aGlzLmlzQXZhaWxhYmxlKHZhbHVlKSkge1xuICAgICAgdGhpcy51bmF2YWlsYWJsZVNlbGVjdGlvbi5lbWl0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5mb3JtYXR0ZWRWYWx1ZSkge1xuICAgICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHR5cGU6IHRoaXMudmlld1R5cGUgIT09ICdtaW51dGVzJyA/ICdob3VycycgOiAnbWludXRlcycsXG4gICAgICB9KTtcbiAgICAgIGlmICh0aGlzLnZpZXdUeXBlICE9PSAnbWludXRlcycpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQXZhaWxhYmxlKHZhbHVlKSkge1xuICAgICAgICAgIGlmICh0aGlzLm1pbkRhdGUgJiYgdGhpcy5pc0F2YWlsYWJsZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICAgIHZhbHVlOiB0aGlzLm1pbkRhdGUuZ2V0TWludXRlcygpLFxuICAgICAgICAgICAgICB0eXBlOiAnbWludXRlcycsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubWF4RGF0ZSAmJiB0aGlzLmlzQXZhaWxhYmxlKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KHtcbiAgICAgICAgICAgICAgdmFsdWU6IHRoaXMubWF4RGF0ZS5nZXRNaW51dGVzKCksXG4gICAgICAgICAgICAgIHR5cGU6ICdtaW51dGVzJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldE51bWJlcnMoXG4gICAgY291bnQ6IG51bWJlcixcbiAgICB7IHNpemUgPSAwLCBzdGFydCA9IDEsIHN0ZXAgPSAxIH0sXG4gICAgaXNBbGxvd2VkRm4/OiAobnVtOiBudW1iZXIpID0+IGJvb2xlYW4sXG4gICkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIHJldHVybiBBcnJheS5hcHBseShudWxsLCBBcnJheShjb3VudCkpLm1hcCgoXywgaSkgPT4gKHtcbiAgICAgIGRpc3BsYXk6IGkgKiBzdGVwICsgc3RhcnQsXG4gICAgICB0cmFuc2xhdGVYOiAoc2l6ZSAvIDIgLSAyMCkgKiBNYXRoLmNvcygoMiAqIE1hdGguUEkgKiAoaSAtIDIpKSAvIGNvdW50KSxcbiAgICAgIHRyYW5zbGF0ZVk6IChzaXplIC8gMiAtIDIwKSAqIE1hdGguc2luKCgyICogTWF0aC5QSSAqIChpIC0gMikpIC8gY291bnQpLFxuICAgICAgYWxsb3dlZDogaXNBbGxvd2VkRm4gPyBpc0FsbG93ZWRGbihpKSA6IHRydWUsXG4gICAgfSkpO1xuICB9XG5cbiAgZ2V0UG9pbnRlckFuZ2xlKHZhbHVlOiBudW1iZXIsIF9tb2RlOiBDbG9ja1ZpZXdUeXBlKSB7XG4gICAgaWYgKHRoaXMudmlld1R5cGUgPT09ICdob3VycycpIHtcbiAgICAgIHJldHVybiAoMzYwIC8gMTIpICogKCh2YWx1ZSAlIDEyKSAtIDMpO1xuICAgIH1cbiAgICByZXR1cm4gKDM2MCAvIDYwKSAqICh2YWx1ZSAtIDE1KTtcbiAgfVxuXG4gIGdldFBvaW50ZXJWYWx1ZSh4OiBudW1iZXIsIHk6IG51bWJlciwgc2l6ZTogbnVtYmVyKSB7XG4gICAgbGV0IHZhbHVlO1xuICAgIGxldCBhbmdsZSA9IChNYXRoLmF0YW4yKHNpemUgLyAyIC0geCwgc2l6ZSAvIDIgLSB5KSAvIE1hdGguUEkpICogMTgwO1xuICAgIGlmIChhbmdsZSA8IDApIHtcbiAgICAgIGFuZ2xlID0gMzYwICsgYW5nbGU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmlld1R5cGUgPT09ICdob3VycycpIHtcbiAgICAgIGNvbnN0IHJhZGl1cyA9IE1hdGguc3FydChcbiAgICAgICAgTWF0aC5wb3coc2l6ZSAvIDIgLSB4LCAyKSArIE1hdGgucG93KHNpemUgLyAyIC0geSwgMiksXG4gICAgICApO1xuICAgICAgdmFsdWUgPSAxMiAtIE1hdGgucm91bmQoKGFuZ2xlICogMTIpIC8gMzYwKTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gMCkge1xuICAgICAgICB2YWx1ZSA9IDEyO1xuICAgICAgfVxuICAgICAgaWYgKHJhZGl1cyA8IHNpemUgLyAyIC0gMzIpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gMTIgPyAwIDogdmFsdWUgKyAxMjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICB2YWx1ZSA9IE1hdGgucm91bmQoNjAgLSAoNjAgKiBhbmdsZSkgLyAzNjApO1xuICAgIHJldHVybiB2YWx1ZSA9PT0gNjAgPyAwIDogdmFsdWU7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb290XCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNpcmNsZVwiXG4gICAgdGFiaW5kZXg9XCIxXCJcbiAgICAodG91Y2htb3ZlKT1cImhhbmRsZVRvdWNoTW92ZSgkZXZlbnQpXCJcbiAgICAobW91c2Vtb3ZlKT1cImhhbmRsZU1vdXNlTW92ZSgkZXZlbnQpXCJcbiAgICAodG91Y2hzdGFydCk9XCJkaXNhYmxlQW5pbWF0ZWRQb2ludGVyKClcIlxuICAgIChtb3VzZWRvd24pPVwiZGlzYWJsZUFuaW1hdGVkUG9pbnRlcigpXCJcbiAgICAodG91Y2hlbmQpPVwiaGFuZGxlVG91Y2hFbmQoJGV2ZW50KVwiXG4gICAgKG1vdXNldXApPVwiZW5hYmxlQW5pbWF0ZWRQb2ludGVyKClcIlxuICAgIChjbGljayk9XCJoYW5kbGVDbGljaygkZXZlbnQpXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicG9pbnRlci1jb250YWluZXJcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnc21hbGwtcG9pbnRlcic6XG4gICAgICAgICAgdmlld1R5cGUgPT09ICdob3VycycgJiYgKGZvcm1hdHRlZFZhbHVlID09PSAwIHx8IGZvcm1hdHRlZFZhbHVlID4gMTIpLFxuICAgICAgICAnYW5pbWF0ZWQtcG9pbnRlcic6ICF0b3VjaGluZyxcbiAgICAgIH1cIlxuICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCIncm90YXRlKCcgKyBhbmdsZSArICdkZWcpJ1wiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBhcmlhLWRpc2FibGVkPVwidHJ1ZVwiXG4gICAgICAgIG1hdC1taW5pLWZhYlxuICAgICAgICBbY29sb3JdPVwiY29sb3JcIlxuICAgICAgICBjbGFzcz1cImlubmVyLWRvdFwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJJbm5lciBEb3RcIlxuICAgICAgPjwvYnV0dG9uPlxuICAgICAgPG1hdC10b29sYmFyIFtjb2xvcl09XCJjb2xvclwiIGNsYXNzPVwicG9pbnRlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LW1pbmktZmFiXG4gICAgICAgICAgW2NvbG9yXT1cImNvbG9yXCJcbiAgICAgICAgICBjbGFzcz1cIm91dGVyLWRvdFwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIk91dGVyIGRvdFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ291dGVyLWRvdC1vZGQnOiB2aWV3VHlwZSA9PT0gJ21pbnV0ZXMnICYmIGZvcm1hdHRlZFZhbHVlICUgNSAhPT0gMCxcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwidmlld1R5cGUgPT09ICdtaW51dGVzJyAmJiBmb3JtYXR0ZWRWYWx1ZSAlIDUgIT09IDBcIlxuICAgICAgICAgICAgPsK3PC9uZy1jb250YWluZXJcbiAgICAgICAgICA+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9tYXQtdG9vbGJhcj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkaWdpdCBvZiBtaW51dGVEb3RzXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1taW5pLWZhYlxuICAgICAgICBjbGFzcz1cIm51bWJlciBtaW51dGUtZG90XCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgIHNlbGVjdGVkOlxuICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPT09IGRpZ2l0LmRpc3BsYXkgfHxcbiAgICAgICAgICAgIChkaWdpdC5kaXNwbGF5ID09PSAwICYmIGZvcm1hdHRlZFZhbHVlID09PSAwKSxcbiAgICAgICAgICBkaXNhYmxlZDogIWlzQXZhaWxhYmxlKGRpZ2l0LmRpc3BsYXkgPT09IDYwID8gMCA6IGRpZ2l0LmRpc3BsYXkpLFxuICAgICAgICB9XCJcbiAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCJcbiAgICAgICAgICAndHJhbnNsYXRlKCcgKyBkaWdpdC50cmFuc2xhdGVYICsgJ3B4LCAnICsgZGlnaXQudHJhbnNsYXRlWSArICdweCknXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaWdpdC5kaXNwbGF5ICUgNSAhPT0gMFwiPsK3PC9uZy1jb250YWluZXI+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkaWdpdCBvZiBudW1iZXJzXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1taW5pLWZhYlxuICAgICAgICBbY29sb3JdPVwiY29sb3JcIlxuICAgICAgICBjbGFzcz1cIm51bWJlclwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICBzZWxlY3RlZDpcbiAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlID09PSBkaWdpdC5kaXNwbGF5IHx8XG4gICAgICAgICAgICAoZGlnaXQuZGlzcGxheSA9PT0gNjAgJiYgZm9ybWF0dGVkVmFsdWUgPT09IDApLFxuICAgICAgICAgIGRpc2FibGVkOiAhaXNBdmFpbGFibGUoZGlnaXQuZGlzcGxheSA9PT0gNjAgPyAwIDogZGlnaXQuZGlzcGxheSksXG4gICAgICAgIH1cIlxuICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cIlxuICAgICAgICAgICd0cmFuc2xhdGUoJyArIGRpZ2l0LnRyYW5zbGF0ZVggKyAncHgsICcgKyBkaWdpdC50cmFuc2xhdGVZICsgJ3B4KSdcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNob3Vyc1RlbXBsYXRlPnt7IGRpZ2l0LmRpc3BsYXkgfX08L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI21pbnV0ZXNUZW1wbGF0ZT57e1xuICAgICAgICAgIGRpZ2l0LmRpc3BsYXkgPT09IDYwID8gJzAwJyA6IGRpZ2l0LmRpc3BsYXlcbiAgICAgICAgfX08L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIHZpZXdUeXBlID09PSAnbWludXRlcyc7XG4gICAgICAgICAgICB0aGVuIG1pbnV0ZXNUZW1wbGF0ZTtcbiAgICAgICAgICAgIGVsc2UgaG91cnNUZW1wbGF0ZVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRpZ2l0IG9mIHNlY29uZGFyeU51bWJlcnNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgbWF0LW1pbmktZmFiXG4gICAgICAgIFtjb2xvcl09XCJjb2xvclwiXG4gICAgICAgIGNsYXNzPVwibnVtYmVyIHNtYWxsLW51bWJlclwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICBzZWxlY3RlZDpcbiAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlID09PSBkaWdpdC5kaXNwbGF5IHx8XG4gICAgICAgICAgICAoZGlnaXQuZGlzcGxheSA9PT0gMjQgJiYgZm9ybWF0dGVkVmFsdWUgPT09IDApLFxuICAgICAgICAgIGRpc2FibGVkOiAhaXNBdmFpbGFibGUoZGlnaXQuZGlzcGxheSA9PT0gMjQgPyAwIDogZGlnaXQuZGlzcGxheSksXG4gICAgICAgIH1cIlxuICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cIlxuICAgICAgICAgICd0cmFuc2xhdGUoJyArIGRpZ2l0LnRyYW5zbGF0ZVggKyAncHgsICcgKyBkaWdpdC50cmFuc2xhdGVZICsgJ3B4KSdcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAge3sgZGlnaXQuZGlzcGxheSA9PT0gMjQgPyAnMDAnIDogZGlnaXQuZGlzcGxheSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy1hbmQtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LXRpbWVwaWNrZXIvc3JjL2ludGVyZmFjZXMtYW5kLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBDbG9ja1ZpZXdUeXBlID0gJ2hvdXJzJyB8ICdtaW51dGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBDbG9ja051bWJlciB7XG4gIGRpc3BsYXk6IG51bWJlcjtcbiAgdHJhbnNsYXRlWDogbnVtYmVyO1xuICB0cmFuc2xhdGVZOiBudW1iZXI7XG4gIGFsbG93ZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRpbWVEYXRhIHtcbiAgbWludXRlczogbnVtYmVyO1xuICBob3VyczogbnVtYmVyO1xuICBtZXJpZGllbTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBJQWxsb3dlZDI0SG91ck1hcCA9IFJlY29yZDxudW1iZXIsIFJlY29yZDxudW1iZXIsIGJvb2xlYW4+PjtcbiJdfQ==
|
|
@@ -1,279 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, HostBinding, Input, Output, } from '@angular/core';
|
|
2
|
-
import { OnemrvaMatColor, OnemrvaMatSize, } from '@onemrvapublic/design-system/utils';
|
|
3
|
-
import { MatTimepickerComponentDialogComponent } from './timepicker-dialog/timepicker-dialog.component';
|
|
4
|
-
import { Subject } from 'rxjs';
|
|
5
|
-
import { first, takeUntil } from 'rxjs/operators';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/material/dialog";
|
|
8
|
-
let NEXT_ID = 0;
|
|
9
|
-
export class OnemrvaMatTimepickerComponent {
|
|
10
|
-
get value() {
|
|
11
|
-
return this._value;
|
|
12
|
-
}
|
|
13
|
-
set value(value) {
|
|
14
|
-
this._value = value;
|
|
15
|
-
}
|
|
16
|
-
constructor(dialog) {
|
|
17
|
-
this.dialog = dialog;
|
|
18
|
-
this.isAlive = new Subject();
|
|
19
|
-
this.opened = false;
|
|
20
|
-
/** Emits when the timepicker's state changes. */
|
|
21
|
-
this.stateChanges = new Subject();
|
|
22
|
-
// eslint-disable-next-line @angular-eslint/no-output-rename
|
|
23
|
-
this.openedStream = new EventEmitter();
|
|
24
|
-
// eslint-disable-next-line @angular-eslint/no-output-rename
|
|
25
|
-
this.closedStream = new EventEmitter();
|
|
26
|
-
/**
|
|
27
|
-
* Returns the `aria-label` attribute of the element.
|
|
28
|
-
*
|
|
29
|
-
* @example
|
|
30
|
-
* ```typescript
|
|
31
|
-
* let timepickerLabel = this.timepicker.ariaLabel;
|
|
32
|
-
* ```
|
|
33
|
-
*
|
|
34
|
-
*/
|
|
35
|
-
this.ariaLabel = '';
|
|
36
|
-
this.dialogLabel = 'Pick a Time';
|
|
37
|
-
/**
|
|
38
|
-
* Returns the `role` attribute of the element.
|
|
39
|
-
*
|
|
40
|
-
* @example
|
|
41
|
-
* ```typescript
|
|
42
|
-
* let timepickerRole = this.timepicker.role;
|
|
43
|
-
* ```
|
|
44
|
-
*/
|
|
45
|
-
this.role = '';
|
|
46
|
-
/**
|
|
47
|
-
* Host `class.onemrva-mat-timepicker` binding.
|
|
48
|
-
*
|
|
49
|
-
* @hidden
|
|
50
|
-
* @internal
|
|
51
|
-
*/
|
|
52
|
-
this.cssClass = 'onemrva-mat-timepicker';
|
|
53
|
-
/**
|
|
54
|
-
* Sets the `id` of the element. If not set, the first component instance will have `id` = `"onemrva-mat-timepicker-0"`.
|
|
55
|
-
*
|
|
56
|
-
* @example
|
|
57
|
-
* ```html
|
|
58
|
-
* <onemrva-mat-timepicker id="my-first-timepicker"></onemrva-mat-timepicker>
|
|
59
|
-
* ```
|
|
60
|
-
*/
|
|
61
|
-
this.id = `onemrva-mat-timepicker-${NEXT_ID++}`;
|
|
62
|
-
/**
|
|
63
|
-
* Sets the `data-cy` of the element. If not set, the first component instance will have `data-cy` = `"onemrva-mat-timepicker-0"`.
|
|
64
|
-
*
|
|
65
|
-
* @example
|
|
66
|
-
* ```html
|
|
67
|
-
* <onemrva-mat-timepicker id="my-first-timepicker"></onemrva-mat-timepicker>
|
|
68
|
-
* ```
|
|
69
|
-
*/
|
|
70
|
-
this.dataCy = `onemrva-mat-timepicker-${NEXT_ID++}`;
|
|
71
|
-
/**
|
|
72
|
-
* @hidden
|
|
73
|
-
* @internal
|
|
74
|
-
*/
|
|
75
|
-
this._color = 'primary';
|
|
76
|
-
/**
|
|
77
|
-
* @hidden
|
|
78
|
-
* @internal
|
|
79
|
-
*/
|
|
80
|
-
this._size = OnemrvaMatSize.SMALL;
|
|
81
|
-
this.handleChange = (newValue) => {
|
|
82
|
-
if (!(newValue instanceof Date)) {
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
const v = this.value instanceof Date ? new Date(this.value.getTime()) : new Date();
|
|
86
|
-
v.setHours(newValue.getHours());
|
|
87
|
-
v.setMinutes(newValue.getMinutes());
|
|
88
|
-
v.setSeconds(0);
|
|
89
|
-
v.setMilliseconds(0);
|
|
90
|
-
this.value = v;
|
|
91
|
-
};
|
|
92
|
-
this.handleOk = () => {
|
|
93
|
-
if (this.onChangeFn) {
|
|
94
|
-
this.onChangeFn(this.value);
|
|
95
|
-
}
|
|
96
|
-
this.timepickerInput.value = this.value;
|
|
97
|
-
this.modalRef.close();
|
|
98
|
-
};
|
|
99
|
-
this.handleCancel = () => {
|
|
100
|
-
this.modalRef.close();
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
setTimepickerInput(t) {
|
|
104
|
-
this.timepickerInput = t;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Returns the color of the element.
|
|
108
|
-
*
|
|
109
|
-
* @example
|
|
110
|
-
* ```typescript
|
|
111
|
-
* let color = this.timepicker.color;
|
|
112
|
-
* ```
|
|
113
|
-
*/
|
|
114
|
-
get color() {
|
|
115
|
-
return this._color;
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Sets the size of the element.
|
|
119
|
-
* By default, the color is `"primary"`.
|
|
120
|
-
*
|
|
121
|
-
* @example
|
|
122
|
-
* ```html
|
|
123
|
-
* <onemrva-mat-timepicker size="large"></onemrva-mat-timepicker>
|
|
124
|
-
* ```
|
|
125
|
-
*/
|
|
126
|
-
set color(value) {
|
|
127
|
-
switch (value) {
|
|
128
|
-
case OnemrvaMatColor.PRIMARY:
|
|
129
|
-
case OnemrvaMatColor.ACCENT:
|
|
130
|
-
case OnemrvaMatColor.WARN:
|
|
131
|
-
this._color = value;
|
|
132
|
-
break;
|
|
133
|
-
default:
|
|
134
|
-
this._color = OnemrvaMatColor.PRIMARY;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
/** @hidden @internal */
|
|
138
|
-
get _isPrimary() {
|
|
139
|
-
return this.color === OnemrvaMatColor.PRIMARY;
|
|
140
|
-
}
|
|
141
|
-
/** @hidden @internal */
|
|
142
|
-
get _isAccent() {
|
|
143
|
-
return this.color === OnemrvaMatColor.ACCENT;
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Returns the size of the element.
|
|
147
|
-
*
|
|
148
|
-
* @example
|
|
149
|
-
* ```typescript
|
|
150
|
-
* let timepickerSize = this.timepicker.size;
|
|
151
|
-
* ```
|
|
152
|
-
*/
|
|
153
|
-
get size() {
|
|
154
|
-
return this._size;
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Sets the size of the element.
|
|
158
|
-
* By default, the size is `"medium"`.
|
|
159
|
-
*
|
|
160
|
-
* @example
|
|
161
|
-
* ```html
|
|
162
|
-
* <onemrva-mat-timepicker size="large"></onemrva-mat-timepicker>
|
|
163
|
-
* ```
|
|
164
|
-
*/
|
|
165
|
-
set size(value) {
|
|
166
|
-
switch (value) {
|
|
167
|
-
case OnemrvaMatSize.XSMALL:
|
|
168
|
-
case OnemrvaMatSize.SMALL:
|
|
169
|
-
case OnemrvaMatSize.MEDIUM:
|
|
170
|
-
case OnemrvaMatSize.LARGE:
|
|
171
|
-
case OnemrvaMatSize.XLARGE:
|
|
172
|
-
this._size = value;
|
|
173
|
-
break;
|
|
174
|
-
default:
|
|
175
|
-
this._size = OnemrvaMatSize.MEDIUM;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
open() {
|
|
179
|
-
if (this.timepickerInput.disabled) {
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
this.value = this.timepickerInput.currentValue;
|
|
183
|
-
if (this.value === undefined || this.value === null) {
|
|
184
|
-
this.value = new Date();
|
|
185
|
-
}
|
|
186
|
-
this.modalRef = this.dialog.open(MatTimepickerComponentDialogComponent, {
|
|
187
|
-
ariaLabel: this.dialogLabel,
|
|
188
|
-
autoFocus: false,
|
|
189
|
-
data: {
|
|
190
|
-
value: this.timepickerInput.currentValue,
|
|
191
|
-
okLabel: this.timepickerInput.okLabel,
|
|
192
|
-
cancelLabel: this.timepickerInput.cancelLabel,
|
|
193
|
-
color: this.color,
|
|
194
|
-
minDate: this.timepickerInput.minDate,
|
|
195
|
-
maxDate: this.timepickerInput.maxDate,
|
|
196
|
-
allowed24HourMap: this.timepickerInput.allowed24HourMap,
|
|
197
|
-
},
|
|
198
|
-
});
|
|
199
|
-
const instance = this.modalRef.componentInstance;
|
|
200
|
-
instance.changeEvent
|
|
201
|
-
.pipe(takeUntil(this.isAlive))
|
|
202
|
-
.subscribe(this.handleChange);
|
|
203
|
-
instance.okClickEvent
|
|
204
|
-
.pipe(takeUntil(this.isAlive))
|
|
205
|
-
.subscribe(this.handleOk);
|
|
206
|
-
instance.cancelClickEvent
|
|
207
|
-
.pipe(takeUntil(this.isAlive))
|
|
208
|
-
.subscribe(this.handleCancel);
|
|
209
|
-
this.modalRef
|
|
210
|
-
.beforeClosed()
|
|
211
|
-
.pipe(first())
|
|
212
|
-
.subscribe(() => (instance.isClosing = true));
|
|
213
|
-
this.modalRef
|
|
214
|
-
.afterClosed()
|
|
215
|
-
.pipe(first())
|
|
216
|
-
.subscribe(() => {
|
|
217
|
-
if (this.timepickerInput.onTouchedFn) {
|
|
218
|
-
this.timepickerInput.onTouchedFn();
|
|
219
|
-
}
|
|
220
|
-
//this.modalRef = null;
|
|
221
|
-
this.timepickerInput.elRef.nativeElement.focus();
|
|
222
|
-
});
|
|
223
|
-
this.timepickerInput.currentValue = this.value;
|
|
224
|
-
}
|
|
225
|
-
ngOnDestroy() {
|
|
226
|
-
this.isAlive.next('0');
|
|
227
|
-
this.isAlive.complete();
|
|
228
|
-
this.stateChanges.complete();
|
|
229
|
-
// if (this._platform.isBrowser) {
|
|
230
|
-
// this.fm.stopMonitoring(this.elRef.nativeElement);
|
|
231
|
-
// }
|
|
232
|
-
//
|
|
233
|
-
// this.listeners.forEach(l => l());
|
|
234
|
-
}
|
|
235
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OnemrvaMatTimepickerComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
236
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OnemrvaMatTimepickerComponent, selector: "mat-timepicker", inputs: { dialogLabel: "dialogLabel", id: "id", dataCy: "dataCy", color: "color", size: "size" }, outputs: { openedStream: "opened", closedStream: "closed" }, host: { properties: { "attr.aria-label": "this.ariaLabel", "attr.role": "this.role", "class.onemrva-mat-timepicker": "this.cssClass", "attr.id": "this.id", "attr.data-cy": "this.dataCy", "class.mat-primary": "this._isPrimary", "class.mat-accent": "this._isAccent" } }, ngImport: i0, template: "" }); }
|
|
237
|
-
}
|
|
238
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OnemrvaMatTimepickerComponent, decorators: [{
|
|
239
|
-
type: Component,
|
|
240
|
-
args: [{ selector: 'mat-timepicker', template: "" }]
|
|
241
|
-
}], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { openedStream: [{
|
|
242
|
-
type: Output,
|
|
243
|
-
args: ['opened']
|
|
244
|
-
}], closedStream: [{
|
|
245
|
-
type: Output,
|
|
246
|
-
args: ['closed']
|
|
247
|
-
}], ariaLabel: [{
|
|
248
|
-
type: HostBinding,
|
|
249
|
-
args: ['attr.aria-label']
|
|
250
|
-
}], dialogLabel: [{
|
|
251
|
-
type: Input
|
|
252
|
-
}], role: [{
|
|
253
|
-
type: HostBinding,
|
|
254
|
-
args: ['attr.role']
|
|
255
|
-
}], cssClass: [{
|
|
256
|
-
type: HostBinding,
|
|
257
|
-
args: ['class.onemrva-mat-timepicker']
|
|
258
|
-
}], id: [{
|
|
259
|
-
type: HostBinding,
|
|
260
|
-
args: ['attr.id']
|
|
261
|
-
}, {
|
|
262
|
-
type: Input
|
|
263
|
-
}], dataCy: [{
|
|
264
|
-
type: HostBinding,
|
|
265
|
-
args: ['attr.data-cy']
|
|
266
|
-
}, {
|
|
267
|
-
type: Input
|
|
268
|
-
}], color: [{
|
|
269
|
-
type: Input
|
|
270
|
-
}], _isPrimary: [{
|
|
271
|
-
type: HostBinding,
|
|
272
|
-
args: ['class.mat-primary']
|
|
273
|
-
}], _isAccent: [{
|
|
274
|
-
type: HostBinding,
|
|
275
|
-
args: ['class.mat-accent']
|
|
276
|
-
}], size: [{
|
|
277
|
-
type: Input
|
|
278
|
-
}] } });
|
|
279
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtdGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LXRpbWVwaWNrZXIvc3JjL29uZW1ydmEtbWF0LXRpbWVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC10aW1lcGlja2VyL3NyYy9vbmVtcnZhLW1hdC10aW1lcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsY0FBYyxHQUNmLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDeEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkvQixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFbEQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBTWhCLE1BQU0sT0FBTyw2QkFBNkI7SUFLeEMsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFXO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFJRCxZQUFtQixNQUFpQjtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBRjVCLFlBQU8sR0FBaUIsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUluRCxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBUWYsaURBQWlEO1FB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O3NCQUMxQixLQUFLO2dCQWtCSyxLQUFLO3NCQURmLEtBQUs7Z0JBNEJLLFVBQVU7c0JBRHBCLFdBQVc7dUJBQUMsbUJBQW1CO2dCQU9yQixTQUFTO3NCQURuQixXQUFXO3VCQUFDLGtCQUFrQjtnQkFvQnBCLElBQUk7c0JBRGQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE9uZW1ydmFNYXRDb2xvcixcbiAgT25lbXJ2YU1hdFNpemUsXG59IGZyb20gJ0BvbmVtcnZhcHVibGljL2Rlc2lnbi1zeXN0ZW0vdXRpbHMnO1xuaW1wb3J0IHsgTWF0VGltZXBpY2tlckNvbXBvbmVudERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vdGltZXBpY2tlci1kaWFsb2cvdGltZXBpY2tlci1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdFRpbWVwaWNrZXJEaXJlY3RpdmUgfSBmcm9tICcuL3RpbWVwaWNrZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgZmlyc3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxubGV0IE5FWFRfSUQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtdGltZXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnb25lbXJ2YS1tYXQtdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIE9uZW1ydmFNYXRUaW1lcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIG1vZGFsUmVmITogTWF0RGlhbG9nUmVmPE1hdFRpbWVwaWNrZXJDb21wb25lbnREaWFsb2dDb21wb25lbnQ+O1xuICBwcml2YXRlIG9uQ2hhbmdlRm46IGFueTtcbiAgcHJpdmF0ZSBfdmFsdWUhOiBEYXRlO1xuXG4gIGdldCB2YWx1ZSgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUodmFsdWU6IERhdGUpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FsaXZlOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZzogTWF0RGlhbG9nKSB7fVxuXG4gIG9wZW5lZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzZXRUaW1lcGlja2VySW5wdXQodDogTWF0VGltZXBpY2tlckRpcmVjdGl2ZSkge1xuICAgIHRoaXMudGltZXBpY2tlcklucHV0ID0gdDtcbiAgfVxuXG4gIHRpbWVwaWNrZXJJbnB1dDogYW55O1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSB0aW1lcGlja2VyJ3Mgc3RhdGUgY2hhbmdlcy4gKi9cbiAgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1yZW5hbWVcbiAgQE91dHB1dCgnb3BlbmVkJykgcmVhZG9ubHkgb3BlbmVkU3RyZWFtID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LXJlbmFtZVxuICBAT3V0cHV0KCdjbG9zZWQnKSByZWFkb25seSBjbG9zZWRTdHJlYW0gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgb2YgdGhlIGVsZW1lbnQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogbGV0IHRpbWVwaWNrZXJMYWJlbCA9IHRoaXMudGltZXBpY2tlci5hcmlhTGFiZWw7XG4gICAqIGBgYFxuICAgKlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGFiZWwnKVxuICBwdWJsaWMgYXJpYUxhYmVsID0gJyc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGRpYWxvZ0xhYmVsID0gJ1BpY2sgYSBUaW1lJztcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYHJvbGVgIGF0dHJpYnV0ZSBvZiB0aGUgZWxlbWVudC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBsZXQgdGltZXBpY2tlclJvbGUgPSB0aGlzLnRpbWVwaWNrZXIucm9sZTtcbiAgICogYGBgXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gIHB1YmxpYyByb2xlID0gJyc7XG5cbiAgLyoqXG4gICAqIEhvc3QgYGNsYXNzLm9uZW1ydmEtbWF0LXRpbWVwaWNrZXJgIGJpbmRpbmcuXG4gICAqXG4gICAqIEBoaWRkZW5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm9uZW1ydmEtbWF0LXRpbWVwaWNrZXInKVxuICBwdWJsaWMgY3NzQ2xhc3MgPSAnb25lbXJ2YS1tYXQtdGltZXBpY2tlcic7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGBpZGAgb2YgdGhlIGVsZW1lbnQuIElmIG5vdCBzZXQsIHRoZSBmaXJzdCBjb21wb25lbnQgaW5zdGFuY2Ugd2lsbCBoYXZlIGBpZGAgPSBgXCJvbmVtcnZhLW1hdC10aW1lcGlja2VyLTBcImAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGh0bWxcbiAgICogPG9uZW1ydmEtbWF0LXRpbWVwaWNrZXIgaWQ9XCJteS1maXJzdC10aW1lcGlja2VyXCI+PC9vbmVtcnZhLW1hdC10aW1lcGlja2VyPlxuICAgKiBgYGBcbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpZCA9IGBvbmVtcnZhLW1hdC10aW1lcGlja2VyLSR7TkVYVF9JRCsrfWA7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGBkYXRhLWN5YCBvZiB0aGUgZWxlbWVudC4gSWYgbm90IHNldCwgdGhlIGZpcnN0IGNvbXBvbmVudCBpbnN0YW5jZSB3aWxsIGhhdmUgYGRhdGEtY3lgID0gYFwib25lbXJ2YS1tYXQtdGltZXBpY2tlci0wXCJgLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBodG1sXG4gICAqIDxvbmVtcnZhLW1hdC10aW1lcGlja2VyIGlkPVwibXktZmlyc3QtdGltZXBpY2tlclwiPjwvb25lbXJ2YS1tYXQtdGltZXBpY2tlcj5cbiAgICogYGBgXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1jeScpXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkYXRhQ3kgPSBgb25lbXJ2YS1tYXQtdGltZXBpY2tlci0ke05FWFRfSUQrK31gO1xuXG4gIC8qKlxuICAgKiBAaGlkZGVuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBfY29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdwcmltYXJ5JztcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29sb3Igb2YgdGhlIGVsZW1lbnQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogbGV0IGNvbG9yID0gdGhpcy50aW1lcGlja2VyLmNvbG9yO1xuICAgKiBgYGBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgY29sb3IoKTogVGhlbWVQYWxldHRlIHtcbiAgICByZXR1cm4gdGhpcy5fY29sb3I7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2l6ZSAgb2YgdGhlIGVsZW1lbnQuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBjb2xvciBpcyBgXCJwcmltYXJ5XCJgLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBodG1sXG4gICAqIDxvbmVtcnZhLW1hdC10aW1lcGlja2VyIHNpemU9XCJsYXJnZVwiPjwvb25lbXJ2YS1tYXQtdGltZXBpY2tlcj5cbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgc2V0IGNvbG9yKHZhbHVlOiBUaGVtZVBhbGV0dGUpIHtcbiAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICBjYXNlIE9uZW1ydmFNYXRDb2xvci5QUklNQVJZOlxuICAgICAgY2FzZSBPbmVtcnZhTWF0Q29sb3IuQUNDRU5UOlxuICAgICAgY2FzZSBPbmVtcnZhTWF0Q29sb3IuV0FSTjpcbiAgICAgICAgdGhpcy5fY29sb3IgPSB2YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLl9jb2xvciA9IE9uZW1ydmFNYXRDb2xvci5QUklNQVJZO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1wcmltYXJ5JylcbiAgcHVibGljIGdldCBfaXNQcmltYXJ5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbG9yID09PSBPbmVtcnZhTWF0Q29sb3IuUFJJTUFSWTtcbiAgfVxuXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1hY2NlbnQnKVxuICBwdWJsaWMgZ2V0IF9pc0FjY2VudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb2xvciA9PT0gT25lbXJ2YU1hdENvbG9yLkFDQ0VOVDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaGlkZGVuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBfc2l6ZTogc3RyaW5nIHwgT25lbXJ2YU1hdFNpemUgPSBPbmVtcnZhTWF0U2l6ZS5TTUFMTDtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgZWxlbWVudC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBsZXQgdGltZXBpY2tlclNpemUgPSB0aGlzLnRpbWVwaWNrZXIuc2l6ZTtcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHNpemUoKTogc3RyaW5nIHwgT25lbXJ2YU1hdFNpemUge1xuICAgIHJldHVybiB0aGlzLl9zaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNpemUgIG9mIHRoZSBlbGVtZW50LlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgc2l6ZSBpcyBgXCJtZWRpdW1cImAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGh0bWxcbiAgICogPG9uZW1ydmEtbWF0LXRpbWVwaWNrZXIgc2l6ZT1cImxhcmdlXCI+PC9vbmVtcnZhLW1hdC10aW1lcGlja2VyPlxuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBzZXQgc2l6ZSh2YWx1ZTogc3RyaW5nIHwgT25lbXJ2YU1hdFNpemUpIHtcbiAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICBjYXNlIE9uZW1ydmFNYXRTaXplLlhTTUFMTDpcbiAgICAgIGNhc2UgT25lbXJ2YU1hdFNpemUuU01BTEw6XG4gICAgICBjYXNlIE9uZW1ydmFNYXRTaXplLk1FRElVTTpcbiAgICAgIGNhc2UgT25lbXJ2YU1hdFNpemUuTEFSR0U6XG4gICAgICBjYXNlIE9uZW1ydmFNYXRTaXplLlhMQVJHRTpcbiAgICAgICAgdGhpcy5fc2l6ZSA9IHZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuX3NpemUgPSBPbmVtcnZhTWF0U2l6ZS5NRURJVU07XG4gICAgfVxuICB9XG5cbiAgb3BlbigpIHtcbiAgICBpZiAodGhpcy50aW1lcGlja2VySW5wdXQuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdGhpcy50aW1lcGlja2VySW5wdXQuY3VycmVudFZhbHVlO1xuICAgIGlmICh0aGlzLnZhbHVlID09PSB1bmRlZmluZWQgfHwgdGhpcy52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy52YWx1ZSA9IG5ldyBEYXRlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5tb2RhbFJlZiA9IHRoaXMuZGlhbG9nLm9wZW4oTWF0VGltZXBpY2tlckNvbXBvbmVudERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgYXJpYUxhYmVsOiB0aGlzLmRpYWxvZ0xhYmVsLFxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgdmFsdWU6IHRoaXMudGltZXBpY2tlcklucHV0LmN1cnJlbnRWYWx1ZSxcbiAgICAgICAgb2tMYWJlbDogdGhpcy50aW1lcGlja2VySW5wdXQub2tMYWJlbCxcbiAgICAgICAgY2FuY2VsTGFiZWw6IHRoaXMudGltZXBpY2tlcklucHV0LmNhbmNlbExhYmVsLFxuICAgICAgICBjb2xvcjogdGhpcy5jb2xvcixcbiAgICAgICAgbWluRGF0ZTogdGhpcy50aW1lcGlja2VySW5wdXQubWluRGF0ZSxcbiAgICAgICAgbWF4RGF0ZTogdGhpcy50aW1lcGlja2VySW5wdXQubWF4RGF0ZSxcbiAgICAgICAgYWxsb3dlZDI0SG91ck1hcDogdGhpcy50aW1lcGlja2VySW5wdXQuYWxsb3dlZDI0SG91ck1hcCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMubW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgaW5zdGFuY2UuY2hhbmdlRXZlbnRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmlzQWxpdmUpKVxuICAgICAgLnN1YnNjcmliZSh0aGlzLmhhbmRsZUNoYW5nZSk7XG4gICAgaW5zdGFuY2Uub2tDbGlja0V2ZW50XG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5pc0FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5oYW5kbGVPayk7XG4gICAgaW5zdGFuY2UuY2FuY2VsQ2xpY2tFdmVudFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuaXNBbGl2ZSkpXG4gICAgICAuc3Vic2NyaWJlKHRoaXMuaGFuZGxlQ2FuY2VsKTtcbiAgICB0aGlzLm1vZGFsUmVmXG4gICAgICAuYmVmb3JlQ2xvc2VkKClcbiAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IChpbnN0YW5jZS5pc0Nsb3NpbmcgPSB0cnVlKSk7XG4gICAgdGhpcy5tb2RhbFJlZlxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMudGltZXBpY2tlcklucHV0Lm9uVG91Y2hlZEZuKSB7XG4gICAgICAgICAgdGhpcy50aW1lcGlja2VySW5wdXQub25Ub3VjaGVkRm4oKTtcbiAgICAgICAgfVxuICAgICAgICAvL3RoaXMubW9kYWxSZWYgPSBudWxsO1xuICAgICAgICB0aGlzLnRpbWVwaWNrZXJJbnB1dC5lbFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9KTtcbiAgICB0aGlzLnRpbWVwaWNrZXJJbnB1dC5jdXJyZW50VmFsdWUgPSB0aGlzLnZhbHVlIGFzIERhdGU7XG4gIH1cblxuICBoYW5kbGVDaGFuZ2UgPSAobmV3VmFsdWU6IERhdGUpID0+IHtcbiAgICBpZiAoIShuZXdWYWx1ZSBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHYgPVxuICAgICAgdGhpcy52YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyBuZXcgRGF0ZSh0aGlzLnZhbHVlLmdldFRpbWUoKSkgOiBuZXcgRGF0ZSgpO1xuICAgIHYuc2V0SG91cnMobmV3VmFsdWUuZ2V0SG91cnMoKSk7XG4gICAgdi5zZXRNaW51dGVzKG5ld1ZhbHVlLmdldE1pbnV0ZXMoKSk7XG4gICAgdi5zZXRTZWNvbmRzKDApO1xuICAgIHYuc2V0TWlsbGlzZWNvbmRzKDApO1xuICAgIHRoaXMudmFsdWUgPSB2O1xuICB9O1xuXG4gIGhhbmRsZU9rID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLm9uQ2hhbmdlRm4pIHtcbiAgICAgIHRoaXMub25DaGFuZ2VGbih0aGlzLnZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy50aW1lcGlja2VySW5wdXQudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMubW9kYWxSZWYuY2xvc2UoKTtcbiAgfTtcblxuICBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgdGhpcy5tb2RhbFJlZi5jbG9zZSgpO1xuICB9O1xuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuaXNBbGl2ZS5uZXh0KCcwJyk7XG4gICAgdGhpcy5pc0FsaXZlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcblxuICAgIC8vIGlmICh0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpIHtcbiAgICAvLyAgICAgdGhpcy5mbS5zdG9wTW9uaXRvcmluZyh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIC8vIH1cbiAgICAvL1xuICAgIC8vIHRoaXMubGlzdGVuZXJzLmZvckVhY2gobCA9PiBsKCkpO1xuICB9XG59XG4iLCIiXX0=
|