@norwegian/core-components 7.17.2 → 8.0.1
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/README.md +3 -3
- package/assets/documentation/accordion/accordion.md +1 -1
- package/assets/documentation/airport-select/airport-select.md +1 -0
- package/assets/documentation/alert/alert.md +1 -0
- package/assets/documentation/autocomplete/autocomplete.md +1 -1
- package/assets/documentation/backdrop/backdrop.md +1 -0
- package/assets/documentation/box/box.md +1 -1
- package/assets/documentation/button/button.md +1 -10
- package/assets/documentation/checkbox/checkbox.md +1 -7
- package/assets/documentation/container/container.md +1 -1
- package/assets/documentation/continue/continue.md +2 -1
- package/assets/documentation/cover/cover.md +1 -1
- package/assets/documentation/datepicker/datepicker.md +1 -3
- package/assets/documentation/datepicker-combo/datepicker-combo.md +2 -1
- package/assets/documentation/divider/divider.md +1 -1
- package/assets/documentation/dropdown/dropdown.md +1 -3
- package/assets/documentation/filter/filter.md +1 -0
- package/assets/documentation/grid/grid.md +1 -1
- package/assets/documentation/icon/icon.md +1 -1
- package/assets/documentation/icon-list/icon-list.md +1 -1
- package/assets/documentation/input/input.md +1 -1
- package/assets/documentation/journey/journey.md +2 -1
- package/assets/documentation/journey-availability/journey-availability.md +1 -3
- package/assets/documentation/journey-availability-list/journey-availability-list.md +1 -9
- package/assets/documentation/journey-selection/journey-selection.md +1 -1
- package/assets/documentation/journey-stopover/journey-stopover.md +2 -1
- package/assets/documentation/list/list.md +1 -1
- package/assets/documentation/micro-button/micro-button.md +2 -0
- package/assets/documentation/modal/modal.md +1 -0
- package/assets/documentation/number-field/number-field.md +1 -1
- package/assets/documentation/page-footer/page-footer.md +1 -1
- package/assets/documentation/page-header/page-header.md +1 -1
- package/assets/documentation/passenger-select/passenger-select.md +1 -1
- package/assets/documentation/phone-number/phone-number.md +1 -2
- package/assets/documentation/premium-toggle/premium-toggle.md +1 -9
- package/assets/documentation/radio/radio.md +1 -7
- package/assets/documentation/ribbon-banner/ribbon-banner.md +2 -1
- package/assets/documentation/select/select.md +1 -1
- package/assets/documentation/simple-list/simple-list.md +1 -1
- package/assets/documentation/slide-toggle/slide-toggle.md +1 -1
- package/assets/documentation/slider/slider.md +1 -1
- package/assets/documentation/sort/sort.md +1 -1
- package/assets/documentation/spinner/spinner.md +1 -1
- package/assets/documentation/status-box/status-box.md +2 -1
- package/assets/documentation/suggestions/suggestions.md +2 -1
- package/assets/documentation/tab-group/tab-group.md +1 -1
- package/assets/documentation/table/table.md +1 -8
- package/assets/documentation/tag/tag.md +1 -0
- package/assets/documentation/textarea/textarea.md +1 -1
- package/assets/documentation/toggle/toggle.md +1 -5
- package/assets/documentation/tooltip/tooltip.md +1 -0
- package/assets/documentation/trip-summary/trip-summary.md +1 -2
- package/fesm2022/norwegian-core-components.mjs +13636 -13565
- package/fesm2022/norwegian-core-components.mjs.map +1 -1
- package/index.d.ts +9449 -5
- package/package.json +14 -8
- package/styles/1__settings/_colors.scss +9 -9
- package/styles/1__settings/_mixins.scss +67 -40
- package/styles/1__settings/_type.scss +18 -6
- package/styles/1__settings/_vars.scss +7 -4
- package/styles/2__generic/_fonts.scss +7 -5
- package/styles/3__base/_animations.scss +84 -84
- package/styles/3__base/_body.scss +10 -8
- package/styles/3__base/_fixes.scss +1 -1
- package/styles/3__base/_form.scss +5 -3
- package/styles/3__base/_heading.scss +21 -12
- package/styles/3__base/_hr.scss +4 -0
- package/styles/3__base/_input.scss +5 -1
- package/styles/3__base/_link.scss +3 -0
- package/styles/3__base/_table.scss +8 -4
- package/styles/3__base/_type.scss +17 -13
- package/styles/_helpers.scss +4 -4
- package/styles/_index.scss +13 -13
- package/assets/documentation/campaign-header/campaign-header.md +0 -0
- package/assets/documentation/chip/chip.md +0 -1
- package/assets/documentation/info/info.md +0 -1
- package/assets/icons/small/info--light--light.svg +0 -4
- package/assets/images/logo--mobile.svg +0 -50
- package/assets/images/logo-reward.svg +0 -140
- package/assets/images/logo.svg +0 -135
- package/esm2022/lib/components/accordion/accordion.component.mjs +0 -163
- package/esm2022/lib/components/accordion/accordion.module.mjs +0 -20
- package/esm2022/lib/components/accordion/index.mjs +0 -3
- package/esm2022/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.mjs +0 -622
- package/esm2022/lib/components/airport-select/airport-select.component.mjs +0 -498
- package/esm2022/lib/components/airport-select/airport-select.module.mjs +0 -42
- package/esm2022/lib/components/airport-select/index.mjs +0 -7
- package/esm2022/lib/components/airport-select/models/airport-select-event.model.mjs +0 -2
- package/esm2022/lib/components/airport-select/models/airport-select-state.model.mjs +0 -2
- package/esm2022/lib/components/airport-select/models/airport.model.mjs +0 -2
- package/esm2022/lib/components/airport-select/models/results-labels.model.mjs +0 -3
- package/esm2022/lib/components/airport-select/services/airport-select-dropdown.service.mjs +0 -35
- package/esm2022/lib/components/airport-select/services/airport-select.service.mjs +0 -38
- package/esm2022/lib/components/alert/alert.component.mjs +0 -169
- package/esm2022/lib/components/alert/alert.module.mjs +0 -22
- package/esm2022/lib/components/alert/index.mjs +0 -4
- package/esm2022/lib/components/alert/models/alert.model.mjs +0 -2
- package/esm2022/lib/components/autocomplete/autocomplete.component.mjs +0 -318
- package/esm2022/lib/components/autocomplete/autocomplete.module.mjs +0 -43
- package/esm2022/lib/components/autocomplete/index.mjs +0 -4
- package/esm2022/lib/components/autocomplete/models/autocomplete.model.mjs +0 -2
- package/esm2022/lib/components/backdrop/backdrop.component.mjs +0 -58
- package/esm2022/lib/components/backdrop/backdrop.module.mjs +0 -19
- package/esm2022/lib/components/backdrop/index.mjs +0 -3
- package/esm2022/lib/components/box/box.component.mjs +0 -66
- package/esm2022/lib/components/box/box.module.mjs +0 -19
- package/esm2022/lib/components/box/index.mjs +0 -3
- package/esm2022/lib/components/button/button.component.mjs +0 -192
- package/esm2022/lib/components/button/button.module.mjs +0 -21
- package/esm2022/lib/components/button/index.mjs +0 -3
- package/esm2022/lib/components/campaign-header/campaign-header.component.mjs +0 -51
- package/esm2022/lib/components/campaign-header/campaign-header.module.mjs +0 -20
- package/esm2022/lib/components/campaign-header/index.mjs +0 -3
- package/esm2022/lib/components/checkbox/checkbox.component.mjs +0 -163
- package/esm2022/lib/components/checkbox/checkbox.module.mjs +0 -20
- package/esm2022/lib/components/checkbox/index.mjs +0 -3
- package/esm2022/lib/components/chip/chip.component.mjs +0 -48
- package/esm2022/lib/components/chip/chip.module.mjs +0 -19
- package/esm2022/lib/components/chip/index.mjs +0 -3
- package/esm2022/lib/components/container/container.component.mjs +0 -50
- package/esm2022/lib/components/container/container.module.mjs +0 -19
- package/esm2022/lib/components/container/index.mjs +0 -3
- package/esm2022/lib/components/continue/continue.component.mjs +0 -199
- package/esm2022/lib/components/continue/continue.module.mjs +0 -23
- package/esm2022/lib/components/continue/index.mjs +0 -3
- package/esm2022/lib/components/cover/cover.component.mjs +0 -75
- package/esm2022/lib/components/cover/cover.module.mjs +0 -21
- package/esm2022/lib/components/cover/index.mjs +0 -3
- package/esm2022/lib/components/datepicker/calendar/calendar.component.mjs +0 -606
- package/esm2022/lib/components/datepicker/calendar/enums/week-start.enum.mjs +0 -6
- package/esm2022/lib/components/datepicker/calendar/models/calendar-date.model.mjs +0 -2
- package/esm2022/lib/components/datepicker/calendar/models/calendar.model.mjs +0 -2
- package/esm2022/lib/components/datepicker/calendar/models/day.model.mjs +0 -2
- package/esm2022/lib/components/datepicker/calendar/models/select-option.model.mjs +0 -2
- package/esm2022/lib/components/datepicker/calendar/models/week.model.mjs +0 -2
- package/esm2022/lib/components/datepicker/datepicker.component.mjs +0 -613
- package/esm2022/lib/components/datepicker/datepicker.module.mjs +0 -55
- package/esm2022/lib/components/datepicker/index.mjs +0 -9
- package/esm2022/lib/components/datepicker/services/calendar.service.mjs +0 -215
- package/esm2022/lib/components/datepicker-combo/datepicker-combo.component.mjs +0 -417
- package/esm2022/lib/components/datepicker-combo/datepicker-combo.module.mjs +0 -31
- package/esm2022/lib/components/datepicker-combo/index.mjs +0 -3
- package/esm2022/lib/components/divider/divider.component.mjs +0 -59
- package/esm2022/lib/components/divider/divider.module.mjs +0 -28
- package/esm2022/lib/components/divider/index.mjs +0 -3
- package/esm2022/lib/components/dropdown/dropdown.component.mjs +0 -170
- package/esm2022/lib/components/dropdown/dropdown.module.mjs +0 -21
- package/esm2022/lib/components/dropdown/index.mjs +0 -3
- package/esm2022/lib/components/filter/enums/trip-type.enum.mjs +0 -8
- package/esm2022/lib/components/filter/filter.component.mjs +0 -1445
- package/esm2022/lib/components/filter/filter.module.mjs +0 -81
- package/esm2022/lib/components/filter/index.mjs +0 -4
- package/esm2022/lib/components/grid/col/col.component.mjs +0 -49
- package/esm2022/lib/components/grid/grid.component.mjs +0 -72
- package/esm2022/lib/components/grid/grid.module.mjs +0 -20
- package/esm2022/lib/components/grid/index.mjs +0 -4
- package/esm2022/lib/components/icon/icon.component.mjs +0 -44
- package/esm2022/lib/components/icon/icon.module.mjs +0 -19
- package/esm2022/lib/components/icon/index.mjs +0 -3
- package/esm2022/lib/components/icon-list/icon-list.component.mjs +0 -50
- package/esm2022/lib/components/icon-list/icon-list.module.mjs +0 -20
- package/esm2022/lib/components/icon-list/index.mjs +0 -4
- package/esm2022/lib/components/icon-list/models/icon-list.model.mjs +0 -2
- package/esm2022/lib/components/index.mjs +0 -68
- package/esm2022/lib/components/info/index.mjs +0 -4
- package/esm2022/lib/components/info/info.component.mjs +0 -116
- package/esm2022/lib/components/info/info.module.mjs +0 -36
- package/esm2022/lib/components/info/models/info.model.mjs +0 -2
- package/esm2022/lib/components/input/index.mjs +0 -3
- package/esm2022/lib/components/input/input.component.mjs +0 -228
- package/esm2022/lib/components/input/input.module.mjs +0 -35
- package/esm2022/lib/components/journey/index.mjs +0 -6
- package/esm2022/lib/components/journey/journey.component.mjs +0 -137
- package/esm2022/lib/components/journey/journey.module.mjs +0 -21
- package/esm2022/lib/components/journey/models/journey-flight.model.mjs +0 -2
- package/esm2022/lib/components/journey/models/journey.model.mjs +0 -2
- package/esm2022/lib/components/journey/models/marketing-carrier.enum.mjs +0 -8
- package/esm2022/lib/components/journey-availability/index.mjs +0 -3
- package/esm2022/lib/components/journey-availability/journey-availability.component.mjs +0 -128
- package/esm2022/lib/components/journey-availability/journey-availability.module.mjs +0 -39
- package/esm2022/lib/components/journey-availability-list/enums/availability-sort-option.enum.mjs +0 -7
- package/esm2022/lib/components/journey-availability-list/index.mjs +0 -4
- package/esm2022/lib/components/journey-availability-list/journey-availability-list.component.mjs +0 -182
- package/esm2022/lib/components/journey-availability-list/journey-availability-list.module.mjs +0 -36
- package/esm2022/lib/components/journey-selection/index.mjs +0 -7
- package/esm2022/lib/components/journey-selection/journey-selection.component.mjs +0 -120
- package/esm2022/lib/components/journey-selection/journey-selection.module.mjs +0 -24
- package/esm2022/lib/components/journey-selection/models/journey-selection-collapsed.model.mjs +0 -2
- package/esm2022/lib/components/journey-selection/models/journey-selection-common.model.mjs +0 -2
- package/esm2022/lib/components/journey-selection/models/journey-selection-expanded.model.mjs +0 -2
- package/esm2022/lib/components/journey-selection/models/journey-selection.model.mjs +0 -2
- package/esm2022/lib/components/journey-stopover/index.mjs +0 -4
- package/esm2022/lib/components/journey-stopover/journey-stopover.component.mjs +0 -150
- package/esm2022/lib/components/journey-stopover/journey-stopover.module.mjs +0 -21
- package/esm2022/lib/components/journey-stopover/models/stopover-time.model.mjs +0 -2
- package/esm2022/lib/components/list/index.mjs +0 -4
- package/esm2022/lib/components/list/list-item/list-item.component.mjs +0 -52
- package/esm2022/lib/components/list/list.component.mjs +0 -78
- package/esm2022/lib/components/list/list.module.mjs +0 -20
- package/esm2022/lib/components/micro-button/index.mjs +0 -3
- package/esm2022/lib/components/micro-button/micro-button.component.mjs +0 -101
- package/esm2022/lib/components/micro-button/micro-button.module.mjs +0 -20
- package/esm2022/lib/components/modal/index.mjs +0 -3
- package/esm2022/lib/components/modal/modal.component.mjs +0 -156
- package/esm2022/lib/components/modal/modal.module.mjs +0 -38
- package/esm2022/lib/components/number-field/index.mjs +0 -4
- package/esm2022/lib/components/number-field/models/number-field.model.mjs +0 -2
- package/esm2022/lib/components/number-field/number-field.component.mjs +0 -162
- package/esm2022/lib/components/number-field/number-field.module.mjs +0 -39
- package/esm2022/lib/components/page-footer/index.mjs +0 -3
- package/esm2022/lib/components/page-footer/page-footer.component.mjs +0 -52
- package/esm2022/lib/components/page-footer/page-footer.module.mjs +0 -21
- package/esm2022/lib/components/page-header/hamburger/hamburger.component.mjs +0 -22
- package/esm2022/lib/components/page-header/index.mjs +0 -6
- package/esm2022/lib/components/page-header/models/wallet.model.mjs +0 -2
- package/esm2022/lib/components/page-header/page-header.component.mjs +0 -171
- package/esm2022/lib/components/page-header/page-header.module.mjs +0 -55
- package/esm2022/lib/components/page-header/search/search.component.mjs +0 -49
- package/esm2022/lib/components/page-header/wallet/wallet.component.mjs +0 -57
- package/esm2022/lib/components/passenger-select/enums/passenger-type.enum.mjs +0 -9
- package/esm2022/lib/components/passenger-select/index.mjs +0 -5
- package/esm2022/lib/components/passenger-select/models/passengers.model.mjs +0 -2
- package/esm2022/lib/components/passenger-select/passenger-select.component.mjs +0 -423
- package/esm2022/lib/components/passenger-select/passenger-select.module.mjs +0 -28
- package/esm2022/lib/components/phone-number/index.mjs +0 -3
- package/esm2022/lib/components/phone-number/phone-number.component.mjs +0 -182
- package/esm2022/lib/components/phone-number/phone-number.module.mjs +0 -44
- package/esm2022/lib/components/premium-toggle/index.mjs +0 -3
- package/esm2022/lib/components/premium-toggle/premium-toggle.component.mjs +0 -68
- package/esm2022/lib/components/premium-toggle/premium-toggle.module.mjs +0 -20
- package/esm2022/lib/components/radio/index.mjs +0 -3
- package/esm2022/lib/components/radio/radio.component.mjs +0 -109
- package/esm2022/lib/components/radio/radio.module.mjs +0 -20
- package/esm2022/lib/components/ribbon-banner/index.mjs +0 -3
- package/esm2022/lib/components/ribbon-banner/ribbon-banner.component.mjs +0 -89
- package/esm2022/lib/components/ribbon-banner/ribbon-banner.module.mjs +0 -40
- package/esm2022/lib/components/select/index.mjs +0 -6
- package/esm2022/lib/components/select/models/select-option.model.mjs +0 -2
- package/esm2022/lib/components/select/optgroup/optgroup.component.mjs +0 -29
- package/esm2022/lib/components/select/option/option.component.mjs +0 -26
- package/esm2022/lib/components/select/select.component.mjs +0 -407
- package/esm2022/lib/components/select/select.module.mjs +0 -23
- package/esm2022/lib/components/select-new/index.mjs +0 -5
- package/esm2022/lib/components/select-new/models/select-option.model.mjs +0 -2
- package/esm2022/lib/components/select-new/optgroup/optgroup-new.component.mjs +0 -23
- package/esm2022/lib/components/select-new/option/option-new.component.mjs +0 -41
- package/esm2022/lib/components/select-new/select-new.component.mjs +0 -271
- package/esm2022/lib/components/select-new/select-new.module.mjs +0 -26
- package/esm2022/lib/components/select-new/services/select-new.service.mjs +0 -40
- package/esm2022/lib/components/simple-list/index.mjs +0 -3
- package/esm2022/lib/components/simple-list/simple-list.component.mjs +0 -48
- package/esm2022/lib/components/simple-list/simple-list.module.mjs +0 -19
- package/esm2022/lib/components/slide-toggle/index.mjs +0 -3
- package/esm2022/lib/components/slide-toggle/slide-toggle.component.mjs +0 -121
- package/esm2022/lib/components/slide-toggle/slide-toggle.module.mjs +0 -20
- package/esm2022/lib/components/slider/index.mjs +0 -3
- package/esm2022/lib/components/slider/slider.component.mjs +0 -515
- package/esm2022/lib/components/slider/slider.module.mjs +0 -20
- package/esm2022/lib/components/sort/index.mjs +0 -3
- package/esm2022/lib/components/sort/sort.component.mjs +0 -98
- package/esm2022/lib/components/sort/sort.module.mjs +0 -36
- package/esm2022/lib/components/spinner/index.mjs +0 -3
- package/esm2022/lib/components/spinner/spinner.component.mjs +0 -127
- package/esm2022/lib/components/spinner/spinner.module.mjs +0 -19
- package/esm2022/lib/components/status-box/index.mjs +0 -4
- package/esm2022/lib/components/status-box/models/status-box.model.mjs +0 -2
- package/esm2022/lib/components/status-box/status-box.component.mjs +0 -109
- package/esm2022/lib/components/status-box/status-box.module.mjs +0 -21
- package/esm2022/lib/components/suggestions/index.mjs +0 -3
- package/esm2022/lib/components/suggestions/suggestions.component.mjs +0 -44
- package/esm2022/lib/components/suggestions/suggestions.module.mjs +0 -20
- package/esm2022/lib/components/tab-group/index.mjs +0 -4
- package/esm2022/lib/components/tab-group/tab/tab.component.mjs +0 -140
- package/esm2022/lib/components/tab-group/tab-group.component.mjs +0 -91
- package/esm2022/lib/components/tab-group/tab-group.module.mjs +0 -21
- package/esm2022/lib/components/table/column/column.component.mjs +0 -16
- package/esm2022/lib/components/table/column-group/column-group.component.mjs +0 -30
- package/esm2022/lib/components/table/index.mjs +0 -11
- package/esm2022/lib/components/table/services/table.service.mjs +0 -24
- package/esm2022/lib/components/table/table-body/table-body.component.mjs +0 -23
- package/esm2022/lib/components/table/table-foot/table-foot.component.mjs +0 -23
- package/esm2022/lib/components/table/table-head/table-head.component.mjs +0 -23
- package/esm2022/lib/components/table/table-row/table-data/table-data.component.mjs +0 -15
- package/esm2022/lib/components/table/table-row/table-header/table-header.component.mjs +0 -15
- package/esm2022/lib/components/table/table-row/table-row.component.mjs +0 -23
- package/esm2022/lib/components/table/table.component.mjs +0 -27
- package/esm2022/lib/components/table/table.module.mjs +0 -63
- package/esm2022/lib/components/tag/index.mjs +0 -3
- package/esm2022/lib/components/tag/tag.component.mjs +0 -71
- package/esm2022/lib/components/tag/tag.module.mjs +0 -28
- package/esm2022/lib/components/textarea/index.mjs +0 -3
- package/esm2022/lib/components/textarea/textarea.component.mjs +0 -139
- package/esm2022/lib/components/textarea/textarea.module.mjs +0 -21
- package/esm2022/lib/components/toggle/index.mjs +0 -3
- package/esm2022/lib/components/toggle/models/options.model.mjs +0 -3
- package/esm2022/lib/components/toggle/toggle.component.mjs +0 -102
- package/esm2022/lib/components/toggle/toggle.module.mjs +0 -35
- package/esm2022/lib/components/tooltip/index.mjs +0 -3
- package/esm2022/lib/components/tooltip/tooltip.component.mjs +0 -170
- package/esm2022/lib/components/tooltip/tooltip.module.mjs +0 -30
- package/esm2022/lib/components/trip-summary/index.mjs +0 -3
- package/esm2022/lib/components/trip-summary/trip-summary.component.mjs +0 -167
- package/esm2022/lib/components/trip-summary/trip-summary.module.mjs +0 -36
- package/esm2022/lib/core/base/nas-component.base.mjs +0 -48
- package/esm2022/lib/core/decorators/debounce.decorator.mjs +0 -12
- package/esm2022/lib/core/directives/index.mjs +0 -3
- package/esm2022/lib/core/directives/nas-class/nas-class.directive.mjs +0 -80
- package/esm2022/lib/core/directives/nas-class/nas-class.module.mjs +0 -20
- package/esm2022/lib/core/extensions/html-element.extension.mjs +0 -31
- package/esm2022/lib/core/index.mjs +0 -5
- package/esm2022/lib/core/models/abandoned-basket-item.model.mjs +0 -2
- package/esm2022/lib/core/models/animate.model.mjs +0 -2
- package/esm2022/lib/core/models/class.model.mjs +0 -2
- package/esm2022/lib/core/models/index.mjs +0 -7
- package/esm2022/lib/core/models/link.model.mjs +0 -2
- package/esm2022/lib/core/models/position.model.mjs +0 -2
- package/esm2022/lib/core/models/utc-date.model.mjs +0 -40
- package/esm2022/lib/core/services/abandoned-basket/abandoned-basket.service.mjs +0 -61
- package/esm2022/lib/core/services/animate-helper/animate-helper.service.mjs +0 -49
- package/esm2022/lib/core/services/bem-helper/bem-helper.service.mjs +0 -44
- package/esm2022/lib/core/services/date/date-compare.enum.mjs +0 -7
- package/esm2022/lib/core/services/date/date-helper.service.mjs +0 -199
- package/esm2022/lib/core/services/device/device-helper.service.mjs +0 -46
- package/esm2022/lib/core/services/geolocation/geolocation-state.enum.mjs +0 -8
- package/esm2022/lib/core/services/geolocation/geolocation.service.mjs +0 -66
- package/esm2022/lib/core/services/index.mjs +0 -10
- package/esm2022/lib/core/services/language/language-helper.service.mjs +0 -114
- package/esm2022/lib/core/services/sort/sort.service.mjs +0 -25
- package/esm2022/lib/core/services/viewport/viewport.service.mjs +0 -36
- package/esm2022/lib/index.mjs +0 -5
- package/esm2022/lib/services/get-position.service.mjs +0 -23
- package/esm2022/lib/services/index.mjs +0 -2
- package/esm2022/lib/shared/index.mjs +0 -2
- package/esm2022/lib/shared/models/flight-details.mjs +0 -3
- package/esm2022/lib/shared/models/index.mjs +0 -6
- package/esm2022/lib/shared/models/journey-availability-sort.model.mjs +0 -2
- package/esm2022/lib/shared/models/journey-availability.model.mjs +0 -2
- package/esm2022/lib/shared/models/journey-details.model.mjs +0 -2
- package/esm2022/lib/shared/models/journey-duration.model.mjs +0 -2
- package/esm2022/lib/shared/models/journey-stopover.model.mjs +0 -2
- package/esm2022/lib/shared/models/journey-transit-info.model.mjs +0 -2
- package/esm2022/lib/shared/models/operating-carrier.model.mjs +0 -2
- package/esm2022/lib/shared/models/sort-option.model.mjs +0 -2
- package/esm2022/lib/shared/models/sort.model.mjs +0 -2
- package/esm2022/lib/shared/models/trip-item-details.model.mjs +0 -2
- package/esm2022/lib/shared/models/trip-summary-details.model.mjs +0 -2
- package/esm2022/lib/shared/models/trip-summary.model.mjs +0 -2
- package/esm2022/norwegian-core-components.mjs +0 -5
- package/esm2022/public_api.mjs +0 -2
- package/lib/components/accordion/accordion.component.d.ts +0 -241
- package/lib/components/accordion/accordion.module.d.ts +0 -10
- package/lib/components/accordion/index.d.ts +0 -2
- package/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.d.ts +0 -100
- package/lib/components/airport-select/airport-select.component.d.ts +0 -330
- package/lib/components/airport-select/airport-select.module.d.ts +0 -13
- package/lib/components/airport-select/index.d.ts +0 -6
- package/lib/components/airport-select/models/airport-select-event.model.d.ts +0 -4
- package/lib/components/airport-select/models/airport-select-state.model.d.ts +0 -5
- package/lib/components/airport-select/models/airport.model.d.ts +0 -11
- package/lib/components/airport-select/models/results-labels.model.d.ts +0 -8
- package/lib/components/airport-select/services/airport-select-dropdown.service.d.ts +0 -10
- package/lib/components/airport-select/services/airport-select.service.d.ts +0 -8
- package/lib/components/alert/alert.component.d.ts +0 -129
- package/lib/components/alert/alert.module.d.ts +0 -12
- package/lib/components/alert/index.d.ts +0 -3
- package/lib/components/alert/models/alert.model.d.ts +0 -10
- package/lib/components/autocomplete/autocomplete.component.d.ts +0 -135
- package/lib/components/autocomplete/autocomplete.module.d.ts +0 -13
- package/lib/components/autocomplete/index.d.ts +0 -3
- package/lib/components/autocomplete/models/autocomplete.model.d.ts +0 -5
- package/lib/components/backdrop/backdrop.component.d.ts +0 -38
- package/lib/components/backdrop/backdrop.module.d.ts +0 -9
- package/lib/components/backdrop/index.d.ts +0 -2
- package/lib/components/box/box.component.d.ts +0 -78
- package/lib/components/box/box.module.d.ts +0 -9
- package/lib/components/box/index.d.ts +0 -2
- package/lib/components/button/button.component.d.ts +0 -294
- package/lib/components/button/button.module.d.ts +0 -11
- package/lib/components/button/index.d.ts +0 -2
- package/lib/components/campaign-header/campaign-header.component.d.ts +0 -58
- package/lib/components/campaign-header/campaign-header.module.d.ts +0 -10
- package/lib/components/campaign-header/index.d.ts +0 -2
- package/lib/components/checkbox/checkbox.component.d.ts +0 -151
- package/lib/components/checkbox/checkbox.module.d.ts +0 -10
- package/lib/components/checkbox/index.d.ts +0 -2
- package/lib/components/chip/chip.component.d.ts +0 -48
- package/lib/components/chip/chip.module.d.ts +0 -9
- package/lib/components/chip/index.d.ts +0 -2
- package/lib/components/container/container.component.d.ts +0 -52
- package/lib/components/container/container.module.d.ts +0 -9
- package/lib/components/container/index.d.ts +0 -2
- package/lib/components/continue/continue.component.d.ts +0 -171
- package/lib/components/continue/continue.module.d.ts +0 -11
- package/lib/components/continue/index.d.ts +0 -2
- package/lib/components/cover/cover.component.d.ts +0 -125
- package/lib/components/cover/cover.module.d.ts +0 -11
- package/lib/components/cover/index.d.ts +0 -2
- package/lib/components/datepicker/calendar/calendar.component.d.ts +0 -169
- package/lib/components/datepicker/calendar/enums/week-start.enum.d.ts +0 -4
- package/lib/components/datepicker/calendar/models/calendar-date.model.d.ts +0 -5
- package/lib/components/datepicker/calendar/models/calendar.model.d.ts +0 -4
- package/lib/components/datepicker/calendar/models/day.model.d.ts +0 -10
- package/lib/components/datepicker/calendar/models/select-option.model.d.ts +0 -4
- package/lib/components/datepicker/calendar/models/week.model.d.ts +0 -5
- package/lib/components/datepicker/datepicker.component.d.ts +0 -289
- package/lib/components/datepicker/datepicker.module.d.ts +0 -16
- package/lib/components/datepicker/index.d.ts +0 -8
- package/lib/components/datepicker/services/calendar.service.d.ts +0 -27
- package/lib/components/datepicker-combo/datepicker-combo.component.d.ts +0 -329
- package/lib/components/datepicker-combo/datepicker-combo.module.d.ts +0 -10
- package/lib/components/datepicker-combo/index.d.ts +0 -2
- package/lib/components/divider/divider.component.d.ts +0 -68
- package/lib/components/divider/divider.module.d.ts +0 -10
- package/lib/components/divider/index.d.ts +0 -2
- package/lib/components/dropdown/dropdown.component.d.ts +0 -80
- package/lib/components/dropdown/dropdown.module.d.ts +0 -11
- package/lib/components/dropdown/index.d.ts +0 -2
- package/lib/components/filter/enums/trip-type.enum.d.ts +0 -6
- package/lib/components/filter/filter.component.d.ts +0 -942
- package/lib/components/filter/filter.module.d.ts +0 -22
- package/lib/components/filter/index.d.ts +0 -3
- package/lib/components/grid/col/col.component.d.ts +0 -45
- package/lib/components/grid/grid.component.d.ts +0 -92
- package/lib/components/grid/grid.module.d.ts +0 -10
- package/lib/components/grid/index.d.ts +0 -3
- package/lib/components/icon/icon.component.d.ts +0 -53
- package/lib/components/icon/icon.module.d.ts +0 -9
- package/lib/components/icon/index.d.ts +0 -2
- package/lib/components/icon-list/icon-list.component.d.ts +0 -49
- package/lib/components/icon-list/icon-list.module.d.ts +0 -10
- package/lib/components/icon-list/index.d.ts +0 -3
- package/lib/components/icon-list/models/icon-list.model.d.ts +0 -8
- package/lib/components/index.d.ts +0 -67
- package/lib/components/info/index.d.ts +0 -3
- package/lib/components/info/info.component.d.ts +0 -108
- package/lib/components/info/info.module.d.ts +0 -12
- package/lib/components/info/models/info.model.d.ts +0 -9
- package/lib/components/input/index.d.ts +0 -2
- package/lib/components/input/input.component.d.ts +0 -214
- package/lib/components/input/input.module.d.ts +0 -11
- package/lib/components/journey/index.d.ts +0 -5
- package/lib/components/journey/journey.component.d.ts +0 -102
- package/lib/components/journey/journey.module.d.ts +0 -11
- package/lib/components/journey/models/journey-flight.model.d.ts +0 -13
- package/lib/components/journey/models/journey.model.d.ts +0 -5
- package/lib/components/journey/models/marketing-carrier.enum.d.ts +0 -6
- package/lib/components/journey-availability/index.d.ts +0 -2
- package/lib/components/journey-availability/journey-availability.component.d.ts +0 -93
- package/lib/components/journey-availability/journey-availability.module.d.ts +0 -12
- package/lib/components/journey-availability-list/enums/availability-sort-option.enum.d.ts +0 -5
- package/lib/components/journey-availability-list/index.d.ts +0 -3
- package/lib/components/journey-availability-list/journey-availability-list.component.d.ts +0 -114
- package/lib/components/journey-availability-list/journey-availability-list.module.d.ts +0 -12
- package/lib/components/journey-selection/index.d.ts +0 -6
- package/lib/components/journey-selection/journey-selection.component.d.ts +0 -84
- package/lib/components/journey-selection/journey-selection.module.d.ts +0 -11
- package/lib/components/journey-selection/models/journey-selection-collapsed.model.d.ts +0 -11
- package/lib/components/journey-selection/models/journey-selection-common.model.d.ts +0 -7
- package/lib/components/journey-selection/models/journey-selection-expanded.model.d.ts +0 -5
- package/lib/components/journey-selection/models/journey-selection.model.d.ts +0 -14
- package/lib/components/journey-stopover/index.d.ts +0 -3
- package/lib/components/journey-stopover/journey-stopover.component.d.ts +0 -131
- package/lib/components/journey-stopover/journey-stopover.module.d.ts +0 -11
- package/lib/components/journey-stopover/models/stopover-time.model.d.ts +0 -4
- package/lib/components/list/index.d.ts +0 -3
- package/lib/components/list/list-item/list-item.component.d.ts +0 -35
- package/lib/components/list/list.component.d.ts +0 -76
- package/lib/components/list/list.module.d.ts +0 -10
- package/lib/components/micro-button/index.d.ts +0 -2
- package/lib/components/micro-button/micro-button.component.d.ts +0 -139
- package/lib/components/micro-button/micro-button.module.d.ts +0 -10
- package/lib/components/modal/index.d.ts +0 -2
- package/lib/components/modal/modal.component.d.ts +0 -119
- package/lib/components/modal/modal.module.d.ts +0 -12
- package/lib/components/number-field/index.d.ts +0 -3
- package/lib/components/number-field/models/number-field.model.d.ts +0 -5
- package/lib/components/number-field/number-field.component.d.ts +0 -124
- package/lib/components/number-field/number-field.module.d.ts +0 -12
- package/lib/components/page-footer/index.d.ts +0 -2
- package/lib/components/page-footer/page-footer.component.d.ts +0 -53
- package/lib/components/page-footer/page-footer.module.d.ts +0 -11
- package/lib/components/page-header/hamburger/hamburger.component.d.ts +0 -12
- package/lib/components/page-header/index.d.ts +0 -5
- package/lib/components/page-header/models/wallet.model.d.ts +0 -21
- package/lib/components/page-header/page-header.component.d.ts +0 -127
- package/lib/components/page-header/page-header.module.d.ts +0 -17
- package/lib/components/page-header/search/search.component.d.ts +0 -26
- package/lib/components/page-header/wallet/wallet.component.d.ts +0 -23
- package/lib/components/passenger-select/enums/passenger-type.enum.d.ts +0 -7
- package/lib/components/passenger-select/index.d.ts +0 -4
- package/lib/components/passenger-select/models/passengers.model.d.ts +0 -11
- package/lib/components/passenger-select/passenger-select.component.d.ts +0 -141
- package/lib/components/passenger-select/passenger-select.module.d.ts +0 -10
- package/lib/components/phone-number/index.d.ts +0 -2
- package/lib/components/phone-number/phone-number.component.d.ts +0 -263
- package/lib/components/phone-number/phone-number.module.d.ts +0 -13
- package/lib/components/premium-toggle/index.d.ts +0 -2
- package/lib/components/premium-toggle/premium-toggle.component.d.ts +0 -50
- package/lib/components/premium-toggle/premium-toggle.module.d.ts +0 -10
- package/lib/components/radio/index.d.ts +0 -2
- package/lib/components/radio/radio.component.d.ts +0 -137
- package/lib/components/radio/radio.module.d.ts +0 -10
- package/lib/components/ribbon-banner/index.d.ts +0 -2
- package/lib/components/ribbon-banner/ribbon-banner.component.d.ts +0 -66
- package/lib/components/ribbon-banner/ribbon-banner.module.d.ts +0 -13
- package/lib/components/select/index.d.ts +0 -5
- package/lib/components/select/models/select-option.model.d.ts +0 -4
- package/lib/components/select/optgroup/optgroup.component.d.ts +0 -25
- package/lib/components/select/option/option.component.d.ts +0 -24
- package/lib/components/select/select.component.d.ts +0 -204
- package/lib/components/select/select.module.d.ts +0 -13
- package/lib/components/select-new/index.d.ts +0 -4
- package/lib/components/select-new/models/select-option.model.d.ts +0 -6
- package/lib/components/select-new/optgroup/optgroup-new.component.d.ts +0 -8
- package/lib/components/select-new/option/option-new.component.d.ts +0 -16
- package/lib/components/select-new/select-new.component.d.ts +0 -173
- package/lib/components/select-new/select-new.module.d.ts +0 -14
- package/lib/components/select-new/services/select-new.service.d.ts +0 -10
- package/lib/components/simple-list/index.d.ts +0 -2
- package/lib/components/simple-list/simple-list.component.d.ts +0 -60
- package/lib/components/simple-list/simple-list.module.d.ts +0 -9
- package/lib/components/slide-toggle/index.d.ts +0 -2
- package/lib/components/slide-toggle/slide-toggle.component.d.ts +0 -70
- package/lib/components/slide-toggle/slide-toggle.module.d.ts +0 -10
- package/lib/components/slider/index.d.ts +0 -2
- package/lib/components/slider/slider.component.d.ts +0 -216
- package/lib/components/slider/slider.module.d.ts +0 -10
- package/lib/components/sort/index.d.ts +0 -2
- package/lib/components/sort/sort.component.d.ts +0 -55
- package/lib/components/sort/sort.module.d.ts +0 -12
- package/lib/components/spinner/index.d.ts +0 -2
- package/lib/components/spinner/spinner.component.d.ts +0 -104
- package/lib/components/spinner/spinner.module.d.ts +0 -9
- package/lib/components/status-box/index.d.ts +0 -3
- package/lib/components/status-box/models/status-box.model.d.ts +0 -5
- package/lib/components/status-box/status-box.component.d.ts +0 -92
- package/lib/components/status-box/status-box.module.d.ts +0 -11
- package/lib/components/suggestions/index.d.ts +0 -2
- package/lib/components/suggestions/suggestions.component.d.ts +0 -36
- package/lib/components/suggestions/suggestions.module.d.ts +0 -10
- package/lib/components/tab-group/index.d.ts +0 -3
- package/lib/components/tab-group/tab/tab.component.d.ts +0 -97
- package/lib/components/tab-group/tab-group.component.d.ts +0 -42
- package/lib/components/tab-group/tab-group.module.d.ts +0 -11
- package/lib/components/table/column/column.component.d.ts +0 -6
- package/lib/components/table/column-group/column-group.component.d.ts +0 -15
- package/lib/components/table/index.d.ts +0 -10
- package/lib/components/table/services/table.service.d.ts +0 -8
- package/lib/components/table/table-body/table-body.component.d.ts +0 -15
- package/lib/components/table/table-foot/table-foot.component.d.ts +0 -15
- package/lib/components/table/table-head/table-head.component.d.ts +0 -15
- package/lib/components/table/table-row/table-data/table-data.component.d.ts +0 -5
- package/lib/components/table/table-row/table-header/table-header.component.d.ts +0 -5
- package/lib/components/table/table-row/table-row.component.d.ts +0 -15
- package/lib/components/table/table.component.d.ts +0 -19
- package/lib/components/table/table.module.d.ts +0 -17
- package/lib/components/tag/index.d.ts +0 -2
- package/lib/components/tag/tag.component.d.ts +0 -71
- package/lib/components/tag/tag.module.d.ts +0 -10
- package/lib/components/textarea/index.d.ts +0 -2
- package/lib/components/textarea/textarea.component.d.ts +0 -156
- package/lib/components/textarea/textarea.module.d.ts +0 -11
- package/lib/components/toggle/index.d.ts +0 -2
- package/lib/components/toggle/models/options.model.d.ts +0 -7
- package/lib/components/toggle/toggle.component.d.ts +0 -159
- package/lib/components/toggle/toggle.module.d.ts +0 -11
- package/lib/components/tooltip/index.d.ts +0 -2
- package/lib/components/tooltip/tooltip.component.d.ts +0 -63
- package/lib/components/tooltip/tooltip.module.d.ts +0 -10
- package/lib/components/trip-summary/index.d.ts +0 -2
- package/lib/components/trip-summary/trip-summary.component.d.ts +0 -162
- package/lib/components/trip-summary/trip-summary.module.d.ts +0 -12
- package/lib/core/base/nas-component.base.d.ts +0 -11
- package/lib/core/decorators/debounce.decorator.d.ts +0 -1
- package/lib/core/directives/index.d.ts +0 -2
- package/lib/core/directives/nas-class/nas-class.directive.d.ts +0 -14
- package/lib/core/directives/nas-class/nas-class.module.d.ts +0 -8
- package/lib/core/extensions/html-element.extension.d.ts +0 -6
- package/lib/core/index.d.ts +0 -4
- package/lib/core/models/abandoned-basket-item.model.d.ts +0 -14
- package/lib/core/models/animate.model.d.ts +0 -6
- package/lib/core/models/class.model.d.ts +0 -7
- package/lib/core/models/index.d.ts +0 -6
- package/lib/core/models/link.model.d.ts +0 -5
- package/lib/core/models/position.model.d.ts +0 -4
- package/lib/core/models/utc-date.model.d.ts +0 -13
- package/lib/core/services/abandoned-basket/abandoned-basket.service.d.ts +0 -10
- package/lib/core/services/animate-helper/animate-helper.service.d.ts +0 -9
- package/lib/core/services/bem-helper/bem-helper.service.d.ts +0 -7
- package/lib/core/services/date/date-compare.enum.d.ts +0 -5
- package/lib/core/services/date/date-helper.service.d.ts +0 -22
- package/lib/core/services/device/device-helper.service.d.ts +0 -16
- package/lib/core/services/geolocation/geolocation-state.enum.d.ts +0 -6
- package/lib/core/services/geolocation/geolocation.service.d.ts +0 -9
- package/lib/core/services/index.d.ts +0 -9
- package/lib/core/services/language/language-helper.service.d.ts +0 -12
- package/lib/core/services/sort/sort.service.d.ts +0 -6
- package/lib/core/services/viewport/viewport.service.d.ts +0 -11
- package/lib/index.d.ts +0 -4
- package/lib/services/get-position.service.d.ts +0 -9
- package/lib/services/index.d.ts +0 -1
- package/lib/shared/index.d.ts +0 -1
- package/lib/shared/models/flight-details.d.ts +0 -22
- package/lib/shared/models/index.d.ts +0 -5
- package/lib/shared/models/journey-availability-sort.model.d.ts +0 -8
- package/lib/shared/models/journey-availability.model.d.ts +0 -25
- package/lib/shared/models/journey-details.model.d.ts +0 -8
- package/lib/shared/models/journey-duration.model.d.ts +0 -7
- package/lib/shared/models/journey-stopover.model.d.ts +0 -15
- package/lib/shared/models/journey-transit-info.model.d.ts +0 -5
- package/lib/shared/models/operating-carrier.model.d.ts +0 -4
- package/lib/shared/models/sort-option.model.d.ts +0 -11
- package/lib/shared/models/sort.model.d.ts +0 -10
- package/lib/shared/models/trip-item-details.model.d.ts +0 -12
- package/lib/shared/models/trip-summary-details.model.d.ts +0 -5
- package/lib/shared/models/trip-summary.model.d.ts +0 -4
- package/public_api.d.ts +0 -1
- /package/assets/icons/{icon-chevron-left--light.svg → medium/chevron-left--light.svg} +0 -0
- /package/assets/icons/{icon-chevron-left.svg → medium/chevron-left.svg} +0 -0
- /package/assets/icons/{icon-chevron-right--light.svg → medium/chevron-right--light.svg} +0 -0
- /package/assets/icons/{icon-chevron-right.svg → medium/chevron-right.svg} +0 -0
- /package/assets/images/{cloud-1.svg → cloud.svg} +0 -0
|
@@ -1,613 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation, ViewChildren } from '@angular/core';
|
|
2
|
-
import { NasComponentBase } from '../../core/base/nas-component.base';
|
|
3
|
-
import { UtcDate } from '../../core/models/utc-date.model';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common";
|
|
6
|
-
import * as i2 from "../../core/services/date/date-helper.service";
|
|
7
|
-
import * as i3 from "../icon/icon.component";
|
|
8
|
-
import * as i4 from "../../core/directives/nas-class/nas-class.directive";
|
|
9
|
-
import * as i5 from "@angular/forms";
|
|
10
|
-
import * as i6 from "../backdrop/backdrop.component";
|
|
11
|
-
import * as i7 from "./calendar/calendar.component";
|
|
12
|
-
let nextId = 0;
|
|
13
|
-
/**
|
|
14
|
-
* @description
|
|
15
|
-
* Norwegian Date Picker Component | Functional | New design
|
|
16
|
-
*/
|
|
17
|
-
export class DatepickerComponent extends NasComponentBase {
|
|
18
|
-
get showBackdrop() {
|
|
19
|
-
return this.show && !this.exists(this.disableBackdrop);
|
|
20
|
-
}
|
|
21
|
-
set showBackdrop(value) {
|
|
22
|
-
if (this.show === value) {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
setTimeout(() => {
|
|
26
|
-
this.show = value;
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* @property Input
|
|
31
|
-
* @description
|
|
32
|
-
* The lowest date allowed.
|
|
33
|
-
*/
|
|
34
|
-
get lowerLimitDate() {
|
|
35
|
-
return this.lowerLimitDateValue;
|
|
36
|
-
}
|
|
37
|
-
set lowerLimitDate(date) {
|
|
38
|
-
this.lowerLimitDateValue = date;
|
|
39
|
-
if (this.dateService.isLessThan(this.selectedDate, date, false, true, true)) {
|
|
40
|
-
this.selectedDate = date;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* @property Input
|
|
45
|
-
* @description
|
|
46
|
-
* boolean value to disable or enable the input of the date picker.
|
|
47
|
-
*/
|
|
48
|
-
get disabled() {
|
|
49
|
-
return this.disabledValue;
|
|
50
|
-
}
|
|
51
|
-
set disabled(value) {
|
|
52
|
-
this.disabledValue = value;
|
|
53
|
-
if (this.nasFormGroup && this.nasFormControlName) {
|
|
54
|
-
setTimeout(() => {
|
|
55
|
-
const control = this.nasFormGroup.get(this.nasFormControlName);
|
|
56
|
-
if (!control) {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
if (value) {
|
|
60
|
-
control.disable();
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
control.enable();
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* @property Input
|
|
70
|
-
* @description
|
|
71
|
-
* An array of times to be added in the time selector.
|
|
72
|
-
*/
|
|
73
|
-
get times() {
|
|
74
|
-
return this.timesValue;
|
|
75
|
-
}
|
|
76
|
-
set times(times) {
|
|
77
|
-
if (!times) {
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
this.timesValue = times;
|
|
81
|
-
this.timeOptions = times.map(x => {
|
|
82
|
-
x.year = new Date().getUTCFullYear();
|
|
83
|
-
const option = {
|
|
84
|
-
title: this.datePipe.transform(this.dateService.date(x), this.timeDisplayFormat, 'UTC', this.locale),
|
|
85
|
-
value: this.dateService.date(x).toISOString()
|
|
86
|
-
};
|
|
87
|
-
return option;
|
|
88
|
-
});
|
|
89
|
-
this.dateDisplayFormat = 'mediumDate';
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* @property Input
|
|
93
|
-
* @description
|
|
94
|
-
* The calendar is open or closed.
|
|
95
|
-
*/
|
|
96
|
-
get open() {
|
|
97
|
-
return this.openValue;
|
|
98
|
-
}
|
|
99
|
-
set open(open) {
|
|
100
|
-
if (open === this.openValue) {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
this.openValue = open;
|
|
104
|
-
if (open) {
|
|
105
|
-
this.openCalendar();
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
this.closeCalendar();
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* @property Input
|
|
113
|
-
* @description
|
|
114
|
-
* Set selected month.
|
|
115
|
-
*/
|
|
116
|
-
get selectedMonth() {
|
|
117
|
-
return this.selectedMonthValue;
|
|
118
|
-
}
|
|
119
|
-
set selectedMonth(month) {
|
|
120
|
-
if (!month) {
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
if (this.dateService.isSameMonth(this.selectedMonthValue, month)) {
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
setTimeout(() => {
|
|
127
|
-
this.selectedMonthValue = month;
|
|
128
|
-
this.selectedMonthChange.emit(month);
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* @property Input
|
|
133
|
-
* @description
|
|
134
|
-
* Gets or sets the selected Date in the date picker. Setting this date will highlight the date in the date picker
|
|
135
|
-
* and user can change it by clicking from any other enabled dates
|
|
136
|
-
* or by navigating betrween months and selecting from different available month.
|
|
137
|
-
*/
|
|
138
|
-
get selectedDate() {
|
|
139
|
-
return this.selectedDateValue;
|
|
140
|
-
}
|
|
141
|
-
set selectedDate(date) {
|
|
142
|
-
if (!date) {
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
if (this.selectedDateValue && this.dateService.isSameDate(this.selectedDateValue, date)) {
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
if (this.selectedTimeValue) {
|
|
149
|
-
date = new UtcDate(date.year, date.month, date.date, this.selectedTimeValue.hours, this.selectedTimeValue.minutes);
|
|
150
|
-
}
|
|
151
|
-
this.selectedDateValue = date;
|
|
152
|
-
if (this.nasFormGroup && this.nasFormControlName) {
|
|
153
|
-
const control = this.nasFormGroup.get(this.nasFormControlName);
|
|
154
|
-
if (control) {
|
|
155
|
-
const calendarDate = {
|
|
156
|
-
model: this.datePipe.transform(this.dateService.date(date), this.dateDisplayFormat, 'UTC', this.locale),
|
|
157
|
-
date: date
|
|
158
|
-
};
|
|
159
|
-
control.patchValue(calendarDate);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
setTimeout(() => {
|
|
163
|
-
this.model = this.datePipe.transform(this.dateService.date(date), this.dateDisplayFormat, 'UTC', this.locale);
|
|
164
|
-
this.utcDate = date;
|
|
165
|
-
});
|
|
166
|
-
this.selectedDateChange.emit(date);
|
|
167
|
-
if (this.show) {
|
|
168
|
-
this.closeCalendar();
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* @property Input
|
|
173
|
-
* @description
|
|
174
|
-
* Sets the selected time in the time selector.
|
|
175
|
-
*/
|
|
176
|
-
get selectedTime() {
|
|
177
|
-
return this.selectedTimeValue;
|
|
178
|
-
}
|
|
179
|
-
set selectedTime(time) {
|
|
180
|
-
if (!time) {
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
this.selectedTimeValue = time;
|
|
184
|
-
if (this.timeOptions && this.timeOptions.length > 0) {
|
|
185
|
-
const timeOption = this.timeOptions.find(x => x.value === this.dateService.date(time).toISOString());
|
|
186
|
-
if (timeOption) {
|
|
187
|
-
this.selectedTimeOption = timeOption;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
if (this.selectedDate) {
|
|
191
|
-
this.selectedDate = new UtcDate(this.selectedDate.year, this.selectedDate.month, this.selectedDate.date, this.selectedTimeValue.hours, this.selectedTimeValue.minutes);
|
|
192
|
-
}
|
|
193
|
-
else if (this.activeDate) {
|
|
194
|
-
this.selectedDate = new UtcDate(this.activeDate.year, this.activeDate.month, this.activeDate.date, this.selectedTimeValue.hours, this.selectedTimeValue.minutes);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
get activeDate() {
|
|
198
|
-
if (this.selectedDate && this.activeDateValue &&
|
|
199
|
-
this.dateService.isLessThan(this.activeDateValue, this.selectedDate, false, true, true)) {
|
|
200
|
-
return this.activeDateValue;
|
|
201
|
-
}
|
|
202
|
-
if (this.activeDateValue) {
|
|
203
|
-
return this.activeDateValue;
|
|
204
|
-
}
|
|
205
|
-
else if (this.selectedDate) {
|
|
206
|
-
this.activeDateValue = this.selectedDate;
|
|
207
|
-
}
|
|
208
|
-
else {
|
|
209
|
-
const now = new Date();
|
|
210
|
-
this.activeDateValue = new UtcDate(now.getFullYear(), now.getMonth(), now.getDate());
|
|
211
|
-
}
|
|
212
|
-
return this.activeDateValue;
|
|
213
|
-
}
|
|
214
|
-
set activeDate(date) {
|
|
215
|
-
if (this.lowerLimitDate && this.dateService.isLessThan(date, this.lowerLimitDate, false, true, true)) {
|
|
216
|
-
return;
|
|
217
|
-
}
|
|
218
|
-
this.activeDateValue = date;
|
|
219
|
-
clearTimeout(this.activeDateTimeout);
|
|
220
|
-
this.activeDateTimeout = setTimeout(() => {
|
|
221
|
-
this.model = this.datePipe.transform(this.dateService.date(this.selectedDate), this.dateDisplayFormat, 'UTC', this.locale);
|
|
222
|
-
this.utcDate = date;
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
get inputId() {
|
|
226
|
-
return this.id ? this.id : `nas-datepicker-${this.componentId}`;
|
|
227
|
-
}
|
|
228
|
-
constructor(datePipe, dateService) {
|
|
229
|
-
super('nas-datepicker');
|
|
230
|
-
this.datePipe = datePipe;
|
|
231
|
-
this.dateService = dateService;
|
|
232
|
-
this.show = false;
|
|
233
|
-
this.showTimes = false;
|
|
234
|
-
/**
|
|
235
|
-
* @property Input
|
|
236
|
-
* @description
|
|
237
|
-
* The display format of the date when user has selected the date and it is being shown in the input box for the date picker.
|
|
238
|
-
* Please look at the angular Date pipe for valid formats and variations.
|
|
239
|
-
*/
|
|
240
|
-
this.dateDisplayFormat = 'EEEE d, MMMM yyyy';
|
|
241
|
-
/**
|
|
242
|
-
* @property Input
|
|
243
|
-
* @description
|
|
244
|
-
* The time display format.
|
|
245
|
-
*/
|
|
246
|
-
this.timeDisplayFormat = 'HH:mm';
|
|
247
|
-
/**
|
|
248
|
-
* @property Input
|
|
249
|
-
* @description
|
|
250
|
-
* A locale code for the locale format rules to use. When not supplied, uses the value of LOCALE_ID, which is en-US by default.
|
|
251
|
-
* This requires that registerLocaleData is called with the respective locale.
|
|
252
|
-
*/
|
|
253
|
-
this.locale = 'en-US';
|
|
254
|
-
/**
|
|
255
|
-
* @property Output
|
|
256
|
-
* @description
|
|
257
|
-
* Date selected by the user by clicking in date-picker date-box.
|
|
258
|
-
*/
|
|
259
|
-
this.selectedDateChange = new EventEmitter();
|
|
260
|
-
/**
|
|
261
|
-
* @property Output
|
|
262
|
-
* @description
|
|
263
|
-
* Month selected by the user by clicking in drop down for month selection or month navigation buttons.
|
|
264
|
-
*/
|
|
265
|
-
this.selectedMonthChange = new EventEmitter();
|
|
266
|
-
/**
|
|
267
|
-
* @property Output
|
|
268
|
-
* @description
|
|
269
|
-
* The calendar is open or closed.
|
|
270
|
-
*/
|
|
271
|
-
this.openChange = new EventEmitter();
|
|
272
|
-
/**
|
|
273
|
-
* @property Output
|
|
274
|
-
* @description
|
|
275
|
-
* When a user has actively changed the date.
|
|
276
|
-
*/
|
|
277
|
-
this.focusOnNextChange = new EventEmitter();
|
|
278
|
-
/**
|
|
279
|
-
* @property Output
|
|
280
|
-
* @description
|
|
281
|
-
* When a user has pressed shift + tab to go to previous control.
|
|
282
|
-
*/
|
|
283
|
-
this.focusOnPreviousChange = new EventEmitter();
|
|
284
|
-
this.forceNotOpenCalendar = false;
|
|
285
|
-
this.componentId = nextId++;
|
|
286
|
-
}
|
|
287
|
-
ngOnInit() {
|
|
288
|
-
if (this.nasFormGroup && this.nasFormControlName) {
|
|
289
|
-
this.nasFormGroup
|
|
290
|
-
.get(this.nasFormControlName)
|
|
291
|
-
.valueChanges
|
|
292
|
-
.subscribe(value => {
|
|
293
|
-
if (this.model === value?.model) {
|
|
294
|
-
return;
|
|
295
|
-
}
|
|
296
|
-
setTimeout(() => {
|
|
297
|
-
this.model = value?.model;
|
|
298
|
-
this.selectedDateValue = value?.date;
|
|
299
|
-
});
|
|
300
|
-
});
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
onInputKeydownShiftTab(event) {
|
|
304
|
-
this.closeCalendar();
|
|
305
|
-
this.focusOnPreviousChange.emit(event);
|
|
306
|
-
}
|
|
307
|
-
onCalendarKeyDown(event) {
|
|
308
|
-
let currentActiveDate = this.activeDate.date;
|
|
309
|
-
let date;
|
|
310
|
-
if (document.activeElement === this.input.nativeElement) {
|
|
311
|
-
event.stopImmediatePropagation();
|
|
312
|
-
}
|
|
313
|
-
switch (event.key) {
|
|
314
|
-
case 'ArrowRight':
|
|
315
|
-
if (this.isActiveElementMonthButtons()) {
|
|
316
|
-
event.preventDefault();
|
|
317
|
-
break;
|
|
318
|
-
}
|
|
319
|
-
currentActiveDate++;
|
|
320
|
-
this.activeDate = this.dateService.utcDate(new Date(Date.UTC(this.activeDate.year, this.activeDate.month, currentActiveDate)));
|
|
321
|
-
this.setFocusOnActiveDateAsync();
|
|
322
|
-
break;
|
|
323
|
-
case 'ArrowLeft':
|
|
324
|
-
if (this.isActiveElementMonthButtons()) {
|
|
325
|
-
event.preventDefault();
|
|
326
|
-
break;
|
|
327
|
-
}
|
|
328
|
-
currentActiveDate--;
|
|
329
|
-
date = this.dateService.utcDate(new Date(Date.UTC(this.activeDate.year, this.activeDate.month, currentActiveDate)));
|
|
330
|
-
if (this.exists(this.disablePastSelection) && this.dateService.isInThePast(date)) {
|
|
331
|
-
break;
|
|
332
|
-
}
|
|
333
|
-
this.activeDate = date;
|
|
334
|
-
this.setFocusOnActiveDateAsync();
|
|
335
|
-
break;
|
|
336
|
-
case 'ArrowUp':
|
|
337
|
-
if (this.isActiveElementMonthButtons()) {
|
|
338
|
-
event.preventDefault();
|
|
339
|
-
break;
|
|
340
|
-
}
|
|
341
|
-
currentActiveDate -= 7;
|
|
342
|
-
date = this.dateService.utcDate(new Date(Date.UTC(this.activeDate.year, this.activeDate.month, currentActiveDate)));
|
|
343
|
-
if (this.exists(this.disablePastSelection) && this.dateService.isInThePast(date)) {
|
|
344
|
-
break;
|
|
345
|
-
}
|
|
346
|
-
this.activeDate = date;
|
|
347
|
-
this.setFocusOnActiveDateAsync();
|
|
348
|
-
event.preventDefault();
|
|
349
|
-
break;
|
|
350
|
-
case 'ArrowDown':
|
|
351
|
-
if (this.isActiveElementMonthButtons()) {
|
|
352
|
-
event.preventDefault();
|
|
353
|
-
break;
|
|
354
|
-
}
|
|
355
|
-
currentActiveDate += 7;
|
|
356
|
-
this.activeDateValue = this.dateService.utcDate(new Date(Date.UTC(this.activeDate.year, this.activeDate.month, currentActiveDate)));
|
|
357
|
-
this.setFocusOnActiveDateAsync();
|
|
358
|
-
event.preventDefault();
|
|
359
|
-
break;
|
|
360
|
-
case 'Escape':
|
|
361
|
-
this.closeCalendar();
|
|
362
|
-
this.forceNotOpenCalendar = true;
|
|
363
|
-
if (this.input) {
|
|
364
|
-
this.input.nativeElement.select();
|
|
365
|
-
}
|
|
366
|
-
break;
|
|
367
|
-
case 'Enter':
|
|
368
|
-
if (this.isActiveElementMonthButtons()) {
|
|
369
|
-
return;
|
|
370
|
-
}
|
|
371
|
-
this.setFocusOnTimeSelectorOrNext(event);
|
|
372
|
-
break;
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
onTimeSelectorKeydown(event) {
|
|
376
|
-
event.preventDefault();
|
|
377
|
-
if (event.key === 'Tab') {
|
|
378
|
-
this.showTimes = false;
|
|
379
|
-
if (event.shiftKey) {
|
|
380
|
-
this.openCalendar();
|
|
381
|
-
}
|
|
382
|
-
else {
|
|
383
|
-
this.focusOnNextChange.emit(event);
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
else if (event.key === 'ArrowDown') {
|
|
387
|
-
this.timeFocusNext();
|
|
388
|
-
}
|
|
389
|
-
else if (event.key === 'ArrowUp') {
|
|
390
|
-
this.timeFocusPrev();
|
|
391
|
-
}
|
|
392
|
-
else if (event.key === 'Enter') {
|
|
393
|
-
this.showTimes = false;
|
|
394
|
-
this.selectedTimeOption = this.focusedTime;
|
|
395
|
-
this.focusOnNextChange.emit(event);
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
setFocusOnTimeSelectorOrNext(event) {
|
|
399
|
-
if (this.timeOptions) {
|
|
400
|
-
const selectElement = this.timeSelector?.nativeElement;
|
|
401
|
-
if (selectElement) {
|
|
402
|
-
selectElement.focus();
|
|
403
|
-
}
|
|
404
|
-
this.onOpenTime();
|
|
405
|
-
}
|
|
406
|
-
else {
|
|
407
|
-
this.focusOnNextChange.emit(event);
|
|
408
|
-
}
|
|
409
|
-
this.closeCalendar();
|
|
410
|
-
}
|
|
411
|
-
onMonthChange(currentMonth) {
|
|
412
|
-
this.selectedMonth = currentMonth;
|
|
413
|
-
}
|
|
414
|
-
onMouseDownDatepicker() {
|
|
415
|
-
this.openCalendar();
|
|
416
|
-
}
|
|
417
|
-
openCalendar() {
|
|
418
|
-
if (this.show || this.disabled || this.forceNotOpenCalendar) {
|
|
419
|
-
this.forceNotOpenCalendar = false;
|
|
420
|
-
return;
|
|
421
|
-
}
|
|
422
|
-
setTimeout(() => {
|
|
423
|
-
this.show = true;
|
|
424
|
-
});
|
|
425
|
-
this.activeDate = this.selectedDate;
|
|
426
|
-
clearTimeout(this.openCalendarTimeout);
|
|
427
|
-
this.openCalendarTimeout = setTimeout(() => {
|
|
428
|
-
this.input.nativeElement.select();
|
|
429
|
-
this.openChange.emit(this.show);
|
|
430
|
-
}, 100);
|
|
431
|
-
}
|
|
432
|
-
onTimeSelected(option) {
|
|
433
|
-
this.selectedTime = this.dateService.utcDate(option.value);
|
|
434
|
-
this.focusOnNextChange.emit();
|
|
435
|
-
}
|
|
436
|
-
getMainClass() {
|
|
437
|
-
return this.getContainerClass('', [(this.exists(this.timeOptions) && 'has-time'),
|
|
438
|
-
(this.exists(this.compact) && 'compact')]);
|
|
439
|
-
}
|
|
440
|
-
getLabelClass() {
|
|
441
|
-
if (this.exists(this.disabled)) {
|
|
442
|
-
return this.getClass('date-picker-label', ['disabled']);
|
|
443
|
-
}
|
|
444
|
-
else {
|
|
445
|
-
return this.getClass('date-picker-label');
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
closeCalendar() {
|
|
449
|
-
setTimeout(() => {
|
|
450
|
-
this.show = false;
|
|
451
|
-
});
|
|
452
|
-
this.openChange.emit(false);
|
|
453
|
-
}
|
|
454
|
-
selectDate(event) {
|
|
455
|
-
this.activeDate = this.utcDate;
|
|
456
|
-
if (!this.someValidDaysEqualsSelectedDay(this.activeDate)) {
|
|
457
|
-
return;
|
|
458
|
-
}
|
|
459
|
-
this.selectedDate = this.activeDate;
|
|
460
|
-
this.setFocusOnTimeSelectorOrNext(event);
|
|
461
|
-
this.closeCalendar();
|
|
462
|
-
}
|
|
463
|
-
isActiveElementMonthButtons() {
|
|
464
|
-
return document.activeElement === this.calendar.nextMonthRef.nativeElement ||
|
|
465
|
-
document.activeElement === this.calendar.previousMonthRef.nativeElement ||
|
|
466
|
-
this.calendar.monthSelectRef && document.activeElement === this.calendar.monthSelectRef.select.nativeElement;
|
|
467
|
-
}
|
|
468
|
-
setFocusOnActiveDateAsync() {
|
|
469
|
-
setTimeout(() => {
|
|
470
|
-
const elmementToFocus = this.calendar?.activeDateCell;
|
|
471
|
-
if (elmementToFocus) {
|
|
472
|
-
elmementToFocus.focus();
|
|
473
|
-
}
|
|
474
|
-
}, 200);
|
|
475
|
-
}
|
|
476
|
-
allDays() {
|
|
477
|
-
const allDays = new Array();
|
|
478
|
-
if (this.calendar) {
|
|
479
|
-
this.calendar.weeks.forEach(x => x && x.days.forEach(d => allDays.push(d)));
|
|
480
|
-
}
|
|
481
|
-
return allDays;
|
|
482
|
-
}
|
|
483
|
-
someValidDaysEqualsSelectedDay(selectedDay) {
|
|
484
|
-
return this.allDays().some(x => x
|
|
485
|
-
&& this.dateService.isSameMonth(this.dateService.utcDate(x.date), selectedDay) && this.dateService.utcDate(x.date).date && selectedDay.date
|
|
486
|
-
&& (!x.isAvailable || !x.isDisabled));
|
|
487
|
-
}
|
|
488
|
-
onOpenTime() {
|
|
489
|
-
this.showTimes = !this.showTimes;
|
|
490
|
-
setTimeout(() => {
|
|
491
|
-
this.focusedTime = this.selectedTimeOption;
|
|
492
|
-
const index = this.selectedTimeOption
|
|
493
|
-
? this.timeOptions.findIndex(t => t.value === this.selectedTimeOption.value)
|
|
494
|
-
: -1;
|
|
495
|
-
if (index >= 0) {
|
|
496
|
-
this.timerListFocus(index);
|
|
497
|
-
}
|
|
498
|
-
});
|
|
499
|
-
}
|
|
500
|
-
timeFocusNext() {
|
|
501
|
-
const len = this.timeOptions.length;
|
|
502
|
-
if (!len)
|
|
503
|
-
return;
|
|
504
|
-
const i = this.focusedTime ? this.timeOptions.findIndex(t => t.value === this.focusedTime.value) : -1;
|
|
505
|
-
const nextIndex = i === -1 ? 0 : (i + 1) % len;
|
|
506
|
-
this.focusedTime = this.timeOptions[nextIndex];
|
|
507
|
-
this.timerListFocus(nextIndex);
|
|
508
|
-
}
|
|
509
|
-
timeFocusPrev() {
|
|
510
|
-
const len = this.timeOptions.length;
|
|
511
|
-
if (!len)
|
|
512
|
-
return;
|
|
513
|
-
const i = this.focusedTime ? this.timeOptions.findIndex(t => t.value === this.focusedTime.value) : -1;
|
|
514
|
-
const prevIndex = i === -1 ? len - 1 : (i - 1 + len) % len;
|
|
515
|
-
this.focusedTime = this.timeOptions[prevIndex];
|
|
516
|
-
this.timerListFocus(prevIndex);
|
|
517
|
-
}
|
|
518
|
-
timerListFocus(index) {
|
|
519
|
-
this.focusedTime = this.timeOptions[index];
|
|
520
|
-
const timeElement = this.time.get(index)?.nativeElement;
|
|
521
|
-
if (timeElement) {
|
|
522
|
-
timeElement.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatepickerComponent, deps: [{ token: i1.DatePipe }, { token: i2.DateHelper }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
526
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DatepickerComponent, selector: "nas-datepicker", inputs: { id: "id", ariaLabelBackdrop: "ariaLabelBackdrop", disableBackdrop: "disableBackdrop", noAvailableFlightsLabel: "noAvailableFlightsLabel", availableFlightsLabel: "availableFlightsLabel", disablePastSelection: "disablePastSelection", lowerLimitDate: "lowerLimitDate", availability: "availability", availableDates: "availableDates", disabled: "disabled", placeholder: "placeholder", required: "required", ariaDescribedby: "ariaDescribedby", ariaLabel: "ariaLabel", dateDisplayFormat: "dateDisplayFormat", timeDisplayFormat: "timeDisplayFormat", locale: "locale", compact: "compact", nasFormGroup: "nasFormGroup", nasFormControlName: "nasFormControlName", times: "times", open: "open", selectedMonth: "selectedMonth", selectedDate: "selectedDate", selectedTime: "selectedTime", ariaLabelPreviousMonth: "ariaLabelPreviousMonth", ariaLabelNextMonth: "ariaLabelNextMonth", timepickerLabel: "timepickerLabel" }, outputs: { selectedDateChange: "selectedDateChange", selectedMonthChange: "selectedMonthChange", openChange: "openChange", focusOnNextChange: "focusOnNextChange", focusOnPreviousChange: "focusOnPreviousChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "calendar", first: true, predicate: ["calendar"], descendants: true }, { propertyName: "datePickerContent", first: true, predicate: ["datePickerContent"], descendants: true }, { propertyName: "timeSelector", first: true, predicate: ["timeSelector"], descendants: true }, { propertyName: "time", predicate: ["time"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<label [nasClass]=\"getMainClass()\">\n <div [nasClass]=\"getClass('date-picker-content')\">\n <div [nasClass]=\"getClass('date-picker-wrapper', show && 'active')\">\n <div [nasClass]=\"getClass('controls', [show && 'active', model && 'filled'])\"\n (mousedown)=\"onMouseDownDatepicker()\">\n <div #datePickerContent [nasClass]=\"getLabelClass()\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <input #input [id]=\"inputId\" [nasClass]=\"getClass('date-picker')\" [required]=\"required\" [disabled]=\"disabled\"\n [attr.placeholder]=\"placeholder\" [attr.aria-label]=\"ariaLabel\" [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-required]=\"required\" [attr.aria-haspopup]=\"true\" (keydown.tab)=\"selectDate($event)\"\n (keydown.shift.tab)=\"onInputKeydownShiftTab($event)\" (keydown.enter)=\"selectDate($event)\"\n (keydown.arrowdown)=\"onCalendarKeyDown($event)\" (keydown.arrowleft)=\"onCalendarKeyDown($event)\"\n (keydown.arrowright)=\"onCalendarKeyDown($event)\" (keydown.arrowup)=\"onCalendarKeyDown($event)\"\n (focus)=\"openCalendar()\" [(ngModel)]=\"model\" />\n </div>\n <div [nasClass]=\"getClass('calendar-icon')\">\n <nas-icon *ngIf=\"exists(disabled); else regularIcon\" [icon]=\"'calendar--disabled'\"\n [ngStyle]=\"{'pointer-events': 'none'}\">\n </nas-icon>\n <ng-template #regularIcon>\n <nas-icon icon=\"calendar\" (click)=\"openCalendar()\">\n </nas-icon>\n </ng-template>\n </div>\n <nas-calendar #calendar *ngIf=\"show && !showTimes\" [id]=\"inputId\" [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlName]=\"nasFormControlName\" [dateDisplayFormat]=\"dateDisplayFormat\"\n [noAvailableFlightsLabel]=\"noAvailableFlightsLabel\" [availableFlightsLabel]=\"availableFlightsLabel\"\n [availability]=\"exists(availability)\" [availableDates]=\"availableDates\" [lowerLimitDate]=\"lowerLimitDate\"\n [disablePastSelection]=\"exists(disablePastSelection)\" [locale]=\"locale\"\n [ariaLabelPreviousMonth]=\"ariaLabelPreviousMonth\" [ariaLabelNextMonth]=\"ariaLabelNextMonth\"\n [(activeDate)]=\"activeDate\" [(selectedDate)]=\"selectedDate\"\n (focusOnNextChange)=\"setFocusOnTimeSelectorOrNext($event)\" (keydown)=\"onCalendarKeyDown($event)\"\n (monthChange)=\"onMonthChange($event)\">\n </nas-calendar>\n </div>\n <nas-backdrop [nasClass]=\"getClass('backdrop')\" [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [(showBackdrop)]=\"showBackdrop\"></nas-backdrop>\n </div>\n</label>\n<div *ngIf=\"timeOptions\" [nasClass]=\"getClass('time-selector-wrapper')\">\n <nas-backdrop [nasClass]=\"getClass('backdrop')\" [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [(showBackdrop)]=\"showTimes\"></nas-backdrop>\n <button #timeSelector [nasClass]=\"getClass('time-picker', showTimes && 'active')\" (keydown)=\"onTimeSelectorKeydown($event)\"\n [style.z-index]=\"!showTimes ? 0 : '4'\" (click)=\"onOpenTime()\">\n <div [nasClass]=\"getClass('time-details')\">\n <p *ngIf=\"timepickerLabel\" [nasClass]=\"getClass('time-details', 'label')\">{{timepickerLabel}}</p>\n <p [nasClass]=\"getClass('time-details--time')\">{{selectedTimeOption?.title}}</p>\n </div>\n <div *ngIf=\"showTimes\" [nasClass]=\"getClass('times-wrapper')\">\n <span *ngFor=\"let time of timeOptions\" [nasClass]=\"getClass('time-item', focusedTime == time && 'focus')\" (click)=\"onTimeSelected(time)\"\n #time>{{time?.title}}</span>\n </div>\n </button>\n</div>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}:host{display:flex}.nas-datepicker{position:relative;top:0;left:0;width:100%;height:100%;overflow-x:visible;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:12px 16px;max-height:98vh;overflow-y:visible;margin-bottom:8px}.nas-datepicker__date-picker-wrapper{position:relative;z-index:0}.nas-datepicker__date-picker-wrapper--active{z-index:3}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker{display:block;width:100%;height:35px;padding:0 16px 9px;border:0;border-radius:0;transition:all .2s cubic-bezier(0,0,.1,1);font-family:inherit;outline:0;-webkit-appearance:none;appearance:none;box-sizing:border-box;color:#15273f;font-family:NorwegianTextPro,Arial,Helvetica Neue,Helvetica,sans-serif;font-weight:400;font-size:16px;line-height:24px;position:relative;z-index:3;background-color:inherit}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker[disabled]{color:#6f6f6f;background-color:#fff}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker:-moz-placeholder{line-height:normal}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker::-moz-placeholder{line-height:normal}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker:-ms-input-placeholder{line-height:normal}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker::-webkit-input-placeholder{line-height:normal}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker:focus~.nas-datepicker__input-line{border-color:#15273f}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker--active{background-color:#ebf4ff;border-color:#15273f}.nas-datepicker__date-picker-wrapper .nas-datepicker__calendar-icon{position:relative;margin:-44px 16px 0 0;vertical-align:middle;cursor:pointer;z-index:3;float:right}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker-label{padding:9px 16px 0;position:relative;z-index:3;color:#15273f;font-family:NorwegianTextPro,Arial,Helvetica Neue,Helvetica,sans-serif;font-weight:700;font-size:14px;line-height:20px;background-color:inherit;display:flex}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker-label--disabled{color:#6f6f6f}.nas-datepicker__date-picker-wrapper nas-calendar{position:absolute;top:66px;vertical-align:middle;right:0;z-index:4}@media (min-width: 640px){.nas-datepicker__date-picker-wrapper nas-calendar{right:-15px}}.nas-datepicker__date-picker-wrapper .nas-datepicker__controls{border:2px solid #6F6F6F;background-color:#fff}.nas-datepicker__date-picker-wrapper .nas-datepicker__controls--active{background-color:#ebf4ff;border-color:#15273f}.nas-datepicker__date-picker-wrapper .nas-datepicker__controls--filled{border-color:#15273f}.nas-datepicker__times-wrapper{display:flex;flex-direction:column;border-left:2px solid #15273F;border-right:2px solid #15273F;border-bottom:2px solid #15273F;position:absolute;width:140px;top:66px;left:-2px;z-index:4;overflow-y:scroll;scrollbar-width:none;max-height:320px}.nas-datepicker__time-item{padding:12px 16px;text-align:left;background-color:#fff;font-weight:700;border-top:2px solid #E9E7E4;border-bottom:2px solid #FFFFFF}.nas-datepicker__time-item--focus,.nas-datepicker__time-item:focus,.nas-datepicker__time-item:hover{background-color:#f8f8f8;border-top:2px solid #15273F;border-bottom:2px solid #15273F}.nas-datepicker__time-item--focus:first-child,.nas-datepicker__time-item:focus:first-child,.nas-datepicker__time-item:hover:first-child{border-top:2px solid #FFFFFF}.nas-datepicker__time-selector-wrapper{padding:0 0 8px 8px;position:relative}.nas-datepicker__time-details{padding:9px 0 0 16px;text-align:left}.nas-datepicker__time-details p{margin:0}.nas-datepicker__time-details--label{padding:0;font-weight:700;font-size:14px;line-height:20px}.nas-datepicker__time-picker{position:relative;z-index:4;display:flex;border:2px solid #15273F;background-color:#fff;height:68px;width:140px}.nas-datepicker__time-picker:after{content:\"\";position:absolute;display:inline-block;pointer-events:none;z-index:3;bottom:18px;right:12px;width:24px;height:24px;background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22%3E%3Cpath fill-rule%3D%22evenodd%22 clip-rule%3D%22evenodd%22 d%3D%22M3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12ZM12 1C5.92487 1 1 5.92487 1 12C1 18.0751 5.92487 23 12 23C18.0751 23 23 18.0751 23 12C23 5.92487 18.0751 1 12 1ZM13 6C13 5.44772 12.5523 5 12 5C11.4477 5 11 5.44772 11 6V12C11 12.3788 11.214 12.725 11.5528 12.8944L15.5528 14.8944C16.0468 15.1414 16.6474 14.9412 16.8944 14.4472C17.1414 13.9532 16.9412 13.3526 16.4472 13.1056L13 11.382V6Z%22 fill%3D%22%2315273F%22%2F%3E%3C%2Fsvg%3E\") 0 0 no-repeat}.nas-datepicker__time-picker--active{background-color:#ebf4ff}.nas-datepicker__time-selector-wrapper nas-select{display:flex}.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select{margin-bottom:0;margin-left:3px}.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select:after{bottom:26px}.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select select{border:3px solid #FFFFFF;background-color:#fff;height:64px}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select select{height:60px}}.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select select:focus{border-color:#15273f}.nas-datepicker--has-time{padding-right:3px}.nas-datepicker nas-spinner{position:absolute;top:300px;left:45%;right:45%}.nas-datepicker__backdrop{position:relative;z-index:1}.nas-datepicker--compact{padding:0;margin-bottom:6px}@keyframes datepicker-backdrop{0%{opacity:0}}@keyframes timepicker-backdrop{0%{opacity:0}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.IconComponent, selector: "nas-icon", inputs: ["icon", "type", "isIndicator", "lightCircularBackground", "cssClass"] }, { kind: "directive", type: i4.NasClassDirective, selector: "[nasClass]", inputs: ["nasClass", "attr.class"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.BackdropComponent, selector: "nas-backdrop", inputs: ["showBackdrop", "ariaLabelBackdrop"], outputs: ["showBackdropChange"] }, { kind: "component", type: i7.CalendarComponent, selector: "nas-calendar", inputs: ["id", "noAvailableFlightsLabel", "availableFlightsLabel", "disablePastSelection", "lowerLimitDate", "date", "weekStart", "displayWeekNumbers", "availability", "locale", "availableDates", "activeDate", "selectedDate", "nasFormGroup", "nasFormControlName", "dateDisplayFormat", "ariaLabelPreviousMonth", "ariaLabelNextMonth"], outputs: ["monthChange", "focusOnNextChange", "selectedDateChange", "activeDateChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
527
|
-
}
|
|
528
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatepickerComponent, decorators: [{
|
|
529
|
-
type: Component,
|
|
530
|
-
args: [{ selector: 'nas-datepicker', encapsulation: ViewEncapsulation.None, template: "<label [nasClass]=\"getMainClass()\">\n <div [nasClass]=\"getClass('date-picker-content')\">\n <div [nasClass]=\"getClass('date-picker-wrapper', show && 'active')\">\n <div [nasClass]=\"getClass('controls', [show && 'active', model && 'filled'])\"\n (mousedown)=\"onMouseDownDatepicker()\">\n <div #datePickerContent [nasClass]=\"getLabelClass()\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <input #input [id]=\"inputId\" [nasClass]=\"getClass('date-picker')\" [required]=\"required\" [disabled]=\"disabled\"\n [attr.placeholder]=\"placeholder\" [attr.aria-label]=\"ariaLabel\" [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-required]=\"required\" [attr.aria-haspopup]=\"true\" (keydown.tab)=\"selectDate($event)\"\n (keydown.shift.tab)=\"onInputKeydownShiftTab($event)\" (keydown.enter)=\"selectDate($event)\"\n (keydown.arrowdown)=\"onCalendarKeyDown($event)\" (keydown.arrowleft)=\"onCalendarKeyDown($event)\"\n (keydown.arrowright)=\"onCalendarKeyDown($event)\" (keydown.arrowup)=\"onCalendarKeyDown($event)\"\n (focus)=\"openCalendar()\" [(ngModel)]=\"model\" />\n </div>\n <div [nasClass]=\"getClass('calendar-icon')\">\n <nas-icon *ngIf=\"exists(disabled); else regularIcon\" [icon]=\"'calendar--disabled'\"\n [ngStyle]=\"{'pointer-events': 'none'}\">\n </nas-icon>\n <ng-template #regularIcon>\n <nas-icon icon=\"calendar\" (click)=\"openCalendar()\">\n </nas-icon>\n </ng-template>\n </div>\n <nas-calendar #calendar *ngIf=\"show && !showTimes\" [id]=\"inputId\" [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlName]=\"nasFormControlName\" [dateDisplayFormat]=\"dateDisplayFormat\"\n [noAvailableFlightsLabel]=\"noAvailableFlightsLabel\" [availableFlightsLabel]=\"availableFlightsLabel\"\n [availability]=\"exists(availability)\" [availableDates]=\"availableDates\" [lowerLimitDate]=\"lowerLimitDate\"\n [disablePastSelection]=\"exists(disablePastSelection)\" [locale]=\"locale\"\n [ariaLabelPreviousMonth]=\"ariaLabelPreviousMonth\" [ariaLabelNextMonth]=\"ariaLabelNextMonth\"\n [(activeDate)]=\"activeDate\" [(selectedDate)]=\"selectedDate\"\n (focusOnNextChange)=\"setFocusOnTimeSelectorOrNext($event)\" (keydown)=\"onCalendarKeyDown($event)\"\n (monthChange)=\"onMonthChange($event)\">\n </nas-calendar>\n </div>\n <nas-backdrop [nasClass]=\"getClass('backdrop')\" [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [(showBackdrop)]=\"showBackdrop\"></nas-backdrop>\n </div>\n</label>\n<div *ngIf=\"timeOptions\" [nasClass]=\"getClass('time-selector-wrapper')\">\n <nas-backdrop [nasClass]=\"getClass('backdrop')\" [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [(showBackdrop)]=\"showTimes\"></nas-backdrop>\n <button #timeSelector [nasClass]=\"getClass('time-picker', showTimes && 'active')\" (keydown)=\"onTimeSelectorKeydown($event)\"\n [style.z-index]=\"!showTimes ? 0 : '4'\" (click)=\"onOpenTime()\">\n <div [nasClass]=\"getClass('time-details')\">\n <p *ngIf=\"timepickerLabel\" [nasClass]=\"getClass('time-details', 'label')\">{{timepickerLabel}}</p>\n <p [nasClass]=\"getClass('time-details--time')\">{{selectedTimeOption?.title}}</p>\n </div>\n <div *ngIf=\"showTimes\" [nasClass]=\"getClass('times-wrapper')\">\n <span *ngFor=\"let time of timeOptions\" [nasClass]=\"getClass('time-item', focusedTime == time && 'focus')\" (click)=\"onTimeSelected(time)\"\n #time>{{time?.title}}</span>\n </div>\n </button>\n</div>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>", styles: ["@keyframes fade-in{0%{opacity:0}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-out{to{opacity:0}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}:host{display:flex}.nas-datepicker{position:relative;top:0;left:0;width:100%;height:100%;overflow-x:visible;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:12px 16px;max-height:98vh;overflow-y:visible;margin-bottom:8px}.nas-datepicker__date-picker-wrapper{position:relative;z-index:0}.nas-datepicker__date-picker-wrapper--active{z-index:3}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker{display:block;width:100%;height:35px;padding:0 16px 9px;border:0;border-radius:0;transition:all .2s cubic-bezier(0,0,.1,1);font-family:inherit;outline:0;-webkit-appearance:none;appearance:none;box-sizing:border-box;color:#15273f;font-family:NorwegianTextPro,Arial,Helvetica Neue,Helvetica,sans-serif;font-weight:400;font-size:16px;line-height:24px;position:relative;z-index:3;background-color:inherit}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker[disabled]{color:#6f6f6f;background-color:#fff}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker:-moz-placeholder{line-height:normal}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker::-moz-placeholder{line-height:normal}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker:-ms-input-placeholder{line-height:normal}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker::-webkit-input-placeholder{line-height:normal}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker:focus~.nas-datepicker__input-line{border-color:#15273f}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker--active{background-color:#ebf4ff;border-color:#15273f}.nas-datepicker__date-picker-wrapper .nas-datepicker__calendar-icon{position:relative;margin:-44px 16px 0 0;vertical-align:middle;cursor:pointer;z-index:3;float:right}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker-label{padding:9px 16px 0;position:relative;z-index:3;color:#15273f;font-family:NorwegianTextPro,Arial,Helvetica Neue,Helvetica,sans-serif;font-weight:700;font-size:14px;line-height:20px;background-color:inherit;display:flex}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker-label--disabled{color:#6f6f6f}.nas-datepicker__date-picker-wrapper nas-calendar{position:absolute;top:66px;vertical-align:middle;right:0;z-index:4}@media (min-width: 640px){.nas-datepicker__date-picker-wrapper nas-calendar{right:-15px}}.nas-datepicker__date-picker-wrapper .nas-datepicker__controls{border:2px solid #6F6F6F;background-color:#fff}.nas-datepicker__date-picker-wrapper .nas-datepicker__controls--active{background-color:#ebf4ff;border-color:#15273f}.nas-datepicker__date-picker-wrapper .nas-datepicker__controls--filled{border-color:#15273f}.nas-datepicker__times-wrapper{display:flex;flex-direction:column;border-left:2px solid #15273F;border-right:2px solid #15273F;border-bottom:2px solid #15273F;position:absolute;width:140px;top:66px;left:-2px;z-index:4;overflow-y:scroll;scrollbar-width:none;max-height:320px}.nas-datepicker__time-item{padding:12px 16px;text-align:left;background-color:#fff;font-weight:700;border-top:2px solid #E9E7E4;border-bottom:2px solid #FFFFFF}.nas-datepicker__time-item--focus,.nas-datepicker__time-item:focus,.nas-datepicker__time-item:hover{background-color:#f8f8f8;border-top:2px solid #15273F;border-bottom:2px solid #15273F}.nas-datepicker__time-item--focus:first-child,.nas-datepicker__time-item:focus:first-child,.nas-datepicker__time-item:hover:first-child{border-top:2px solid #FFFFFF}.nas-datepicker__time-selector-wrapper{padding:0 0 8px 8px;position:relative}.nas-datepicker__time-details{padding:9px 0 0 16px;text-align:left}.nas-datepicker__time-details p{margin:0}.nas-datepicker__time-details--label{padding:0;font-weight:700;font-size:14px;line-height:20px}.nas-datepicker__time-picker{position:relative;z-index:4;display:flex;border:2px solid #15273F;background-color:#fff;height:68px;width:140px}.nas-datepicker__time-picker:after{content:\"\";position:absolute;display:inline-block;pointer-events:none;z-index:3;bottom:18px;right:12px;width:24px;height:24px;background:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22%3E%3Cpath fill-rule%3D%22evenodd%22 clip-rule%3D%22evenodd%22 d%3D%22M3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12ZM12 1C5.92487 1 1 5.92487 1 12C1 18.0751 5.92487 23 12 23C18.0751 23 23 18.0751 23 12C23 5.92487 18.0751 1 12 1ZM13 6C13 5.44772 12.5523 5 12 5C11.4477 5 11 5.44772 11 6V12C11 12.3788 11.214 12.725 11.5528 12.8944L15.5528 14.8944C16.0468 15.1414 16.6474 14.9412 16.8944 14.4472C17.1414 13.9532 16.9412 13.3526 16.4472 13.1056L13 11.382V6Z%22 fill%3D%22%2315273F%22%2F%3E%3C%2Fsvg%3E\") 0 0 no-repeat}.nas-datepicker__time-picker--active{background-color:#ebf4ff}.nas-datepicker__time-selector-wrapper nas-select{display:flex}.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select{margin-bottom:0;margin-left:3px}.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select:after{bottom:26px}.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select select{border:3px solid #FFFFFF;background-color:#fff;height:64px}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select select{height:60px}}.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select select:focus{border-color:#15273f}.nas-datepicker--has-time{padding-right:3px}.nas-datepicker nas-spinner{position:absolute;top:300px;left:45%;right:45%}.nas-datepicker__backdrop{position:relative;z-index:1}.nas-datepicker--compact{padding:0;margin-bottom:6px}@keyframes datepicker-backdrop{0%{opacity:0}}@keyframes timepicker-backdrop{0%{opacity:0}}\n"] }]
|
|
531
|
-
}], ctorParameters: function () { return [{ type: i1.DatePipe }, { type: i2.DateHelper }]; }, propDecorators: { input: [{
|
|
532
|
-
type: ViewChild,
|
|
533
|
-
args: ['input']
|
|
534
|
-
}], calendar: [{
|
|
535
|
-
type: ViewChild,
|
|
536
|
-
args: ['calendar']
|
|
537
|
-
}], datePickerContent: [{
|
|
538
|
-
type: ViewChild,
|
|
539
|
-
args: ['datePickerContent']
|
|
540
|
-
}], timeSelector: [{
|
|
541
|
-
type: ViewChild,
|
|
542
|
-
args: ['timeSelector']
|
|
543
|
-
}], time: [{
|
|
544
|
-
type: ViewChildren,
|
|
545
|
-
args: ['time']
|
|
546
|
-
}], id: [{
|
|
547
|
-
type: Input
|
|
548
|
-
}], ariaLabelBackdrop: [{
|
|
549
|
-
type: Input
|
|
550
|
-
}], disableBackdrop: [{
|
|
551
|
-
type: Input
|
|
552
|
-
}], noAvailableFlightsLabel: [{
|
|
553
|
-
type: Input
|
|
554
|
-
}], availableFlightsLabel: [{
|
|
555
|
-
type: Input
|
|
556
|
-
}], disablePastSelection: [{
|
|
557
|
-
type: Input
|
|
558
|
-
}], lowerLimitDate: [{
|
|
559
|
-
type: Input
|
|
560
|
-
}], availability: [{
|
|
561
|
-
type: Input
|
|
562
|
-
}], availableDates: [{
|
|
563
|
-
type: Input
|
|
564
|
-
}], disabled: [{
|
|
565
|
-
type: Input
|
|
566
|
-
}], placeholder: [{
|
|
567
|
-
type: Input
|
|
568
|
-
}], required: [{
|
|
569
|
-
type: Input
|
|
570
|
-
}], ariaDescribedby: [{
|
|
571
|
-
type: Input
|
|
572
|
-
}], ariaLabel: [{
|
|
573
|
-
type: Input
|
|
574
|
-
}], dateDisplayFormat: [{
|
|
575
|
-
type: Input
|
|
576
|
-
}], timeDisplayFormat: [{
|
|
577
|
-
type: Input
|
|
578
|
-
}], locale: [{
|
|
579
|
-
type: Input
|
|
580
|
-
}], compact: [{
|
|
581
|
-
type: Input
|
|
582
|
-
}], nasFormGroup: [{
|
|
583
|
-
type: Input
|
|
584
|
-
}], nasFormControlName: [{
|
|
585
|
-
type: Input
|
|
586
|
-
}], times: [{
|
|
587
|
-
type: Input
|
|
588
|
-
}], open: [{
|
|
589
|
-
type: Input
|
|
590
|
-
}], selectedMonth: [{
|
|
591
|
-
type: Input
|
|
592
|
-
}], selectedDate: [{
|
|
593
|
-
type: Input
|
|
594
|
-
}], selectedTime: [{
|
|
595
|
-
type: Input
|
|
596
|
-
}], ariaLabelPreviousMonth: [{
|
|
597
|
-
type: Input
|
|
598
|
-
}], ariaLabelNextMonth: [{
|
|
599
|
-
type: Input
|
|
600
|
-
}], timepickerLabel: [{
|
|
601
|
-
type: Input
|
|
602
|
-
}], selectedDateChange: [{
|
|
603
|
-
type: Output
|
|
604
|
-
}], selectedMonthChange: [{
|
|
605
|
-
type: Output
|
|
606
|
-
}], openChange: [{
|
|
607
|
-
type: Output
|
|
608
|
-
}], focusOnNextChange: [{
|
|
609
|
-
type: Output
|
|
610
|
-
}], focusOnPreviousChange: [{
|
|
611
|
-
type: Output
|
|
612
|
-
}] } });
|
|
613
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFHakIsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7O0FBSTNELElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVmOzs7R0FHRztBQU9ILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxnQkFBZ0I7SUFTdkQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNELElBQUksWUFBWSxDQUFDLEtBQWM7UUFDN0IsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtZQUN2QixPQUFPO1NBQ1I7UUFFRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBbUREOzs7O09BSUc7SUFDSCxJQUNJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENB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O2dCQU9HLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFPRyxVQUFVO3NCQUFuQixNQUFNO2dCQU9HLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFPRyxxQkFBcUI7c0JBQTlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgTm9yd2VnaWFuIEFpciBTaHV0dGxlLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF5TW9kZWwgfSBmcm9tICcuL2NhbGVuZGFyL21vZGVscy9kYXkubW9kZWwnO1xuaW1wb3J0IHsgU2VsZWN0T3B0aW9uTW9kZWwgfSBmcm9tICcuL2NhbGVuZGFyL21vZGVscy9zZWxlY3Qtb3B0aW9uLm1vZGVsJztcbmltcG9ydCB7IE5hc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UvbmFzLWNvbXBvbmVudC5iYXNlJztcbmltcG9ydCB7IENsYXNzTW9kZWwgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9jbGFzcy5tb2RlbCc7XG5pbXBvcnQgeyBVdGNEYXRlIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvdXRjLWRhdGUubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZUhlbHBlciB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvZGF0ZS9kYXRlLWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IENhbGVuZGFyRGF0ZU1vZGVsIH0gZnJvbSAnLi9jYWxlbmRhci9tb2RlbHMvY2FsZW5kYXItZGF0ZS5tb2RlbCc7XG5cbmxldCBuZXh0SWQgPSAwO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogTm9yd2VnaWFuIERhdGUgUGlja2VyIENvbXBvbmVudCB8IEZ1bmN0aW9uYWwgfCBOZXcgZGVzaWduXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25hcy1kYXRlcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlckNvbXBvbmVudCBleHRlbmRzIE5hc0NvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBPbkluaXQge1xuICB0aW1lT3B0aW9uczogQXJyYXk8U2VsZWN0T3B0aW9uTW9kZWw+O1xuICBtb2RlbDogc3RyaW5nO1xuICB1dGNEYXRlOiBVdGNEYXRlO1xuICBzaG93ID0gZmFsc2U7XG4gIHNlbGVjdGVkVGltZU9wdGlvbjogU2VsZWN0T3B0aW9uTW9kZWw7XG4gIHNob3dUaW1lcyA9IGZhbHNlO1xuICBmb2N1c2VkVGltZTogU2VsZWN0T3B0aW9uTW9kZWw7XG5cbiAgZ2V0IHNob3dCYWNrZHJvcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93ICYmICF0aGlzLmV4aXN0cyh0aGlzLmRpc2FibGVCYWNrZHJvcCk7XG4gIH1cbiAgc2V0IHNob3dCYWNrZHJvcCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLnNob3cgPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNob3cgPSB2YWx1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JykgaW5wdXQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyJykgY2FsZW5kYXI6IENhbGVuZGFyQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyQ29udGVudCcpIGRhdGVQaWNrZXJDb250ZW50OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCd0aW1lU2VsZWN0b3InKSB0aW1lU2VsZWN0b3I6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGRyZW4oJ3RpbWUnKSB0aW1lOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+O1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQHJlcXVpcmVkXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgSUQgb2YgdGhlIG5hdGl2ZSBpbnB1dCBlbGVtZW50XG4gICAqL1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFkZHMgJ2FyaWEtbGFiZWwnIHRvIHRoZSBiYWNrZHJvcHMuXG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxCYWNrZHJvcDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgYm9vbGVhbiB2YWx1ZSB3aGVuIHNldCB3aWxsIGRpc2FibGUgc2hvd2luZyB0aGUgYmFja2Ryb3Agb24gcG9wdXAgb3BlblxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZUJhY2tkcm9wOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIExhYmVsIGZvciBubyBhdmFpbGFibGUgZmxpZ2h0cy5cbiAgICovXG4gIEBJbnB1dCgpIG5vQXZhaWxhYmxlRmxpZ2h0c0xhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTGFiZWwgZm9yIGF2YWlsYWJsZSBmbGlnaHRzLlxuICAgKi9cbiAgQElucHV0KCkgYXZhaWxhYmxlRmxpZ2h0c0xhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGlzYWJsZSBwb3NzaWJpbGl0eSB0byBzZWxlY3QgZGF0ZXMgaW4gdGhlIHBhc3QuXG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlUGFzdFNlbGVjdGlvbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgbG93ZXN0IGRhdGUgYWxsb3dlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBsb3dlckxpbWl0RGF0ZSgpOiBVdGNEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5sb3dlckxpbWl0RGF0ZVZhbHVlO1xuICB9XG4gIHNldCBsb3dlckxpbWl0RGF0ZShkYXRlOiBVdGNEYXRlKSB7XG4gICAgdGhpcy5sb3dlckxpbWl0RGF0ZVZhbHVlID0gZGF0ZTtcblxuICAgIGlmICh0aGlzLmRhdGVTZXJ2aWNlLmlzTGVzc1RoYW4odGhpcy5zZWxlY3RlZERhdGUsIGRhdGUsIGZhbHNlLCB0cnVlLCB0cnVlKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBkYXRlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgdGhlIGRhdGVwaWNrZXIgaW4gYXZhaWxhYmlsaXR5IG1vZGUgd2hlcmUgYXZhaWxhYmxlIGRhdGVzIGNhbiBiZSBhZGRlZC5cbiAgICovXG4gIEBJbnB1dCgpIGF2YWlsYWJpbGl0eTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBhcnJheSB3aXRoIGFsbCB0aGUgYXZhaWxhYmxlIChzZWxlY3RhYmxlKSBkYXRlcyBvZiB0aGUgbW9udGguXG4gICAqL1xuICBASW5wdXQoKSBhdmFpbGFibGVEYXRlczogQXJyYXk8VXRjRGF0ZT47XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogYm9vbGVhbiB2YWx1ZSB0byBkaXNhYmxlIG9yIGVuYWJsZSB0aGUgaW5wdXQgb2YgdGhlIGRhdGUgcGlja2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkVmFsdWU7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZFZhbHVlID0gdmFsdWU7XG5cbiAgICBpZiAodGhpcy5uYXNGb3JtR3JvdXAgJiYgdGhpcy5uYXNGb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5uYXNGb3JtR3JvdXAuZ2V0KHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lKTtcblxuICAgICAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICBjb250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250cm9sLmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIHBsYWNlIGhvbGRlciBzdHJpbmcgZm9yIHRoZSBpbnB1dCBmb3IgZGF0ZSBwaWNrZXIuXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIHRoaXMgd2lsbCBzZXQgdGhlIHJlcXVpcmVkIGF0dHJpYnV0ZSBvbiB0aGUgaW5wdXQgc28gc3VlciBoYXMgdG8gZGF0ZS1waWNrZXIgdGhlIGRhdGUuXG4gICAqL1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBJcyB1c2VkIHRvIGluZGljYXRlIHRoZSBJRHMgb2YgdGhlIGVsZW1lbnRzIHRoYXQgZGVzY3JpYmUgdGhlIGRhdGUgcGlja2VyIGlucHV0LlxuICAgKi9cbiAgQElucHV0KCkgYXJpYURlc2NyaWJlZGJ5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQXJpYSBsYWJlbCBmb3IgaW5wdXQgdGhhdCBlbmFibGVzIGRhdGUtcGlja2VyIHBvcHVwIG9uY2UgY2xpY2tlZC4gRm9yIGFjY2Vzc2liaWxpdHkgd2ViIHN0YW5kYXJkcy5cbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBkaXNwbGF5IGZvcm1hdCBvZiB0aGUgZGF0ZSB3aGVuIHVzZXIgaGFzIHNlbGVjdGVkIHRoZSBkYXRlIGFuZCBpdCBpcyBiZWluZyBzaG93biBpbiB0aGUgaW5wdXQgYm94IGZvciB0aGUgZGF0ZSBwaWNrZXIuXG4gICAqIFBsZWFzZSBsb29rIGF0IHRoZSBhbmd1bGFyIERhdGUgcGlwZSBmb3IgdmFsaWQgZm9ybWF0cyBhbmQgdmFyaWF0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpIGRhdGVEaXNwbGF5Rm9ybWF0ID0gJ0VFRUUgZCwgTU1NTSB5eXl5JztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgdGltZSBkaXNwbGF5IGZvcm1hdC5cbiAgICovXG4gIEBJbnB1dCgpIHRpbWVEaXNwbGF5Rm9ybWF0ID0gJ0hIOm1tJztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIGxvY2FsZSBjb2RlIGZvciB0aGUgbG9jYWxlIGZvcm1hdCBydWxlcyB0byB1c2UuIFdoZW4gbm90IHN1cHBsaWVkLCB1c2VzIHRoZSB2YWx1ZSBvZiBMT0NBTEVfSUQsIHdoaWNoIGlzIGVuLVVTIGJ5IGRlZmF1bHQuXG4gICAqIFRoaXMgcmVxdWlyZXMgdGhhdCByZWdpc3RlckxvY2FsZURhdGEgaXMgY2FsbGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgbG9jYWxlLlxuICAgKi9cbiAgQElucHV0KCkgbG9jYWxlID0gJ2VuLVVTJztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIG1vZGlmaWVyIHRvIHJlbW92ZSB0aGUgcGFkZGluZyBhbmQgbWFyZ2lucyBhcm91bmQgdGhlIGVsZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKSBjb21wYWN0OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFkZHMgdGhlIHBhcmVudCdzIGZvcm0gZ3JvdXAuXG4gICAqIEl0IHJlcXVpcmVzIHRoYXQgdGhlIGNvbnN1bWVyIGluY2x1ZGVkIFJlYWN0aXZlRm9ybXNNb2R1bGUgaW4gaXQncyBtb2R1bGUuXG4gICAqIEl0IGlzIHJlcXVpZXJlZCB0byBiZSBmaWxsZWQgaWYgbmFzRm9ybUNvbnRyb2xOYW1lIGFkZGVkLlxuICAgKi9cbiAgQElucHV0KCkgbmFzRm9ybUdyb3VwOiBGb3JtR3JvdXA7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyBhIGZvcm1Db250cm9sTmFtZSBkaXJlY3RpdmUgdG8gdGhlIGlucHV0LlxuICAgKiBJdCByZXF1aXJlcyB0aGF0IHRoZSBjb25zdW1lciBpbmNsdWRlZCBSZWFjdGl2ZUZvcm1zTW9kdWxlIGluIGl0J3MgbW9kdWxlLlxuICAgKiBJdCByZXF1aWVycyB0aGF0IHRoZSBuYXNGb3JtR3JvdXAgaW5wdXQgaXMgZmlsbGVkLlxuICAgKi9cbiAgQElucHV0KCkgbmFzRm9ybUNvbnRyb2xOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gYXJyYXkgb2YgdGltZXMgdG8gYmUgYWRkZWQgaW4gdGhlIHRpbWUgc2VsZWN0b3IuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgdGltZXMoKTogQXJyYXk8VXRjRGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLnRpbWVzVmFsdWU7XG4gIH1cbiAgc2V0IHRpbWVzKHRpbWVzOiBBcnJheTxVdGNEYXRlPikge1xuICAgIGlmICghdGltZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRpbWVzVmFsdWUgPSB0aW1lcztcbiAgICB0aGlzLnRpbWVPcHRpb25zID0gdGltZXMubWFwKHggPT4ge1xuICAgICAgeC55ZWFyID0gbmV3IERhdGUoKS5nZXRVVENGdWxsWWVhcigpO1xuICAgICAgY29uc3Qgb3B0aW9uOiBTZWxlY3RPcHRpb25Nb2RlbCA9IHtcbiAgICAgICAgdGl0bGU6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuZGF0ZVNlcnZpY2UuZGF0ZSh4KSwgdGhpcy50aW1lRGlzcGxheUZvcm1hdCwgJ1VUQycsIHRoaXMubG9jYWxlKSxcbiAgICAgICAgdmFsdWU6IHRoaXMuZGF0ZVNlcnZpY2UuZGF0ZSh4KS50b0lTT1N0cmluZygpXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gb3B0aW9uO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kYXRlRGlzcGxheUZvcm1hdCA9ICdtZWRpdW1EYXRlJztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBjYWxlbmRhciBpcyBvcGVuIG9yIGNsb3NlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBvcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9wZW5WYWx1ZTtcbiAgfVxuICBzZXQgb3BlbihvcGVuOiBib29sZWFuKSB7XG4gICAgaWYgKG9wZW4gPT09IHRoaXMub3BlblZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vcGVuVmFsdWUgPSBvcGVuO1xuXG4gICAgaWYgKG9wZW4pIHtcbiAgICAgIHRoaXMub3BlbkNhbGVuZGFyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xvc2VDYWxlbmRhcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldCBzZWxlY3RlZCBtb250aC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBzZWxlY3RlZE1vbnRoKCk6IFV0Y0RhdGUge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTW9udGhWYWx1ZTtcbiAgfVxuICBzZXQgc2VsZWN0ZWRNb250aChtb250aDogVXRjRGF0ZSkge1xuICAgIGlmICghbW9udGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlU2VydmljZS5pc1NhbWVNb250aCh0aGlzLnNlbGVjdGVkTW9udGhWYWx1ZSwgbW9udGgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkTW9udGhWYWx1ZSA9IG1vbnRoO1xuICAgICAgdGhpcy5zZWxlY3RlZE1vbnRoQ2hhbmdlLmVtaXQobW9udGgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogR2V0cyBvciBzZXRzIHRoZSBzZWxlY3RlZCBEYXRlIGluIHRoZSBkYXRlIHBpY2tlci4gU2V0dGluZyB0aGlzIGRhdGUgd2lsbCBoaWdobGlnaHQgdGhlIGRhdGUgaW4gdGhlIGRhdGUgcGlja2VyXG4gICAqIGFuZCB1c2VyIGNhbiBjaGFuZ2UgaXQgYnkgY2xpY2tpbmcgZnJvbSBhbnkgb3RoZXIgZW5hYmxlZCBkYXRlc1xuICAgKiBvciBieSBuYXZpZ2F0aW5nIGJldHJ3ZWVuIG1vbnRocyBhbmQgc2VsZWN0aW5nIGZyb20gZGlmZmVyZW50IGF2YWlsYWJsZSBtb250aC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBzZWxlY3RlZERhdGUoKTogVXRjRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWREYXRlVmFsdWU7XG4gIH1cbiAgc2V0IHNlbGVjdGVkRGF0ZShkYXRlOiBVdGNEYXRlKSB7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlVmFsdWUgJiYgdGhpcy5kYXRlU2VydmljZS5pc1NhbWVEYXRlKHRoaXMuc2VsZWN0ZWREYXRlVmFsdWUsIGRhdGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRUaW1lVmFsdWUpIHtcbiAgICAgIGRhdGUgPSBuZXcgVXRjRGF0ZShkYXRlLnllYXIsIGRhdGUubW9udGgsIGRhdGUuZGF0ZSwgdGhpcy5zZWxlY3RlZFRpbWVWYWx1ZS5ob3VycywgdGhpcy5zZWxlY3RlZFRpbWVWYWx1ZS5taW51dGVzKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkRGF0ZVZhbHVlID0gZGF0ZTtcblxuICAgIGlmICh0aGlzLm5hc0Zvcm1Hcm91cCAmJiB0aGlzLm5hc0Zvcm1Db250cm9sTmFtZSkge1xuXG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5uYXNGb3JtR3JvdXAuZ2V0KHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lKTtcblxuICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgY29uc3QgY2FsZW5kYXJEYXRlOiBDYWxlbmRhckRhdGVNb2RlbCA9IHtcbiAgICAgICAgICBtb2RlbDogdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5kYXRlU2VydmljZS5kYXRlKGRhdGUpLCB0aGlzLmRhdGVEaXNwbGF5Rm9ybWF0LCAnVVRDJywgdGhpcy5sb2NhbGUpLFxuICAgICAgICAgIGRhdGU6IGRhdGVcbiAgICAgICAgfTtcblxuICAgICAgICBjb250cm9sLnBhdGNoVmFsdWUoY2FsZW5kYXJEYXRlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubW9kZWwgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmRhdGVTZXJ2aWNlLmRhdGUoZGF0ZSksIHRoaXMuZGF0ZURpc3BsYXlGb3JtYXQsICdVVEMnLCB0aGlzLmxvY2FsZSk7XG4gICAgICB0aGlzLnV0Y0RhdGUgPSBkYXRlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3RlZERhdGVDaGFuZ2UuZW1pdChkYXRlKTtcblxuICAgIGlmICh0aGlzLnNob3cpIHtcbiAgICAgIHRoaXMuY2xvc2VDYWxlbmRhcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgSW5wdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgdGhlIHNlbGVjdGVkIHRpbWUgaW4gdGhlIHRpbWUgc2VsZWN0b3IuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0ZWRUaW1lKCk6IFV0Y0RhdGUge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVGltZVZhbHVlO1xuICB9XG4gIHNldCBzZWxlY3RlZFRpbWUodGltZTogVXRjRGF0ZSkge1xuICAgIGlmICghdGltZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRUaW1lVmFsdWUgPSB0aW1lO1xuXG4gICAgaWYgKHRoaXMudGltZU9wdGlvbnMgJiYgdGhpcy50aW1lT3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB0aW1lT3B0aW9uID0gdGhpcy50aW1lT3B0aW9ucy5maW5kKHggPT4geC52YWx1ZSA9PT0gdGhpcy5kYXRlU2VydmljZS5kYXRlKHRpbWUpLnRvSVNPU3RyaW5nKCkpO1xuXG4gICAgICBpZiAodGltZU9wdGlvbikge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGltZU9wdGlvbiA9IHRpbWVPcHRpb247XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG5ldyBVdGNEYXRlKFxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZS55ZWFyLFxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZS5tb250aCxcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUuZGF0ZSxcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRpbWVWYWx1ZS5ob3VycyxcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRpbWVWYWx1ZS5taW51dGVzKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlRGF0ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgVXRjRGF0ZShcbiAgICAgICAgdGhpcy5hY3RpdmVEYXRlLnllYXIsXG4gICAgICAgIHRoaXMuYWN0aXZlRGF0ZS5tb250aCxcbiAgICAgICAgdGhpcy5hY3RpdmVEYXRlLmRhdGUsXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lVmFsdWUuaG91cnMsXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lVmFsdWUubWludXRlc1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBUklBIGxhYmVsIGZvciB0aGUgcHJldmlvdXMgbW9udGggYnV0dG9uIGluIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbFByZXZpb3VzTW9udGg6IHN0cmluZztcblxuICAvKipcbiAgICogQHByb3BlcnR5IElucHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBUklBIGxhYmVsIGZvciB0aGUgbmV4dCBtb250aCBidXR0b24gaW4gdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgQElucHV0KCkgYXJpYUxhYmVsTmV4dE1vbnRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBJbnB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyB0aGUgc3RyaW5nIHRpbWVwaWNrZXIgbGFiZWwgdGl0bGVcbiAgICovXG4gIEBJbnB1dCgpIHRpbWVwaWNrZXJMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgT3V0cHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEYXRlIHNlbGVjdGVkIGJ5IHRoZSB1c2VyIGJ5IGNsaWNraW5nIGluIGRhdGUtcGlja2VyIGRhdGUtYm94LlxuICAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdGVkRGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VXRjRGF0ZT4oKTtcblxuICAvKipcbiAgICogQHByb3BlcnR5IE91dHB1dFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTW9udGggc2VsZWN0ZWQgYnkgdGhlIHVzZXIgYnkgY2xpY2tpbmcgaW4gZHJvcCBkb3duIGZvciBtb250aCBzZWxlY3Rpb24gb3IgbW9udGggbmF2aWdhdGlvbiBidXR0b25zLlxuICAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdGVkTW9udGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFV0Y0RhdGU+KCk7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBPdXRwdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBjYWxlbmRhciBpcyBvcGVuIG9yIGNsb3NlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBAcHJvcGVydHkgT3V0cHV0XG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBXaGVuIGEgdXNlciBoYXMgYWN0aXZlbHkgY2hhbmdlZCB0aGUgZGF0ZS5cbiAgICovXG4gIEBPdXRwdXQoKSBmb2N1c09uTmV4dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudCB8IE1vdXNlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEBwcm9wZXJ0eSBPdXRwdXRcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFdoZW4gYSB1c2VyIGhhcyBwcmVzc2VkIHNoaWZ0ICsgdGFiIHRvIGdvIHRvIHByZXZpb3VzIGNvbnRyb2wuXG4gICAqL1xuICBAT3V0cHV0KCkgZm9jdXNPblByZXZpb3VzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50IHwgTW91c2VFdmVudD4oKTtcblxuICBnZXQgYWN0aXZlRGF0ZSgpOiBVdGNEYXRlIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUgJiYgdGhpcy5hY3RpdmVEYXRlVmFsdWUgJiZcbiAgICAgIHRoaXMuZGF0ZVNlcnZpY2UuaXNMZXNzVGhhbih0aGlzLmFjdGl2ZURhdGVWYWx1ZSwgdGhpcy5zZWxlY3RlZERhdGUsIGZhbHNlLCB0cnVlLCB0cnVlKSkge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlRGF0ZVZhbHVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFjdGl2ZURhdGVWYWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlRGF0ZVZhbHVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZERhdGUpIHtcbiAgICAgIHRoaXMuYWN0aXZlRGF0ZVZhbHVlID0gdGhpcy5zZWxlY3RlZERhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICB0aGlzLmFjdGl2ZURhdGVWYWx1ZSA9IG5ldyBVdGNEYXRlKG5vdy5nZXRGdWxsWWVhcigpLCBub3cuZ2V0TW9udGgoKSwgbm93LmdldERhdGUoKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFjdGl2ZURhdGVWYWx1ZTtcbiAgfVxuICBzZXQgYWN0aXZlRGF0ZShkYXRlOiBVdGNEYXRlKSB7XG4gICAgaWYgKHRoaXMubG93ZXJMaW1pdERhdGUgJiYgdGhpcy5kYXRlU2VydmljZS5pc0xlc3NUaGFuKGRhdGUsIHRoaXMubG93ZXJMaW1pdERhdGUsIGZhbHNlLCB0cnVlLCB0cnVlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZlRGF0ZVZhbHVlID0gZGF0ZTtcblxuICAgIGNsZWFyVGltZW91dCh0aGlzLmFjdGl2ZURhdGVUaW1lb3V0KTtcblxuICAgIHRoaXMuYWN0aXZlRGF0ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubW9kZWwgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmRhdGVTZXJ2aWNlLmRhdGUodGhpcy5zZWxlY3RlZERhdGUpLCB0aGlzLmRhdGVEaXNwbGF5Rm9ybWF0LCAnVVRDJywgdGhpcy5sb2NhbGUpO1xuICAgICAgdGhpcy51dGNEYXRlID0gZGF0ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBpbnB1dElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaWQgPyB0aGlzLmlkIDogYG5hcy1kYXRlcGlja2VyLSR7dGhpcy5jb21wb25lbnRJZH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQ2FsZW5kYXJUaW1lb3V0OiBhbnk7XG4gIHByaXZhdGUgYWN0aXZlRGF0ZVRpbWVvdXQ6IGFueTtcbiAgcHJpdmF0ZSBzZWxlY3RlZERhdGVWYWx1ZTogVXRjRGF0ZTtcbiAgcHJpdmF0ZSBvcGVuVmFsdWU6IGJvb2xlYW47XG4gIHByaXZhdGUgYWN0aXZlRGF0ZVZhbHVlOiBVdGNEYXRlO1xuICBwcml2YXRlIHRpbWVzVmFsdWU6IEFycmF5PFV0Y0RhdGU+O1xuICBwcml2YXRlIHNlbGVjdGVkVGltZVZhbHVlOiBVdGNEYXRlO1xuICBwcml2YXRlIHNlbGVjdGVkTW9udGhWYWx1ZTogVXRjRGF0ZTtcbiAgcHJpdmF0ZSBkaXNhYmxlZFZhbHVlOiBib29sZWFuO1xuICBwcml2YXRlIGZvcmNlTm90T3BlbkNhbGVuZGFyID0gZmFsc2U7XG4gIHByaXZhdGUgbG93ZXJMaW1pdERhdGVWYWx1ZTogVXRjRGF0ZTtcbiAgcHJpdmF0ZSBjb21wb25lbnRJZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLFxuICAgIHByaXZhdGUgZGF0ZVNlcnZpY2U6IERhdGVIZWxwZXIpIHtcbiAgICBzdXBlcignbmFzLWRhdGVwaWNrZXInKTtcbiAgICB0aGlzLmNvbXBvbmVudElkID0gbmV4dElkKys7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uYXNGb3JtR3JvdXAgJiYgdGhpcy5uYXNGb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgIHRoaXMubmFzRm9ybUdyb3VwXG4gICAgICAgIC5nZXQodGhpcy5uYXNGb3JtQ29udHJvbE5hbWUpXG4gICAgICAgIC52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMubW9kZWwgPT09IHZhbHVlPy5tb2RlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tb2RlbCA9IHZhbHVlPy5tb2RlbDtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlVmFsdWUgPSB2YWx1ZT8uZGF0ZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25JbnB1dEtleWRvd25TaGlmdFRhYihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VDYWxlbmRhcigpO1xuICAgIHRoaXMuZm9jdXNPblByZXZpb3VzQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25DYWxlbmRhcktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgY3VycmVudEFjdGl2ZURhdGUgPSB0aGlzLmFjdGl2ZURhdGUuZGF0ZTtcbiAgICBsZXQgZGF0ZTogVXRjRGF0ZTtcbiAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgIGlmICh0aGlzLmlzQWN0aXZlRWxlbWVudE1vbnRoQnV0dG9ucygpKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRBY3RpdmVEYXRlKys7XG5cbiAgICAgICAgdGhpcy5hY3RpdmVEYXRlID0gdGhpcy5kYXRlU2VydmljZS51dGNEYXRlKG5ldyBEYXRlKERhdGUuVVRDKHRoaXMuYWN0aXZlRGF0ZS55ZWFyLCB0aGlzLmFjdGl2ZURhdGUubW9udGgsIGN1cnJlbnRBY3RpdmVEYXRlKSkpO1xuICAgICAgICB0aGlzLnNldEZvY3VzT25BY3RpdmVEYXRlQXN5bmMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZUVsZW1lbnRNb250aEJ1dHRvbnMoKSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50QWN0aXZlRGF0ZS0tO1xuICAgICAgICBkYXRlID0gdGhpcy5kYXRlU2VydmljZS51dGNEYXRlKG5ldyBEYXRlKERhdGUuVVRDKHRoaXMuYWN0aXZlRGF0ZS55ZWFyLCB0aGlzLmFjdGl2ZURhdGUubW9udGgsIGN1cnJlbnRBY3RpdmVEYXRlKSkpO1xuXG4gICAgICAgIGlmICh0aGlzLmV4aXN0cyh0aGlzLmRpc2FibGVQYXN0U2VsZWN0aW9uKSAmJiB0aGlzLmRhdGVTZXJ2aWNlLmlzSW5UaGVQYXN0KGRhdGUpKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFjdGl2ZURhdGUgPSBkYXRlO1xuICAgICAgICB0aGlzLnNldEZvY3VzT25BY3RpdmVEYXRlQXN5bmMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgaWYgKHRoaXMuaXNBY3RpdmVFbGVtZW50TW9udGhCdXR0b25zKCkpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudEFjdGl2ZURhdGUgLT0gNztcbiAgICAgICAgZGF0ZSA9IHRoaXMuZGF0ZVNlcnZpY2UudXRjRGF0ZShuZXcgRGF0ZShEYXRlLlVUQyh0aGlzLmFjdGl2ZURhdGUueWVhciwgdGhpcy5hY3RpdmVEYXRlLm1vbnRoLCBjdXJyZW50QWN0aXZlRGF0ZSkpKTtcblxuICAgICAgICBpZiAodGhpcy5leGlzdHModGhpcy5kaXNhYmxlUGFzdFNlbGVjdGlvbikgJiYgdGhpcy5kYXRlU2VydmljZS5pc0luVGhlUGFzdChkYXRlKSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVEYXRlID0gZGF0ZTtcbiAgICAgICAgdGhpcy5zZXRGb2N1c09uQWN0aXZlRGF0ZUFzeW5jKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgaWYgKHRoaXMuaXNBY3RpdmVFbGVtZW50TW9udGhCdXR0b25zKCkpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudEFjdGl2ZURhdGUgKz0gNztcbiAgICAgICAgdGhpcy5hY3RpdmVEYXRlVmFsdWUgPSB0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUobmV3IERhdGUoRGF0ZS5VVEModGhpcy5hY3RpdmVEYXRlLnllYXIsIHRoaXMuYWN0aXZlRGF0ZS5tb250aCwgY3VycmVudEFjdGl2ZURhdGUpKSk7XG5cbiAgICAgICAgdGhpcy5zZXRGb2N1c09uQWN0aXZlRGF0ZUFzeW5jKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgdGhpcy5jbG9zZUNhbGVuZGFyKCk7XG5cbiAgICAgICAgdGhpcy5mb3JjZU5vdE9wZW5DYWxlbmRhciA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuaW5wdXQpIHtcbiAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgIGlmICh0aGlzLmlzQWN0aXZlRWxlbWVudE1vbnRoQnV0dG9ucygpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRGb2N1c09uVGltZVNlbGVjdG9yT3JOZXh0KGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgb25UaW1lU2VsZWN0b3JLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnVGFiJykge1xuICAgICAgdGhpcy5zaG93VGltZXMgPSBmYWxzZTtcbiAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICB0aGlzLm9wZW5DYWxlbmRhcigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mb2N1c09uTmV4dENoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgIHRoaXMudGltZUZvY3VzTmV4dCgpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgIHRoaXMudGltZUZvY3VzUHJldigpO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICB0aGlzLnNob3dUaW1lcyA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWxlY3RlZFRpbWVPcHRpb24gPSB0aGlzLmZvY3VzZWRUaW1lO1xuICAgICAgdGhpcy5mb2N1c09uTmV4dENoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICB9XG5cblxuICB9XG5cbiAgc2V0Rm9jdXNPblRpbWVTZWxlY3Rvck9yTmV4dChldmVudDogS2V5Ym9hcmRFdmVudCB8IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50aW1lT3B0aW9ucykge1xuICAgICAgY29uc3Qgc2VsZWN0RWxlbWVudCA9IHRoaXMudGltZVNlbGVjdG9yPy5uYXRpdmVFbGVtZW50O1xuICAgICAgaWYgKHNlbGVjdEVsZW1lbnQpIHtcbiAgICAgICAgc2VsZWN0RWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgICAgdGhpcy5vbk9wZW5UaW1lKClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c09uTmV4dENoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICB9XG4gICAgdGhpcy5jbG9zZUNhbGVuZGFyKCk7XG4gIH1cblxuXG4gIG9uTW9udGhDaGFuZ2UoY3VycmVudE1vbnRoOiBVdGNEYXRlKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZE1vbnRoID0gY3VycmVudE1vbnRoO1xuICB9XG5cbiAgb25Nb3VzZURvd25EYXRlcGlja2VyKCk6IHZvaWQge1xuICAgIHRoaXMub3BlbkNhbGVuZGFyKCk7XG4gIH1cblxuICBvcGVuQ2FsZW5kYXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2hvdyB8fCB0aGlzLmRpc2FibGVkIHx8IHRoaXMuZm9yY2VOb3RPcGVuQ2FsZW5kYXIpIHtcbiAgICAgIHRoaXMuZm9yY2VOb3RPcGVuQ2FsZW5kYXIgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2hvdyA9IHRydWU7XG4gICAgfSk7XG5cbiAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZTtcblxuICAgIGNsZWFyVGltZW91dCh0aGlzLm9wZW5DYWxlbmRhclRpbWVvdXQpO1xuXG4gICAgdGhpcy5vcGVuQ2FsZW5kYXJUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCk7XG4gICAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0aGlzLnNob3cpO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICBvblRpbWVTZWxlY3RlZChvcHRpb246IFNlbGVjdE9wdGlvbk1vZGVsKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFRpbWUgPSB0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUob3B0aW9uLnZhbHVlKTtcbiAgICB0aGlzLmZvY3VzT25OZXh0Q2hhbmdlLmVtaXQoKTtcbiAgfVxuXG4gIGdldE1haW5DbGFzcygpOiBBcnJheTxDbGFzc01vZGVsPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q29udGFpbmVyQ2xhc3MoJycsIFsodGhpcy5leGlzdHMoPGFueT50aGlzLnRpbWVPcHRpb25zKSAmJiAnaGFzLXRpbWUnKSxcbiAgICAodGhpcy5leGlzdHModGhpcy5jb21wYWN0KSAmJiAnY29tcGFjdCcpXSk7XG4gIH1cblxuICBnZXRMYWJlbENsYXNzKCk6IENsYXNzTW9kZWwge1xuICAgIGlmICh0aGlzLmV4aXN0cyh0aGlzLmRpc2FibGVkKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3MoJ2RhdGUtcGlja2VyLWxhYmVsJywgWydkaXNhYmxlZCddKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3MoJ2RhdGUtcGlja2VyLWxhYmVsJyk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VDYWxlbmRhcigpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICB9XG5cbiAgc2VsZWN0RGF0ZShldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlRGF0ZSA9IHRoaXMudXRjRGF0ZTtcblxuICAgIGlmICghdGhpcy5zb21lVmFsaWREYXlzRXF1YWxzU2VsZWN0ZWREYXkodGhpcy5hY3RpdmVEYXRlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdGhpcy5hY3RpdmVEYXRlXG4gICAgdGhpcy5zZXRGb2N1c09uVGltZVNlbGVjdG9yT3JOZXh0KGV2ZW50KTtcblxuICAgIHRoaXMuY2xvc2VDYWxlbmRhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FjdGl2ZUVsZW1lbnRNb250aEJ1dHRvbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMuY2FsZW5kYXIubmV4dE1vbnRoUmVmLm5hdGl2ZUVsZW1lbnQgfHxcbiAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMuY2FsZW5kYXIucHJldmlvdXNNb250aFJlZi5uYXRpdmVFbGVtZW50IHx8XG4gICAgICB0aGlzLmNhbGVuZGFyLm1vbnRoU2VsZWN0UmVmICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMuY2FsZW5kYXIubW9udGhTZWxlY3RSZWYuc2VsZWN0Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIHNldEZvY3VzT25BY3RpdmVEYXRlQXN5bmMoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBlbG1lbWVudFRvRm9jdXMgPSB0aGlzLmNhbGVuZGFyPy5hY3RpdmVEYXRlQ2VsbDtcbiAgICAgIGlmIChlbG1lbWVudFRvRm9jdXMpIHtcbiAgICAgICAgZWxtZW1lbnRUb0ZvY3VzLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIHByaXZhdGUgYWxsRGF5cygpOiBBcnJheTxEYXlNb2RlbD4ge1xuICAgIGNvbnN0IGFsbERheXMgPSBuZXcgQXJyYXk8RGF5TW9kZWw+KCk7XG5cbiAgICBpZiAodGhpcy5jYWxlbmRhcikge1xuICAgICAgdGhpcy5jYWxlbmRhci53ZWVrcy5mb3JFYWNoKHggPT4geCAmJiB4LmRheXMuZm9yRWFjaChkID0+IGFsbERheXMucHVzaChkKSkpO1xuICAgIH1cblxuICAgIHJldHVybiBhbGxEYXlzO1xuICB9XG5cbiAgcHJpdmF0ZSBzb21lVmFsaWREYXlzRXF1YWxzU2VsZWN0ZWREYXkoc2VsZWN0ZWREYXk6IFV0Y0RhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hbGxEYXlzKCkuc29tZSh4ID0+IHhcbiAgICAgICYmIHRoaXMuZGF0ZVNlcnZpY2UuaXNTYW1lTW9udGgodGhpcy5kYXRlU2VydmljZS51dGNEYXRlKHguZGF0ZSksIHNlbGVjdGVkRGF5KSAmJiB0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoeC5kYXRlKS5kYXRlICYmIHNlbGVjdGVkRGF5LmRhdGVcbiAgICAgICYmICgheC5pc0F2YWlsYWJsZSB8fCAheC5pc0Rpc2FibGVkKSlcbiAgfVxuXG4gIHByaXZhdGUgb25PcGVuVGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dUaW1lcyA9ICF0aGlzLnNob3dUaW1lcztcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mb2N1c2VkVGltZSA9IHRoaXMuc2VsZWN0ZWRUaW1lT3B0aW9uO1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkVGltZU9wdGlvblxuICAgICAgICA/IHRoaXMudGltZU9wdGlvbnMuZmluZEluZGV4KHQgPT4gdC52YWx1ZSA9PT0gdGhpcy5zZWxlY3RlZFRpbWVPcHRpb24hLnZhbHVlKVxuICAgICAgICA6IC0xO1xuXG4gICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICB0aGlzLnRpbWVyTGlzdEZvY3VzKGluZGV4KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdGltZUZvY3VzTmV4dCgpOiB2b2lkIHtcbiAgICBjb25zdCBsZW4gPSB0aGlzLnRpbWVPcHRpb25zLmxlbmd0aDtcbiAgICBpZiAoIWxlbikgcmV0dXJuO1xuXG4gICAgY29uc3QgaSA9IHRoaXMuZm9jdXNlZFRpbWUgPyB0aGlzLnRpbWVPcHRpb25zLmZpbmRJbmRleCh0ID0+IHQudmFsdWUgPT09IHRoaXMuZm9jdXNlZFRpbWUhLnZhbHVlKSA6IC0xO1xuICAgIGNvbnN0IG5leHRJbmRleCA9IGkgPT09IC0xID8gMCA6IChpICsgMSkgJSBsZW47XG4gICAgdGhpcy5mb2N1c2VkVGltZSA9IHRoaXMudGltZU9wdGlvbnNbbmV4dEluZGV4XTtcbiAgICB0aGlzLnRpbWVyTGlzdEZvY3VzKG5leHRJbmRleCk7XG4gIH1cblxuICBwcml2YXRlIHRpbWVGb2N1c1ByZXYoKTogdm9pZCB7XG4gICAgY29uc3QgbGVuID0gdGhpcy50aW1lT3B0aW9ucy5sZW5ndGg7XG4gICAgaWYgKCFsZW4pIHJldHVybjtcblxuICAgIGNvbnN0IGkgPSB0aGlzLmZvY3VzZWRUaW1lID8gdGhpcy50aW1lT3B0aW9ucy5maW5kSW5kZXgodCA9PiB0LnZhbHVlID09PSB0aGlzLmZvY3VzZWRUaW1lIS52YWx1ZSkgOiAtMTtcbiAgICBjb25zdCBwcmV2SW5kZXggPSBpID09PSAtMSA/IGxlbiAtIDEgOiAoaSAtIDEgKyBsZW4pICUgbGVuO1xuICAgIHRoaXMuZm9jdXNlZFRpbWUgPSB0aGlzLnRpbWVPcHRpb25zW3ByZXZJbmRleF07XG4gICAgdGhpcy50aW1lckxpc3RGb2N1cyhwcmV2SW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSB0aW1lckxpc3RGb2N1cyhpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5mb2N1c2VkVGltZSA9IHRoaXMudGltZU9wdGlvbnNbaW5kZXhdO1xuICAgIGNvbnN0IHRpbWVFbGVtZW50ID0gdGhpcy50aW1lLmdldChpbmRleCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKHRpbWVFbGVtZW50KSB7XG4gICAgICB0aW1lRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxsYWJlbCBbbmFzQ2xhc3NdPVwiZ2V0TWFpbkNsYXNzKClcIj5cbiAgPGRpdiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2RhdGUtcGlja2VyLWNvbnRlbnQnKVwiPlxuICAgIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCdkYXRlLXBpY2tlci13cmFwcGVyJywgc2hvdyAmJiAnYWN0aXZlJylcIj5cbiAgICAgIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCdjb250cm9scycsIFtzaG93ICYmICdhY3RpdmUnLCBtb2RlbCAmJiAnZmlsbGVkJ10pXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bkRhdGVwaWNrZXIoKVwiPlxuICAgICAgICA8ZGl2ICNkYXRlUGlja2VyQ29udGVudCBbbmFzQ2xhc3NdPVwiZ2V0TGFiZWxDbGFzcygpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxpbnB1dCAjaW5wdXQgW2lkXT1cImlucHV0SWRcIiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2RhdGUtcGlja2VyJylcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIiBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRieVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZFwiIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwidHJ1ZVwiIChrZXlkb3duLnRhYik9XCJzZWxlY3REYXRlKCRldmVudClcIlxuICAgICAgICAgIChrZXlkb3duLnNoaWZ0LnRhYik9XCJvbklucHV0S2V5ZG93blNoaWZ0VGFiKCRldmVudClcIiAoa2V5ZG93bi5lbnRlcik9XCJzZWxlY3REYXRlKCRldmVudClcIlxuICAgICAgICAgIChrZXlkb3duLmFycm93ZG93bik9XCJvbkNhbGVuZGFyS2V5RG93bigkZXZlbnQpXCIgKGtleWRvd24uYXJyb3dsZWZ0KT1cIm9uQ2FsZW5kYXJLZXlEb3duKCRldmVudClcIlxuICAgICAgICAgIChrZXlkb3duLmFycm93cmlnaHQpPVwib25DYWxlbmRhcktleURvd24oJGV2ZW50KVwiIChrZXlkb3duLmFycm93dXApPVwib25DYWxlbmRhcktleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgKGZvY3VzKT1cIm9wZW5DYWxlbmRhcigpXCIgWyhuZ01vZGVsKV09XCJtb2RlbFwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCdjYWxlbmRhci1pY29uJylcIj5cbiAgICAgICAgPG5hcy1pY29uICpuZ0lmPVwiZXhpc3RzKGRpc2FibGVkKTsgZWxzZSByZWd1bGFySWNvblwiIFtpY29uXT1cIidjYWxlbmRhci0tZGlzYWJsZWQnXCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7J3BvaW50ZXItZXZlbnRzJzogJ25vbmUnfVwiPlxuICAgICAgICA8L25hcy1pY29uPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3JlZ3VsYXJJY29uPlxuICAgICAgICAgIDxuYXMtaWNvbiBpY29uPVwiY2FsZW5kYXJcIiAoY2xpY2spPVwib3BlbkNhbGVuZGFyKClcIj5cbiAgICAgICAgICA8L25hcy1pY29uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmFzLWNhbGVuZGFyICNjYWxlbmRhciAqbmdJZj1cInNob3cgJiYgIXNob3dUaW1lc1wiIFtpZF09XCJpbnB1dElkXCIgW25hc0Zvcm1Hcm91cF09XCJuYXNGb3JtR3JvdXBcIlxuICAgICAgICBbbmFzRm9ybUNvbnRyb2xOYW1lXT1cIm5hc0Zvcm1Db250cm9sTmFtZVwiIFtkYXRlRGlzcGxheUZvcm1hdF09XCJkYXRlRGlzcGxheUZvcm1hdFwiXG4gICAgICAgIFtub0F2YWlsYWJsZUZsaWdodHNMYWJlbF09XCJub0F2YWlsYWJsZUZsaWdodHNMYWJlbFwiIFthdmFpbGFibGVGbGlnaHRzTGFiZWxdPVwiYXZhaWxhYmxlRmxpZ2h0c0xhYmVsXCJcbiAgICAgICAgW2F2YWlsYWJpbGl0eV09XCJleGlzdHMoYXZhaWxhYmlsaXR5KVwiIFthdmFpbGFibGVEYXRlc109XCJhdmFpbGFibGVEYXRlc1wiIFtsb3dlckxpbWl0RGF0ZV09XCJsb3dlckxpbWl0RGF0ZVwiXG4gICAgICAgIFtkaXNhYmxlUGFzdFNlbGVjdGlvbl09XCJleGlzdHMoZGlzYWJsZVBhc3RTZWxlY3Rpb24pXCIgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgICBbYXJpYUxhYmVsUHJldmlvdXNNb250aF09XCJhcmlhTGFiZWxQcmV2aW91c01vbnRoXCIgW2FyaWFMYWJlbE5leHRNb250aF09XCJhcmlhTGFiZWxOZXh0TW9udGhcIlxuICAgICAgICBbKGFjdGl2ZURhdGUpXT1cImFjdGl2ZURhdGVcIiBbKHNlbGVjdGVkRGF0ZSldPVwic2VsZWN0ZWREYXRlXCJcbiAgICAgICAgKGZvY3VzT25OZXh0Q2hhbmdlKT1cInNldEZvY3VzT25UaW1lU2VsZWN0b3JPck5leHQoJGV2ZW50KVwiIChrZXlkb3duKT1cIm9uQ2FsZW5kYXJLZXlEb3duKCRldmVudClcIlxuICAgICAgICAobW9udGhDaGFuZ2UpPVwib25Nb250aENoYW5nZSgkZXZlbnQpXCI+XG4gICAgICA8L25hcy1jYWxlbmRhcj5cbiAgICA8L2Rpdj5cbiAgICA8bmFzLWJhY2tkcm9wIFtuYXNDbGFzc109XCJnZXRDbGFzcygnYmFja2Ryb3AnKVwiIFthcmlhTGFiZWxCYWNrZHJvcF09XCJhcmlhTGFiZWxCYWNrZHJvcFwiXG4gICAgICBbKHNob3dCYWNrZHJvcCldPVwic2hvd0JhY2tkcm9wXCI+PC9uYXMtYmFja2Ryb3A+XG4gIDwvZGl2PlxuPC9sYWJlbD5cbjxkaXYgKm5nSWY9XCJ0aW1lT3B0aW9uc1wiIFtuYXNDbGFzc109XCJnZXRDbGFzcygndGltZS1zZWxlY3Rvci13cmFwcGVyJylcIj5cbiAgPG5hcy1iYWNrZHJvcCBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ2JhY2tkcm9wJylcIiBbYXJpYUxhYmVsQmFja2Ryb3BdPVwiYXJpYUxhYmVsQmFja2Ryb3BcIlxuICAgIFsoc2hvd0JhY2tkcm9wKV09XCJzaG93VGltZXNcIj48L25hcy1iYWNrZHJvcD5cbiAgPGJ1dHRvbiAjdGltZVNlbGVjdG9yIFtuYXNDbGFzc109XCJnZXRDbGFzcygndGltZS1waWNrZXInLCBzaG93VGltZXMgJiYgJ2FjdGl2ZScpXCIgKGtleWRvd24pPVwib25UaW1lU2VsZWN0b3JLZXlkb3duKCRldmVudClcIlxuICAgIFtzdHlsZS56LWluZGV4XT1cIiFzaG93VGltZXMgPyAwIDogJzQnXCIgKGNsaWNrKT1cIm9uT3BlblRpbWUoKVwiPlxuICAgIDxkaXYgW25hc0NsYXNzXT1cImdldENsYXNzKCd0aW1lLWRldGFpbHMnKVwiPlxuICAgICAgPHAgKm5nSWY9XCJ0aW1lcGlja2VyTGFiZWxcIiBbbmFzQ2xhc3NdPVwiZ2V0Q2xhc3MoJ3RpbWUtZGV0YWlscycsICdsYWJlbCcpXCI+e3t0aW1lcGlja2VyTGFiZWx9fTwvcD5cbiAgICAgIDxwIFtuYXNDbGFzc109XCJnZXRDbGFzcygndGltZS1kZXRhaWxzLS10aW1lJylcIj57e3NlbGVjdGVkVGltZU9wdGlvbj8udGl0bGV9fTwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd1RpbWVzXCIgW25hc0NsYXNzXT1cImdldENsYXNzKCd0aW1lcy13cmFwcGVyJylcIj5cbiAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCB0aW1lIG9mIHRpbWVPcHRpb25zXCIgW25hc0NsYXNzXT1cImdldENsYXNzKCd0aW1lLWl0ZW0nLCBmb2N1c2VkVGltZSA9PSB0aW1lICYmICdmb2N1cycpXCIgKGNsaWNrKT1cIm9uVGltZVNlbGVjdGVkKHRpbWUpXCJcbiAgICAgICAgI3RpbWU+e3t0aW1lPy50aXRsZX19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNjb250ZW50PlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPiJdfQ==
|