@norwegian/core-components 5.18.1 → 5.18.3
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/esm2020/lib/components/accordion/accordion.component.mjs +148 -0
- package/esm2020/lib/components/accordion/accordion.module.mjs +20 -0
- package/esm2020/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.mjs +610 -0
- package/esm2020/lib/components/airport-select/airport-select.component.mjs +438 -0
- package/esm2020/lib/components/airport-select/airport-select.module.mjs +42 -0
- package/esm2020/lib/components/airport-select/services/airport-select-dropdown.service.mjs +35 -0
- package/esm2020/lib/components/airport-select/services/airport-select.service.mjs +38 -0
- package/esm2020/lib/components/autocomplete/autocomplete.component.mjs +287 -0
- package/esm2020/lib/components/autocomplete/autocomplete.module.mjs +43 -0
- package/esm2020/lib/components/backdrop/backdrop.component.mjs +56 -0
- package/esm2020/lib/components/backdrop/backdrop.module.mjs +24 -0
- package/esm2020/lib/components/box/box.component.mjs +68 -0
- package/esm2020/lib/components/box/box.module.mjs +19 -0
- package/esm2020/lib/components/button/button.component.mjs +167 -0
- package/esm2020/lib/components/button/button.module.mjs +20 -0
- package/esm2020/lib/components/checkbox/checkbox.component.mjs +148 -0
- package/esm2020/lib/components/checkbox/checkbox.module.mjs +20 -0
- package/esm2020/lib/components/chip/chip.component.mjs +53 -0
- package/esm2020/lib/components/chip/chip.module.mjs +24 -0
- package/esm2020/lib/components/container/container.component.mjs +50 -0
- package/esm2020/lib/components/container/container.module.mjs +19 -0
- package/esm2020/lib/components/continue/continue.component.mjs +194 -0
- package/esm2020/lib/components/continue/continue.module.mjs +34 -0
- package/esm2020/lib/components/cover/cover.component.mjs +75 -0
- package/esm2020/lib/components/cover/cover.module.mjs +21 -0
- package/esm2020/lib/components/datepicker/calendar/calendar.component.mjs +583 -0
- package/esm2020/lib/components/datepicker/datepicker.component.mjs +550 -0
- package/esm2020/lib/components/datepicker/datepicker.module.mjs +55 -0
- package/esm2020/lib/components/datepicker/services/calendar.service.mjs +213 -0
- package/esm2020/lib/components/datepicker-combo/datepicker-combo.component.mjs +355 -0
- package/esm2020/lib/components/datepicker-combo/datepicker-combo.module.mjs +31 -0
- package/esm2020/lib/components/divider/divider.component.mjs +61 -0
- package/esm2020/lib/components/divider/divider.module.mjs +20 -0
- package/esm2020/lib/components/dropdown/dropdown.component.mjs +169 -0
- package/esm2020/lib/components/dropdown/dropdown.module.mjs +32 -0
- package/esm2020/lib/components/filter/filter.component.mjs +1253 -0
- package/esm2020/lib/components/filter/filter.module.mjs +73 -0
- package/esm2020/lib/components/grid/col/col.component.mjs +49 -0
- package/esm2020/lib/components/grid/grid.component.mjs +72 -0
- package/esm2020/lib/components/grid/grid.module.mjs +20 -0
- package/esm2020/lib/components/icon/icon.component.mjs +44 -0
- package/esm2020/lib/components/icon/icon.module.mjs +24 -0
- package/esm2020/lib/components/icon-list/icon-list.component.mjs +50 -0
- package/esm2020/lib/components/icon-list/icon-list.module.mjs +20 -0
- package/esm2020/lib/components/info/info.component.mjs +106 -0
- package/esm2020/lib/components/info/info.module.mjs +36 -0
- package/esm2020/lib/components/input/input.component.mjs +179 -0
- package/esm2020/lib/components/input/input.module.mjs +21 -0
- package/esm2020/lib/components/journey/journey.component.mjs +126 -0
- package/esm2020/lib/components/journey/journey.module.mjs +28 -0
- package/esm2020/lib/components/journey-availability/journey-availability.component.mjs +126 -0
- package/esm2020/lib/components/journey-availability/journey-availability.module.mjs +39 -0
- package/esm2020/lib/components/journey-availability-list/journey-availability-list.component.mjs +185 -0
- package/{esm2015/lib/components/journey-availability-list/journey-availability-list.module.js → esm2020/lib/components/journey-availability-list/journey-availability-list.module.mjs} +27 -14
- package/esm2020/lib/components/journey-selection/journey-selection.component.mjs +112 -0
- package/esm2020/lib/components/journey-selection/journey-selection.module.mjs +35 -0
- package/esm2020/lib/components/journey-stopover/journey-stopover.component.mjs +125 -0
- package/esm2020/lib/components/journey-stopover/journey-stopover.module.mjs +28 -0
- package/esm2020/lib/components/list/list-item/list-item.component.mjs +52 -0
- package/esm2020/lib/components/list/list.component.mjs +78 -0
- package/esm2020/lib/components/list/list.module.mjs +20 -0
- package/esm2020/lib/components/modal/modal.component.mjs +141 -0
- package/esm2020/lib/components/modal/modal.module.mjs +38 -0
- package/esm2020/lib/components/number-field/number-field.component.mjs +135 -0
- package/esm2020/lib/components/number-field/number-field.module.mjs +39 -0
- package/esm2020/lib/components/page-footer/page-footer.component.mjs +54 -0
- package/esm2020/lib/components/page-footer/page-footer.module.mjs +21 -0
- package/esm2020/lib/components/page-header/hamburger/hamburger.component.mjs +22 -0
- package/esm2020/lib/components/page-header/page-header.component.mjs +142 -0
- package/esm2020/lib/components/page-header/page-header.module.mjs +23 -0
- package/esm2020/lib/components/page-header/search/search.component.mjs +49 -0
- package/{esm2015/lib/components/passenger-select/models/passengers.model.js → esm2020/lib/components/passenger-select/models/passengers.model.mjs} +1 -1
- package/esm2020/lib/components/passenger-select/passenger-select.component.mjs +225 -0
- package/esm2020/lib/components/passenger-select/passenger-select.module.mjs +28 -0
- package/esm2020/lib/components/phone-number/phone-number.component.mjs +148 -0
- package/esm2020/lib/components/phone-number/phone-number.module.mjs +44 -0
- package/esm2020/lib/components/premium-toggle/premium-toggle.component.mjs +69 -0
- package/esm2020/lib/components/premium-toggle/premium-toggle.module.mjs +28 -0
- package/esm2020/lib/components/radio/radio.component.mjs +98 -0
- package/esm2020/lib/components/radio/radio.module.mjs +20 -0
- package/esm2020/lib/components/select/optgroup/optgroup.component.mjs +29 -0
- package/esm2020/lib/components/select/option/option.component.mjs +26 -0
- package/esm2020/lib/components/select/select.component.mjs +354 -0
- package/esm2020/lib/components/select/select.module.mjs +30 -0
- package/esm2020/lib/components/simple-list/simple-list.component.mjs +48 -0
- package/esm2020/lib/components/simple-list/simple-list.module.mjs +19 -0
- package/esm2020/lib/components/slide-toggle/slide-toggle.component.mjs +111 -0
- package/esm2020/lib/components/slide-toggle/slide-toggle.module.mjs +31 -0
- package/esm2020/lib/components/slider/slider.component.mjs +501 -0
- package/esm2020/lib/components/slider/slider.module.mjs +28 -0
- package/esm2020/lib/components/sort/sort.component.mjs +93 -0
- package/esm2020/lib/components/sort/sort.module.mjs +36 -0
- package/esm2020/lib/components/spinner/spinner.component.mjs +112 -0
- package/esm2020/lib/components/spinner/spinner.module.mjs +19 -0
- package/esm2020/lib/components/subsidy-discount/subsidy-discount.component.mjs +110 -0
- package/esm2020/lib/components/subsidy-discount/subsidy-discount.module.mjs +36 -0
- package/esm2020/lib/components/suggestions/suggestions.component.mjs +43 -0
- package/esm2020/lib/components/suggestions/suggestions.module.mjs +28 -0
- package/esm2020/lib/components/tab-group/tab/tab.component.mjs +131 -0
- package/esm2020/lib/components/tab-group/tab-group.component.mjs +87 -0
- package/esm2020/lib/components/tab-group/tab-group.module.mjs +29 -0
- package/esm2020/lib/components/table/column/column.component.mjs +16 -0
- package/esm2020/lib/components/table/column-group/column-group.component.mjs +30 -0
- package/esm2020/lib/components/table/services/table.service.mjs +21 -0
- package/esm2020/lib/components/table/table-body/table-body.component.mjs +23 -0
- package/esm2020/lib/components/table/table-foot/table-foot.component.mjs +23 -0
- package/esm2020/lib/components/table/table-head/table-head.component.mjs +23 -0
- package/esm2020/lib/components/table/table-row/table-data/table-data.component.mjs +15 -0
- package/esm2020/lib/components/table/table-row/table-header/table-header.component.mjs +15 -0
- package/esm2020/lib/components/table/table-row/table-row.component.mjs +23 -0
- package/esm2020/lib/components/table/table.component.mjs +29 -0
- package/esm2020/lib/components/table/table.module.mjs +68 -0
- package/esm2020/lib/components/textarea/textarea.component.mjs +93 -0
- package/esm2020/lib/components/textarea/textarea.module.mjs +31 -0
- package/esm2020/lib/components/toggle/toggle.component.mjs +103 -0
- package/esm2020/lib/components/toggle/toggle.module.mjs +35 -0
- package/esm2020/lib/components/trip-summary/trip-summary.component.mjs +170 -0
- package/esm2020/lib/components/trip-summary/trip-summary.module.mjs +36 -0
- package/esm2020/lib/components/weather-icon/weather-icon.component.mjs +60 -0
- package/esm2020/lib/components/weather-icon/weather-icon.module.mjs +19 -0
- package/esm2020/lib/core/base/nas-component.base.mjs +47 -0
- package/esm2020/lib/core/directives/nas-class/nas-class.directive.mjs +80 -0
- package/esm2020/lib/core/directives/nas-class/nas-class.module.mjs +22 -0
- package/{esm2015/lib/core/extensions/html-element.extension.js → esm2020/lib/core/extensions/html-element.extension.mjs} +1 -1
- package/esm2020/lib/core/services/abandoned-basket/abandoned-basket.service.mjs +58 -0
- package/esm2020/lib/core/services/animate-helper/animate-helper.service.mjs +49 -0
- package/esm2020/lib/core/services/bem-helper/bem-helper.service.mjs +44 -0
- package/esm2020/lib/core/services/date/date-helper.service.mjs +199 -0
- package/esm2020/lib/core/services/device/device-helper.service.mjs +46 -0
- package/esm2020/lib/core/services/geolocation/geolocation.service.mjs +63 -0
- package/esm2020/lib/core/services/language/language-helper.service.mjs +129 -0
- package/esm2020/lib/core/services/sort/sort.service.mjs +22 -0
- package/esm2020/lib/core/services/viewport/viewport.service.mjs +32 -0
- package/esm2020/lib/services/get-position.service.mjs +23 -0
- package/esm2020/norwegian-core-components.mjs +5 -0
- package/fesm2015/norwegian-core-components.mjs +11843 -0
- package/fesm2015/norwegian-core-components.mjs.map +1 -0
- package/fesm2020/norwegian-core-components.mjs +11829 -0
- package/fesm2020/norwegian-core-components.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/accordion/accordion.component.d.ts +3 -0
- package/lib/components/accordion/accordion.module.d.ts +8 -0
- package/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.d.ts +5 -2
- package/lib/components/airport-select/airport-select.component.d.ts +5 -2
- package/lib/components/airport-select/airport-select.module.d.ts +11 -0
- package/lib/components/airport-select/services/airport-select-dropdown.service.d.ts +3 -0
- package/lib/components/airport-select/services/airport-select.service.d.ts +3 -0
- package/lib/components/autocomplete/autocomplete.component.d.ts +5 -2
- package/lib/components/autocomplete/autocomplete.module.d.ts +11 -0
- package/lib/components/backdrop/backdrop.component.d.ts +3 -0
- package/lib/components/backdrop/backdrop.module.d.ts +7 -0
- package/lib/components/box/box.component.d.ts +3 -4
- package/lib/components/box/box.module.d.ts +7 -0
- package/lib/components/button/button.component.d.ts +3 -0
- package/lib/components/button/button.module.d.ts +8 -0
- package/lib/components/checkbox/checkbox.component.d.ts +5 -2
- package/lib/components/checkbox/checkbox.module.d.ts +8 -0
- package/lib/components/chip/chip.component.d.ts +3 -0
- package/lib/components/chip/chip.module.d.ts +7 -0
- package/lib/components/container/container.component.d.ts +3 -4
- package/lib/components/container/container.module.d.ts +7 -0
- package/lib/components/continue/continue.component.d.ts +3 -0
- package/lib/components/continue/continue.module.d.ts +9 -0
- package/lib/components/cover/cover.component.d.ts +3 -0
- package/lib/components/cover/cover.module.d.ts +9 -0
- package/lib/components/datepicker/calendar/calendar.component.d.ts +5 -2
- package/lib/components/datepicker/datepicker.component.d.ts +5 -2
- package/lib/components/datepicker/datepicker.module.d.ts +14 -0
- package/lib/components/datepicker/services/calendar.service.d.ts +3 -0
- package/lib/components/datepicker-combo/datepicker-combo.component.d.ts +3 -0
- package/lib/components/datepicker-combo/datepicker-combo.module.d.ts +8 -0
- package/lib/components/divider/divider.component.d.ts +3 -4
- package/lib/components/divider/divider.module.d.ts +8 -0
- package/lib/components/dropdown/dropdown.component.d.ts +3 -0
- package/lib/components/dropdown/dropdown.module.d.ts +9 -0
- package/lib/components/filter/filter.component.d.ts +5 -2
- package/lib/components/filter/filter.module.d.ts +18 -0
- package/lib/components/grid/col/col.component.d.ts +4 -1
- package/lib/components/grid/grid.component.d.ts +3 -4
- package/lib/components/grid/grid.module.d.ts +8 -0
- package/lib/components/icon/icon.component.d.ts +3 -4
- package/lib/components/icon/icon.module.d.ts +7 -0
- package/lib/components/icon-list/icon-list.component.d.ts +3 -0
- package/lib/components/icon-list/icon-list.module.d.ts +8 -0
- package/lib/components/info/info.component.d.ts +3 -0
- package/lib/components/info/info.module.d.ts +10 -0
- package/lib/components/input/input.component.d.ts +5 -2
- package/lib/components/input/input.module.d.ts +9 -0
- package/lib/components/journey/journey.component.d.ts +3 -0
- package/lib/components/journey/journey.module.d.ts +8 -0
- package/lib/components/journey-availability/journey-availability.component.d.ts +3 -0
- package/lib/components/journey-availability/journey-availability.module.d.ts +10 -0
- package/lib/components/journey-availability-list/journey-availability-list.component.d.ts +3 -0
- package/lib/components/journey-availability-list/journey-availability-list.module.d.ts +10 -0
- package/lib/components/journey-selection/journey-selection.component.d.ts +3 -0
- package/lib/components/journey-selection/journey-selection.module.d.ts +9 -0
- package/lib/components/journey-stopover/journey-stopover.component.d.ts +3 -0
- package/lib/components/journey-stopover/journey-stopover.module.d.ts +8 -0
- package/lib/components/list/list-item/list-item.component.d.ts +3 -0
- package/lib/components/list/list.component.d.ts +4 -1
- package/lib/components/list/list.module.d.ts +8 -0
- package/lib/components/modal/modal.component.d.ts +3 -0
- package/lib/components/modal/modal.module.d.ts +10 -0
- package/lib/components/number-field/number-field.component.d.ts +5 -2
- package/lib/components/number-field/number-field.module.d.ts +10 -0
- package/lib/components/page-footer/page-footer.component.d.ts +3 -0
- package/lib/components/page-footer/page-footer.module.d.ts +9 -0
- package/lib/components/page-header/hamburger/hamburger.component.d.ts +3 -0
- package/lib/components/page-header/page-header.component.d.ts +3 -0
- package/lib/components/page-header/page-header.module.d.ts +11 -0
- package/lib/components/page-header/search/search.component.d.ts +3 -0
- package/lib/components/passenger-select/models/passengers.model.d.ts +2 -2
- package/lib/components/passenger-select/passenger-select.component.d.ts +5 -2
- package/lib/components/passenger-select/passenger-select.module.d.ts +8 -0
- package/lib/components/phone-number/phone-number.component.d.ts +5 -2
- package/lib/components/phone-number/phone-number.module.d.ts +11 -0
- package/lib/components/premium-toggle/premium-toggle.component.d.ts +3 -0
- package/lib/components/premium-toggle/premium-toggle.module.d.ts +8 -0
- package/lib/components/radio/radio.component.d.ts +5 -2
- package/lib/components/radio/radio.module.d.ts +8 -0
- package/lib/components/select/optgroup/optgroup.component.d.ts +3 -0
- package/lib/components/select/option/option.component.d.ts +3 -0
- package/lib/components/select/select.component.d.ts +6 -3
- package/lib/components/select/select.module.d.ts +10 -0
- package/lib/components/simple-list/simple-list.component.d.ts +4 -1
- package/lib/components/simple-list/simple-list.module.d.ts +7 -0
- package/lib/components/slide-toggle/slide-toggle.component.d.ts +5 -2
- package/lib/components/slide-toggle/slide-toggle.module.d.ts +8 -0
- package/lib/components/slider/slider.component.d.ts +5 -2
- package/lib/components/slider/slider.module.d.ts +8 -0
- package/lib/components/sort/sort.component.d.ts +3 -0
- package/lib/components/sort/sort.module.d.ts +10 -0
- package/lib/components/spinner/spinner.component.d.ts +3 -0
- package/lib/components/spinner/spinner.module.d.ts +7 -0
- package/lib/components/subsidy-discount/subsidy-discount.component.d.ts +3 -0
- package/lib/components/subsidy-discount/subsidy-discount.module.d.ts +10 -0
- package/lib/components/suggestions/suggestions.component.d.ts +3 -0
- package/lib/components/suggestions/suggestions.module.d.ts +8 -0
- package/lib/components/tab-group/tab/tab.component.d.ts +3 -0
- package/lib/components/tab-group/tab-group.component.d.ts +3 -0
- package/lib/components/tab-group/tab-group.module.d.ts +9 -0
- package/lib/components/table/column/column.component.d.ts +3 -0
- package/lib/components/table/column-group/column-group.component.d.ts +3 -0
- package/lib/components/table/services/table.service.d.ts +3 -0
- package/lib/components/table/table-body/table-body.component.d.ts +3 -0
- package/lib/components/table/table-foot/table-foot.component.d.ts +3 -0
- package/lib/components/table/table-head/table-head.component.d.ts +3 -0
- package/lib/components/table/table-row/table-data/table-data.component.d.ts +3 -0
- package/lib/components/table/table-row/table-header/table-header.component.d.ts +3 -0
- package/lib/components/table/table-row/table-row.component.d.ts +3 -0
- package/lib/components/table/table.component.d.ts +3 -0
- package/lib/components/table/table.module.d.ts +15 -0
- package/lib/components/textarea/textarea.component.d.ts +5 -2
- package/lib/components/textarea/textarea.module.d.ts +8 -0
- package/lib/components/toggle/toggle.component.d.ts +6 -3
- package/lib/components/toggle/toggle.module.d.ts +9 -0
- package/lib/components/trip-summary/trip-summary.component.d.ts +3 -0
- package/lib/components/trip-summary/trip-summary.module.d.ts +10 -0
- package/lib/components/weather-icon/weather-icon.component.d.ts +3 -0
- package/lib/components/weather-icon/weather-icon.module.d.ts +7 -0
- package/lib/core/directives/nas-class/nas-class.directive.d.ts +3 -0
- package/lib/core/directives/nas-class/nas-class.module.d.ts +6 -0
- package/lib/core/services/abandoned-basket/abandoned-basket.service.d.ts +3 -0
- package/lib/core/services/animate-helper/animate-helper.service.d.ts +3 -0
- package/lib/core/services/bem-helper/bem-helper.service.d.ts +3 -0
- package/lib/core/services/date/date-helper.service.d.ts +3 -0
- package/lib/core/services/device/device-helper.service.d.ts +3 -0
- package/lib/core/services/geolocation/geolocation.service.d.ts +3 -0
- package/lib/core/services/language/language-helper.service.d.ts +3 -0
- package/lib/core/services/sort/sort.service.d.ts +3 -0
- package/lib/core/services/viewport/viewport.service.d.ts +3 -0
- package/lib/services/get-position.service.d.ts +3 -0
- package/package.json +23 -11
- package/styles/2__generic/_fonts.scss +32 -61
- package/bundles/norwegian-core-components.umd.js +0 -12203
- package/bundles/norwegian-core-components.umd.js.map +0 -1
- package/esm2015/lib/components/accordion/accordion.component.js +0 -130
- package/esm2015/lib/components/accordion/accordion.module.js +0 -15
- package/esm2015/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.js +0 -583
- package/esm2015/lib/components/airport-select/airport-select.component.js +0 -400
- package/esm2015/lib/components/airport-select/airport-select.module.js +0 -27
- package/esm2015/lib/components/airport-select/services/airport-select-dropdown.service.js +0 -34
- package/esm2015/lib/components/airport-select/services/airport-select.service.js +0 -37
- package/esm2015/lib/components/autocomplete/autocomplete.component.js +0 -265
- package/esm2015/lib/components/autocomplete/autocomplete.module.js +0 -26
- package/esm2015/lib/components/backdrop/backdrop.component.js +0 -54
- package/esm2015/lib/components/backdrop/backdrop.module.js +0 -17
- package/esm2015/lib/components/box/box.component.js +0 -61
- package/esm2015/lib/components/box/box.module.js +0 -14
- package/esm2015/lib/components/button/button.component.js +0 -140
- package/esm2015/lib/components/button/button.module.js +0 -15
- package/esm2015/lib/components/checkbox/checkbox.component.js +0 -127
- package/esm2015/lib/components/checkbox/checkbox.module.js +0 -15
- package/esm2015/lib/components/chip/chip.component.js +0 -50
- package/esm2015/lib/components/chip/chip.module.js +0 -17
- package/esm2015/lib/components/container/container.component.js +0 -47
- package/esm2015/lib/components/container/container.module.js +0 -14
- package/esm2015/lib/components/continue/continue.component.js +0 -173
- package/esm2015/lib/components/continue/continue.module.js +0 -23
- package/esm2015/lib/components/cover/cover.component.js +0 -61
- package/esm2015/lib/components/cover/cover.module.js +0 -16
- package/esm2015/lib/components/datepicker/calendar/calendar.component.js +0 -560
- package/esm2015/lib/components/datepicker/datepicker.component.js +0 -515
- package/esm2015/lib/components/datepicker/datepicker.module.js +0 -34
- package/esm2015/lib/components/datepicker/services/calendar.service.js +0 -217
- package/esm2015/lib/components/datepicker-combo/datepicker-combo.component.js +0 -317
- package/esm2015/lib/components/datepicker-combo/datepicker-combo.module.js +0 -22
- package/esm2015/lib/components/divider/divider.component.js +0 -53
- package/esm2015/lib/components/divider/divider.module.js +0 -15
- package/esm2015/lib/components/dropdown/dropdown.component.js +0 -150
- package/esm2015/lib/components/dropdown/dropdown.module.js +0 -21
- package/esm2015/lib/components/filter/filter.component.js +0 -1122
- package/esm2015/lib/components/filter/filter.module.js +0 -44
- package/esm2015/lib/components/grid/col/col.component.js +0 -49
- package/esm2015/lib/components/grid/grid.component.js +0 -63
- package/esm2015/lib/components/grid/grid.module.js +0 -15
- package/esm2015/lib/components/icon/icon.component.js +0 -42
- package/esm2015/lib/components/icon/icon.module.js +0 -17
- package/esm2015/lib/components/icon-list/icon-list.component.js +0 -46
- package/esm2015/lib/components/icon-list/icon-list.module.js +0 -15
- package/esm2015/lib/components/info/info.component.js +0 -94
- package/esm2015/lib/components/info/info.module.js +0 -23
- package/esm2015/lib/components/input/input.component.js +0 -148
- package/esm2015/lib/components/input/input.module.js +0 -16
- package/esm2015/lib/components/journey/journey.component.js +0 -122
- package/esm2015/lib/components/journey/journey.module.js +0 -19
- package/esm2015/lib/components/journey-availability/journey-availability.component.js +0 -125
- package/esm2015/lib/components/journey-availability/journey-availability.module.js +0 -26
- package/esm2015/lib/components/journey-availability-list/journey-availability-list.component.js +0 -175
- package/esm2015/lib/components/journey-selection/journey-selection.component.js +0 -110
- package/esm2015/lib/components/journey-selection/journey-selection.module.js +0 -24
- package/esm2015/lib/components/journey-stopover/journey-stopover.component.js +0 -121
- package/esm2015/lib/components/journey-stopover/journey-stopover.module.js +0 -19
- package/esm2015/lib/components/list/list-item/list-item.component.js +0 -56
- package/esm2015/lib/components/list/list.component.js +0 -75
- package/esm2015/lib/components/list/list.module.js +0 -15
- package/esm2015/lib/components/modal/modal.component.js +0 -131
- package/esm2015/lib/components/modal/modal.module.js +0 -25
- package/esm2015/lib/components/number-field/number-field.component.js +0 -118
- package/esm2015/lib/components/number-field/number-field.module.js +0 -24
- package/esm2015/lib/components/page-footer/page-footer.component.js +0 -49
- package/esm2015/lib/components/page-footer/page-footer.module.js +0 -16
- package/esm2015/lib/components/page-header/hamburger/hamburger.component.js +0 -24
- package/esm2015/lib/components/page-header/page-header.component.js +0 -126
- package/esm2015/lib/components/page-header/page-header.module.js +0 -18
- package/esm2015/lib/components/page-header/search/search.component.js +0 -47
- package/esm2015/lib/components/passenger-select/passenger-select.component.js +0 -207
- package/esm2015/lib/components/passenger-select/passenger-select.module.js +0 -19
- package/esm2015/lib/components/phone-number/phone-number.component.js +0 -115
- package/esm2015/lib/components/phone-number/phone-number.module.js +0 -27
- package/esm2015/lib/components/premium-toggle/premium-toggle.component.js +0 -66
- package/esm2015/lib/components/premium-toggle/premium-toggle.module.js +0 -19
- package/esm2015/lib/components/radio/radio.component.js +0 -79
- package/esm2015/lib/components/radio/radio.module.js +0 -15
- package/esm2015/lib/components/select/optgroup/optgroup.component.js +0 -31
- package/esm2015/lib/components/select/option/option.component.js +0 -29
- package/esm2015/lib/components/select/select.component.js +0 -325
- package/esm2015/lib/components/select/select.module.js +0 -21
- package/esm2015/lib/components/simple-list/simple-list.component.js +0 -42
- package/esm2015/lib/components/simple-list/simple-list.module.js +0 -14
- package/esm2015/lib/components/slide-toggle/slide-toggle.component.js +0 -105
- package/esm2015/lib/components/slide-toggle/slide-toggle.module.js +0 -20
- package/esm2015/lib/components/slider/slider.component.js +0 -475
- package/esm2015/lib/components/slider/slider.module.js +0 -19
- package/esm2015/lib/components/sort/sort.component.js +0 -87
- package/esm2015/lib/components/sort/sort.module.js +0 -23
- package/esm2015/lib/components/spinner/spinner.component.js +0 -109
- package/esm2015/lib/components/spinner/spinner.module.js +0 -14
- package/esm2015/lib/components/subsidy-discount/subsidy-discount.component.js +0 -101
- package/esm2015/lib/components/subsidy-discount/subsidy-discount.module.js +0 -23
- package/esm2015/lib/components/suggestions/suggestions.component.js +0 -40
- package/esm2015/lib/components/suggestions/suggestions.module.js +0 -19
- package/esm2015/lib/components/tab-group/tab/tab.component.js +0 -123
- package/esm2015/lib/components/tab-group/tab-group.component.js +0 -85
- package/esm2015/lib/components/tab-group/tab-group.module.js +0 -20
- package/esm2015/lib/components/table/column/column.component.js +0 -17
- package/esm2015/lib/components/table/column-group/column-group.component.js +0 -34
- package/esm2015/lib/components/table/services/table.service.js +0 -20
- package/esm2015/lib/components/table/table-body/table-body.component.js +0 -27
- package/esm2015/lib/components/table/table-foot/table-foot.component.js +0 -27
- package/esm2015/lib/components/table/table-head/table-head.component.js +0 -27
- package/esm2015/lib/components/table/table-row/table-data/table-data.component.js +0 -15
- package/esm2015/lib/components/table/table-row/table-header/table-header.component.js +0 -15
- package/esm2015/lib/components/table/table-row/table-row.component.js +0 -27
- package/esm2015/lib/components/table/table.component.js +0 -29
- package/esm2015/lib/components/table/table.module.js +0 -45
- package/esm2015/lib/components/textarea/textarea.component.js +0 -73
- package/esm2015/lib/components/textarea/textarea.module.js +0 -20
- package/esm2015/lib/components/toggle/toggle.component.js +0 -86
- package/esm2015/lib/components/toggle/toggle.module.js +0 -22
- package/esm2015/lib/components/trip-summary/trip-summary.component.js +0 -152
- package/esm2015/lib/components/trip-summary/trip-summary.module.js +0 -23
- package/esm2015/lib/components/weather-icon/weather-icon.component.js +0 -56
- package/esm2015/lib/components/weather-icon/weather-icon.module.js +0 -14
- package/esm2015/lib/core/base/nas-component.base.js +0 -48
- package/esm2015/lib/core/directives/nas-class/nas-class.directive.js +0 -75
- package/esm2015/lib/core/directives/nas-class/nas-class.module.js +0 -17
- package/esm2015/lib/core/services/abandoned-basket/abandoned-basket.service.js +0 -55
- package/esm2015/lib/core/services/animate-helper/animate-helper.service.js +0 -47
- package/esm2015/lib/core/services/bem-helper/bem-helper.service.js +0 -41
- package/esm2015/lib/core/services/date/date-helper.service.js +0 -196
- package/esm2015/lib/core/services/device/device-helper.service.js +0 -43
- package/esm2015/lib/core/services/geolocation/geolocation.service.js +0 -60
- package/esm2015/lib/core/services/language/language-helper.service.js +0 -162
- package/esm2015/lib/core/services/sort/sort.service.js +0 -19
- package/esm2015/lib/core/services/viewport/viewport.service.js +0 -29
- package/esm2015/lib/services/get-position.service.js +0 -21
- package/esm2015/norwegian-core-components.js +0 -12
- package/fesm2015/norwegian-core-components.js +0 -10860
- package/fesm2015/norwegian-core-components.js.map +0 -1
- package/norwegian-core-components.d.ts +0 -11
- package/norwegian-core-components.metadata.json +0 -1
- /package/{esm2015/lib/components/accordion/index.js → esm2020/lib/components/accordion/index.mjs} +0 -0
- /package/{esm2015/lib/components/airport-select/index.js → esm2020/lib/components/airport-select/index.mjs} +0 -0
- /package/{esm2015/lib/components/airport-select/models/airport.model.js → esm2020/lib/components/airport-select/models/airport.model.mjs} +0 -0
- /package/{esm2015/lib/components/airport-select/models/results-labels.model.js → esm2020/lib/components/airport-select/models/results-labels.model.mjs} +0 -0
- /package/{esm2015/lib/components/autocomplete/index.js → esm2020/lib/components/autocomplete/index.mjs} +0 -0
- /package/{esm2015/lib/components/autocomplete/models/autocomplete.model.js → esm2020/lib/components/autocomplete/models/autocomplete.model.mjs} +0 -0
- /package/{esm2015/lib/components/backdrop/index.js → esm2020/lib/components/backdrop/index.mjs} +0 -0
- /package/{esm2015/lib/components/box/index.js → esm2020/lib/components/box/index.mjs} +0 -0
- /package/{esm2015/lib/components/button/index.js → esm2020/lib/components/button/index.mjs} +0 -0
- /package/{esm2015/lib/components/checkbox/index.js → esm2020/lib/components/checkbox/index.mjs} +0 -0
- /package/{esm2015/lib/components/chip/index.js → esm2020/lib/components/chip/index.mjs} +0 -0
- /package/{esm2015/lib/components/container/index.js → esm2020/lib/components/container/index.mjs} +0 -0
- /package/{esm2015/lib/components/continue/index.js → esm2020/lib/components/continue/index.mjs} +0 -0
- /package/{esm2015/lib/components/cover/index.js → esm2020/lib/components/cover/index.mjs} +0 -0
- /package/{esm2015/lib/components/datepicker/calendar/calendar-date.model.js → esm2020/lib/components/datepicker/calendar/calendar-date.model.mjs} +0 -0
- /package/{esm2015/lib/components/datepicker/calendar/enums/week-start.enum.js → esm2020/lib/components/datepicker/calendar/enums/week-start.enum.mjs} +0 -0
- /package/{esm2015/lib/components/datepicker/calendar/models/day.model.js → esm2020/lib/components/datepicker/calendar/models/day.model.mjs} +0 -0
- /package/{esm2015/lib/components/datepicker/calendar/models/select-option.model.js → esm2020/lib/components/datepicker/calendar/models/select-option.model.mjs} +0 -0
- /package/{esm2015/lib/components/datepicker/calendar/models/week.model.js → esm2020/lib/components/datepicker/calendar/models/week.model.mjs} +0 -0
- /package/{esm2015/lib/components/datepicker/index.js → esm2020/lib/components/datepicker/index.mjs} +0 -0
- /package/{esm2015/lib/components/datepicker-combo/index.js → esm2020/lib/components/datepicker-combo/index.mjs} +0 -0
- /package/{esm2015/lib/components/divider/index.js → esm2020/lib/components/divider/index.mjs} +0 -0
- /package/{esm2015/lib/components/dropdown/index.js → esm2020/lib/components/dropdown/index.mjs} +0 -0
- /package/{esm2015/lib/components/filter/enums/trip-type.enum.js → esm2020/lib/components/filter/enums/trip-type.enum.mjs} +0 -0
- /package/{esm2015/lib/components/filter/index.js → esm2020/lib/components/filter/index.mjs} +0 -0
- /package/{esm2015/lib/components/grid/index.js → esm2020/lib/components/grid/index.mjs} +0 -0
- /package/{esm2015/lib/components/icon/index.js → esm2020/lib/components/icon/index.mjs} +0 -0
- /package/{esm2015/lib/components/icon-list/icon-list.model.js → esm2020/lib/components/icon-list/icon-list.model.mjs} +0 -0
- /package/{esm2015/lib/components/icon-list/index.js → esm2020/lib/components/icon-list/index.mjs} +0 -0
- /package/{esm2015/lib/components/index.js → esm2020/lib/components/index.mjs} +0 -0
- /package/{esm2015/lib/components/info/index.js → esm2020/lib/components/info/index.mjs} +0 -0
- /package/{esm2015/lib/components/info/models/info.model.js → esm2020/lib/components/info/models/info.model.mjs} +0 -0
- /package/{esm2015/lib/components/input/index.js → esm2020/lib/components/input/index.mjs} +0 -0
- /package/{esm2015/lib/components/journey/index.js → esm2020/lib/components/journey/index.mjs} +0 -0
- /package/{esm2015/lib/components/journey/models/journey-flight.model.js → esm2020/lib/components/journey/models/journey-flight.model.mjs} +0 -0
- /package/{esm2015/lib/components/journey/models/journey.model.js → esm2020/lib/components/journey/models/journey.model.mjs} +0 -0
- /package/{esm2015/lib/components/journey-availability/index.js → esm2020/lib/components/journey-availability/index.mjs} +0 -0
- /package/{esm2015/lib/components/journey-availability-list/enums/availability-sort-option.enum.js → esm2020/lib/components/journey-availability-list/enums/availability-sort-option.enum.mjs} +0 -0
- /package/{esm2015/lib/components/journey-availability-list/index.js → esm2020/lib/components/journey-availability-list/index.mjs} +0 -0
- /package/{esm2015/lib/components/journey-selection/index.js → esm2020/lib/components/journey-selection/index.mjs} +0 -0
- /package/{esm2015/lib/components/journey-selection/models/journey-selection-collapsed.model.js → esm2020/lib/components/journey-selection/models/journey-selection-collapsed.model.mjs} +0 -0
- /package/{esm2015/lib/components/journey-selection/models/journey-selection-common.model.js → esm2020/lib/components/journey-selection/models/journey-selection-common.model.mjs} +0 -0
- /package/{esm2015/lib/components/journey-selection/models/journey-selection-expanded.model.js → esm2020/lib/components/journey-selection/models/journey-selection-expanded.model.mjs} +0 -0
- /package/{esm2015/lib/components/journey-selection/models/journey-selection.model.js → esm2020/lib/components/journey-selection/models/journey-selection.model.mjs} +0 -0
- /package/{esm2015/lib/components/journey-stopover/index.js → esm2020/lib/components/journey-stopover/index.mjs} +0 -0
- /package/{esm2015/lib/components/journey-stopover/models/stopover-time.model.js → esm2020/lib/components/journey-stopover/models/stopover-time.model.mjs} +0 -0
- /package/{esm2015/lib/components/list/index.js → esm2020/lib/components/list/index.mjs} +0 -0
- /package/{esm2015/lib/components/modal/index.js → esm2020/lib/components/modal/index.mjs} +0 -0
- /package/{esm2015/lib/components/number-field/index.js → esm2020/lib/components/number-field/index.mjs} +0 -0
- /package/{esm2015/lib/components/page-footer/index.js → esm2020/lib/components/page-footer/index.mjs} +0 -0
- /package/{esm2015/lib/components/page-header/index.js → esm2020/lib/components/page-header/index.mjs} +0 -0
- /package/{esm2015/lib/components/passenger-select/enums/passenger-type.enum.js → esm2020/lib/components/passenger-select/enums/passenger-type.enum.mjs} +0 -0
- /package/{esm2015/lib/components/passenger-select/index.js → esm2020/lib/components/passenger-select/index.mjs} +0 -0
- /package/{esm2015/lib/components/phone-number/index.js → esm2020/lib/components/phone-number/index.mjs} +0 -0
- /package/{esm2015/lib/components/premium-toggle/index.js → esm2020/lib/components/premium-toggle/index.mjs} +0 -0
- /package/{esm2015/lib/components/radio/index.js → esm2020/lib/components/radio/index.mjs} +0 -0
- /package/{esm2015/lib/components/select/index.js → esm2020/lib/components/select/index.mjs} +0 -0
- /package/{esm2015/lib/components/select/models/select-option.model.js → esm2020/lib/components/select/models/select-option.model.mjs} +0 -0
- /package/{esm2015/lib/components/simple-list/index.js → esm2020/lib/components/simple-list/index.mjs} +0 -0
- /package/{esm2015/lib/components/slide-toggle/index.js → esm2020/lib/components/slide-toggle/index.mjs} +0 -0
- /package/{esm2015/lib/components/slider/index.js → esm2020/lib/components/slider/index.mjs} +0 -0
- /package/{esm2015/lib/components/sort/index.js → esm2020/lib/components/sort/index.mjs} +0 -0
- /package/{esm2015/lib/components/spinner/index.js → esm2020/lib/components/spinner/index.mjs} +0 -0
- /package/{esm2015/lib/components/subsidy-discount/index.js → esm2020/lib/components/subsidy-discount/index.mjs} +0 -0
- /package/{esm2015/lib/components/subsidy-discount/models/subsidy-discount.model.js → esm2020/lib/components/subsidy-discount/models/subsidy-discount.model.mjs} +0 -0
- /package/{esm2015/lib/components/suggestions/index.js → esm2020/lib/components/suggestions/index.mjs} +0 -0
- /package/{esm2015/lib/components/tab-group/index.js → esm2020/lib/components/tab-group/index.mjs} +0 -0
- /package/{esm2015/lib/components/table/index.js → esm2020/lib/components/table/index.mjs} +0 -0
- /package/{esm2015/lib/components/textarea/index.js → esm2020/lib/components/textarea/index.mjs} +0 -0
- /package/{esm2015/lib/components/toggle/index.js → esm2020/lib/components/toggle/index.mjs} +0 -0
- /package/{esm2015/lib/components/toggle/models/options.model.js → esm2020/lib/components/toggle/models/options.model.mjs} +0 -0
- /package/{esm2015/lib/components/trip-summary/index.js → esm2020/lib/components/trip-summary/index.mjs} +0 -0
- /package/{esm2015/lib/components/weather-icon/index.js → esm2020/lib/components/weather-icon/index.mjs} +0 -0
- /package/{esm2015/lib/core/decorators/debounce.decorator.js → esm2020/lib/core/decorators/debounce.decorator.mjs} +0 -0
- /package/{esm2015/lib/core/directives/index.js → esm2020/lib/core/directives/index.mjs} +0 -0
- /package/{esm2015/lib/core/index.js → esm2020/lib/core/index.mjs} +0 -0
- /package/{esm2015/lib/core/models/abandoned-basket-item.model.js → esm2020/lib/core/models/abandoned-basket-item.model.mjs} +0 -0
- /package/{esm2015/lib/core/models/animate.model.js → esm2020/lib/core/models/animate.model.mjs} +0 -0
- /package/{esm2015/lib/core/models/class.model.js → esm2020/lib/core/models/class.model.mjs} +0 -0
- /package/{esm2015/lib/core/models/index.js → esm2020/lib/core/models/index.mjs} +0 -0
- /package/{esm2015/lib/core/models/link.model.js → esm2020/lib/core/models/link.model.mjs} +0 -0
- /package/{esm2015/lib/core/models/position.model.js → esm2020/lib/core/models/position.model.mjs} +0 -0
- /package/{esm2015/lib/core/models/utc-date.model.js → esm2020/lib/core/models/utc-date.model.mjs} +0 -0
- /package/{esm2015/lib/core/services/date/date-compare.enum.js → esm2020/lib/core/services/date/date-compare.enum.mjs} +0 -0
- /package/{esm2015/lib/core/services/geolocation/geolocation-state.enum.js → esm2020/lib/core/services/geolocation/geolocation-state.enum.mjs} +0 -0
- /package/{esm2015/lib/core/services/index.js → esm2020/lib/core/services/index.mjs} +0 -0
- /package/{esm2015/lib/index.js → esm2020/lib/index.mjs} +0 -0
- /package/{esm2015/lib/services/index.js → esm2020/lib/services/index.mjs} +0 -0
- /package/{esm2015/lib/shared/index.js → esm2020/lib/shared/index.mjs} +0 -0
- /package/{esm2015/lib/shared/models/flight-details.js → esm2020/lib/shared/models/flight-details.mjs} +0 -0
- /package/{esm2015/lib/shared/models/index.js → esm2020/lib/shared/models/index.mjs} +0 -0
- /package/{esm2015/lib/shared/models/journey-availability-sort.model.js → esm2020/lib/shared/models/journey-availability-sort.model.mjs} +0 -0
- /package/{esm2015/lib/shared/models/journey-availability.model.js → esm2020/lib/shared/models/journey-availability.model.mjs} +0 -0
- /package/{esm2015/lib/shared/models/journey-details.model.js → esm2020/lib/shared/models/journey-details.model.mjs} +0 -0
- /package/{esm2015/lib/shared/models/journey-duration.model.js → esm2020/lib/shared/models/journey-duration.model.mjs} +0 -0
- /package/{esm2015/lib/shared/models/journey-stopover.model.js → esm2020/lib/shared/models/journey-stopover.model.mjs} +0 -0
- /package/{esm2015/lib/shared/models/journey-transit-info.model.js → esm2020/lib/shared/models/journey-transit-info.model.mjs} +0 -0
- /package/{esm2015/lib/shared/models/operating-carrier.model.js → esm2020/lib/shared/models/operating-carrier.model.mjs} +0 -0
- /package/{esm2015/lib/shared/models/sort-option.model.js → esm2020/lib/shared/models/sort-option.model.mjs} +0 -0
- /package/{esm2015/lib/shared/models/sort.model.js → esm2020/lib/shared/models/sort.model.mjs} +0 -0
- /package/{esm2015/lib/shared/models/trip-item-details.model.js → esm2020/lib/shared/models/trip-item-details.model.mjs} +0 -0
- /package/{esm2015/lib/shared/models/trip-summary-details.model.js → esm2020/lib/shared/models/trip-summary-details.model.mjs} +0 -0
- /package/{esm2015/lib/shared/models/trip-summary.model.js → esm2020/lib/shared/models/trip-summary.model.mjs} +0 -0
- /package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
|
@@ -1,217 +0,0 @@
|
|
|
1
|
-
import { DatePipe } from '@angular/common';
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { UtcDate } from '../../../core/models/utc-date.model';
|
|
4
|
-
import { DateHelper } from '../../../core/services/date/date-helper.service';
|
|
5
|
-
import { WeekStart } from '../calendar/enums/week-start.enum';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/common";
|
|
8
|
-
import * as i2 from "../../../core/services/index";
|
|
9
|
-
export class CalendarService {
|
|
10
|
-
constructor(datePipe, dateService) {
|
|
11
|
-
this.datePipe = datePipe;
|
|
12
|
-
this.dateService = dateService;
|
|
13
|
-
}
|
|
14
|
-
getMonthNames(locale) {
|
|
15
|
-
const month = new Date();
|
|
16
|
-
month.setMonth(0);
|
|
17
|
-
month.setDate(1);
|
|
18
|
-
const monthNames = new Array();
|
|
19
|
-
for (let index = 0; index < 12; index++) {
|
|
20
|
-
const currentMonth = new Date(Date.UTC(month.getFullYear(), month.getMonth() + index, 1));
|
|
21
|
-
monthNames.push(this.datePipe.transform(currentMonth, 'LLLL', 'UTC', locale));
|
|
22
|
-
}
|
|
23
|
-
return monthNames;
|
|
24
|
-
}
|
|
25
|
-
getWeekdays(weekStart, locale) {
|
|
26
|
-
const weekday = this.getMonday();
|
|
27
|
-
const weekdays = new Array();
|
|
28
|
-
for (let index = 0; index < 7; index++) {
|
|
29
|
-
const currentDay = new Date(Date.UTC(weekday.getFullYear(), weekday.getMonth(), weekday.getDate() + index));
|
|
30
|
-
weekdays.push(this.datePipe.transform(currentDay, 'EEE', 'UTC', locale));
|
|
31
|
-
}
|
|
32
|
-
if (weekStart !== WeekStart.monday) {
|
|
33
|
-
const sunday = weekdays.pop();
|
|
34
|
-
weekdays.unshift(sunday);
|
|
35
|
-
}
|
|
36
|
-
return weekdays;
|
|
37
|
-
}
|
|
38
|
-
updateAvailableDaysWithSelectedDate(availableDays, selectedDate) {
|
|
39
|
-
if (!availableDays || !selectedDate) {
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
availableDays = availableDays.map((x) => {
|
|
43
|
-
if (!this.dateService.isSameDate(this.dateService.utcDate(x.date), selectedDate)) {
|
|
44
|
-
return x;
|
|
45
|
-
}
|
|
46
|
-
if (x.isDisabled) {
|
|
47
|
-
selectedDate.setDate(selectedDate.date + 1);
|
|
48
|
-
return x;
|
|
49
|
-
}
|
|
50
|
-
x.isSelected = true;
|
|
51
|
-
return x;
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
setActiveDate(date, weeks) {
|
|
55
|
-
if (!weeks || weeks.length <= 0) {
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
for (const day of this.getDays(weeks)) {
|
|
59
|
-
if (!day) {
|
|
60
|
-
continue;
|
|
61
|
-
}
|
|
62
|
-
day.isActive = false;
|
|
63
|
-
const utcDate = this.dateService.utcDate(day.date);
|
|
64
|
-
if (this.dateService.isSameDate(utcDate, date)) {
|
|
65
|
-
day.isActive = true;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
getDays(weeks) {
|
|
70
|
-
const flatten = new Array();
|
|
71
|
-
weeks.forEach(x => x.days.forEach(d => flatten.push(d)));
|
|
72
|
-
return flatten;
|
|
73
|
-
}
|
|
74
|
-
getWeeks(availableDays, weekStart) {
|
|
75
|
-
if (!availableDays) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
const sortedDays = availableDays
|
|
79
|
-
.sort((a, b) => this.dateService
|
|
80
|
-
.date(this.dateService.utcDate(a.date)).getTime() - this.dateService.date(this.dateService.utcDate(b.date)).getTime());
|
|
81
|
-
const weeks = new Array();
|
|
82
|
-
let index = 0;
|
|
83
|
-
for (let week = 0; week < 6; week++) {
|
|
84
|
-
const days = new Array();
|
|
85
|
-
for (let day = 0; day < 7; day++) {
|
|
86
|
-
const currentDayModel = sortedDays[0];
|
|
87
|
-
if (currentDayModel) {
|
|
88
|
-
const currentDate = this.dateService.utcDate(currentDayModel.date);
|
|
89
|
-
currentDayModel.isEmpty = currentDayModel.isAvailable;
|
|
90
|
-
let currentDay = currentDate.getDay();
|
|
91
|
-
if (weekStart === WeekStart.monday) {
|
|
92
|
-
if (currentDay === 0) {
|
|
93
|
-
currentDay = 6;
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
currentDay -= 1;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
if (currentDay === day) {
|
|
100
|
-
index = index + 1;
|
|
101
|
-
currentDayModel.index = index;
|
|
102
|
-
days.push(currentDayModel);
|
|
103
|
-
sortedDays.shift();
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
days.push(null);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
const firstDayInWeek = days.find(x => x != null);
|
|
111
|
-
let firstDateDateInWeek;
|
|
112
|
-
if (firstDayInWeek) {
|
|
113
|
-
const utcDate = this.dateService.utcDate(firstDayInWeek.date);
|
|
114
|
-
firstDateDateInWeek = new Date(utcDate.year, utcDate.month, utcDate.date);
|
|
115
|
-
}
|
|
116
|
-
if (!days.every(x => x === null)) {
|
|
117
|
-
weeks.push({
|
|
118
|
-
days: days,
|
|
119
|
-
weekNumber: this.dateService.getWeekNumber(firstDateDateInWeek)
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
return weeks;
|
|
124
|
-
}
|
|
125
|
-
getCurrentMonth(date) {
|
|
126
|
-
let currentMonth;
|
|
127
|
-
if (date) {
|
|
128
|
-
currentMonth = this.dateService.utcDate(new Date(Date.UTC(date.year, date.month, 1)));
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
currentMonth = this.dateService.utcDate();
|
|
132
|
-
}
|
|
133
|
-
return currentMonth;
|
|
134
|
-
}
|
|
135
|
-
getMonthsSelectOptions(disablePastSelection, maxMonthIndex, monthNames) {
|
|
136
|
-
const months = new Array();
|
|
137
|
-
if (disablePastSelection === false) {
|
|
138
|
-
return months;
|
|
139
|
-
}
|
|
140
|
-
for (let index = 0; index < maxMonthIndex; index++) {
|
|
141
|
-
const date = this.dateService.utcDate().toDate();
|
|
142
|
-
date.setUTCDate(1);
|
|
143
|
-
date.setUTCMonth(date.getUTCMonth() + index);
|
|
144
|
-
const selectOption = {
|
|
145
|
-
title: `${monthNames[date.getUTCMonth()]} - ${date.getUTCFullYear()}`,
|
|
146
|
-
value: date.toISOString()
|
|
147
|
-
};
|
|
148
|
-
months.push(selectOption);
|
|
149
|
-
}
|
|
150
|
-
return months;
|
|
151
|
-
}
|
|
152
|
-
getSelectedMonth(months, currentMonth) {
|
|
153
|
-
if (!months) {
|
|
154
|
-
return null;
|
|
155
|
-
}
|
|
156
|
-
const selected = months.find(x => {
|
|
157
|
-
const date = this.dateService.utcDate(x.value);
|
|
158
|
-
date.setDate(1);
|
|
159
|
-
const month = new UtcDate(currentMonth.year, currentMonth.month, 1);
|
|
160
|
-
return this.dateService.isSameMonth(date, month);
|
|
161
|
-
});
|
|
162
|
-
return selected;
|
|
163
|
-
}
|
|
164
|
-
getAvailableDays(currentMonth, availableDates, availability, disablePastSelection, lowerLimitDate, activeDate, selectedDate) {
|
|
165
|
-
const firstDateInThisMonth = new Date();
|
|
166
|
-
firstDateInThisMonth.setUTCDate(1);
|
|
167
|
-
firstDateInThisMonth.setUTCHours(0, 0, 0, 0);
|
|
168
|
-
const currentDate = currentMonth
|
|
169
|
-
? new Date(Date.UTC(currentMonth.year, currentMonth.month, 1))
|
|
170
|
-
: firstDateInThisMonth;
|
|
171
|
-
const currentDateMonth = currentDate.getUTCMonth();
|
|
172
|
-
const days = new Array();
|
|
173
|
-
while (currentDate.getUTCMonth() === currentDateMonth) {
|
|
174
|
-
const utcDate = this.dateService.utcDate(currentDate);
|
|
175
|
-
const day = {
|
|
176
|
-
date: this.dateService.date(utcDate).toISOString(),
|
|
177
|
-
isAvailable: this.isAvailable(utcDate, availableDates, availability, disablePastSelection),
|
|
178
|
-
isDisabled: this.dateService.isLessThan(utcDate, lowerLimitDate) ? true : false,
|
|
179
|
-
isActive: this.dateService.isSameDate(this.dateService.utcDate(currentDate), activeDate)
|
|
180
|
-
};
|
|
181
|
-
if (selectedDate && this.dateService.isSameDate(selectedDate, utcDate) && day.isSelected || !day.isAvailable) {
|
|
182
|
-
day.isSelected = false;
|
|
183
|
-
}
|
|
184
|
-
days.push(day);
|
|
185
|
-
currentDate.setUTCDate(currentDate.getUTCDate() + 1);
|
|
186
|
-
}
|
|
187
|
-
return days;
|
|
188
|
-
}
|
|
189
|
-
isAvailable(date, availableDates, availability, disablePastSelection) {
|
|
190
|
-
if (!availability) {
|
|
191
|
-
return disablePastSelection && this.dateService.isInThePast(date, false, true, true) ? false : true;
|
|
192
|
-
}
|
|
193
|
-
if ((disablePastSelection && this.dateService.isInThePast(date, false, true, true))
|
|
194
|
-
|| !availableDates
|
|
195
|
-
|| !availableDates.some(x => this.dateService.isSameDate(x, date))) {
|
|
196
|
-
return false;
|
|
197
|
-
}
|
|
198
|
-
return true;
|
|
199
|
-
}
|
|
200
|
-
getMonday() {
|
|
201
|
-
const date = new Date();
|
|
202
|
-
const day = date.getDay();
|
|
203
|
-
const diff = date.getDate() - day + (day === 0 ? -6 : 1);
|
|
204
|
-
return new Date(date.setDate(diff));
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
CalendarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CalendarService_Factory() { return new CalendarService(i0.ɵɵinject(i1.DatePipe), i0.ɵɵinject(i2.DateHelper)); }, token: CalendarService, providedIn: "root" });
|
|
208
|
-
CalendarService.decorators = [
|
|
209
|
-
{ type: Injectable, args: [{
|
|
210
|
-
providedIn: 'root'
|
|
211
|
-
},] }
|
|
212
|
-
];
|
|
213
|
-
CalendarService.ctorParameters = () => [
|
|
214
|
-
{ type: DatePipe },
|
|
215
|
-
{ type: DateHelper }
|
|
216
|
-
];
|
|
217
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9zZXJ2aWNlcy9jYWxlbmRhci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFFN0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBTzlELE1BQU0sT0FBTyxlQUFlO0lBRTFCLFlBQW9CLFFBQWtCLEVBQVUsV0FBdUI7UUFBbkQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFZO0lBQUksQ0FBQztJQUU1RSxhQUFhLENBQUMsTUFBZTtRQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3pCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqQixNQUFNLFVBQVUsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBRXZDLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDdkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLEtBQUssRUFBRSxD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Q0FBQyxDQUFDLENBQUM7UUFDekQsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7OztZQWhRRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVhRLFFBQVE7WUFHUixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXRjRGF0ZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL3V0Yy1kYXRlLm1vZGVsJztcbmltcG9ydCB7IERhdGVIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2RhdGUvZGF0ZS1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTZWxlY3RPcHRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL3NlbGVjdC9tb2RlbHMvc2VsZWN0LW9wdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBXZWVrU3RhcnQgfSBmcm9tICcuLi9jYWxlbmRhci9lbnVtcy93ZWVrLXN0YXJ0LmVudW0nO1xuaW1wb3J0IHsgRGF5TW9kZWwgfSBmcm9tICcuLi9jYWxlbmRhci9tb2RlbHMvZGF5Lm1vZGVsJztcbmltcG9ydCB7IFdlZWtNb2RlbCB9IGZyb20gJy4uL2NhbGVuZGFyL21vZGVscy93ZWVrLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSwgcHJpdmF0ZSBkYXRlU2VydmljZTogRGF0ZUhlbHBlcikgeyB9XG5cbiAgZ2V0TW9udGhOYW1lcyhsb2NhbGU/OiBzdHJpbmcpOiBBcnJheTxzdHJpbmc+IHtcbiAgICBjb25zdCBtb250aCA9IG5ldyBEYXRlKCk7XG4gICAgbW9udGguc2V0TW9udGgoMCk7XG4gICAgbW9udGguc2V0RGF0ZSgxKTtcblxuICAgIGNvbnN0IG1vbnRoTmFtZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDEyOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBjdXJyZW50TW9udGggPSBuZXcgRGF0ZShEYXRlLlVUQyhtb250aC5nZXRGdWxsWWVhcigpLCBtb250aC5nZXRNb250aCgpICsgaW5kZXgsIDEpKTtcbiAgICAgIG1vbnRoTmFtZXMucHVzaCh0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShjdXJyZW50TW9udGgsICdMTExMJywgJ1VUQycsIGxvY2FsZSkpO1xuICAgIH1cblxuICAgIHJldHVybiBtb250aE5hbWVzO1xuICB9XG5cbiAgZ2V0V2Vla2RheXMod2Vla1N0YXJ0OiBXZWVrU3RhcnQsIGxvY2FsZT86IHN0cmluZyk6IEFycmF5PHN0cmluZz4ge1xuICAgIGNvbnN0IHdlZWtkYXkgPSB0aGlzLmdldE1vbmRheSgpO1xuXG4gICAgY29uc3Qgd2Vla2RheXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDc7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGN1cnJlbnREYXkgPSBuZXcgRGF0ZShEYXRlLlVUQyh3ZWVrZGF5LmdldEZ1bGxZZWFyKCksIHdlZWtkYXkuZ2V0TW9udGgoKSwgd2Vla2RheS5nZXREYXRlKCkgKyBpbmRleCkpO1xuICAgICAgd2Vla2RheXMucHVzaCh0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShjdXJyZW50RGF5LCAnRUVFJywgJ1VUQycsIGxvY2FsZSkpO1xuICAgIH1cbiAgICBpZiAod2Vla1N0YXJ0ICE9PSBXZWVrU3RhcnQubW9uZGF5KSB7XG4gICAgICBjb25zdCBzdW5kYXkgPSB3ZWVrZGF5cy5wb3AoKTtcbiAgICAgIHdlZWtkYXlzLnVuc2hpZnQoc3VuZGF5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gd2Vla2RheXM7XG4gIH1cblxuICB1cGRhdGVBdmFpbGFibGVEYXlzV2l0aFNlbGVjdGVkRGF0ZShhdmFpbGFibGVEYXlzOiBBcnJheTxEYXlNb2RlbD4sIHNlbGVjdGVkRGF0ZTogVXRjRGF0ZSk6IHZvaWQge1xuICAgIGlmICghYXZhaWxhYmxlRGF5cyB8fCAhc2VsZWN0ZWREYXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXZhaWxhYmxlRGF5cyA9IGF2YWlsYWJsZURheXMubWFwKCh4OiBEYXlNb2RlbCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmRhdGVTZXJ2aWNlLmlzU2FtZURhdGUodGhpcy5kYXRlU2VydmljZS51dGNEYXRlKHguZGF0ZSksIHNlbGVjdGVkRGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIHg7XG4gICAgICB9XG5cbiAgICAgIGlmICh4LmlzRGlzYWJsZWQpIHtcbiAgICAgICAgc2VsZWN0ZWREYXRlLnNldERhdGUoc2VsZWN0ZWREYXRlLmRhdGUgKyAxKTtcbiAgICAgICAgcmV0dXJuIHg7XG4gICAgICB9XG5cbiAgICAgIHguaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICByZXR1cm4geDtcbiAgICB9KTtcbiAgfVxuXG4gIHNldEFjdGl2ZURhdGUoZGF0ZTogVXRjRGF0ZSwgd2Vla3M6IEFycmF5PFdlZWtNb2RlbD4pOiB2b2lkIHtcbiAgICBpZiAoIXdlZWtzIHx8IHdlZWtzLmxlbmd0aCA8PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBkYXkgb2YgdGhpcy5nZXREYXlzKHdlZWtzKSkge1xuICAgICAgaWYgKCFkYXkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGRheS5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgY29uc3QgdXRjRGF0ZSA9IHRoaXMuZGF0ZVNlcnZpY2UudXRjRGF0ZShkYXkuZGF0ZSk7XG5cbiAgICAgIGlmICh0aGlzLmRhdGVTZXJ2aWNlLmlzU2FtZURhdGUodXRjRGF0ZSwgZGF0ZSkpIHtcbiAgICAgICAgZGF5LmlzQWN0aXZlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXREYXlzKHdlZWtzOiBBcnJheTxXZWVrTW9kZWw+KTogQXJyYXk8RGF5TW9kZWw+IHtcbiAgICBjb25zdCBmbGF0dGVuID0gbmV3IEFycmF5PERheU1vZGVsPigpO1xuXG4gICAgd2Vla3MuZm9yRWFjaCh4ID0+IHguZGF5cy5mb3JFYWNoKGQgPT4gZmxhdHRlbi5wdXNoKGQpKSk7XG5cbiAgICByZXR1cm4gZmxhdHRlbjtcbiAgfVxuXG4gIGdldFdlZWtzKGF2YWlsYWJsZURheXM6IEFycmF5PERheU1vZGVsPiwgd2Vla1N0YXJ0OiBXZWVrU3RhcnQpOiBBcnJheTxXZWVrTW9kZWw+IHtcbiAgICBpZiAoIWF2YWlsYWJsZURheXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzb3J0ZWREYXlzID0gYXZhaWxhYmxlRGF5c1xuICAgICAgLnNvcnQoKGEsIGIpID0+IHRoaXMuZGF0ZVNlcnZpY2VcbiAgICAgICAgLmRhdGUodGhpcy5kYXRlU2VydmljZS51dGNEYXRlKGEuZGF0ZSkpLmdldFRpbWUoKSAtIHRoaXMuZGF0ZVNlcnZpY2UuZGF0ZSh0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoYi5kYXRlKSkuZ2V0VGltZSgpKTtcblxuICAgIGNvbnN0IHdlZWtzID0gbmV3IEFycmF5PFdlZWtNb2RlbD4oKTtcbiAgICBsZXQgaW5kZXggPSAwO1xuXG4gICAgZm9yIChsZXQgd2VlayA9IDA7IHdlZWsgPCA2OyB3ZWVrKyspIHtcbiAgICAgIGNvbnN0IGRheXMgPSBuZXcgQXJyYXk8RGF5TW9kZWw+KCk7XG5cbiAgICAgIGZvciAobGV0IGRheSA9IDA7IGRheSA8IDc7IGRheSsrKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnREYXlNb2RlbCA9IHNvcnRlZERheXNbMF07XG4gICAgICAgIGlmIChjdXJyZW50RGF5TW9kZWwpIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IHRoaXMuZGF0ZVNlcnZpY2UudXRjRGF0ZShjdXJyZW50RGF5TW9kZWwuZGF0ZSk7XG5cbiAgICAgICAgICBjdXJyZW50RGF5TW9kZWwuaXNFbXB0eSA9IGN1cnJlbnREYXlNb2RlbC5pc0F2YWlsYWJsZTtcblxuICAgICAgICAgIGxldCBjdXJyZW50RGF5ID0gY3VycmVudERhdGUuZ2V0RGF5KCk7XG5cbiAgICAgICAgICBpZiAod2Vla1N0YXJ0ID09PSBXZWVrU3RhcnQubW9uZGF5KSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudERheSA9PT0gMCkge1xuICAgICAgICAgICAgICBjdXJyZW50RGF5ID0gNjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGN1cnJlbnREYXkgLT0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY3VycmVudERheSA9PT0gZGF5KSB7XG4gICAgICAgICAgICBpbmRleCA9IGluZGV4ICsgMTtcbiAgICAgICAgICAgIGN1cnJlbnREYXlNb2RlbC5pbmRleCA9IGluZGV4O1xuXG4gICAgICAgICAgICBkYXlzLnB1c2goY3VycmVudERheU1vZGVsKTtcbiAgICAgICAgICAgIHNvcnRlZERheXMuc2hpZnQoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF5cy5wdXNoKG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBmaXJzdERheUluV2VlayA9IGRheXMuZmluZCh4ID0+IHggIT0gbnVsbCk7XG4gICAgICBsZXQgZmlyc3REYXRlRGF0ZUluV2VlazogRGF0ZTtcblxuICAgICAgaWYgKGZpcnN0RGF5SW5XZWVrKSB7XG4gICAgICAgIGNvbnN0IHV0Y0RhdGUgPSB0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoZmlyc3REYXlJbldlZWsuZGF0ZSk7XG4gICAgICAgIGZpcnN0RGF0ZURhdGVJbldlZWsgPSBuZXcgRGF0ZSh1dGNEYXRlLnllYXIsIHV0Y0RhdGUubW9udGgsIHV0Y0RhdGUuZGF0ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZGF5cy5ldmVyeSh4ID0+IHggPT09IG51bGwpKSB7XG4gICAgICAgIHdlZWtzLnB1c2goe1xuICAgICAgICAgIGRheXM6IGRheXMsXG4gICAgICAgICAgd2Vla051bWJlcjogdGhpcy5kYXRlU2VydmljZS5nZXRXZWVrTnVtYmVyKGZpcnN0RGF0ZURhdGVJbldlZWspXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gd2Vla3M7XG4gIH1cblxuICBnZXRDdXJyZW50TW9udGgoZGF0ZT86IFV0Y0RhdGUpOiBVdGNEYXRlIHtcbiAgICBsZXQgY3VycmVudE1vbnRoOiBVdGNEYXRlO1xuICAgIGlmIChkYXRlKSB7XG4gICAgICBjdXJyZW50TW9udGggPSB0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUobmV3IERhdGUoRGF0ZS5VVEMoZGF0ZS55ZWFyLCBkYXRlLm1vbnRoLCAxKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50TW9udGggPSB0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudE1vbnRoO1xuICB9XG5cbiAgZ2V0TW9udGhzU2VsZWN0T3B0aW9ucyhkaXNhYmxlUGFzdFNlbGVjdGlvbjogYm9vbGVhbiwgbWF4TW9udGhJbmRleDogbnVtYmVyLCBtb250aE5hbWVzOiBBcnJheTxzdHJpbmc+KTogQXJyYXk8U2VsZWN0T3B0aW9uTW9kZWw+IHtcbiAgICBjb25zdCBtb250aHMgPSBuZXcgQXJyYXk8U2VsZWN0T3B0aW9uTW9kZWw+KCk7XG5cbiAgICBpZiAoZGlzYWJsZVBhc3RTZWxlY3Rpb24gPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gbW9udGhzO1xuICAgIH1cblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtYXhNb250aEluZGV4OyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5kYXRlU2VydmljZS51dGNEYXRlKCkudG9EYXRlKCk7XG4gICAgICBkYXRlLnNldFVUQ0RhdGUoMSk7XG4gICAgICBkYXRlLnNldFVUQ01vbnRoKGRhdGUuZ2V0VVRDTW9udGgoKSArIGluZGV4KTtcblxuICAgICAgY29uc3Qgc2VsZWN0T3B0aW9uOiBTZWxlY3RPcHRpb25Nb2RlbCA9IHtcbiAgICAgICAgdGl0bGU6IGAke21vbnRoTmFtZXNbZGF0ZS5nZXRVVENNb250aCgpXX0gLSAke2RhdGUuZ2V0VVRDRnVsbFllYXIoKX1gLFxuICAgICAgICB2YWx1ZTogZGF0ZS50b0lTT1N0cmluZygpXG4gICAgICB9O1xuXG4gICAgICBtb250aHMucHVzaChzZWxlY3RPcHRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBtb250aHM7XG4gIH1cblxuICBnZXRTZWxlY3RlZE1vbnRoKG1vbnRoczogQXJyYXk8U2VsZWN0T3B0aW9uTW9kZWw+LCBjdXJyZW50TW9udGg6IFV0Y0RhdGUpOiBTZWxlY3RPcHRpb25Nb2RlbCB7XG4gICAgaWYgKCFtb250aHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkID0gbW9udGhzLmZpbmQoeCA9PiB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5kYXRlU2VydmljZS51dGNEYXRlKHgudmFsdWUpO1xuICAgICAgZGF0ZS5zZXREYXRlKDEpO1xuICAgICAgY29uc3QgbW9udGggPSBuZXcgVXRjRGF0ZShjdXJyZW50TW9udGgueWVhciwgY3VycmVudE1vbnRoLm1vbnRoLCAxKTtcbiAgICAgIHJldHVybiB0aGlzLmRhdGVTZXJ2aWNlLmlzU2FtZU1vbnRoKGRhdGUsIG1vbnRoKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzZWxlY3RlZDtcbiAgfVxuXG4gIGdldEF2YWlsYWJsZURheXMoXG4gICAgY3VycmVudE1vbnRoOiBVdGNEYXRlLFxuICAgIGF2YWlsYWJsZURhdGVzOiBBcnJheTxVdGNEYXRlPixcbiAgICBhdmFpbGFiaWxpdHk6IGJvb2xlYW4sXG4gICAgZGlzYWJsZVBhc3RTZWxlY3Rpb246IGJvb2xlYW4sXG4gICAgbG93ZXJMaW1pdERhdGU6IFV0Y0RhdGUsXG4gICAgYWN0aXZlRGF0ZTogVXRjRGF0ZSxcbiAgICBzZWxlY3RlZERhdGU6IFV0Y0RhdGUpOiBBcnJheTxEYXlNb2RlbD4ge1xuICAgIGNvbnN0IGZpcnN0RGF0ZUluVGhpc01vbnRoID0gbmV3IERhdGUoKTtcbiAgICBmaXJzdERhdGVJblRoaXNNb250aC5zZXRVVENEYXRlKDEpO1xuICAgIGZpcnN0RGF0ZUluVGhpc01vbnRoLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuXG4gICAgY29uc3QgY3VycmVudERhdGUgPSBjdXJyZW50TW9udGhcbiAgICAgID8gbmV3IERhdGUoRGF0ZS5VVEMoY3VycmVudE1vbnRoLnllYXIsIGN1cnJlbnRNb250aC5tb250aCwgMSkpXG4gICAgICA6IGZpcnN0RGF0ZUluVGhpc01vbnRoO1xuXG4gICAgY29uc3QgY3VycmVudERhdGVNb250aCA9IGN1cnJlbnREYXRlLmdldFVUQ01vbnRoKCk7XG4gICAgY29uc3QgZGF5cyA9IG5ldyBBcnJheTxEYXlNb2RlbD4oKTtcblxuICAgIHdoaWxlIChjdXJyZW50RGF0ZS5nZXRVVENNb250aCgpID09PSBjdXJyZW50RGF0ZU1vbnRoKSB7XG4gICAgICBjb25zdCB1dGNEYXRlID0gdGhpcy5kYXRlU2VydmljZS51dGNEYXRlKGN1cnJlbnREYXRlKTtcblxuICAgICAgY29uc3QgZGF5OiBEYXlNb2RlbCA9IHtcbiAgICAgICAgZGF0ZTogdGhpcy5kYXRlU2VydmljZS5kYXRlKHV0Y0RhdGUpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGlzQXZhaWxhYmxlOiB0aGlzLmlzQXZhaWxhYmxlKHV0Y0RhdGUsIGF2YWlsYWJsZURhdGVzLCBhdmFpbGFiaWxpdHksIGRpc2FibGVQYXN0U2VsZWN0aW9uKSxcbiAgICAgICAgaXNEaXNhYmxlZDogdGhpcy5kYXRlU2VydmljZS5pc0xlc3NUaGFuKHV0Y0RhdGUsIGxvd2VyTGltaXREYXRlKSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgaXNBY3RpdmU6IHRoaXMuZGF0ZVNlcnZpY2UuaXNTYW1lRGF0ZSh0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoY3VycmVudERhdGUpLCBhY3RpdmVEYXRlKVxuICAgICAgfTtcblxuICAgICAgaWYgKHNlbGVjdGVkRGF0ZSAmJiB0aGlzLmRhdGVTZXJ2aWNlLmlzU2FtZURhdGUoc2VsZWN0ZWREYXRlLCB1dGNEYXRlKSAmJiBkYXkuaXNTZWxlY3RlZCB8fCAhZGF5LmlzQXZhaWxhYmxlKSB7XG4gICAgICAgIGRheS5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGRheXMucHVzaChkYXkpO1xuICAgICAgY3VycmVudERhdGUuc2V0VVRDRGF0ZShjdXJyZW50RGF0ZS5nZXRVVENEYXRlKCkgKyAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF5cztcbiAgfVxuXG4gIHByaXZhdGUgaXNBdmFpbGFibGUoZGF0ZTogVXRjRGF0ZSwgYXZhaWxhYmxlRGF0ZXM6IEFycmF5PFV0Y0RhdGU+LCBhdmFpbGFiaWxpdHk6IGJvb2xlYW4sIGRpc2FibGVQYXN0U2VsZWN0aW9uOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgaWYgKCFhdmFpbGFiaWxpdHkpIHtcbiAgICAgIHJldHVybiBkaXNhYmxlUGFzdFNlbGVjdGlvbiAmJiB0aGlzLmRhdGVTZXJ2aWNlLmlzSW5UaGVQYXN0KGRhdGUsIGZhbHNlLCB0cnVlLCB0cnVlKSA/IGZhbHNlIDogdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoKGRpc2FibGVQYXN0U2VsZWN0aW9uICYmIHRoaXMuZGF0ZVNlcnZpY2UuaXNJblRoZVBhc3QoZGF0ZSwgZmFsc2UsIHRydWUsIHRydWUpKVxuICAgICAgfHwgIWF2YWlsYWJsZURhdGVzXG4gICAgICB8fCAhYXZhaWxhYmxlRGF0ZXMuc29tZSh4ID0+IHRoaXMuZGF0ZVNlcnZpY2UuaXNTYW1lRGF0ZSh4LCBkYXRlKSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TW9uZGF5KCkge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF5KCk7XG4gICAgY29uc3QgZGlmZiA9IGRhdGUuZ2V0RGF0ZSgpIC0gZGF5ICsgKGRheSA9PT0gMCA/IC02IDogMSk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuc2V0RGF0ZShkaWZmKSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,317 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Norwegian Air Shuttle. All Rights Reserved.
|
|
4
|
-
*/
|
|
5
|
-
import { Component, EventEmitter, Input, Output, ViewEncapsulation, ViewChild } from '@angular/core';
|
|
6
|
-
import { NasComponentBase } from '../../core/base/nas-component.base';
|
|
7
|
-
import { UtcDate } from '../../core/models/utc-date.model';
|
|
8
|
-
import { DateHelper } from '../../core/services/date/date-helper.service';
|
|
9
|
-
import { DeviceHelper } from '../../core/services/device/device-helper.service';
|
|
10
|
-
import { BehaviorSubject } from 'rxjs';
|
|
11
|
-
/**
|
|
12
|
-
* @description
|
|
13
|
-
* Norwegian Datepicker Combo Component | Functional
|
|
14
|
-
*/
|
|
15
|
-
export class DatepickerComboComponent extends NasComponentBase {
|
|
16
|
-
constructor(dateService, deviceHelper) {
|
|
17
|
-
super('nas-datepicker-combo');
|
|
18
|
-
this.dateService = dateService;
|
|
19
|
-
this.deviceHelper = deviceHelper;
|
|
20
|
-
/**
|
|
21
|
-
* @description
|
|
22
|
-
* 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.
|
|
23
|
-
* Please look at the angular Date pipe for valid formats and variations.
|
|
24
|
-
*/
|
|
25
|
-
this.dateDisplayFormat = 'EEEE d, MMMM yyyy';
|
|
26
|
-
/**
|
|
27
|
-
* @description
|
|
28
|
-
* The time display format.
|
|
29
|
-
*/
|
|
30
|
-
this.timeDisplayFormat = 'HH:mm';
|
|
31
|
-
/**
|
|
32
|
-
* @description
|
|
33
|
-
* 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.
|
|
34
|
-
* This requires that registerLocaleData is called with the respective locale.
|
|
35
|
-
*/
|
|
36
|
-
this.locale = 'en-US';
|
|
37
|
-
/**
|
|
38
|
-
* @description
|
|
39
|
-
* Sets a relative number to decide when the inbound lower limit date should be based on selected outbound date.
|
|
40
|
-
*
|
|
41
|
-
* The lower limit date for inbound is set by default equal to the selected outbound date.
|
|
42
|
-
*
|
|
43
|
-
* If this number is positive, the inbound lower limit date will add the number of days to the selected outbound date.
|
|
44
|
-
* If this number is negative, the inbound lower limit date will subtract the number of days to the selected outbound date.
|
|
45
|
-
*/
|
|
46
|
-
this.inboundLowerLimitDateOffset = 0;
|
|
47
|
-
/**
|
|
48
|
-
* @description
|
|
49
|
-
* When selected datehas been changed on the outbound calendar.
|
|
50
|
-
*/
|
|
51
|
-
this.outboundSelectedDateChange = new EventEmitter();
|
|
52
|
-
/**
|
|
53
|
-
* @description
|
|
54
|
-
* When selected datehas been changed on the inbound calendar.
|
|
55
|
-
*/
|
|
56
|
-
this.inboundSelectedDateChange = new EventEmitter();
|
|
57
|
-
/**
|
|
58
|
-
* @description
|
|
59
|
-
* Outbound datepicker is open or closed.
|
|
60
|
-
*/
|
|
61
|
-
this.outboundOpenChange = new EventEmitter();
|
|
62
|
-
/**
|
|
63
|
-
* @description
|
|
64
|
-
* Inbound datepicker is open or closed.
|
|
65
|
-
*/
|
|
66
|
-
this.inboundOpenChange = new EventEmitter();
|
|
67
|
-
/**
|
|
68
|
-
* @description
|
|
69
|
-
* Outbound calendar changes month.
|
|
70
|
-
*/
|
|
71
|
-
this.outboundMonthChange = new EventEmitter();
|
|
72
|
-
/**
|
|
73
|
-
* @description
|
|
74
|
-
* Inbound calendar changes month.
|
|
75
|
-
*/
|
|
76
|
-
this.inboundMonthChange = new EventEmitter();
|
|
77
|
-
/**
|
|
78
|
-
* @description
|
|
79
|
-
* When a user has actively changed the date.
|
|
80
|
-
*/
|
|
81
|
-
this.focusOnNextChange = new EventEmitter();
|
|
82
|
-
/**
|
|
83
|
-
* @description
|
|
84
|
-
* When a user has pressed shift + tab to go to previous control.
|
|
85
|
-
*/
|
|
86
|
-
this.focusOnPreviousChange = new EventEmitter();
|
|
87
|
-
this.inboundOpenValue = false;
|
|
88
|
-
this.outboundOpenValue = false;
|
|
89
|
-
this.containerWidth = new BehaviorSubject(0);
|
|
90
|
-
window.onresize = () => {
|
|
91
|
-
this.updateContainerWidth();
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* @description
|
|
96
|
-
* Sets outbound datepicker open.
|
|
97
|
-
*/
|
|
98
|
-
get outboundOpen() {
|
|
99
|
-
return this.outboundOpenValue;
|
|
100
|
-
}
|
|
101
|
-
set outboundOpen(value) {
|
|
102
|
-
if (this.outboundDisabled || value === this.outboundOpenValue) {
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
setTimeout(() => {
|
|
106
|
-
this.outboundOpenValue = value;
|
|
107
|
-
this.outboundOpenChange.emit(value);
|
|
108
|
-
if (value && this.inboundOpen) {
|
|
109
|
-
this.inboundOpen = false;
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* @description
|
|
115
|
-
* Sets inbound datepicker open.
|
|
116
|
-
*/
|
|
117
|
-
get inboundOpen() {
|
|
118
|
-
return this.inboundOpenValue;
|
|
119
|
-
}
|
|
120
|
-
set inboundOpen(value) {
|
|
121
|
-
if (this.inboundDisabled || value === this.inboundOpenValue) {
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
if (this.outboundOnly) {
|
|
125
|
-
this.focusOnNextChange.emit();
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
setTimeout(() => {
|
|
129
|
-
this.inboundOpenValue = value;
|
|
130
|
-
this.inboundOpenChange.emit(value);
|
|
131
|
-
if (value && this.outboundOpen) {
|
|
132
|
-
this.outboundOpen = false;
|
|
133
|
-
}
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* @description
|
|
138
|
-
* Selected datefor outbound calendar.
|
|
139
|
-
*/
|
|
140
|
-
get outboundSelectedDate() {
|
|
141
|
-
return this.outboundSelectedDateValue;
|
|
142
|
-
}
|
|
143
|
-
set outboundSelectedDate(date) {
|
|
144
|
-
if (!date) {
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
if (this.outboundSelectedDateValue && this.dateService.isSameDate(this.outboundSelectedDateValue, date)) {
|
|
148
|
-
return;
|
|
149
|
-
}
|
|
150
|
-
this.outboundSelectedDateValue = date;
|
|
151
|
-
this.inboundLowerLimitDate = new UtcDate(date.year, date.month, 1);
|
|
152
|
-
this.inboundLowerLimitDate.setDate(date.date + this.inboundLowerLimitDateOffset);
|
|
153
|
-
this.outboundSelectedDateChange.emit(date);
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* @description
|
|
157
|
-
* Selected datefor inbound calendar.
|
|
158
|
-
*/
|
|
159
|
-
get inboundSelectedDate() {
|
|
160
|
-
return this.inboundSelectedDateValue;
|
|
161
|
-
}
|
|
162
|
-
set inboundSelectedDate(date) {
|
|
163
|
-
if (!date) {
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
if (this.inboundSelectedDateValue && this.dateService.isSameDate(this.inboundSelectedDateValue, date)) {
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
this.inboundSelectedDateValue = date;
|
|
170
|
-
this.inboundSelectedDateChange.emit(date);
|
|
171
|
-
}
|
|
172
|
-
get inboundSelectedMonth() {
|
|
173
|
-
return this.inboundSelectedMonthValue;
|
|
174
|
-
}
|
|
175
|
-
set inboundSelectedMonth(month) {
|
|
176
|
-
if (!month) {
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
if (this.dateService.isSameMonth(month, this.inboundSelectedMonthValue)) {
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
setTimeout(() => {
|
|
183
|
-
this.inboundSelectedMonthValue = month;
|
|
184
|
-
this.inboundMonthChange.emit(month);
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
ngOnInit() {
|
|
188
|
-
if (this.nasFormGroup) {
|
|
189
|
-
if (this.nasFormControlNameOutbound) {
|
|
190
|
-
this.outboundValueChangesSubscription = this.nasFormGroup.get(this.nasFormControlNameOutbound)
|
|
191
|
-
.valueChanges
|
|
192
|
-
.subscribe(outbound => {
|
|
193
|
-
this.outboundSelectedDate = outbound === null || outbound === void 0 ? void 0 : outbound.date;
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
if (this.nasFormControlNameInbound) {
|
|
197
|
-
this.inboundValueChangesSubscription = this.nasFormGroup.get(this.nasFormControlNameInbound)
|
|
198
|
-
.valueChanges
|
|
199
|
-
.subscribe(inbound => {
|
|
200
|
-
this.inboundSelectedDate = inbound === null || inbound === void 0 ? void 0 : inbound.date;
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
ngAfterViewChecked() {
|
|
206
|
-
this.updateContainerWidth();
|
|
207
|
-
}
|
|
208
|
-
onFocusOnNext(event) {
|
|
209
|
-
this.focusOnNextChange.emit(event);
|
|
210
|
-
}
|
|
211
|
-
onFocusOnPrevious(event) {
|
|
212
|
-
this.focusOnPreviousChange.emit(event);
|
|
213
|
-
}
|
|
214
|
-
onInboundFocusOnPrevious() {
|
|
215
|
-
var _a, _b;
|
|
216
|
-
if (this.times && this.times.length > 0) {
|
|
217
|
-
const selectElement = (_b = (_a = this.datepickerOutbound.timeSelector) === null || _a === void 0 ? void 0 : _a.select) === null || _b === void 0 ? void 0 : _b.nativeElement;
|
|
218
|
-
setTimeout(() => {
|
|
219
|
-
selectElement === null || selectElement === void 0 ? void 0 : selectElement.focus();
|
|
220
|
-
});
|
|
221
|
-
this.inboundOpenChange.emit(false);
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
this.outboundOpen = true;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
onOutboundMonthChange(date) {
|
|
228
|
-
this.outboundMonthChange.emit(date);
|
|
229
|
-
this.inboundSelectedMonthValue = date;
|
|
230
|
-
}
|
|
231
|
-
getMainClass() {
|
|
232
|
-
const widths = [
|
|
233
|
-
this.deviceHelper.isWidthTablet(this.containerWidth.getValue()) && 'md',
|
|
234
|
-
this.deviceHelper.isWidthDesktop(this.containerWidth.getValue()) && 'lg'
|
|
235
|
-
];
|
|
236
|
-
if (this.exists(this.compact)) {
|
|
237
|
-
return this.getContainerClass('', ['compact', ...widths]);
|
|
238
|
-
}
|
|
239
|
-
else {
|
|
240
|
-
return this.getContainerClass('', [...widths]);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
checkOutboundOnly() {
|
|
244
|
-
return !(this.deviceHelper.isMobileWidth() && this.exists(this.outboundOnly));
|
|
245
|
-
}
|
|
246
|
-
checkInboundDisabled() {
|
|
247
|
-
return (!this.deviceHelper.isMobileWidth() && this.exists(this.outboundOnly))
|
|
248
|
-
|| this.exists(this.inboundDisabled);
|
|
249
|
-
}
|
|
250
|
-
ngOnDestroy() {
|
|
251
|
-
var _a, _b;
|
|
252
|
-
(_a = this.inboundValueChangesSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
253
|
-
(_b = this.outboundValueChangesSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();
|
|
254
|
-
}
|
|
255
|
-
updateContainerWidth() {
|
|
256
|
-
const containerOffsetWidth = this.container.nativeElement.offsetWidth;
|
|
257
|
-
if (containerOffsetWidth > 0) {
|
|
258
|
-
this.containerWidth.next(containerOffsetWidth);
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
DatepickerComboComponent.decorators = [
|
|
263
|
-
{ type: Component, args: [{
|
|
264
|
-
selector: 'nas-datepicker-combo',
|
|
265
|
-
template: "<div [nasClass]=\"getMainClass()\"\n #container>\n <div [nasClass]=\"getClass('date-picker')\">\n <nas-datepicker #datepickerOutbound\n compact\n [disableBackdrop]=\"disableBackdrop\"\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlName]=\"nasFormControlNameOutbound\"\n [noAvailableFlightsLabel]=\"noAvailableFlightsLabel\"\n [availableFlightsLabel]=\"availableFlightsLabel\"\n [disablePastSelection]=\"exists(disablePastSelection)\"\n [availability]=\"exists(availability)\"\n [availableDates]=\"outboundAvailableDates\"\n [times]=\"times\"\n [selectedTime]=\"outboundSelectedTime\"\n [dateDisplayFormat]=\"dateDisplayFormat\"\n [timeDisplayFormat]=\"timeDisplayFormat\"\n [locale]=\"locale\"\n [disabled]=\"exists(outboundDisabled)\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [ariaLabelPreviousMonth]=\"ariaLabelPreviousMonth\"\n [ariaLabelNextMonth]=\"ariaLabelNextMonth\"\n (focusOnNextChange)=\"inboundOpen = true\"\n (focusOnPreviousChange)=\"onFocusOnPrevious($event)\"\n (selectedMonthChange)=\"onOutboundMonthChange($event)\"\n [(open)]=\"outboundOpen\"\n [(selectedDate)]=\"outboundSelectedDate\">{{outboundLabel}}</nas-datepicker>\n </div>\n <span [nasClass]=\"getClass('separator')\"></span>\n <div *ngIf=\"checkOutboundOnly()\"\n [nasClass]=\"getClass('date-picker')\">\n <nas-datepicker #datepickerInbound\n compact\n [disableBackdrop]=\"disableBackdrop\"\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlName]=\"nasFormControlNameInbound\"\n [disabled]=\"checkInboundDisabled()\"\n [noAvailableFlightsLabel]=\"noAvailableFlightsLabel\"\n [availableFlightsLabel]=\"availableFlightsLabel\"\n [disablePastSelection]=\"exists(disablePastSelection)\"\n [availability]=\"exists(availability)\"\n [availableDates]=\"inboundAvailableDates\"\n [lowerLimitDate]=\"inboundLowerLimitDate\"\n [times]=\"times\"\n [selectedTime]=\"inboundSelectedTime\"\n [dateDisplayFormat]=\"dateDisplayFormat\"\n [timeDisplayFormat]=\"timeDisplayFormat\"\n [locale]=\"locale\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [ariaLabelPreviousMonth]=\"ariaLabelPreviousMonth\"\n [ariaLabelNextMonth]=\"ariaLabelNextMonth\"\n (focusOnNextChange)=\"onFocusOnNext($event)\"\n (focusOnPreviousChange)=\"onInboundFocusOnPrevious()\"\n [(open)]=\"inboundOpen\"\n [(selectedMonth)]=\"inboundSelectedMonth\"\n [(selectedDate)]=\"inboundSelectedDate\">{{inboundLabel}}</nas-datepicker>\n </div>\n</div>",
|
|
266
|
-
encapsulation: ViewEncapsulation.Emulated,
|
|
267
|
-
styles: ["@-webkit-keyframes fade-in{0%{opacity:0}}@keyframes fade-in{0%{opacity:0}}@-webkit-keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@-webkit-keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@-webkit-keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@-webkit-keyframes fade-out{to{opacity:0}}@keyframes fade-out{to{opacity:0}}@-webkit-keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@-webkit-keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@-webkit-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)}}@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)}}.nas-datepicker-combo{display:flex;margin:24px auto;flex-wrap:wrap;flex-direction:column}.nas-datepicker-combo nas-datepicker{display:flex}.nas-datepicker-combo nas-datepicker ::ng-deep .nas-datepicker__time-selector-wrapper{padding-left:3px;padding-bottom:3px}.nas-datepicker-combo nas-datepicker ::ng-deep .nas-datepicker__time-selector-wrapper .nas-select{margin-bottom:0}.nas-datepicker-combo nas-datepicker ::ng-deep .nas-datepicker__time-selector-wrapper .nas-select:after{bottom:25px}.nas-datepicker-combo nas-datepicker ::ng-deep .nas-datepicker__time-selector-wrapper .nas-select select{background-color:#fff;height:64px;border:3px solid #fff}.nas-datepicker-combo nas-datepicker ::ng-deep .nas-datepicker__time-selector-wrapper .nas-select select:focus{border-color:#003251}.nas-datepicker-combo__date-picker{width:100%}.nas-datepicker-combo__date-picker:first-child nas-datepicker ::ng-deep .nas-datepicker__date-picker-wrapper{border-bottom:none}.nas-datepicker-combo__date-picker:first-child nas-datepicker ::ng-deep .nas-datepicker__time-selector-wrapper{border-bottom:none}.nas-datepicker-combo__separator{display:none}.nas-datepicker-combo--md,.nas-datepicker-combo--lg{flex-wrap:nowrap;flex-direction:row}.nas-datepicker-combo--md .nas-datepicker-combo__separator,.nas-datepicker-combo--lg .nas-datepicker-combo__separator{display:block;position:relative;align-self:flex-end;flex-shrink:0;width:3px;border-bottom:3px solid #c3c3c3}.nas-datepicker-combo--md .nas-datepicker-combo__date-picker:first-child nas-datepicker ::ng-deep .nas-datepicker__date-picker-wrapper,.nas-datepicker-combo--lg .nas-datepicker-combo__date-picker:first-child nas-datepicker ::ng-deep .nas-datepicker__date-picker-wrapper{border-bottom:3px solid #c3c3c3}.nas-datepicker-combo--md .nas-datepicker-combo__date-picker:first-child nas-datepicker ::ng-deep .nas-datepicker__time-selector-wrapper,.nas-datepicker-combo--lg .nas-datepicker-combo__date-picker:first-child nas-datepicker ::ng-deep .nas-datepicker__time-selector-wrapper{border-bottom:3px solid #c3c3c3}.nas-datepicker-combo--compact{margin:0 auto}\n"]
|
|
268
|
-
},] }
|
|
269
|
-
];
|
|
270
|
-
DatepickerComboComponent.ctorParameters = () => [
|
|
271
|
-
{ type: DateHelper },
|
|
272
|
-
{ type: DeviceHelper }
|
|
273
|
-
];
|
|
274
|
-
DatepickerComboComponent.propDecorators = {
|
|
275
|
-
datepickerOutbound: [{ type: ViewChild, args: ['datepickerOutbound',] }],
|
|
276
|
-
datepickerInbound: [{ type: ViewChild, args: ['datepickerInbound',] }],
|
|
277
|
-
container: [{ type: ViewChild, args: ['container',] }],
|
|
278
|
-
ariaLabelBackdrop: [{ type: Input }],
|
|
279
|
-
outboundOpen: [{ type: Input }],
|
|
280
|
-
inboundOpen: [{ type: Input }],
|
|
281
|
-
noAvailableFlightsLabel: [{ type: Input }],
|
|
282
|
-
availableFlightsLabel: [{ type: Input }],
|
|
283
|
-
disablePastSelection: [{ type: Input }],
|
|
284
|
-
outboundDisabled: [{ type: Input }],
|
|
285
|
-
inboundDisabled: [{ type: Input }],
|
|
286
|
-
outboundOnly: [{ type: Input }],
|
|
287
|
-
outboundLabel: [{ type: Input }],
|
|
288
|
-
inboundLabel: [{ type: Input }],
|
|
289
|
-
availability: [{ type: Input }],
|
|
290
|
-
outboundAvailableDates: [{ type: Input }],
|
|
291
|
-
inboundAvailableDates: [{ type: Input }],
|
|
292
|
-
times: [{ type: Input }],
|
|
293
|
-
dateDisplayFormat: [{ type: Input }],
|
|
294
|
-
timeDisplayFormat: [{ type: Input }],
|
|
295
|
-
locale: [{ type: Input }],
|
|
296
|
-
compact: [{ type: Input }],
|
|
297
|
-
nasFormGroup: [{ type: Input }],
|
|
298
|
-
nasFormControlNameOutbound: [{ type: Input }],
|
|
299
|
-
nasFormControlNameInbound: [{ type: Input }],
|
|
300
|
-
outboundSelectedDate: [{ type: Input }],
|
|
301
|
-
inboundSelectedDate: [{ type: Input }],
|
|
302
|
-
disableBackdrop: [{ type: Input }],
|
|
303
|
-
outboundSelectedTime: [{ type: Input }],
|
|
304
|
-
inboundSelectedTime: [{ type: Input }],
|
|
305
|
-
ariaLabelPreviousMonth: [{ type: Input }],
|
|
306
|
-
ariaLabelNextMonth: [{ type: Input }],
|
|
307
|
-
inboundLowerLimitDateOffset: [{ type: Input }],
|
|
308
|
-
outboundSelectedDateChange: [{ type: Output }],
|
|
309
|
-
inboundSelectedDateChange: [{ type: Output }],
|
|
310
|
-
outboundOpenChange: [{ type: Output }],
|
|
311
|
-
inboundOpenChange: [{ type: Output }],
|
|
312
|
-
outboundMonthChange: [{ type: Output }],
|
|
313
|
-
inboundMonthChange: [{ type: Output }],
|
|
314
|
-
focusOnNextChange: [{ type: Output }],
|
|
315
|
-
focusOnPreviousChange: [{ type: Output }]
|
|
316
|
-
};
|
|
317
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jb21iby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2RhdGVwaWNrZXItY29tYm8vZGF0ZXBpY2tlci1jb21iby5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsU0FBUyxFQUtWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRWhGLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRXJEOzs7R0FHRztBQU9ILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxnQkFBZ0I7SUEwVjVELFlBQW9CLFdBQXVCLEVBQVUsWUFBMEI7UUFDN0UsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFEWixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBak4vRTs7OztXQUlHO1FBQ00sc0JBQWlCLEdBQUcsbUJBQW1CLENBQUM7UUFFakQ7OztXQUdHO1FBQ00sc0JBQWlCLEdBQUcsT0FBTyxDQUFDO1FBRXJDOzs7O1dBSUc7UUFDTSxXQUFNLEdBQUcsT0FBTyxDQUFDO1FBd0cxQjs7Ozs7Ozs7V0FRRztRQUNNLGdDQUEyQixHQUFHLENBQUMsQ0FBQztRQUV6Qzs7O1dBR0c7UUFDTywrQkFBMEIsR0FBRyxJQUFJ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LEtBQUs7b0NBTUwsS0FBSztvQkFPTCxLQUFLO2dDQU9MLEtBQUs7Z0NBTUwsS0FBSztxQkFPTCxLQUFLO3NCQU1MLEtBQUs7MkJBUUwsS0FBSzt5Q0FRTCxLQUFLO3dDQVFMLEtBQUs7bUNBTUwsS0FBSztrQ0F5QkwsS0FBSzs4QkFpQkwsS0FBSzttQ0FNTCxLQUFLO2tDQU1MLEtBQUs7cUNBTUwsS0FBSztpQ0FNTCxLQUFLOzBDQVdMLEtBQUs7eUNBTUwsTUFBTTt3Q0FNTixNQUFNO2lDQU9OLE1BQU07Z0NBTU4sTUFBTTtrQ0FNTixNQUFNO2lDQU1OLE1BQU07Z0NBTU4sTUFBTTtvQ0FNTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IE5vcndlZ2lhbiBBaXIgU2h1dHRsZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOYXNDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlL25hcy1jb21wb25lbnQuYmFzZSc7XG5pbXBvcnQgeyBDbGFzc01vZGVsIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvY2xhc3MubW9kZWwnO1xuaW1wb3J0IHsgVXRjRGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL3V0Yy1kYXRlLm1vZGVsJztcbmltcG9ydCB7IERhdGVIZWxwZXIgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2RhdGUvZGF0ZS1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBEZXZpY2VIZWxwZXIgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2RldmljZS9kZXZpY2UtaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0ZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIE5vcndlZ2lhbiBEYXRlcGlja2VyIENvbWJvIENvbXBvbmVudCB8IEZ1bmN0aW9uYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmFzLWRhdGVwaWNrZXItY29tYm8nLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXBpY2tlci1jb21iby5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGVwaWNrZXItY29tYm8uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uRW11bGF0ZWRcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlckNvbWJvQ29tcG9uZW50IGV4dGVuZHMgTmFzQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25EZXN0cm95IHtcbiAgaW5ib3VuZExvd2VyTGltaXREYXRlOiBVdGNEYXRlO1xuXG4gIEBWaWV3Q2hpbGQoJ2RhdGVwaWNrZXJPdXRib3VuZCcpIGRhdGVwaWNrZXJPdXRib3VuZDogRGF0ZXBpY2tlckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZGF0ZXBpY2tlckluYm91bmQnKSBkYXRlcGlja2VySW5ib3VuZDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyAnYXJpYS1sYWJlbCcgdG8gdGhlIGJhY2tkcm9wcy5cbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbEJhY2tkcm9wOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIG91dGJvdW5kIGRhdGVwaWNrZXIgb3Blbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBvdXRib3VuZE9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3V0Ym91bmRPcGVuVmFsdWU7XG4gIH1cbiAgc2V0IG91dGJvdW5kT3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLm91dGJvdW5kRGlzYWJsZWQgfHwgdmFsdWUgPT09IHRoaXMub3V0Ym91bmRPcGVuVmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMub3V0Ym91bmRPcGVuVmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMub3V0Ym91bmRPcGVuQ2hhbmdlLmVtaXQodmFsdWUpO1xuXG4gICAgICBpZiAodmFsdWUgJiYgdGhpcy5pbmJvdW5kT3Blbikge1xuICAgICAgICB0aGlzLmluYm91bmRPcGVuID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgaW5ib3VuZCBkYXRlcGlja2VyIG9wZW4uXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgaW5ib3VuZE9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW5ib3VuZE9wZW5WYWx1ZTtcbiAgfVxuICBzZXQgaW5ib3VuZE9wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5pbmJvdW5kRGlzYWJsZWQgfHwgdmFsdWUgPT09IHRoaXMuaW5ib3VuZE9wZW5WYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm91dGJvdW5kT25seSkge1xuICAgICAgdGhpcy5mb2N1c09uTmV4dENoYW5nZS5lbWl0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmluYm91bmRPcGVuVmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuaW5ib3VuZE9wZW5DaGFuZ2UuZW1pdCh2YWx1ZSk7XG5cbiAgICAgIGlmICh2YWx1ZSAmJiB0aGlzLm91dGJvdW5kT3Blbikge1xuICAgICAgICB0aGlzLm91dGJvdW5kT3BlbiA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBMYWJlbCBmb3Igbm8gYXZhaWxhYmxlIGZsaWdodHMuXG4gICAqL1xuICBASW5wdXQoKSBub0F2YWlsYWJsZUZsaWdodHNMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTGFiZWwgZm9yIGF2YWlsYWJsZSBmbGlnaHRzLlxuICAgKi9cbiAgQElucHV0KCkgYXZhaWxhYmxlRmxpZ2h0c0xhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEaXNhYmxlIHBvc3NpYmlsaXR5IHRvIHNlbGVjdCBkYXRlcyBpbiB0aGUgcGFzdC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVQYXN0U2VsZWN0aW9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGlzYWJsZSBwb3NzaWJpbGl0eSB0byBzZWxlY3Qgb3V0Ym91bmQgZGF0ZXMuXG4gICAqL1xuICBASW5wdXQoKSBvdXRib3VuZERpc2FibGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGlzYWJsZSBwb3NzaWJpbGl0eSB0byBzZWxlY3QgaW5ib3VuZCBkYXRlcy5cbiAgICovXG4gIEBJbnB1dCgpIGluYm91bmREaXNhYmxlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFJlbW92ZSB0aGUgaW5ib3VuZCBkYXRlcGlja2VyIGlmIHNldC5cbiAgICovXG4gIEBJbnB1dCgpIG91dGJvdW5kT25seTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIExhYmVsIGZvciBvdXRib3VuZCBkYXRlcGlja2VyLlxuICAgKi9cbiAgQElucHV0KCkgb3V0Ym91bmRMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTGFiZWwgZm9yIGluYm91bmQgZGF0ZXBpY2tlci5cbiAgICovXG4gIEBJbnB1dCgpIGluYm91bmRMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyB0aGUgZGF0ZXBpY2tlcnMgaW4gYXZhaWxhYmlsaXR5IG1vZGUgd2hlcmUgYXZhaWxhYmxlIGRhdGVzIGNhbiBiZSBhZGRlZC5cbiAgICovXG4gIEBJbnB1dCgpIGF2YWlsYWJpbGl0eTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEF2YWlsYWJsZSBkYXRlcyBmb3Igb3V0Ym91bmQgY2FsZW5kYXIuXG4gICAqL1xuICBASW5wdXQoKSBvdXRib3VuZEF2YWlsYWJsZURhdGVzOiBBcnJheTxVdGNEYXRlPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEF2YWlsYWJsZSBkYXRlcyBmb3IgaW5ib3VuZCBjYWxlbmRhci5cbiAgICovXG4gIEBJbnB1dCgpIGluYm91bmRBdmFpbGFibGVEYXRlczogQXJyYXk8VXRjRGF0ZT47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBJZiBzZXQsIEVuYWJsZXMgdGhlIHRpbWUgZHJvcGRvd24gc2VsZWN0b3IgYWxvbmdzaWRlIGRhdGVwaWNrZXIuXG4gICAqL1xuXG4gIEBJbnB1dCgpIHRpbWVzOiBBcnJheTxVdGNEYXRlPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBkaXNwbGF5IGZvcm1hdCBvZiB0aGUgZGF0ZSB3aGVuIHVzZXIgaGFzIHNlbGVjdGVkIHRoZSBkYXRlIGFuZCBpdCBpcyBiZWluZyBzaG93biBpbiB0aGUgaW5wdXQgYm94IGZvciB0aGUgZGF0ZSBwaWNrZXIuXG4gICAqIFBsZWFzZSBsb29rIGF0IHRoZSBhbmd1bGFyIERhdGUgcGlwZSBmb3IgdmFsaWQgZm9ybWF0cyBhbmQgdmFyaWF0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpIGRhdGVEaXNwbGF5Rm9ybWF0ID0gJ0VFRUUgZCwgTU1NTSB5eXl5JztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSB0aW1lIGRpc3BsYXkgZm9ybWF0LlxuICAgKi9cbiAgQElucHV0KCkgdGltZURpc3BsYXlGb3JtYXQgPSAnSEg6bW0nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsb2NhbGUgY29kZSBmb3IgdGhlIGxvY2FsZSBmb3JtYXQgcnVsZXMgdG8gdXNlLiBXaGVuIG5vdCBzdXBwbGllZCwgdXNlcyB0aGUgdmFsdWUgb2YgTE9DQUxFX0lELCB3aGljaCBpcyBlbi1VUyBieSBkZWZhdWx0LlxuICAgKiBUaGlzIHJlcXVpcmVzIHRoYXQgcmVnaXN0ZXJMb2NhbGVEYXRhIGlzIGNhbGxlZCB3aXRoIHRoZSByZXNwZWN0aXZlIGxvY2FsZS5cbiAgICovXG4gIEBJbnB1dCgpIGxvY2FsZSA9ICdlbi1VUyc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIG1vZGlmaWVyIHRvIHJlbW92ZSB0aGUgcGFkZGluZyBhbmQgbWFyZ2lucyBhcm91bmQgdGhlIGVsZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKSBjb21wYWN0OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyB0aGUgcGFyZW50J3MgZm9ybSBncm91cC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgaXMgcmVxdWllcmVkIHRvIGJlIGZpbGxlZCBpZiBuYXNGb3JtQ29udHJvbE5hbWUgYWRkZWQuXG4gICAqL1xuICBASW5wdXQoKSBuYXNGb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgYSBmb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlIHRvIHRoZSBpbnB1dC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgcmVxdWllcnMgdGhhdCB0aGUgbmFzRm9ybUdyb3VwIGlucHV0IGlzIGZpbGxlZC5cbiAgICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Db250cm9sTmFtZU91dGJvdW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIGEgZm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSB0byB0aGUgaW5wdXQuXG4gICAqIEl0IHJlcXVpcmVzIHRoYXQgdGhlIGNvbnN1bWVyIGluY2x1ZGVkIFJlYWN0aXZlRm9ybXNNb2R1bGUgaW4gaXQncyBtb2R1bGUuXG4gICAqIEl0IHJlcXVpZXJzIHRoYXQgdGhlIG5hc0Zvcm1Hcm91cCBpbnB1dCBpcyBmaWxsZWQuXG4gICAqL1xuICBASW5wdXQoKSBuYXNGb3JtQ29udHJvbE5hbWVJbmJvdW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZWxlY3RlZCBkYXRlZm9yIG91dGJvdW5kIGNhbGVuZGFyLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IG91dGJvdW5kU2VsZWN0ZWREYXRlKCkge1xuICAgIHJldHVybiB0aGlzLm91dGJvdW5kU2VsZWN0ZWREYXRlVmFsdWU7XG4gIH1cbiAgc2V0IG91dGJvdW5kU2VsZWN0ZWREYXRlKGRhdGU6IFV0Y0RhdGUpIHtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vdXRib3VuZFNlbGVjdGVkRGF0ZVZhbHVlICYmIHRoaXMuZGF0ZVNlcnZpY2UuaXNTYW1lRGF0ZSh0aGlzLm91dGJvdW5kU2VsZWN0ZWREYXRlVmFsdWUsIGRhdGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vdXRib3VuZFNlbGVjdGVkRGF0ZVZhbHVlID0gZGF0ZTtcblxuICAgIHRoaXMuaW5ib3VuZExvd2VyTGltaXREYXRlID0gbmV3IFV0Y0RhdGUoZGF0ZS55ZWFyLCBkYXRlLm1vbnRoLCAxKTtcbiAgICB0aGlzLmluYm91bmRMb3dlckxpbWl0RGF0ZS5zZXREYXRlKGRhdGUuZGF0ZSArIHRoaXMuaW5ib3VuZExvd2VyTGltaXREYXRlT2Zmc2V0KTtcblxuICAgIHRoaXMub3V0Ym91bmRTZWxlY3RlZERhdGVDaGFuZ2UuZW1pdChkYXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2VsZWN0ZWQgZGF0ZWZvciBpbmJvdW5kIGNhbGVuZGFyLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGluYm91bmRTZWxlY3RlZERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5ib3VuZFNlbGVjdGVkRGF0ZVZhbHVlO1xuICB9XG4gIHNldCBpbmJvdW5kU2VsZWN0ZWREYXRlKGRhdGU6IFV0Y0RhdGUpIHtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbmJvdW5kU2VsZWN0ZWREYXRlVmFsdWUgJiYgdGhpcy5kYXRlU2VydmljZS5pc1NhbWVEYXRlKHRoaXMuaW5ib3VuZFNlbGVjdGVkRGF0ZVZhbHVlLCBkYXRlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaW5ib3VuZFNlbGVjdGVkRGF0ZVZhbHVlID0gZGF0ZTtcbiAgICB0aGlzLmluYm91bmRTZWxlY3RlZERhdGVDaGFuZ2UuZW1pdChkYXRlKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGRpc2FibGVCYWNrZHJvcDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgdGhlIG91dGJvdW5kIHNlbGVjdGVkIHRpbWUgaW4gdGhlIHRpbWUgc2VsZWN0b3IuXG4gICAqL1xuICBASW5wdXQoKSBvdXRib3VuZFNlbGVjdGVkVGltZTogVXRjRGF0ZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgdGhlIGluYm91bmQgc2VsZWN0ZWQgdGltZSBpbiB0aGUgdGltZSBzZWxlY3Rvci5cbiAgICovXG4gIEBJbnB1dCgpIGluYm91bmRTZWxlY3RlZFRpbWU6IFV0Y0RhdGU7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBUklBIGxhYmVsIGZvciB0aGUgcHJldmlvdXMgbW9udGggYnV0dG9uIGluIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbFByZXZpb3VzTW9udGg6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFSSUEgbGFiZWwgZm9yIHRoZSBuZXh0IG1vbnRoIGJ1dHRvbiBpbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxOZXh0TW9udGg6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgYSByZWxhdGl2ZSBudW1iZXIgdG8gZGVjaWRlIHdoZW4gdGhlIGluYm91bmQgbG93ZXIgbGltaXQgZGF0ZSBzaG91bGQgYmUgYmFzZWQgb24gc2VsZWN0ZWQgb3V0Ym91bmQgZGF0ZS5cbiAgICpcbiAgICogVGhlIGxvd2VyIGxpbWl0IGRhdGUgZm9yIGluYm91bmQgaXMgc2V0IGJ5IGRlZmF1bHQgZXF1YWwgdG8gdGhlIHNlbGVjdGVkIG91dGJvdW5kIGRhdGUuXG4gICAqXG4gICAqIElmIHRoaXMgbnVtYmVyIGlzIHBvc2l0aXZlLCB0aGUgaW5ib3VuZCBsb3dlciBsaW1pdCBkYXRlIHdpbGwgYWRkIHRoZSBudW1iZXIgb2YgZGF5cyB0byB0aGUgc2VsZWN0ZWQgb3V0Ym91bmQgZGF0ZS5cbiAgICogSWYgdGhpcyBudW1iZXIgaXMgbmVnYXRpdmUsIHRoZSBpbmJvdW5kIGxvd2VyIGxpbWl0IGRhdGUgd2lsbCBzdWJ0cmFjdCB0aGUgbnVtYmVyIG9mIGRheXMgdG8gdGhlIHNlbGVjdGVkIG91dGJvdW5kIGRhdGUuXG4gICAqL1xuICBASW5wdXQoKSBpbmJvdW5kTG93ZXJMaW1pdERhdGVPZmZzZXQgPSAwO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogV2hlbiBzZWxlY3RlZCBkYXRlaGFzIGJlZW4gY2hhbmdlZCBvbiB0aGUgb3V0Ym91bmQgY2FsZW5kYXIuXG4gICAqL1xuICBAT3V0cHV0KCkgb3V0Ym91bmRTZWxlY3RlZERhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFV0Y0RhdGU+KCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBXaGVuIHNlbGVjdGVkIGRhdGVoYXMgYmVlbiBjaGFuZ2VkIG9uIHRoZSBpbmJvdW5kIGNhbGVuZGFyLlxuICAgKi9cbiAgQE91dHB1dCgpIGluYm91bmRTZWxlY3RlZERhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFV0Y0RhdGU+KCk7XG5cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIE91dGJvdW5kIGRhdGVwaWNrZXIgaXMgb3BlbiBvciBjbG9zZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgb3V0Ym91bmRPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSW5ib3VuZCBkYXRlcGlja2VyIGlzIG9wZW4gb3IgY2xvc2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIGluYm91bmRPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogT3V0Ym91bmQgY2FsZW5kYXIgY2hhbmdlcyBtb250aC5cbiAgICovXG4gIEBPdXRwdXQoKSBvdXRib3VuZE1vbnRoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxVdGNEYXRlPigpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSW5ib3VuZCBjYWxlbmRhciBjaGFuZ2VzIG1vbnRoLlxuICAgKi9cbiAgQE91dHB1dCgpIGluYm91bmRNb250aENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VXRjRGF0ZT4oKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFdoZW4gYSB1c2VyIGhhcyBhY3RpdmVseSBjaGFuZ2VkIHRoZSBkYXRlLlxuICAgKi9cbiAgQE91dHB1dCgpIGZvY3VzT25OZXh0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogV2hlbiBhIHVzZXIgaGFzIHByZXNzZWQgc2hpZnQgKyB0YWIgdG8gZ28gdG8gcHJldmlvdXMgY29udHJvbC5cbiAgICovXG4gIEBPdXRwdXQoKSBmb2N1c09uUHJldmlvdXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQgfCBNb3VzZUV2ZW50PigpO1xuXG4gIGdldCBpbmJvdW5kU2VsZWN0ZWRNb250aCgpOiBVdGNEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5pbmJvdW5kU2VsZWN0ZWRNb250aFZhbHVlO1xuICB9XG4gIHNldCBpbmJvdW5kU2VsZWN0ZWRNb250aChtb250aDogVXRjRGF0ZSkge1xuICAgIGlmICghbW9udGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlU2VydmljZS5pc1NhbWVNb250aChtb250aCwgdGhpcy5pbmJvdW5kU2VsZWN0ZWRNb250aFZhbHVlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5pbmJvdW5kU2VsZWN0ZWRNb250aFZhbHVlID0gbW9udGg7XG4gICAgICB0aGlzLmluYm91bmRNb250aENoYW5nZS5lbWl0KG1vbnRoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb3V0Ym91bmRTZWxlY3RlZERhdGVWYWx1ZTogVXRjRGF0ZTtcbiAgcHJpdmF0ZSBpbmJvdW5kU2VsZWN0ZWREYXRlVmFsdWU6IFV0Y0RhdGU7XG4gIHByaXZhdGUgaW5ib3VuZFNlbGVjdGVkTW9udGhWYWx1ZTogVXRjRGF0ZTtcbiAgcHJpdmF0ZSBpbmJvdW5kT3BlblZhbHVlID0gZmFsc2U7XG4gIHByaXZhdGUgb3V0Ym91bmRPcGVuVmFsdWUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBjb250YWluZXJXaWR0aCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSBpbmJvdW5kVmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgb3V0Ym91bmRWYWx1ZUNoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVTZXJ2aWNlOiBEYXRlSGVscGVyLCBwcml2YXRlIGRldmljZUhlbHBlcjogRGV2aWNlSGVscGVyKSB7XG4gICAgc3VwZXIoJ25hcy1kYXRlcGlja2VyLWNvbWJvJyk7XG5cbiAgICB3aW5kb3cub25yZXNpemUgPSAoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbnRhaW5lcldpZHRoKCk7XG4gICAgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5hc0Zvcm1Hcm91cCkge1xuICAgICAgaWYgKHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lT3V0Ym91bmQpIHtcbiAgICAgICAgdGhpcy5vdXRib3VuZFZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbiA9IHRoaXMubmFzRm9ybUdyb3VwLmdldCh0aGlzLm5hc0Zvcm1Db250cm9sTmFtZU91dGJvdW5kKVxuICAgICAgICAgIC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAuc3Vic2NyaWJlKG91dGJvdW5kID0+IHtcbiAgICAgICAgICAgIHRoaXMub3V0Ym91bmRTZWxlY3RlZERhdGUgPSBvdXRib3VuZD8uZGF0ZTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5hc0Zvcm1Db250cm9sTmFtZUluYm91bmQpIHtcbiAgICAgICAgdGhpcy5pbmJvdW5kVmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5uYXNGb3JtR3JvdXAuZ2V0KHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lSW5ib3VuZClcbiAgICAgICAgICAudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgLnN1YnNjcmliZShpbmJvdW5kID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5ib3VuZFNlbGVjdGVkRGF0ZSA9IGluYm91bmQ/LmRhdGU7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29udGFpbmVyV2lkdGgoKTtcbiAgfVxuXG4gIG9uRm9jdXNPbk5leHQoZXZlbnQ6IEtleWJvYXJkRXZlbnQgfCBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c09uTmV4dENoYW5nZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uRm9jdXNPblByZXZpb3VzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c09uUHJldmlvdXNDaGFuZ2UuZW1pdChldmVudCk7XG4gIH1cblxuICBvbkluYm91bmRGb2N1c09uUHJldmlvdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGltZXMgJiYgdGhpcy50aW1lcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzZWxlY3RFbGVtZW50ID0gdGhpcy5kYXRlcGlja2VyT3V0Ym91bmQudGltZVNlbGVjdG9yPy5zZWxlY3Q/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZWxlY3RFbGVtZW50Py5mb2N1cygpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaW5ib3VuZE9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3V0Ym91bmRPcGVuID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBvbk91dGJvdW5kTW9udGhDaGFuZ2UoZGF0ZTogVXRjRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMub3V0Ym91bmRNb250aENoYW5nZS5lbWl0KGRhdGUpO1xuICAgIHRoaXMuaW5ib3VuZFNlbGVjdGVkTW9udGhWYWx1ZSA9IGRhdGU7XG4gIH1cblxuICBnZXRNYWluQ2xhc3MoKTogQXJyYXk8Q2xhc3NNb2RlbD4ge1xuICAgIGNvbnN0IHdpZHRocyA9IFtcbiAgICAgIHRoaXMuZGV2aWNlSGVscGVyLmlzV2lkdGhUYWJsZXQodGhpcy5jb250YWluZXJXaWR0aC5nZXRWYWx1ZSgpKSAmJiAnbWQnLFxuICAgICAgdGhpcy5kZXZpY2VIZWxwZXIuaXNXaWR0aERlc2t0b3AodGhpcy5jb250YWluZXJXaWR0aC5nZXRWYWx1ZSgpKSAmJiAnbGcnXG4gICAgXTtcblxuICAgIGlmICh0aGlzLmV4aXN0cyh0aGlzLmNvbXBhY3QpKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDb250YWluZXJDbGFzcygnJywgWydjb21wYWN0JywgLi4ud2lkdGhzXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENvbnRhaW5lckNsYXNzKCcnLCBbLi4ud2lkdGhzXSk7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tPdXRib3VuZE9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEodGhpcy5kZXZpY2VIZWxwZXIuaXNNb2JpbGVXaWR0aCgpICYmIHRoaXMuZXhpc3RzKHRoaXMub3V0Ym91bmRPbmx5KSk7XG4gIH1cblxuICBjaGVja0luYm91bmREaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKCF0aGlzLmRldmljZUhlbHBlci5pc01vYmlsZVdpZHRoKCkgJiYgdGhpcy5leGlzdHModGhpcy5vdXRib3VuZE9ubHkpKVxuICAgICAgfHwgdGhpcy5leGlzdHModGhpcy5pbmJvdW5kRGlzYWJsZWQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5pbmJvdW5kVmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub3V0Ym91bmRWYWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbnRhaW5lcldpZHRoKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRhaW5lck9mZnNldFdpZHRoID0gKHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLm9mZnNldFdpZHRoO1xuXG4gICAgaWYgKGNvbnRhaW5lck9mZnNldFdpZHRoID4gMCkge1xuICAgICAgdGhpcy5jb250YWluZXJXaWR0aC5uZXh0KGNvbnRhaW5lck9mZnNldFdpZHRoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|